个人背景:最近6个月,我在大学里正式学习C ++。在此之前,我涉足JavaScript已有一年。现在,我正在考虑在放假的一个月内学习Python。
通过在学习过程的早期分散我的注意力,是否会降低学习效率?我应该花一个月的时间继续使用C ++吗?还是学习一种新语言永远不会太早?
个人背景:最近6个月,我在大学里正式学习C ++。在此之前,我涉足JavaScript已有一年。现在,我正在考虑在放假的一个月内学习Python。
通过在学习过程的早期分散我的注意力,是否会降低学习效率?我应该花一个月的时间继续使用C ++吗?还是学习一种新语言永远不会太早?
Answers:
我在Python方面的经验仅限于一些播放代码,只比hello world稍微复杂一点,因此,对于python来说,这并不是一个非常深入的答案,但是我可以告诉你:
语言之间的差异在细节上(例如语法)和某些特定的语言将有所不同(例如错误处理的不同方式,I / O功能以及编译器将输入转换为可执行文件的方式),但是C ++和Python都提供相同的功能范例,因此可以使用两种语言以几乎相同的方式解决问题。C ++和Python都是命令式的和面向对象的,因此,如果您对C ++的问题解决技术掌握了新的语法,并且对C ++感到满意,那么您可能很快就会选择python。如果愿意,您也可以使用Python进行函数式编程,但是我从未接触过该部分,因此我不能告诉您太多有关它的信息。
还为时过早吗?我真的无法从您的故事中明确地说出是还是否。您是否已经足够有信心使用C ++编写完整的(GUI)应用程序?(即使用库,更通用的语言功能(例如泛型和/或模板等)。)我认为学习新语言范例比在同一范式家族中学习新语言要困难得多。当您进入新的范式领域时,您将不得不花费更多的时间来更好地了解如何解决该范式的问题。在OO语言之间,在如何处理继承以及将参数/参数传递给影响性能的函数时如何在内存中传递数据方面存在差异。但是要开始使用这些功能,通常一开始并不重要。
我的猜测是,如果您对C ++有足够的信心以一种新颖的方式完成hello world之外的工作,那么就可以启动了。肤浅地学习许多语言将帮助您理解代码示例,无论使用哪种语言,但是创建自己的代码都需要对这些语言的工作方式以及它们之间的区别有更多的了解。
PS:当我想简单地学习如何使用一种新语言时,我通常会尝试以下方法来使您对语言的语法和肤浅的感觉有所了解:
当然是这样。
毫无疑问,学习一种新的编程语言有时为时过早。
最简单的情况是,如果出现一种el-stinko语言,并且在任何人指出其不合适性之前,通过学习它会损害您的大脑。我想到的一对夫妇包括BASIC,FORTH和APL。
对于更复杂的情况,一位伟大的计算机科学家描述了这个问题,该问题非常简短地指出,实践是永久性的,在学习计算机语言之前,应该学习许多学科,以使该语言不会扭曲更基本的理解。 。用他的话说:
我们使用的工具会对我们的思维习惯,进而对我们的思维能力产生深远而深刻的影响。
刚参加编程的对手叫Edsger Dijkstra,他的职业生涯非常杰出。他获得了以下奖项,被授予ACM图灵奖:
对于编程的重大贡献是一项高智商的挑战;雄辩地坚持和实践证明,程序应该正确地组成,而不仅仅是调试正确。用于阐明程序设计基础上的问题。
他大力提倡编程语言的过早学习的论文是:
“论真正的计算机科学教学的残酷性” http://www.cs.utexas.edu/users/EWD/ewd10xx/EWD1036.PDF
另外,请不要解雇我,我只是信使。
学习一种新语言是否为时过早?
我会说是的。如果您仍然围绕着计算机实际上可以完成您所说的那样的概念,那么学习第二种语言可能只会使您感到困惑。
但是,如果您意识到计算机完全按照您说的去做,不管它多么愚蠢,那么您很有可能对第一语言有足够的了解,而对第二语言(第三语言)的掌握程度很高。 !)语言不会破坏您的注意力。
你们不能两者都做吗? 我会用C ++进行一个项目,并学习Python的一些知识(只是因为它很棒),您可以使用Python在ProjectEuler.net上解决问题
总的来说,我认为学习一种语言,离开它并开始学习一种新语言是个坏主意。一个应该在早期阶段灵活地使用不同的范例。但这就是我的想法。
对于一个有经验的程序员,我毫无保留地说学习一种新语言几乎绝不是一个坏主意。对于一个大学生,我要提请多加注意,这取决于即将开设的课程。原因是,在学校考试中,您经常不得不背诵语言细节,而没有编译/执行环境的好处,因为编译/执行环境会轻易指出您的错误。
尤其是当您只有几个月的经验时,很容易混淆您脑海中的细节。如果您关心自己的成绩,并且正在参加此类考试,我会非常小心。在现实世界中,这不是问题。
编辑:我本来是说语法的,但是非语法的细节对教授同样重要,而且还有很多。
append()
对push_back()
列表等信息进行挑剔,如果他们有一段时间没有使用某种语言的某种功能,那么即使是经验丰富的程序员也必须查找这些东西。能够现场回忆语法无疑会有所帮助,但是对于绝大部分工作来说,这并不是必需的。