刚入门的软件工程师经常问的问题是他们应该先学习什么编程语言,这可能是学习编程面临的最棘手的问题之一,所以很多老程序员没有办法给你一个明确的答案。事实上,您选择从哪种编程语言入手并不重要。今天我将与您讨论如何选择您的第一门编程语言。编程语言行不通初学者高估这个决定的重要性的主要原因是他们不了解程序员的工作。作为一名软件工程师,人们付钱给你不是因为你会使用编程语言,而是因为你可以通过教机器如何解决问题来创造价值。在您的职业生涯中,您将学习如何简化解决方案,当复杂性不可避免时,您将学习如何将其分解,将复杂的系统分解为更简单、更易于管理的部分。您还将学习如何在不使软件难以理解的情况下向您的软件添加功能,最重要的是,如何让其他人也能这样做。这些技能完全独立于任何编程语言,它们完全取决于你是否能够理解软件需求、编写算法、将解决方案分解成更小的逻辑单元、理解软件是如何工作的,专注于这些方面,将带走你的编程生涯更远。良好的心态我不是说编程语言一点都不重要。我提倡的是一种心态,将语言视为我们可以使用的工具,而不是你工作的全部,没有人认为选择最好的手术刀是医生工作中最重要的部分,因为你绝对不会会相信连手术刀都拿不动的心脏外科医生。在选择你的第一门编程语言时,你几乎没有任何信息,因此这种心态变得更加重要。人们往往害怕在错误的编程语言上浪费时间,但他们没有看到的是,每个人都有选择错误语言的经历,这与他们的工作无关。这通常有两个原因:人们最终了解了一个他们以前不知道的新领域(例如,经过一年的研究,您可能会了解数据科学);他们学到更多一旦领域信息已知,找到将使数据科学更容易的Python库。改变语言是工作的一部分将语言视为工具的另一个原因是你需要经常改变编程语言,在过去的几年里,每次我加入一个正在进行的项目时,我都不得不学习一些新语法。在一个例子中,我的新产品的首要任务之一是修改每天有数千万用户使用的功能,它是建立在一种我从未听说过的编程语言之上的。另外,即使你不切换项目,一个团队在一个活跃的代码库中添加一种新语言也是很正常的,这需要团队成员学习新的语法,因为一种新语言使每个人的工作量更轻松,或者一个重要的人决定采用一种彻底改变行业的语言(例如Apple在Objective-C主导的操作系统中添加Swift支持,以及Google在Android中添加对Kotlin的原生支持)。鉴于当今市场上编程语言的数量和地区的动态,快速掌握一门新语言的能力成为一项不可或缺的技能。有些人甚至会说,一开始就选择错误的语言对你有好处!不同的语言比你想象的更相似上一节中描述的场景可能听起来让人不知所措,但别担心,我并不是说你每次都必须从头开始学习一种全新的思维方式,事实上,快速学习一门新语言并不难,因为编程语言往往遵循类似的模式,你只需要学习一次,就可以在其他地方使用。为了说明这一点,让我们看一下以下用两种完全不相关的语言实现的相同简单算法。用于查找最小Kotlin实现的算法的Typescript实现这只是一个示例,在现实世界中,代码库必须处理这些代码片段中未涵盖的大量概念。然而,这两种方法看起来非常相似——当您向代码中添加更高级的概念时,情况通常如此。事实上,除非你一直在学习非常奇怪的东西,否则无论你身在何处,过渡到一门新语言都应该是直截了当的,尽管任何人都可能需要一段时间才能掌握一门新的编程语言,但有经验的开发人员应该能够在第一次使用新语言后的几天内编写生产级代码。如何选择编程语言我们已经确定语言不是工作中最重要的部分,你不必为选择第一种编程语言而烦恼,但这仍然是你成为一名工程师之前必须做的事情开发者,那么,你如何决定?这里有一些建议:(1)选择适合领域的语言有些人进入计算机科学并确切地知道他们想要构建什么样的软件,如果你是那种类型,就选择那种软件如果你想成为一名网络开发人员,学习Javascript,如果你想成为一名Android开发者,你可以选择Kotlin,如果你想成为一名数据科学家,你可能应该知道Python。(2)选一些简单的语言学习算法思维和解决问题已经够难的了,再说一遍,编程语言应该是一种工具,所以尽量选一门低级语言,比如C++,可以很强大也很实用,但是我还是建议你开始使用脚本语言,如Javascript或Python,入门门槛非常低,可以让你专注于学习核心编程概念,而不是处理内存管理和低级机器问题。(3)选择容易找工作的语言。尽管ALGOL开发人员可能有市场,但您应该找到一种可以被广泛采用的现代语言。如果你不确定选择哪种编程语言,你应该选择一种更流行的编程语言,这样一来,当你遇到问题时,你有一个强大的社区来支持你,同时也更容易让你的第一个落地工作。结论我想通过列举我自己的编程语言历史来结束这篇文章,我认为这很重要,因为我的人生轨迹就是一个活生生的证明。我学习的第一门编程语言是C++,其次是Java,两种非常好的语言,拥有庞大的用户群和一些非常强大的项目。但老实说,过去10年我们没有用它们写过一行代码,在我现在的职业生涯中,我没有在非学术环境中使用过它们,我仍然不后悔学习不过,要使用它们,它们是一种工具,让我能够表达编程概念。所以,如果您是一个完美主义者,想弄清楚您应该学习哪种编程语言,那么最终的答案是:只选择一种。
