一个具有相当好的编程基础的人真的可以轻松学习任何编程语言,这是真的吗?
好吧,当我说到编程语言时,我指的是敏捷和动态语言,例如PHP,Perl,Ruby等,而不是遥远的过去的编程语言。
在某种程度上,我只研究过Java,groovy和flex。因此,从粗略的角度考虑,我是一名业余程序员,但还是一名快速学习者,要在任何一种这种语言上立足需要多长时间?
一个具有相当好的编程基础的人真的可以轻松学习任何编程语言,这是真的吗?
好吧,当我说到编程语言时,我指的是敏捷和动态语言,例如PHP,Perl,Ruby等,而不是遥远的过去的编程语言。
在某种程度上,我只研究过Java,groovy和flex。因此,从粗略的角度考虑,我是一名业余程序员,但还是一名快速学习者,要在任何一种这种语言上立足需要多长时间?
Answers:
是的,有保留。
四周前,我想说我具有C和C ++的专业水平的技能,以及Java的业余水平的技能。我的老板要求我用JavaScript编写一些软件,而我的经验为零,然后我就放弃了。
在接下来的两周中,我阅读了许多示例代码片段,找到了所有不错的库,并编写了程序。它已经完成,并且有效。然后上周我买了一本JavaScript书,并且一直在阅读,男孩,我不知道自己在做什么。现在我明白了为什么我的物体表现得如此奇怪。
所以现在我说,我知道一点JS。我可以阅读并使用它,但是我确定我在写的内容效率低下,难以阅读且不遵循最佳实践。
通常,快速学习者可能需要一个星期的时间,才能开始用一种新的语言生产低质量的产品。如果您了解Java,则可以很快选择C,C ++,PHP,Python,JavaScript,但只够修改代码或编写定义良好的函数。(因为正则表达式很复杂,所以Perl可能会更难。)为了正确地用新语言构建系统,您可能需要在有经验的指导者的指导下进行一年的专业开发。
基本上答案是肯定的,而不是肯定的,这取决于您所指的基本原理并且易于掌握。
无论哪种语言,了解编程的基础知识都将有所帮助。在这里,从根本上讲,我指的不是特定于给定范式的事物。诸如算法,抽象级别,隔离等。
充分了解给定范例(OOP,函数式等)的基础知识将使学习支持相同范例的语言变得容易。可能会说,精通一门语言将使您能够快速学习同一家庭的语言。
在同一个家族中学习每种语言后,我会更轻松地学习下一门语言,如果您知道的更多,那么这种学习曲线就会以指数级的速度增长,我不会感到惊讶。
---根据评论编辑了最后一部分-
但
对于任何类似的语言,是的
对于具有截然不同范例的语言,没有太多
例如:您了解C ++,想学习Java,这是小菜一碟;你知道VB.NET,你想学习Prolog ...整个蛋糕,可能是三四个蛋糕
我相信简短的答案是:“有点真实,但很难验证”。与语言的实际语法相比,要学习紧密相关的API,用法,习惯用法和范例(OO,功能等)是非常困难的。我认为,如果您具有编程基础方面的丰富知识和经验以及一些编译器知识,但是很容易被语言所征服,但是由于辅助性因素而难以掌握。
一个明显的例子就是从一种语言到另一种语言。C到Java。代码语法与C风格的程序非常相似,但是您还需要了解Java api(泛型,垃圾回收等),并且最有可能在我们当前的“ IT环境”中了解一些第三方框架(Spring,jUnit ,休眠等)来为企业做一些有用的事情。因此,如果您以前做过C,那么语言语法就不会成为问题,而是剩下的。
这来自于我,他们知道Java,C#,Javascript,HTML,CSS,Delphi等。我可能不知道我所使用的框架或库的每个细节,但是我知道自己的方法,并且由于我使用较早版本的经验。对于“快速学习者”来说,这实际上是所有横向思考。
我的共识是,良好的基础会在一定程度上有所帮助,我对此并不反对。但是,其他答案中缺少的一点是选择语言的成语问题,我认为要掌握一门语言,您必须习惯性地编写它。
例如,您可以编写完全正确的C#代码,而无需使用该using
语句自动处理对象,但是在编写良好的惯用C#中,您会看到using {...}
很多。我不知道有没有任何一种具有这种结构的.Net语言(尽管我了解的很少,而且我的Java很生锈,所以我可能是错的),所以即使是来自另一种没有这种语言的专家功能将需要从头开始学习这种习语。
这是对“相当好”和“容易”的某些定义的真实陈述。
您对基础知识的理解越好,从一种语言过渡到另一种语言就越容易。例如,如果您是一位熟练的Java程序员,并且对面向对象的语言有深入的了解,那么Java和C#之间的基本语法差异应该在一两周内就比较容易掌握。了解所有关联库中的功能如何从一个映射到另一个会花费更长的时间,但是一两个月后您可能会对基本库有一个不错的了解。然后,要弄清楚那些情况,其中语言A的问题的标准方法不能直接转换为语言B的标准方法(即,您想在C#中使用LINQ而不是Java中的JPA),并逐渐适应用新的语言就足够了 重新思考而不是用旧语言思考和“翻译”。这可能需要三到六个月的时间,具体取决于您通常使用地图功能的程度。在六个月的时间里,专业的Java程序员可能会成为一个相当高效和称职的C#开发人员。但是,与任何事物一样,您可以花费数年的时间学习所有复杂的细节,掌握各种语言和附加组件,这些库和附加组件不是语言的一部分,而是周围生态系统的一部分,并且通常可以提高自己作为该语言的开发者的水平。专业的Java程序员可能是一位相当高效且称职的C#开发人员。但是,与任何事物一样,您可以花费数年的时间学习所有复杂的细节,掌握各种语言和附加组件,这些库和附加组件不是语言的一部分,而是周围生态系统的一部分,并且通常可以提高自己作为该语言的开发者的水平。专业的Java程序员可能是一位相当高效且称职的C#开发人员。但是,与任何事物一样,您可以花费数年的时间学习所有复杂的细节,掌握各种语言和附加组件,这些库和附加组件不是语言的一部分,而是周围生态系统的一部分,并且通常可以提高自己作为该语言的开发者的水平。
我想说,这完全取决于一个人学习新语言的热情。如果基础知识很强,并且如果他能理解新语言如何解释任何事物,那么学习任何一种语言都将非常容易。
最好的例子是我的自我。尽管我已经使用C#进行了大部分工作,但我已经使用了多种语言,但是我的职业生涯从C开始,然后继续学习C ++,Java,VB,PHP,脚本语言,perl等。在整个学期的任何地方,我从未觉得自己无法学习这种语言。