您经常会听到程序员应该学习许多不同的语言来提高自己的水平。我仍在上学,没有丰富的编程经验(一年多一点)。但是,提高编程技能的崇高意图变成了某种OCD:我觉得直到学习所有相对已知的编程语言,我才会冷静下来。
这是一个问题本身:能够使用多种语言的编程语言实际上会对您有帮助吗?(我不是说通常的“程序员应该至少了解所有范例”,我的意思是实际上您通常会听到的所有语言)?有没有类似的经历?它对工作/技能/职业有帮助吗?您多久可以运用这些技能?
您经常会听到程序员应该学习许多不同的语言来提高自己的水平。我仍在上学,没有丰富的编程经验(一年多一点)。但是,提高编程技能的崇高意图变成了某种OCD:我觉得直到学习所有相对已知的编程语言,我才会冷静下来。
这是一个问题本身:能够使用多种语言的编程语言实际上会对您有帮助吗?(我不是说通常的“程序员应该至少了解所有范例”,我的意思是实际上您通常会听到的所有语言)?有没有类似的经历?它对工作/技能/职业有帮助吗?您多久可以运用这些技能?
Answers:
“程序员至少应该知道所有范例”
那有帮助
我的意思是实际上您通常会听到的所有语言
那没有帮助。尽管一旦您了解所有范例,您就可以每周学习一门语言。
当您需要一种语言时,花一周的时间学习该语言是最理想的选择。
一个好的程序员就是一个懒惰的程序员
边注:
学习通用/流行语言并不像学习“所有范式”那样有用。前者不能涵盖后者。例如,学习Self对于理解原型OO非常有用。它既不是一种通用语言,也不是一种流行的语言,但是,如果您已经了解红宝石,那么它比学习python有用得多。
语言设计:
如果您编写/设计一种新语言,了解大多数语言会很有用。因此,有一个可靠的用例,但这是一个相当小众的领域。
我建议您改为:
语言根据“受欢迎程度”的不同来回移动。几个月或几年后,技术就会过时,具体取决于技术曲线。(网络以每6个月的速度淘汰技术)。
编程技术和计算机科学理论始终保持不变。
正如您所说,这不是关于如何使用多种语言进行编码,而是关于范例。您了解的选项越多越好。知道多种语言肯定会有所帮助,但是如果您继续学习相同类型的语言,您将很快陷入困境。
关键是要知道哪种语言/系统最适合实施项目的一部分。即使您已经决定使用一种主要语言(就像大多数项目一样),您仍然拥有必须编写的各种工具,脚本,自动化和构建支持。通常,各种其他语言或工具在这方面比您的主要语言要好。
只是澄清一下,我发现尝试学习您实际听到的所有语言是很愚蠢的:有成百上千种语言,而且通常它们只是其他语言的细微变化。
恕我直言,事实并非如此。首先,因为您不到一年就不会学习语言。能够在其中编写代码需要2天的时间,但是为给定语言编写流利且格式正确的代码需要大量的经验。为什么GC会像它那样工作,在何处分配内存,哪些结构更快,如何正确连接字符串,什么是语言的危险角落等。
我写的是C ++开发人员的可怕Java / .NET代码,因为许多Java开发人员都编写了可怕的C ++代码。
学习其他语言的最好之处在于,您可以学习新的范例,并且可能有解决某些具体问题的更好工具。说-您需要非常快速的非公开GUI应用程序,.NET在此是不可替代的。
但是要学习一种语言以免在.NET中使用结构,或者不泄漏C ++中的每个对象,则需要花费大量时间。我认为最好将其用于学习设计原理,平台和您选择的语言。
但这只是我的意见。
我曾在多个系统中使用多种语言编写组件(最严重的违规者要求我提供用Ada 83,C,Fortran 77,SQL和DCL编写的代码,而我的上一份工作要求我提供C ++和Java代码) )。所以,是的,在现实世界中,您需要足够多地了解多种语言才能提高他们的生产力(富有生产力!=熟练;您将不会成为C ++ 和 Java 的深入专家, ...除非您真是个怪胎)。
除此之外,花时间学习多种语言的目的是帮助将概念与实现分开。对我来说,直到我与多个OOPL一起工作,OOP才变得有意义。另外,在您的职业生涯中的某个时候,您将必须快速换档,并开始研究完全陌生的事物。现在花一些时间超越您需要知道的范围,这将使过渡确实发生时更加容易。