为什么总是“下一步我应该学习什么语言”而不是“下一步我应该解决什么项目”?[关闭]


14

为什么像我这样的新手程序员总是问他们应该学习的下一门语言,而不是问下一个要解决的项目?

为什么埃里克·雷蒙德(Eric Raymond)在他的“ 如何成为一名黑客 ”文章的“ 学习如何编程 ”部分中,谈到了学习语言的顺序(与处理项目的顺序)。

刚开始的木匠会问“我知道如何使用锤子吗……我接下来应该学习如何使用锯子或水平仪吗?”

我问,因为我发现,几乎任何有意义的项目,我很感兴趣,解决(如Web应用程序,一组扑克分析工具)需要我学习刚够的众多语言(Python和C,HTML,CSS ,Javascript,SQL)和框架/库(wxPython,tkinter,Django)来实现它们。

谢谢,

麦克风


5
老实说,这似乎有点...保证。也许您可以删除暗示,只留下您的问题?
Anon。

4
我认为您按时间顺序错配了步骤。如果木匠知道如何构筑门,他们已经知道如何使用这些工具了。但是在他生命的早期,他也遵循了我接下来应该研究哪种工具的方法。
CrazyPenguin 2011年

公平的评论回复:保证...很有娱乐性。抱歉,如果遇到麻烦。
MikeRand 2011年

4
手工工具比较的编程语言不是一个很好的比较。从表面上看似乎很有意义,但很快就会瓦解,最终变得有害无益。同样,太多人把它当作一个毫无疑问的事实对待。这个人做得不错,概述了不起作用的一些原因。journal.dedasys.com/2007/12/12/...
尼克Knowlson

我喜欢这个问题...!
Michael

Answers:


6

我认为,大多数人开始学习某种语言时,之所以这样做,是因为他们想解决现在或将来使用该语言编写的项目。为此,他们必须学习该语言,这需要时间。编程语言就像工具一样,但是您可以在大约60秒钟内学会使用锤子,而语言则需要更长的时间来学习使用。因此,许多人在专注于用该语言编写的项目之前就先学习语言。

另一方面,我认为当大多数人问接下来要学习哪种语言时,他们确实思考接下来要学习什么项目,但他们首先关注的是学习语言。

最后,即使您没有特定的项目或目标,学习语言也会很有趣


6
  • 许多专职开发人员的动机是提高就业能力。

  • 更具就业能力通常意味着要通过HR筛选器的障碍(然后是通过实际面试的障碍)。

  • 典型的HR筛选器通常具有可以与简历匹配的语言清单,但是无法评估技能或项目。

  • 实际面试的成功通常更多地取决于语言的运气和基本技能,而不是经验和对语言的深刻理解。

因此,除非要申请高级职位,否则在多种语言中表现平平比在少数几种语言中成为专家要好。


可悲的是,要超过HR屏幕,您必须提供当天的流行语列表。人力资源筛选过程是一个相当过程的过滤器,它将遗留许多合格的候选人。
杰夫,

1
@Jeff,从我听说过的HR筛选来看,他们想要的只是将简历的数量减少到可管理的水平,并且他们应用了许多任意的筛选器,例如“如果页面超过2页,则进行合并”。
Dominique McDonnell'2

2

与木匠类似的编程选择是“接下来我应该构建什么应用程序?” 或“下一步我应该构建什么系统?” 它们非常有效,并且与几乎可以普遍应用的项目分开。我可能有一个改变饮食或减掉20磅体重的项目,就像我可能需要编写一些新软件来将东西捆绑在一起一样容易。

不过,要回答这个问题,我认为这种想法是一种语言代表了该人工具箱中的一种工具,该工具可用于简历。有些人可能选择成为一名程序员来支付账单,如果这样做,他们可能会问他们应该添加哪种下一个工具,而这通常是一种语言,但是还有其他可能性,例如学习有关部署,源代码控制,测试和开发方法的知识。列举其他几个方面。如果木匠不得不透露自己拥有哪些工具,那么我可能会持类似观点。但是,有一套通用的工具被假定为大多数木匠能够或很快就可以获取。您是否曾经看到过有多少种供人们使用的锯和锤子?


1

也许部分是关于黑客的心态,至少对于某些程序员而言。黑客在行话文件中定义为

“与大多数用户相反,他喜欢探索可编程系统的细节以及如何扩展其功能,而不是大多数人,他们只喜欢学习最低限度的知识。”

因此,对于黑客来说,与其说是最终产品本身,不如说是关于学习和“修补”过程,概念,工具等,是的,创造事物的语言。有关流程本身的更多信息。

不断为下一个新事物和/或挑战而努力。已完成的项目很快失去了吸引力。有时(大多数时间?)在项目完成之前克服了最大的创意或技术挑战。当渴望新的精神挑战的思想向前发展时,许多项目都被放弃了。

尤其是,黑客对新观点,概念,抽象概念和思维方式以及某种心理黑客感兴趣:

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


0

如今,有多种常用的languages脚语言:C,C ++,C#,Java,JavaScript,Python,Perl,Ruby,Visual Basic等。程序员通过学习和混合许多语言来弥补这些语言的固有缺陷一起。

有一个名为Lisp社区的小型社区,它没有遍布现代计算的精神错乱。

由于Lisp是一种可编程的编程语言,因此您可以在其中表达您的所有想法,而不必迷失于其他语言或其他数据格式(例如XML)。Lisp可以应用在任何地方,甚至可以应用到Lisp机器看到的硬件级别。


为了有效地使用Lisp进行编码,您必须知道尽可能多的不同语言。否则,您将不得不重新发明轮子,而不是简单地从其他语言中窃取适当的概念和想法并在Lisp之上实现它们。
SK-logic

同意您对Lisp的功能的看法,但不同意学习其他语言无益:我在Lisp中使用的大多数技巧都积极地利用了我从其他语言中学到的东西(无论是模式还是反模式...)
mikera

0

因为学习一种新的编程语言是一项巨大的投资,而且没有人愿意为此付出不良的投资。
学习一种新的编程语言并不是要记住如何编写循环结构,声明类,导入另一个模块……
您必须知道如何用该语言编写惯用代码,而此过程确实需要花费大量时间和精力。
时间是有限的资源,努力是有限的资源,但分心,日常压力,账单和周日体育比赛始终存在并且必须与之共存。
程序员想明智地投资。

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.