学习一门新的编程语言很像学习一门新的自然语言。但是,我相信我的许多双语朋友和外行朋友都会同意,有时在两种或多种语言之间切换会让人感到困惑。例如,我的母语是英语,但我在学校注册了法语浸入式课程。虽然这确实让我会说两种语言,但当我用英语工作时,它确实产生了一些意想不到的后果。在最长的时间里,我会在许多单词上加上一个E,或者在一组数字的末尾加上一个美元符号($32而不是$32),这两者都是英语中不存在的法语要求。随着时间的推移和练习,这些困惑最终消失了,我现在可以(或多或少)无缝地在两种语言之间切换。我注意到这种情况再次发生,尽管这一次,我正在尝试从C#和Java的结构化世界过渡到Python。在我上大学的时候,我所有的课程都围绕着像C#这样严格的编程语言展开。现在,我正在尝试过渡到数据科学,目前正在学习Python。对于喜欢有条理的人来说,Python是一场噩梦。对我来说,分号、大括号和类型变量是严重缺乏的。似乎我正在学习一种与我的母语(C#)完全不同的新语言(Python)。学习类似的C#、Java、JavaScript等编程语言,就类似于学习类似的自然语言。例如,通过了解法语,我很容易掌握意大利语、葡萄牙语和西班牙语等类似的语言。然而,学习一种与我所知道的(Python)具有不同语义的编程语言(Python)类似于学习冰岛语或普通话,对我的法语背景没有太大帮助。但是,正如我过去发现的那样,学习一门新的编程语言与学习一门新的自然语言是一样的。此外,流利使用多种编程语言涉及一些与我流利使用多种自然语言相同的基础知识和技能。首先学习静态类型和特定于语法的语言几乎每一篇文章都以“我应该先学习哪种编程语言?”为标题。表明Python是理想的学习第一语言。虽然我同意Python由于其简单的语法和灵活性而成为一种很好的第一门语言,但我相信以后没有必要学习一些编程基础知识。因此,我将提供一些违反直觉的建议:首先学习一种静态类型和语法特定的语言。与其学习一种会阻碍你前进并让你轻松进入编程世界的语言,不如学习一种会因为分号而忘记分号,或者因为不正确的数据类型而拒绝工作的语言。错误。静态类型语言静态类型语言,如C#和Java需要将数据类型分配给它们的变量。数据类型包括字符串、整数和布尔值,仅举几例。变量绑定到它们在初始化时分配的数据类型,不能更改,否则代码在运行前会抛出错误。另一方面,Python等动态类型语言不要求在变量初始化时分配数据类型。变量类型将在运行时(在程序编译并运行之后)检查,看它是否是正确的类型。通过学习如何使用静态类型变量,您将对将来可以创建的数据类型有一个基本的了解。例如,JavaScript是一种快乐的小型编程语言,可以毫无问题地将整数和字符串相加。但是,不了解数据类型可能会在以后发生错误时导致问题。通过严谨的学习和对数据类型的扎实理解,你在学习动态变量语言时可以轻松避免很多令人头疼的问题,这种语言的变量可以随时改变数据类型。此外,首先学习静态类型语言将为您的编码过程添加一层逻辑。特定语法语言学习一门新的自然语言时,首先学习字母表,然后学习该语言的单词、句子结构、标点符号和语法。学习编程语言的相似之处在于,每种语言都有特定的语法,必须使用该语法才能使代码正常工作。换句话说,每种编程语言都有自己喜欢的结构句子和段落的方式。某些语言,例如Java和C#,具有非常特定的语法,如果您忘记了分号(通常放在一行代码的末尾,类似于句点),它们将无法工作。放在句末表示句末)。其他语言,例如Python,相对没有必须遵循的句法结构。例如,与C#相比,Python相对没有分号,几乎没有大括号来组织其代码。首先学习特定于语法的编程语言将使您对编写代码时需要遵循的正确结构有深入的了解。通过理解正确的缩进结构、代码行以分号结尾的必要性以及在大括号内编写函数的要求,您将能够编写易于理解、更有条理、易于维护和调试的代码.此外,当您开始尝试语法不太严格的新语言时,这将为您提供一个编写代码的模板。从本质上讲,现在学习纪律,以后收获回报。说一口流利的母语,说世界上每一种语言都比说一门好语言更难,不是吗?另外,如果你只懂每一种语言,你将无法与任何人交谈。这行得通吗?由于您不会拥有丰富的词汇量,也不会对任何特定语言有深入的理解,因此您甚至无法通过输入Google翻译来尝试与来自世界各地的人们进行交流。可能你们两个最终都非常困惑!我认为编程语言也是如此。与其尝试学习几种不同的语言却不能流利地理解其中的任何一种,不如精通您的母语或所选语言。我并不是建议您必须精通一种编程语言,然后再学习另一种。但是,在尝试学习一门新语言之前,您应该对一种语言的编程概念有充分的了解。为什么?那么,当你学习一种语言的代码基础时,你可以假设另一种语言的基础基本相同。例如,if/else语句在您遇到的每种编程语言中都执行相同的功能,但唯一的区别是您用来传达它们的语法。例如,C#中的if/else语句需要大括号来组织语句,而Python中的if/else语句没有大括号,而是使用单个冒号和代码缩进来分隔每个语句。从根本上说,该语句在两种语言中的工作方式相同。就像你学会用母语说“你好”和“再见”一样。一旦您了解了这些词的含义以及如何使用它们,您就可以学习如何用多种不同的语言说“你好”和“再见”。这些词在不同的语言中会有相同的含义,唯一的区别是你用不同的语法来写它们,并根据不同的约定使用它们。通过了解您的第一门编程语言是偏爱单个类还是多个类,具有特定的变量命名约定,还是需要面向对象的结构,您将逐渐掌握第一门和后续语言。.精通一种语言后,您将能够更快地掌握其他语言的细微差别,因为您对编程语言之间的差异有了更好的理解。不要对口音进行编码当说自然语言时,如果有人说话重,你可以理解。例如,尽管我的法语说得很多,但母语为法语的人都能听懂我的话。因为我使用的是法语惯例,所以即使我使用了令人费解的句子结构或发音错误,他们也能理解我想表达的意思。为了流利地使用一种新的编程语言,您不能像使用您已经知道的语言那样对其进行编码。如果这样做,则该语言可能不一定理解您正在尝试做的事情,或者它正在以非常低效的方式执行您正在尝试做的事情。当我使用Angular作为系统的前端时,我在大学的顶点项目中陷入了这个陷阱。我当时非常了解JavaScript,并且知道Angular与JavaScript类似,所以我尝试使用类似于JavaScript的约定在Angular中进行编码。对我来说不幸的是,尝试使用重音并不能产生好的代码,这可能是因为不理解Angular的约定。我的代码全部用Angular编写,但带有浓重的JavaScript口音。换句话说,请不要重蹈我的覆辙——按预期使用新语言,不要带口音。通过让自己沉浸在一种新语言中并强迫自己理解其所有独特的约定,您将学习如何以您期望的方式使用该语言进行编码,而无需将其用作您已经知道的语言。这将使您能够流利地使用多种语言,而不会说所有的语言都带有浓重的口音。例如,如果英语是你的母语,但你决定快速学习其他五种新语言,你最终可能会说俄语、意大利语、斯瓦希里语、意第绪语和阿拉伯语,所有这些都带有浓重的英语口音并使用英语惯例。如果您选择学习俄语惯例,以俄语为母语的人会理解您的意思。其他语言也是如此。如果您尝试使用典型的英语句子结构说斯瓦希里语,肯尼亚的人很可能听不懂您的意思。花时间阅读您的编程语言提供的文档,感受一下该语言的特定约定。这不仅会使您的语言更加流利,而且在与理解该语言并希望您遵守其约定的其他人一起进行团队项目时,也会使您更有价值。一开始您可能不得不强迫自己在没有任何口音的情况下编写代码,但是当您可以轻松地从一种语言切换到另一种语言时,辛勤的工作就会得到回报。最后的想法本文概述了在成为多语言编程语言过程中遇到的一些更独特的想法。这些技巧都对我帮助很大,但如果我不提一些更通用的技巧,那将不是一篇非常有用的文章:阅读语言文档,阅读源代码,使用你自己的新语言“单词”复制代码示例,为一种新语言编写备忘单等,以完全沉迷于该语言。继续用Youtube、Medium和StackOverflow等各种语言编写新语言的编码教程。学习一门新的编程语言时,您需要提供帮助。换句话说,主动学习将成为你的朋友。用您正在学习的新语言重新创建您已经完成的项目(即使是简单的项目),并尽可能地尝试使用新语言。参加黑客马拉松、Kaggle竞赛和需要您说一门新语言的编码挑战。与精通该语言的人一起工作。通过与精通我正在尝试学习的语言的人结对编程,我学到了很多东西。聆听他们编写特定代码时的思维过程,可以让他们深入了解该语言的工作原理以及他们为何以特定方式编写解决方案。我能给出的最好建议就是坚持不懈。学习一门新语言很难,编程语言也不例外。如果学习需要一点努力,请不要放弃这门语言。幸运的是,互联网上有多种资源可以帮助使学习过程更轻松、更直观。最重要的是,不要忘记在学习一门新语言时应用可用的建议和工具。从长远来看,您不仅会更好地理解这门语言,而且还会成为更好的开发人员或数据科学家。原文链接:https://towardsdatascience.com/how-to-become-fluent-in-multiple-programming-languages-9f473c146b90
