学习一种新语言是否为时过早?[关闭]


11

个人背景:最近6个月,我在大学里正式学习C ++。在此之前,我涉足JavaScript已有一年。现在,我正在考虑在放假的一个月内学习Python。

通过在学习过程的早期分散我的注意力,是否会降低学习效率?我应该花一个月的时间继续使用C ++吗?还是学习一种新语言永远不会太早?


6
如果您大致了解编程,那么学习新语言应该可以帮助您成为更好的程序员。如果您是编程的新手,并且没有掌握流控制,数据类型,函数/方法等内容,那么我将等着学习其他语言。
松饼人2012年

我对您提到的所有内容都非常满意。
预计2012年

1
我将把您的问题放在正确的位置。在上大学的头六个月内,我已经被介绍了5种不同的编程语言。汇编(我忘记了确切的Moto平台),C,C ++,Visual Basic 6和Java。后来我继续学习Basic,C#,Visual Basic .NET,x86 Assembly。大学毕业后的两年内,我至少学习了5种其他编程语言。
拉姆猎犬,2012年

2
如果您可以执行多项任务并确定优先顺序,并且拥有纪律严明的学习方法,那么请务必继续学习第二语言。通常最好专注于并掌握第一语言。但是,学习各种编程范例也很重要。阅读以下链接的编程部分,以了解我的意思:每位计算机科学专业人士应了解的内容程序员的能力矩阵
Anthony

Answers:


8

我在Python方面的经验仅限于一些播放代码,只比hello world稍微复杂一点,因此,对于python来说,这并不是一个非常深入的答案,但是我可以告诉你:

语言之间的差异在细节上(例如语法)和某些特定的语言将有所不同(例如错误处理的不同方式,I / O功能以及编译器将输入转换为可执行文件的方式),但是C ++和Python都提供相同的功能范例,因此可以使用两种语言以几乎相同的方式解决问题。C ++和Python都是命令式的和面向对象的,因此,如果您对C ++的问题解决技术掌握了新的语法,并且对C ++感到满意,那么您可能很快就会选择python。如果愿意,您也可以使用Python进行函数式编程,但是我从未接触过该部分,因此我不能告诉您太多有关它的信息。

还为时过早吗?我真的无法从您的故事中明确地说出是还是否。您是否已经足够有信心使用C ++编写完整的(GUI)应用程序?(即使用库,更通用的语言功能(例如泛型和/或模板等)。)我认为学习新语言范例比在同一范式家族中学习新语言要困难得多。当您进入新的范式领域时,您将不得不花费更多的时间来更好地了解如何解决该范式的问题。在OO语言之间,在如何处理继承以及将参数/参数传递给影响性能的函数时如何在内存中传递数据方面存在差异。但是要开始使用这些功能,通常一开始并不重要。

我的猜测是,如果您对C ++有足够的信心以一种新颖的方式完成hello world之外的工作,那么就可以启动了。肤浅地学习许多语言将帮助您理解代码示例,无论使用哪种语言,但是创建自己的代码都需要对这些语言的工作方式以及它们之间的区别有更多的了解。

PS:当我想简单地学习如何使用一种新语言时,我通常会尝试以下方法来使您对语言的语法和肤浅的感觉有所了解:

  • Hello world(屏幕上的文字)
  • Hello world写入文件(向您介绍该语言的文件I / O基础知识,以及其他很多类型的I / O知识)
  • 使用不同的底数(10,十六进制,八进制)(整数和浮点数)进行一些标准计算。(教您截断和数字表示法)
  • 尝试使用一些图形库在精美的对话框中显示世界。(教您如何使用库和外部代码)

最后一段的结论很出色。尽管我不太了解C ++中的完整应用程序,但我感谢您提出的扩大我熟悉的范围的主张,即使这只是肤浅的。
预计2012年

6

当然是这样。

毫无疑问,学习一种新的编程语言有时为时过早。

最简单的情况是,如果出现一种el-stinko语言,并且在任何人指出其不合适性之前,通过学习它会损害您的大脑。我想到的一对夫妇包括BASIC,FORTH和APL。

对于更复杂的情况,一位伟大的计算机科学家描述了这个问题,该问题非常简短地指出,实践是永久性的,在学习计算机语言之前,应该学习许多学科,以使该语言不会扭曲更基本的理解。 。用他的话说:

我们使用的工具会对我们的思维习惯,进而对我们的思维能力产生深远而深刻的影响。

刚参加编程的对手叫Edsger Dijkstra,他的职业生涯非常杰出。他获得了以下奖项,被授予ACM图灵奖:

对于编程的重大贡献是一项高智商的挑战;雄辩地坚持和实践证明,程序应该正确地组成,而不仅仅是调试正确。用于阐明程序设计基础上的问题。

他大力提倡编程语言的过早学习的论文是:

“论真正的计算机科学教学的残酷性” http://www.cs.utexas.edu/users/EWD/ewd10xx/EWD1036.PDF

另外,请不要解雇我,我只是信使。


“我从BASIC开始,一生都感到伤痕累累”-难道不是要证明你的观点吗?如果您很早就被介绍给其他编程语言,那么BASIC不会产生如此大的影响吗?
tdammers

我想我需要一个图释。如果有帮助,我已删除该句子。
DeveloperDon

3

学习一种新语言是否为时过早?

我会说是的。如果您仍然围绕着计算机实际上可以完成您所说的那样的概念,那么学习第二种语言可能只会使您感到困惑。

但是,如果您意识到计算机完全按照您说的去做,不管它多么愚蠢,那么您很有可能对第一语言有足够的了解,而对第二语言(第三语言)的掌握程度很高。 !)语言不会破坏您的注意力。


2

你们不能两者都做吗? 我会用C ++进行一个项目,并学习Python的一些知识(只是因为它很棒),您可以使用Python在ProjectEuler.net上解决问题

总的来说,我认为学习一种语言,离开它并开始学习一种新语言是个坏主意。一个应该在早期阶段灵活地使用不同的范例。但这就是我的想法。


ProjectEuler.net看起来很棒!感谢您的推荐。
预计2012年

2

对于一个有经验的程序员,我毫无保留地说学习一种新语言几乎绝不是一个坏主意。对于一个大学生,我要提请多加注意,这取决于即将开设的课程。原因是,在学校考试中,您经常不得不背诵语言细节,而没有编译/执行环境的好处,因为编译/执行环境会轻易指出您的错误。

尤其是当您只有几个月的经验时,很容易混淆您脑海中的细节。如果您关心自己的成绩,并且正在参加此类考试,我会非常小心。在现实世界中,这不是问题。

编辑:我本来是说语法的,但是非语法的细节对教授同样重要,而且还有很多。


如果作为一个学生,您不记得语言之间的语法差异,那么您会遇到问题。您将不会总是有编译器来检查语法,在该字段中有一些非常实际的情况,您需要能够现场调用该语法。
Ramhound 2012年

我并不是说这是不可能记住的,只是它对初学者来说要难得多。语法上的巨大差异非常容易,但是教授可能会烦恼地append()push_back()列表等信息进行挑剔,如果他们有一段时间没有使用某种语言的某种功能,那么即使是经验丰富的程序员也必须查找这些东西。能够现场回忆语法无疑会有所帮助,但是对于绝大部分工作来说,这并不是必需的
卡勒·比勒费尔特
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.