值得成为计算机语言多语言吗?[关闭]


14

您经常会听到程序员应该学习许多不同的语言来提高自己的水平。我仍在上学,没有丰富的编程经验(一年多一点)。但是,提高编程技能的崇高意图变成了某种OCD:我觉得直到学习所有相对已知的编程语言我才会冷静下来。

这是一个问题本身:能够使用多种语言的编程语言实际上会对您有帮助吗?(我不是说通常的“程序员应该至少了解所有范例”,我的意思是实际上您通常会听到的所有语言)?有没有类似的经历?它对工作/技能/职业有帮助吗?您多久可以运用这些技能?


3
我认为,当人们建议他人学习新语言时,与其说是学习语言,不如说是学习新范式。我的两种主要语言是Python和C ++,学习Haskell对我来说是一个很棒的经历,因为它迫使我用不同于其他方式的思维方式。
Vitor Py

4
了解所有主要范例确实有很大帮助。如果您要设计自己的语言,那么至少对所有有趣的语言有所了解可能会有所帮助(并且一旦进入“面向语言的编程”范式,您很可能会这样做)。
SK-logic

4
“不影响您对编程方式的思考的语言是不值得了解的。” (艾伦·佩利斯)。阿们

2
@Job,了解10种编程语言只需要学习一门口语基础知识的一小部分。
SK-logic

2
@ SK-logic取决于。我敢打赌,我可以教一个6岁的孩子更快地说西班牙语,然后我可以教他python。
雷诺斯

Answers:


10

“程序员至少应该知道所有范例”

那有帮助

我的意思是实际上您通常会听到的所有语言

那没有帮助。尽管一旦您了解所有范例,您就可以每周学习一门语言。

当您需要一种语言时,花一周的时间学习该语言是最理想的选择。

一个好的程序员就是一个懒惰的程序员

边注:

学习通用/流行语言并不像学习“所有范式”那样有用。前者不能涵盖后者。例如,学习Self对于理解原型OO非常有用。它既不是一种通用语言,也不是一种流行的语言,但是,如果您已经了解红宝石,那么它比学习python有用得多。

语言设计:

如果您编写/设计一种新语言,了解大多数语言会很有用。因此,有一个可靠的用例,但这是一个相当小众的领域。

我建议您改为:

至少2次读完代码2次

语言根据“受欢迎程度”的不同来回移动。几个月或几年后,技术就会过时,具体取决于技术曲线。(网络以每6个月的速度淘汰技术)。

编程技术和计算机科学理论始终保持不变。


但是语言中有许多有趣的次要功能,甚至从已知的范式中学习新语言也会让您
大吃一惊

@AntoBarkowski是一个错误的声明,不要将SmallTalk与其他OO语言进行比较。Java / C ++ / C#/ etc。不是真正的面向对象语言。当然,SmallTalk是值得学习的,但是它不是相同的范例;)
Raynos

6
人们一直在说“您可以每周学习一种语言”,但这不是事实。当然,您可以使用该语言编写语法正确的代码,但除此之外,还有更多。例如,C#和Java在语法上非常相似,并且都是OO语言。但是,用C#编写Java代码并不能使您成为C#程序员。
R0MANARMY 2011年

3
@ R0MANARMY“ <好程序员>可以在一周内学习一门语言”。语言不包括库,框架和API。我的好程序员的定义可能是非常高的,但。
雷诺斯

1
@ R0MANARMY,您提到的那些微小的,不重要的语义位可能需要一个多小时才能理解?
SK-logic

4

正如您所说,这不是关于如何使用多种语言进行编码,而是关于范例。您了解的选项越多越好。知道多种语言肯定会有所帮助,但是如果您继续学习相同类型的语言,您将很快陷入困境。

关键是要知道哪种语言/系统最适合实施项目的一部分。即使您已经决定使用一种主要语言(就像大多数项目一样),您仍然拥有必须编写的各种工具,脚本,自动化和构建支持。通常,各种其他语言或工具在这方面比您的主要语言要好。

只是澄清一下,我发现尝试学习您实际听到的所有语言是很愚蠢的:有成百上千种语言,而且通常它们只是其他语言的细微变化。


3

恕我直言,事实并非如此。首先,因为您不到一年就不会学习语言。能够在其中编写代码需要2天的时间,但是为给定语言编写流利且格式正确的代码需要大量的经验。为什么GC会像它那样工作,在何处分配内存,哪些结构更快,如何正确连接字符串,什么是语言的危险角落等。

我写的是C ++开发人员的可怕Java / .NET代码,因为许多Java开发人员都编写了可怕的C ++代码。

学习其他语言的最好之处在于,您可以学习新的范例,并且可能有解决某些具体问题的更好工具。说-您需要非常快速的非公开GUI应用程序,.NET在此是不可替代的。

但是要学习一种语言以免在.NET中使用结构,或者不泄漏C ++中的每个对象,则需要花费大量时间。我认为最好将其用于学习设计原理,平台和您选择的语言。

但这只是我的意见。


2
“因为您不到一年无法学习一门语言”错误。不要将学习语言与学习流行的框架混淆。最后还要在列表中添加“常规编程技术”。
雷诺斯2011年

@Raynos:我认为这就是他的意思。
Steven Jeuris 2011年

1
我最喜欢使用一种新语言的方式是为它的一个体面的子集实现一个编译器。总共需要2-4个小时来理解该语言,并能够识别和窃取该语言的最佳功能。不到一年,甚至一天。
SK-logic

1
好吧,如果您正在参加大型C ++项目,并接受了诸如“我已经用Java编程10年,但是我在C ++上花了6个月,所以我就懂这种语言”之类的话。我怀疑您会获得这份工作的高薪高级开发职位。所以,不,我仍然认为您不可能在一个月左右的时间内学习语言。
编码器

2
@Coder,如果您正在参加一个大型C ++项目,并且接受了诸如“我用20种语言(包括C ++)已经使用20年的语言进行编程”之类的采访,那么您可能会找到一份工作。
SK-logic

2

这是不切合实际的认识他们,但它可以知道非常有用的关于他们。我的意思是,当您遇到新问题时,您可以说:“我隐约记得[其他语言]有解决此类问题的绝佳方法。我应该查一下。”


我发现SE Radio之类的播客非常适合。他们通常在适当的时长上通勤来上班,您可以通过这种方式学到很多东西。但是其形式为何<X>有趣。
Zachary K

1

通过建立领域知识,然后学习许多编程语言,您将进一步帮助您的职业。更不用说您将需要学习其他工具,例如如何在您的语言中使用探查器,用于调试器的工具,最佳的GUI框架以及如何快速对其进行编程,存在哪些常见的第三方库并需要权衡取舍以及特定于语言的习语。

学习做更多的事情而不是做同一件事的许多方法也是明智的。


1

我曾在多个系统中使用多种语言编写组件(最严重的违规者要求我提供用Ada 83,C,Fortran 77,SQL和DCL编写的代码,而我的上一份工作要求我提供C ++和Java代码) )。所以,是的,在现实世界中,您需要足够多地了解多种语言才能提高他们的生产力(富有生产力!=熟练;您将不会成为C ++ Java 的深入专家 ...除非您真是个怪胎)。

除此之外,花时间学习多种语言的目的是帮助将概念实现分开。对我来说,直到我与多个OOPL一起工作,OOP才变得有意义。另外,在您的职业生涯中的某个时候,您必须快速换档,并开始研究完全陌生的事物。现在花一些时间超越您需要知道的范围,这将使过渡确实发生时更加容易。


1

我认为最好学习几种不同的语言,然后再至少学习一种语言,然后再着手学习每种可能的语言。一旦拥有最小的广度,深度对于您作为开发人员的进度就变得非常重要。我会看到一个人拥有一种或两种语言的深度,还有一些其他人,而不是只有一点点什么的人。深入学习就像学习另一个范例,它将改变您对编程的看法,并为真正复杂的令人兴奋的项目打开大门。


0

这就像学习说多种语言一样。要学习所有知识以达到有用的程度几乎是不可能的。坚持使用那些可能会用到的东西,您会过得更好。您可以很好地学习C ++,C#和Java,但是尝试同时将Perl,Python,VB(不是VB.NET),Ruby和JavaScript挤到专业水平只是愚蠢的。一天中没有足够的时间来同时提高所有技能。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.