Last Updated:

你应该先学习哪种编程语言?

银狐

大多数人的学习计划之旅始于一个深夜的谷歌搜索。

通常它就像“学习______”

但他们如何决定搜索哪种语言?“他们总是开玩笑说硅谷的Java。我想我应该了解这一点。“

要么:“哈斯克尔。现在好热 哈斯克尔“。

要么:“Go Go gopher真是太可爱了。”

然后是我们其他人。我们可能会搜索类似的内容:“我应该先学习哪种编程语言?”

很少有人提出这样的问题,他们会得到完整的信息图表处理。但这是其中之一:

决定你的第一个编程语言可能是一个有趣的过程 – 有点像“你是哪个Quentin Tarantino角色?”个性测验。

但是在你开始学习Ruby之前,因为你喜欢和小时候玩Play-Doh,让我提醒你:这里的风险非常高。

使用您的第一种编程语言,您将需要数百小时的练习才能实现远程操作。

所以你应该考虑以下因素:

  • 语言的就业市场
  • 该语言的长期前景
  • 语言学习有多容易
  • 你在学习的同时可以建立什么项目(并与朋友分享,这样你就可以保持积极性)

每年都会带来新的编程语言,以及新的学术论文。和新的网络漫画。

认真。看看上个月这个宝石:

在选择第一种编程语言时,不乏选项。为了缩小范围,以下是过去12年中与学习编程相关的最常见的Google搜索:

Java起起伏伏。

Python逐渐成为最受欢迎的选择。

但隐藏在这些之下的是Little Engine That That,在过去的几年中逐渐流行起来。那个引擎就是JavaScript。

在我谈论这些编程语言之前,让我澄清一下:

  • 我并不是说任何一种语言客观上都比其他语言更好
  • 我同意开发人员最终应该学习多种语言
  • 我认为首先他们应该学好一种语言。而且 – 正如您可以从标题中的颠倒文本中猜测 – 该语言应该是JavaScript。

让我们通过探索目前在学校如何教授编程来解决问题。

计算机科学101

大学传统上在计算机科学的保护下教授编程,计算机科学本身通常被视为数学的延伸,或与电气工程学位的联系。

当然,正如您现在所听到的那样:

“计算机科学教育不能让任何人成为专家程序员而不仅仅是研究画笔和颜料可以让某人成为专家画家。” – Eric S. Raymond

截至2016年,许多大学仍将程序化视为计算机科学,计算机科学就像数学一样。

因此,许多入门编程课程专注于低级抽象语言(如C)或数学专注语言(如MATLAB)。

部门主席通常会坚持到底,指向年度编程语言排行榜,如TIOBE索引,或者来自IEEE的这个:

这些排行榜中的大多数看起来几乎与10年前的排行榜完全相同。

但改变确实发生了。甚至在学术界。

2014年,Python 取代Java成为美国顶级计算机科学课程中最受欢迎的教学语言。

而另一个变化必将……最终……发生。

因为如果你看一下劳动力实际使用的语言,它会描绘出一幅截然不同的画面:

JavaScript是迄今为止49,397位开发人员使用的最流行的语言,他们回应了Stack Overflow的2016年调查。

超过一半的开发人员使用JavaScript。这对于前端Web开发至关重要,并且与后端开发越来越相关。它正迅速扩展到游戏开发和物联网等领域。

工作发布也比Java以外的任何编程语言更多地提到JavaScript:

来自世界上最大的就业发布聚合器Indeed.com的数据

我们围绕JavaScript 构建开源社区的课程并不是偶然的。在过去两年中,超过5,000人使用Free Code Camp获得他们的第一个开发人员工作。

我不是在倡导JavaScript,因为我教它。我教JavaScript,因为它是第一个开发人员工作的最可靠途径。

但JavaScript适合你吗?是否值得成为您的第一个编程语言?让我们探讨一下我之前提到的那些因素。

因素#1:就业市场

如果你正在学习纯粹出于求知欲而编程,请随意跳过这个因素。但是,如果你 – 像绝大多数学习编程的人  - 想要使用这种技能来获得工作,这是一个重要的考虑因素。

正如我之前提到的,Java比其他任何编程语言在更多招聘信息中都有提及。JavaScript紧随其后。

但是这里有关于JavaScript的事情:虽然它已经存在了20年,但它最近才成为一个严肃的工具,像Netflix,Walmart和PayPal这样的公司将构建整个应用程序。

因此,许多公司正在招聘JavaScript开发人员,但在就业市场上并没有那么多。

来自Indeed.com的数据

有2.7个Java开发人员在竞争每个开放的Java职位。PHP和iOS工作的竞争同样激烈。

但是对于每个开放的JavaScript位置,只有0.6个JavaScript开发人员。对于具有JavaScript技能的开发人员来说,这是一个卖家市场。

因素#2:长期前景

普通的JavaScript项目接收的拉动请求数是普通Java,Python或Ruby项目的两倍。除此之外,JavaScript的增长速度超过任何其他流行语言。

资料来源:GitHub的2016年Octoverse状态

JavaScript的生态系统也受益于来自谷歌,微软,Facebook和Netflix等公司的大量资金和工程人才。

例如,TypeScript(一种静态类型的JavaScript超集)拥有100多个开源贡献者,其中许多人是微软和谷歌员工获得报酬。

使用Java很难找到这种类型的公司间合作。通过收购Sun Microsystems实际拥有Java的甲骨文  经常起诉那些试图扩展它的公司。

因素#3:难以学习

这是对XKCD漫画的模仿。

大多数程序员都同意高级脚本语言相对容易学习。JavaScript与Python和Ruby一起属于这一类。

尽管大学仍然将Java和C ++等语言作为第一语言教授,但它们却难以学习。

因素#4:您可以使用它构建的项目

这是JavaScript真正闪耀的地方。JavaScript可以在任何具有浏览器的设备上运行,就在浏览器中。您可以使用JavaScript构建基本上任何东西,并在任何地方共享它。

由于JavaScript无处不在,Stack Overflow联合创始人杰夫阿特伍德创造了他现在着名的法律:“任何应用程序都

可以在JavaScript编写,

最终用JavaScript编写的。”

逐月,阿特伍德法持有强烈。

Java曾经承诺也会在任何地方运行。你可能还记得Java Applets。甲骨文今年早些时候正式杀死了他们。

Python遇到了很多相同的问题:“我怎么能把这个游戏给我的朋友?更好的是,有什么方法可以把它放在我的手机上,这样我就可以把它展示给学校的孩子而不必安装它?嗯。“ – James Hague 

退休Python作为一种教学语言

相比之下,以下是我们的开源社区成员在CodePen上的浏览器中构建的一些应用程序。您可以在浏览器中单击并直接使用这些内容:

20世纪70年代风格西蒙游戏
康威的生命游戏
以星球大战为主题的维基百科搜索
一个roguelike地牢爬虫游戏

学好一门语言。然后学习第二个。

如果你不断地从语言跳到语言,你就不会走得太远

为了超越基础,你需要很好地学习第一语言。那么你的第二语言会更容易。

从那里,你可以通过学习很多语言来扩展,成为一个更全面的开发人员:

  • C是了解计算机实际上如何在内存管理方面工作的好方法,并且在高性能计算中很有用
  • C ++非常适合游戏开发。
  • Python对于科学和统计学来说非常棒。
  • 如果你想在大型科技公司工作,Java很重要。

但首先要学习JavaScript。


好的,现在我将尝试不可能的事情 – 我将尝试预测评论部分的反对意见。

异议#1:但JavaScript不是很慢吗?

对于大多数实用目的而言,JavaScript与高性能语言一样快。

JavaScript(Node.js)比Python,Ruby和PHP快几个数量级。

它也几乎与C ++,Java和Go等高性能语言一样快。

以下是最全面的最新跨语言基准测试的结果:



异议#2:但JavaScript不是静态类型的

像Python和Ruby一样,JavaScript是动态类型的,这很方便。但是你可能遇到麻烦。在这里,我打算exampleArray成为一个阵列。我设置它的值,然后检查它的长度 – 意味着它包含的元素数量。

exampleArray = [1,2] 
- > [1,2]
exampleArray.length
- > 2

但后来我不小心将它分配为一个字符串。

exampleArray =“text” 
- >“text”
exampleArray.length
- > 4

这些类型的错误一直在动态类型语言中发生。大多数开发人员只是放置检查以防止它们,并相应地编写测试。

如果您绝对必须使用第一种编程语言进行静态输入,那么我仍然建议您先学习JavaScript。然后你可以快速拿起TypeScript。“Typescript有一个学习曲线,但如果你已经了解JavaScript,它将是一个平滑的。” -  

AlexEwerlöf关于TypeScript

异议#3:但我真的想制作一款移动应用

我仍然建议先学习JavaScript。

  1. JavaScript提供了几种用于制作本机移动应用程序的工具,例如Angular CordovaReact Native
  2. 为了让您的移动应用实际上做任何有趣的事情,它可能需要一个适当的后端,您需要使用适当的Web开发框架(如Node.js + Express.js)构建。

此外,值得指出的是,移动应用程序开发的最佳日子可能已经落后于它。

对于初学者来说,尽管人们使用移动应用程序,但近一半的开发人员工作都是Web开发。相比之下,只有8%的工作涉及移动应用程序开发。

根据对2016 Stack Overflow  调查的回应,49,525名开发人员的职业。

“那里有一个应用程序”的宏伟愿景还没有实现。相反,大多数智能手机用户已停止下载新应用

当然 – 他们仍然使用应用程序。主要是Facebook,谷歌地图和其他一些。因此,对移动应用程序开发人员的大部分需求都集中在少数大型雇主身上。

这些移动开发工作的前景很难预测。使用JavaScript可以更轻松地开发,维护和分发移动应用程序。因此,Facebook和谷歌等公司正在大力投资使用JavaScript构建这些产品的更好工具。

截至2016年,几乎所有的开发都是Web开发。一切都触及那个“网络”的大平台。下一波你将在家里谈话的设备,以及从学校挑选孩子的汽车 – 他们都将通过网络连接在一起。

这意味着JavaScript。

异议#4:JavaScript不是10天内写的玩具语言吗?

JavaScript有着古怪的历史

毫无疑问,你会听到人们以自己的代价开玩笑。

好吧,人们也喜欢讨厌C ++。和JavaScript一样,尽管有这种仇恨,C ++仍然取得了成功,现在它几乎无处不在。

因此,如果有人给你一个学习JavaScript而不是每周精英语言的困难时期,那么请记住创建C ++的人的名言:“只有两种编程语言:人们总是喋喋不休,没有人使用。” – Bjarne Stroustrup

我只写有关编程和技术的文章。如果你在Twitter上关注我,我不会浪费你的时间。

👍
摘自:https://medium.freecodecamp.org/what-programming-language-should-i-learn-first-%CA%87d%C4%B1%C9%B9%C9%94s%C9%90%CA%8C%C9%90%C9%BE-%C9%B9%C7%9D%CA%8Dsu%C9%90-19a33b0a467d