当前位置: 首页 > 科技观察

如何成为多语言编程人才?这里有绝招

时间:2023-03-15 10:26:10 科技观察

本文转载自公众号《阅读核心》(ID:AI_Discovery)学习一门新的编程语言就像学习一门新的语言。相信很多学过两种或两种以上语言的朋友都会认同,在双语或多语之间切换,难免让人头疼。例如,我的母语是英语,我在学校参加了法语浸入式课程。一方面,我的英语和法语都达到了非常流利的水平,另一方面,也对我的英语使用产生了意想不到的效果。很长一段时间,我在很多单词的末尾加上一个“E”,或者在数字后面加一个美元符号(32$而不是$32),而这些要求只存在于法语中,英语中没有。经过一段时间的练习,我终于不再迷茫了,现在我可以在英语和法语之间无缝切换了。然而,这又发生了——我试图从C#和Java切换到Python。在大学里,我所有的课程都围绕着一种严格的编程语言展开,比如C#。现在我要进入数据科学领域,并且正在学习Python。对于喜欢有条理的人来说,Python是一场噩梦。对我来说,分号、花括号和类型变量严重不足,就好像我正在学习一种与我的母语(C#)截然不同的新语言。学习相似的编程语言(如C#、Java和JavaScript)就像学习几种相似的语言。比如我会法语,学意大利语、葡萄牙语、西班牙语等类似的语言会比较容易。但是我目前知道的语言并不能帮助我学习编程语言(Python),因为它们在语义上完全不同,就像我的法语知识不能帮助我学习冰岛语或普通话一样。精通多种编程语言,需要在掌握多种自然语言的过程中运用一些基础知识和技能。从学习静态类型和语法特定的语言开始。几乎每篇文章都以“我应该先学习哪种编程语言?”为标题。同意Python是初学者最好的编程语言。同意Python语法简单,结构灵活,适合入门,但学习不到后期需要的一些编程基础知识。所以我的建议可能听起来不合理:首先学习一种静态类型和语法特定的语言。与其学一门温和的入门级编程语言,不如学一门容错率极低的编程语言。一旦漏掉一个分号,就会立即出错,一旦数据类型不对,就会停止运行。静态类型语言静态类型语言,如C#和Java需要将数据类型分配给它们的变量。数据类型包括字符串、整数、布尔值等。变量在初始化时必须绑定到指定的数据类型,并且不能更改,否则代码会在运行之前失败。动态类型语言(如Python)在变量初始化时不需要指定数据类型,而是在程序编译运行后检查变量类型是否正确。通过研究静态类型变量,学习者将对以后需要处理的数据类型有一个基本的了解。例如,JavaScript是一种简单的编程语言,可以轻松组合整数和字符串。但是如果你不了解数据类型,当你的程序出错时,你可能会遇到问题。通过严格的学习和对数据类型的扎实理解,您可以在学习带有变量的动态类型语言时省去很多麻烦,让您可以即时更改数据类型。此外,首先学习静态类型语言有助于增强编码过程的逻辑性。特定于语法的语言在学习一门新的自然语言时,您从学习字母表开始,然后学习单词、句子结构、标点符号和语法。学习编程语言的过程是相似的,因为每种语言都有特定的语法,必须使用该语法才能使代码正常工作。换句话说,每种编程语言都有特定的选择单词和句子以及形成段落的方式。有些语言(如Java和C#)有非常特殊的语法,甚至会漏分号(一般在一行代码的末尾,类似于句末的句号,放在句末表示句子的结尾)将导致它无法运行。而有些语言(比如Python)几乎没有硬性规定的语法规则。例如,Python比C#需要更少的分号和花括号。首先学习特定于语法的编程语言可以帮助您充分理解编写代码时需要使用的结构,例如缩进结构、必须以分号结尾的代码行以及函数的花括号。这可以使编写的代码更简单易懂,更有条理,更易于维护和调试。而且,它还可以提供编写代码的模板,方便学习其他语法不太严谨的编程语言时使用。简而言之,先掌握严格的规则,日后必有收获。精通第一语言如果你对世界上的每一种语言都有一点了解,但对任何一种语言都不流利,那么你将很难生存。没有丰富的词汇量,听不懂别人说的话,甚至不能使用谷歌翻译与外国的人交流,最终只会让双方感到困惑。编程语言也是如此。精通第一门语言或专攻一门语言,总比学习多种语言而只触及皮毛要好。这并不是说任何人都必须精通一种编程语言才能开始学习另一种编程语言。但是在尝试学习一门新语言之前,对以前语言的编程概念有一个扎实的理解是很重要的。为什么?在学习一种语言的代码库时,可以假设另一种语言大致相同。例如,if/else在每种编程语言中都做同样的事情,唯一的区别是它的表示方式。例如C#中的if/else必须在花括号中,而Python中的if/else则没有花括号,而是用冒号和缩进分隔。但从根本上说,if/else语法在两种语言中的作用是一样的。这就像用您的母语说“你好”和“再见”。一旦你理解了它的含义以及如何使用它,你就可以学会用许多不同的语言说“你好”和“再见”。这些词在不同的语言中代表相同的意思,唯一不同的是书写方式。通过了解一种编程语言是单级还是多级,是否具有特定的变量命名法,或者是否需要目标导向的结构,学习者可以更加熟练地掌握他们的第一语言以及他们以后学习的其他语言。一旦你精通一门语言,你将能够越来越快地掌握语言之间的细微差别。没有“口音”的编码在用自然语言交流时,即使别人有很重的口音,我们通常也能听懂。比如,虽然我说法语口音很重,但法国人都能听懂。这是因为我遵循了法语惯例,所以即使句子结构被扭曲或单词发音错误,他们也能理解我想表达的意思。掌握一门新的编程语言,不能把它编码成“你已经知道的语言”,否则可能适得其反或效率极低。我曾经掉进过这个陷阱。我在大学里最出色的项目使用Angular作为系统的前端。我当时对JavaScript非常熟悉。我知道Angular类似于JavaScript,所以我尝试应用JavaScript的方法并在Angular中进行编码。不幸的是,这种“重音”编码的结果很差,可能是因为不了解Angular的规则。我的代码全部用Angular编写,但带有浓重的JavaScript“口音”。不要犯和我一样的错误——遵循新语言的规则,不要用“重音”来编码。只有让自己沉浸在新语言的环境中并强迫自己理解所有特殊规则,才能正确地使用新语言编写代码。这使您可以在没有“口音”的情况下掌握多种语言。例如,如果一个以英语为母语的人决定放弃五种新语言,他可能最终会说俄语、意大利语、斯瓦希里语、意第绪语和阿拉伯语,但输出时带有浓重的英语口音和举止。相反,如果你学会了说俄语的习惯,那么母语为俄语的人就能听懂。其他语言也是如此。如果用典型的英语句型说斯瓦希里语,肯尼亚人可能听不懂。花一些时间阅读编程语言文献来感受一种语言的习语。这不仅有助于掌握这门语言,还会使你在团队项目中更有价值,并让其他使用该语言的人对你有所期待。一开始你可能不得不强迫自己在没有“口音”的情况下编写代码,但是当你可以流畅地切换语言时,努力就会得到回报。本文概述了我在学习多种编程语言时学到的一些技巧。这些小技巧对我帮助很大,但为了完美,这里提供几个更通用的方法:阅读相关语言的文献,阅读源代码,用新语言编写示例使用的代码,列出一个关于新语言的备忘录,让自己完全沉浸在所学语言环境中的方法。从Youtube、Medium和StackOverflow等各种资源学习编码语言的教程。更有冒险精神,换句话说,学习一门新的编程语言需要主动学习。用你正在学习的语言重新做一个以前的项目(即使是一个特别简单的项目),并尽可能地使它有用。参加黑客马拉松、kagle竞赛和其他需要您正在学习的语言的编程竞赛。与精通该语言的人一起工作。我一直从合作伙伴编程项目中受益匪浅。在编写代码时倾听他们的思维过程,可以深入了解编程语言的工作方式和原因。我能给的最好建议就是坚持。学习一门新语言很难,编程语言也不例外。不要仅仅因为这门语言有点难学就放弃它。幸运的是,有许多在线资源可以使学习过程更轻松、更自然。最重要的是,在学习一门新语言时,充分利用手头的设备和工具。随着时间的推移,它不仅会帮助你更好地理解这门语言,还会使你成为更好的开发人员或数据科学家。