如何选择正确的编程语言进行学习

本文作者Will Little是Code Fellows公司的联合创始人兼CEO。该公司位于西雅图,它是一家编程学习服务公司,他们的服务是一个为期8周的开发加速器项目(Development Accelerator)。他们承诺从这个项目毕业的学员都能够找到一份担任开发人员的工作。如果学员在毕业6个月内没有找到工作,就可以获得学费的全额退款。Will在苏黎世联邦理工学员取得了生物工程博士学位,并于2005年开始职业生涯,此前曾任网页开发人员,后开始创业生涯。(viavb译/快鲤鱼)


如今越来越多的人开始学习编程,尤其是年轻人和在校的学生,他们希望通过学习编程,在未来找一份不错的工作。但是另一个问题随之出现:目前世界上有着几百种编程语言,我应该学哪个?如何选择“正确”的编程语言进行学习?我所学的语言日后能否成为我获取好生活的保障?这些问题成为了很多初学编程的人最大的困惑,甚至还有一些已经学习编程一段时间的人,也开始思考这个问题,他们甚至开始质疑自己当初的选择。

在这个问题上,很多人都曾经给出了他们都看法,每个人的看法也都不尽相同。但是在我看来,这个问题都答案其实非常简单:

那就是 JavaScript。

当然,如果你还没有学过代数,那就先学Scratch这个语言。

也许有的人要开始反驳我了,他们认为学习哪种语言,应该取决于你想开发什么样的软件。事实也的确如此,但是我现在所说的,是学习编程的基础。关于开发什么软件应该选择哪些语言,我会在后面慢慢解释。我现在先阐述下为何我认为JavaScript是必学的编程语言。

首先我想简单的说一下我的编程学习之旅。我第一次接触学习编程,是在上小学的时候,那时候我学习了一种类似Scratch的简单编程语言,这个语言的名字是Logo。上初中的时候,在学习了代数之后,我又接触了另一个编程语言:Basic。就像这个语言的名字一样,它让我了解到了计算机编程的一些基本知识。上了高中之后,我又在计算机课上学习了另一种名叫Pascal的编程语言。

虽然Pascal这种语言很有趣,但是我发现很少有人用它来编写真正的软件,而且它的作用也并不强大,于是我对它失去了兴趣,也暂时远离了编程学习。升入大学之后,我尝试着继续学习编程,于是开始学习C语言,但是坦白说那时候我的兴趣都在生物学上(我上大学时的专业),所以很快又一次放弃了编程学习。我真正又一次重燃对编程学习的兴趣,是在读研究生的时候,在这期间我学习了Ruby,而且开始自己尝试编写网页应用。

而直到近期,在经历了多年的应用开发工作之后,我才真正体会到了JavaScript的重要性。随着网页浏览器变的越来越强大,人们开始希望浏览器能够为我们提供桌面电脑级的使用体验。对于网页应用开发人员来说,JavaScript这种语言成为了他们的核心技能,而且其作用越来越明显。

如今,对于初学编程的学生,我建议你们先要学好代数(数学老师们,代数对于编程人员来说非常重要!)。之后直接学习JavaScript。代数和JavaScript的组合,能够让我们认识计算机科学的基础,并且明白如何进行软件编写工作。另外这种语言非常实用,你在日后的实践中,还可以使用JavaScript编写大量的程序。

接下来学点什么?

在学会JavaScript之后,如果你还想学点其他点编程语言,那就要取决于你想编写什么样的软件了。如果你自己还不确定未来的发展方向,那就看一看下面我列出的这些语言,之后对它们进行一些基本的了解,看看自己对哪些语言感兴趣。

如果你不想针对网页和移动设备编写程序,那么你下一个要学的语言也许是Java或是C语言。(其实很多网页和移动设备应用开发人员也在使用Java,这意味着如果日后你改变主意了,你还有转型的余地。)

注意不要混淆Java和JavaScript。在计算机科学教育世界,Java已经成为了全球高校的标准编程语言。这是一种重量级语言,被广泛采用,它的功能十分强大,几乎可以用在任何地方。在掌握了Java之后,你就可以继续学习Groovy、Scala和Clojure等其他语言,来开发各种软件产品。

而C语言也是一种被广泛采用等计算机编程语言,大多数操作系统都使用C语言作为基础。在学习了C语言之后,你可以继续学习C++,这个语言能够帮你开发出更多优秀的软件,也能够为学习其他编程语言打下良好的基础。

如果你想开发移动应用的话,尤其是针对苹果的iPhone和iPad等设备开发应用,你应该学习苹果刚刚推出的Swift,目前这个语言还处于beta版。

而如果你想针对安卓设备开发应用,那么你应该继续研究Java。

如果你想做网页开发,那就先不要在Java、C和Swift等语言上下功夫了,你应该直接去学习HTML和CSS。首先你要先学习如何在浏览器中建立简洁的UI;之后你的目标就是使用JavaScript来丰富用户体验(UX)。

如果你对网页布局十分感兴趣,而且你还有着一定对视觉设计知识,那么可以通过努力让自己在未来成为一名“前端UI/UX网页开发人员”。在这种情况下,你应该认真钻研CSS和它的拓展语言Sass。另外,你对JavaScript和HTML语言的熟练度也应该要过硬。是的,前端工程师要掌握多种编程语言,这也是优秀的前端工程师和出色的UI/UX难求的重要原因之一。如果你选择了这条路,而且掌握了所需的所有知识,那你就成为了一个炙手可热的人才,每一家互联网企业都会争相追逐你。

如果你的兴趣在于将大量都数据放在自己都网页上,那么你应该要成为一名“网页开发人员(Web Developer)”。要成为一名优秀的网页开发人员,你应该掌握Java、C#、Ruby、Python和JavaScript等语言中的至少一种。这些语言中,每一种语言都有自己的网页开发框架;至于你需要使用哪一种语言,这取决于其他大量的因素,我们在此不进行展开讨论。无论你选择哪一种语言,它都会教会你如果将数据库中的数据进行储存,而且还会要求你使用SQL等其他语言。

在所有这些语言中,Java有一个非常成熟的社区,而且我之前提到过,它几乎可以用来做所有事情。而且学会Java的另一个好处,就是如果你日后需要转型,针对安卓系统开发应用,你所掌握的Java技巧将能够为你提供帮助。

C#则能够将你带入微软的世界,你一定知道,微软的操作系统是目前用户最多的桌面操作系统。这意味着学会C#,你能够为绝大多数互联网企业工作。

对于初学者来说,Ruby要比Java和C#等语言简单,也更容易入门。但是这种语言将把你的职业生涯限定在网页应用开发上。因此,如果你是一位创业者,并不想依靠开发软件为生,但是又想掌握一种编程语言,那么Ruby非常适合你。

Python与Ruby在功能上非常类似,但是在处理复杂任务方面,Python具有一定的优势。但是在入门困难程度上,Python又要高一些(其实这并不一定是件坏事)。但是相比于其他语言,Python还是比较容易理解的,而且Python有一个非常稳定的用户社区,这对于初学者来说非常重要。当你在学习过程中碰上了一些自己难以解决的问题,一个稳定的用户社区将为你提供宝贵的帮助。

最后,如果你一直在研究JavaScript,它也能够让你获得足够优秀的后端技巧(后端工作现在正变的越来越重要,这方面的人才也非常稀缺)。现在的网页应用中使用了大量的JavaScript代码,这意味着所有的网页开发人员都需要掌握JavaScript这种语言。JavaScript正在成为行业内都“通用语言”。

无论你决定走哪条路,都应该尽快的尝试用所学的语言开发软件

有太多的初学者在最初的向导阶段就放弃了,因为刚一上来的无知和困惑让他们产生了巨大的挫败感。使用别人开发的软件非常简单,而当他们需要自己从头开始开发一个软件的时候,其难度就会陡然而升。

解决这个问题当最好方法,就是自己想一个有趣的软件创意,然后开始将这个创意变成真正的软件。如果你想使用Ardunio来打造一个有趣的感应器或是机器人,那就立刻实施(其间它将迫使你学习C或是C++)。如果你想针对iPhone开发一个应用,那就先想好这个应用的样子和功能,然后开始在网上搜集各种指导和资源(开发iPhone应用需要你学习Swift)。如果你想开发一种优秀的网页应用,那么就立刻行动,并且在多个设备上进行测试(你将需要学习HTML和CSS)。

最后需要指出的是,编写代码实际上是一种艺术,只是大部分人都没有意识到这一点。在成为一名专业的开发人员之前,需要你进行多年的学习和练习。在开始学习之前,首先你要找到一个优秀的开发人员社区,并且参与其中,多与其他人讨论,遇到问题的时候也应该勇于提问,获得别人的指导和帮助。这样做的好处,是能够保证你以正确的方式学习正确的编程语言。

另外,如果你想走这条路,你就应该确保自己获得正规的教育。如果你有机会考取某所大学的计算机科学专业,你就应该毫不犹豫的进行申请,并且最终取得学位。而且在毕业之后如果有继续深造的机会,也应该进行继续学习。如果你是一位在职人员,想利用业余时间学习编程,那么网络上诸多的在线课程能够成为你优秀的学习资源。如果你身边有其他的朋友也在学习编程,你们应该成立学习小组,相互切磋,让其他人来评论你的开发成果,让他们帮助你达成自己的目标。

另外,如果你想走这条路,你就应该确保自己获得正规的教育。如果你有机会考取某所大学的计算机科学专业,你就应该毫不犹豫的进行申请,并且最终取得学位。而且在毕业之后如果有继续深造的机会,也应该进行继续学习。如果你是一位在职人员,想利用业余时间学习编程,那么网络上诸多的在线课程能够成为你优秀的学习资源。如果你身边有其他的朋友也在学习编程,你们应该成立学习小组,相互切磋,让其他人来评论你的开发成果,让他们帮助你达成自己的目标。

你可能感兴趣的:(如何选择正确的编程语言进行学习)