在我的几年编程中,我玩弄了从Ruby到C ++的所有内容。从学习基本语法(Ruby)到完成一些扩展我的语言能力的重大(对我而言)项目,我已经做了很多工作。考虑到这种多样性(以及真正学习语言永不停止的事实),我什么时候可以说我知道(或已经学习)一种语言?
在我的几年编程中,我玩弄了从Ruby到C ++的所有内容。从学习基本语法(Ruby)到完成一些扩展我的语言能力的重大(对我而言)项目,我已经做了很多工作。考虑到这种多样性(以及真正学习语言永不停止的事实),我什么时候可以说我知道(或已经学习)一种语言?
Answers:
您什么时候可以说您已经“学习”了英语或法语等语言?我认为大多数人会接受您使用语言进行交流时所学的语言。您不必知道每个单词或每个习语,但是您应该知道人们在日常对话中使用的大部分(相当小的)语言子集。在“学习”到某种程度的语言之后,您可以在每天使用该语言的同时继续学习更多,并逐渐接触到更多的语言。到死时,您仍然不知道有关该语言的全部知识,但是没有人会说您从未“学习”该语言。
我认为计算机语言就是这样。当您可以在其中编写有用的程序时,可以说您“知道”一种语言,例如C ++或Ruby。如果您需要量化您对该语言的了解程度,请使用与人类语言相同的术语。说“我懂一点 C ++”或“我知道会话 C ++”或“我精通 C ++”,则表示您足够了解,可以做一些有用的事情,或者您是专家,分别。
using
在C#中使用或b, a = a, b
和python中的生成器。否则,+ 1。
这取决于谁问
善于询问的人一定会知道说“他已经学习过一种语言”的人期望达到什么水平。
基本上,我遇到了两个原型量表,人们以此来判断“您是否学过X?”这个问题的答案。
对于大多数书呆子来说,淘汰装腔作势者是一个棘手 的问题,您问题的其他答案已经证明了这一点;)。如果您说自己学到了它,那么您将看不到任务的范围,这是隐含的“完美”,而且更糟的是:您的谦卑感失败了。
对于大多数老板来说,如果您能够解决他们的问题,那么您就“学到了”,如果代码可以编译,则通常已经满足了该条件。谦虚地回答他的问题将导致他将任务分配给可能也是亲戚的装模商。
那么,您的听众是什么?
我认为人们关注的是“已学习”一词的终结性,即完美时态,表示您已完成学习。众所周知,编程语言就像口头语言一样,是生命的实体。例如,完全掌握C#2的人会使用LINQ,Lambdas,var
关键字,对象/集合初始化器和扩展方法查看C#3,并且发现从他以前的版本中学到了很多东西。具有await
,async
关键字和其他新语言构造的C#4也会发生同样的情况。
我们只是在这里讨论语法。我们忘记了大多数语言都与框架配对。C#具有.NET框架,Java具有它自己的框架,Ruby,C ++,PHP和PERL也是如此。将语言的框架视为词汇,而语言本身只是语法。知道该语言意味着您知道如何用该语言来造句。了解框架意味着您可以用语言很好地表达自己。最后,一旦了解了语法和词汇,就需要学习习语,以便您以“母语”的身份编写代码。
我会说有几个学习层次。
await
来自C#5,C#4中的主要新功能是dynamic
。
您很少会说您已经学过一种语言。这意味着您已经完成了对它的学习,这是愚蠢的。
如果您可以编写不会明显破坏该语言惯用语言的代码(也许是在对知识进行了一周的修改之后),而无需引用语法参考,那么说您知道一种语言就很好。
当您开始注意到它的缺点时。一旦您开始学习一种语言,通常您通常仍在忙于学习东西或参与其中,以注意到它的失败之处(当然,除非您从消极的角度开始学习它,以了解它的糟糕程度,否则这是必须的)到目前为止与您最喜欢的语言相比)。我想说的是,直到您敏锐地意识到某门语言失败的地方,您才真正了解一种语言。
当您的应用程序或组件可以读取邮件时,即Zawinski定律,指出:
“每个程序都会尝试扩展,直到可以读取邮件为止。那些无法如此扩展的程序将被那些可以扩展的程序替代。”由Jamie Zawinski(被称为“软件信封法”)创造,以表达他的信念,即所有真正有用的程序都面临着向工具箱和应用程序平台(即他说,邮寄东西只是其副作用)。
当RSS流行为“ ...可以阅读RSS提要”时,已对此进行了更新,并且很可能最近将其更新为“ ...可以阅读Twitter提要”。;-)
我认为您在看不到语言时就已经学会了。您不会看到for周期和数据访问,但是会看到算法的工作流程。
您不会在参数传递和数组处理,魔术宏上玩花样。您不是将代码视为向朋友和老师展示的自我营销材料,而是将您对问题的理解以及对计算机的意愿以最易读的方式表达出来。
您有一些习惯,可以通过遵循这些习惯来避免很多错误,例如:即使您绝对确定“只会出现一行”或“我不是傻瓜并且知道”,在表达式中使用{}代码块和()运算符优先顺序”。
您不再需要数数您知道的类,模式和框架API。这就是智能感知,参考和教程以及Google的用途。但是,当您查看问题时,您会立即知道可以将其拆分为哪些部分,以及可以使用哪些工具和算法来解决它们。
您所做的工作是优雅而小巧的。您喜欢编码,并轻松找到错误。是的,高手也会因为是人类而制造错误,但由于其代码结构会将错误引导到正确的地方,所以他们会很快发现它们。
最终意识到:您已经学会思考,分析和解决问题;与它们相比,实际语言是次要的,只是当前的规则和工具箱。