程序员期望熟练使用几种编程语言?[关闭]


21

大多数程序员是专注于单个堆栈,还是保留其他东西,还是同时精通多种语言?如果不止一个,则标准数量是多少?

对于专家来说,我的意思不仅仅是简单地了解一种语言的语法-专家对标准库,工具,环境和语法的了解足够多,他们能够编写非平凡的程序,而不必不断地查找内容或阅读书籍/教程。


2
我认为这个问题没有客观(甚至主观)的答案。您越是专家,对您越有好处-拥有更广阔的视野。您是说“理想情况下,程序员应该成为多少专家的编程语言范例?”
talonx 2010年

6
我不同意您对专家的定义。对我来说,你是否拥有查找库函数是远远超过您是否可以使用该语言编写的代码习惯不太重要。如果您能说一种语言,那么您至少接近成为专家。
Chinmay Kanchi 2010年

1
如果您必须在词典中查询大多数单词以了解其含义,您如何看待语言?
blueberryfields

1
@blueberryfields:语言的流利性不只是词汇,而且不只是基础知识,词汇只是其中的一小部分。如果您不能用该知识来做一些聪明的事情,那就知道一个函数的存在是不好的。仅查找功能比找出如何使用该功能智能得多。我要说的是,充分了解文档以快速知道给定函数(如果存在)的位置可以找到足够的库知识。在那之后,您将准确记住您使用的那些,而模糊地记住您不使用的那些。
aaronasterling 2010年

2
@blueberryfields:取决于语言/平台了解一点可能是一件危险的事情。我的意思是:如果一个人声称自己了解很多库功能并且不需要阅读文档,我希望那个人也知道所有返回值,异常条件和陷阱/隐患,àRaymond Chen心地善良,并且能够写书并向Microsoft / Google等授课。否则,该人最终会犯下许多有趣的小错误。
rwong

Answers:


33

了解多种语言的主要好处不是直接编写它们。在其他所有条件都相同的情况下,我宁愿与一位也了解C,Python和Lisp(例如)的C#程序员一起工作,而不是只用过C#的人。并不是说了解更多的语言会更好,而是能够从多个角度,从多个角度思考问题确实很有帮助。

不改变您对编程的看法的编程语言是不值得知道的。艾伦·佩利斯(Alan Perlis)

这不是要检查另一种语言或将其放入简历中。您只需要充分了解其基本概念即可对其进行编程以获取全部好处。如果对语法有基本了解,您将不会得到这些。

更为直接的答案是“取决于”。

在大型公司中,您会被期望/可以专长,但是正如我上面说的,我认为了解您最喜欢的工具之外的内容仍然会有所帮助。

在较小的地方,您真的无法摆脱它。如果没有别的,您通常需要维护和构建应用程序,并且可能不像实际构建应用程序那样使用相同的语言来运行日志/数据处理。我猜您可以一种语言上脱身,但是拥有性能良好,强类型(或至少具有断言能力),可能是编译语言的好处会很繁重,而使用脚本语言进行维护/设置/脚本任务似乎很大。当然,我不想没有它。


3
是的,它也拓宽了我的视野–用多种语言思考以解决问题
maz3tt 2010年

3
对所有Inaimathi说+1。将编程语言视为一种工具。是的,我们需要非常了解我们的工具,但是当您只知道如何使用锤子时,一切都可能看起来像钉子
Liviu T. 2010年

14

您有一个非常有趣的问题:

我认为任何程序员都不应该是特定语言的“专家”。我相信,作为程序员,我们注定要成为编程,设计算法,思路清晰的专家,但是编程语言是您刚刚学到的。

我的意思是,一个“优秀”的程序员在处理开发项目时不会害怕经典的“我以前从未使用过”,应该在不到5个工作日内学会一门语言。您主要通过以下两种方式学习最佳实践,工具和库:1:阅读和2:工作。您要么反抗代码,要么阅读一堆书。

在“好程序员只写代码”而不是C#代码,C ++代码或Java代码的前提下,几年后,您会意识到,在学习开发程序之后,语言和技术并不是那么重要。当然,您将比PHP更好地了解C#,但是如果您学得很好,则必须进行Python调试。

希望我的想法像你一样!


+1“好的程序员只写代码...语言和技术并不那么重要”-的确,尽管得出这一结论需要大量的时间。
2010年

哎呀,你说对了:11年,而且
David Conde 2010年

3

一个,但这并不意味着您可以忽略其他人。您必须了解足够的理由来证明为什么不使用它们或知道您的限制,因此您可以在适当时寻求帮助。


3

我认为这可能取决于您的性格,有些人喜欢深入研究某个主题的角落和缝隙,还有其他一些人喜欢对事物有一个广阔的视野。您可能需要弄清楚自己是哪种类型的人格。我不是把一个人放在另一个之上。

作为前者,您将成为专家,专家或专家。作为后者,您将具有更广泛的用途,并且可以在各种情况下使用,但可能不会深入或深入到某个主题。




1

正如Joel在SO播客中所说的那样,最好了解许多种语言,并知道如何/何时使用正确的语言来完成任务。有些事情您可以用一种语言比另一种语言更快地完成。我认为最好了解命令式语言和功能性语言。很多时候,学习一种更难或更深奥的语言会训练您的大脑,使其成为整体上更好的程序员。


1

没有,因为有些程序员可能不是任何语言的专家,但他们会享受拥有的多样化环境,并会根据情况使用各种语言,因为有些人可能知道一些服务器端技术,例如C#中的PHP,ASP.Net .Net或VB.Net或Java,两种客户端脚本语言(如JavaScript或Flash),而无需使用任何用于在此处放置Web东西的硬件。

同时,可能有一些程序员是十多种语言或更多语言的专家,因为他们在大多数时候非常忠实地学习各种语言,以掌握每种语言的诸多知识。


1

一个,但必须能够读取不时用其他几种语言编写的真实世界中的程序。在某种程度上,程序员是专家,就像他们的母语一样,他们会思考,但是学习和说其他语言非常好,因为它表明程序员可以欣赏其他思维方式。如果他们能说一种和母语一样流利的语言,那就太棒了。


1

这是一个很好的问题,但我认为没有标准。通常,根据我所见,人们在一种环境(Windows / Linux,Mac,Solaris)中是一种高级语言(C ++,Java等)的专家。他们大致了解其他一些高级语言,但没有完全理解。(例如,C ++,Java人之间彼此大致了解)。粗略地讲,他们可以用一种专家的语言和另一种语言来比较一项任务的执行情况。然后,他们对某些脚本语言适度。(例如,Linux人士知道bash,Windows人士知道VBA,Web人士知道PHP)。
对我来说,重要的是基础算法知识而非语言。如果您的基础知识很好,那么用任何一种语言搞乱的机会就更少了。
但是,是的,有时了解哪种语言可能更好地完成任务可能会很有用。例如,以下代码在Pascal中比在C中快得多。

strcat(A,“ Hello”); strcat(A,“ WOrld”); strcat(A,“我打招呼!”);

这是因为Pascal将字符串的长度保存在第一个位置,因此很容易跳转到最后一个位置。在C中,字符串终止为'\ 0',因此实际上您必须遍历整个字符串才能进行strcat操作。


0

这取决于您编程的环境。在上一份工作中,我的大部分工作都在Perl中进行。在那段时间,我对此非常精通。现在,我在一个工作场所,那里有我几乎不了解语法的三种语言的遗留程序;除了我在新项目上的工作外,我还希望保留它们。我现在不太精通任何语言,但是我认为我对编程有了更好的了解。我已经学会了如何更抽象地思考,首先看大图,然后查找语法和库来填充细节。

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.