本文整顿自网络 作者: 赵岩/Serdar等

01、为什么C语言不会过期

评估任何一门编程语言,都是招人骂的。永远是这样。就像是春寒料峭的节令,街上穿棉袄和穿单衣的擦肩而过,单方肯定是同时在心里呈现了两个字:“傻逼!”这个在心理学上有个业余的名字:叫做“二逼”景象!

那我为啥还要做这个挨骂的事呢?作为《C语言点滴》《drop of knowledge of C++》书籍的作者,《C语言新思维,第二版》的译者(赵岩老师),我感觉我有责任零碎的介绍一下这本语言,他的特点,还有他的将来。这个问题对很多刚刚踏入程序猿这个行业的老手至关重要。因为他们有深深的担心,万一C语言就像Fortran那样过期了怎么办?

先上一个表,这个就是驰名的TIOBE语言排行榜。目前它是一个最权威的一个语言风行度的排行榜。

就在5月,时隔5年,C语言再次当先Java,荣登TIOBE编程语言排行榜第一!

排名前十的别离是:

C,Java,Python,C++,C#,Visual Basic.NET,JavaScript,PHP,SQL和R。

有没有发现亮点?没错, 第一易主了,C 语言反超了 Java 。要晓得,C 语言上次第一还是在 5 年前,是什么起因让其“卷土重来”了呢?

时隔五年,C语言重回榜首。

据TIOBE CEO Paul Jansen 的猜想,“这听起来可能很不堪设想,然而某些编程语言的确能够从这种状况中受害。"
嵌入式语言(C 和 C++ 等)越来越风行,因为它们被用于医疗设施软件中。

对所有的编程语言,他们的最初的目标其实就是两种:进步硬件的运行效率和进步程序员的开发效率

遗憾的是,这两点是不可能并存的!你只能选一样。在进步硬件的运行效率这一方面,C语言没有竞争者!举个简略的例子,实现一个列表,C语言用数组int a[3],通过编译当前变成了(基地址+偏移量)的形式。对于计算机来说,没有运算比加法更快,没有任何一种办法比(基地址+偏移量)的存取方法更快。

C语言曾经把硬件的运行效率压缩到了极致。这种设计思维带来的问题就是易用性和安全性的缺失。例如,你不能在数组中混合保留不同的类型,否则编译器没有方法计算正确的偏移量。同时C语言对于谬误的偏移量也充耳不闻,这就是C语言中臭名远扬的越界问题。

C语言自夸的“置信程序员”都是丑陋的说辞,它的惟一目标就是快,要么飞速的运行,要么飞速的解体。C语言只关怀程序飞的高不高,不关怀程序猿飞的累不累。就是这样!

当初来看看那些非C的语言,他们的短处都在于进步程序员的开发效率上。或者反对动静的列表,或者反对平安的列表。然而退出任何的中间层,退出任何的平安测验,它不可能比(基地址+偏移量+无测验)的形式更快。这个世界上不存在“开发容易,运行快”的语言,开发容易毕竟来源于对底层的一层一层又一层的包装。

当初答复两个最广泛的问题:硬件这么便宜了,有必要让软件更快吗?有这种疑难的人大部分都是网吧的固定客户,他们了解的计算机只在电脑城,他们了解的计算只是游戏和播放硬盘中的小电影。不要玩个游戏开个挂就乐得不行不行的,别忘了还有全实景仿真,还有3D渲染,还有主动驾驶。

人在开车的时候,每秒要收集60个不同的物体,而后依据这60个物体的不同组合和反映来做20个最重要的决定。而后从这20多个决定当选一个执行。所以就算用上最快的硬件,主动驾驶当初还不敢说能像人那样开车。就算是主动驾驶胜利了,下一步还要主动航行呢?因为咱们老早就预言了:你咋不入地呢!

所以说:计算速度永远是不够的!因为新的利用会越来越简单,越来也实时。对了!我还忘了一个更重要的限度:计算的能耗!NASA飞行器上的CPU最多就是32位的,说进去你可能不信,国内空间站上没有一个CPU是64位的,我猜一个最次要的起因是航天员不爱看硬盘小电影吧。

另外一个风行的疑难是:我能够创造一种同样快的语言,然而没有C语言那么多的坑。想法是能够的,而且还真巧有这个语言,真巧它的名字叫D语言,真巧没有太多的人用!这是因为一个根本的事实。当初有太多,太多太多的C代码,他们大部分都在失常工作,就像Linux, Window, MacOS,Unix,Vxworks。你没有看错,这些操作系统的内核都是C,我尽管不确定C在Window中所占的比例,然而我置信微软的人不会傻到用C#去全副改写一个操作系统的内核。你想让这些人去用你的全新的语言,这就不是“有点”很傻,很天真了!

而且有些代码,咱们基本就不能改!NASA一个简略的5个CPU飞控软件编写结束后,要进行一种“全笼罩”测试。如果CPU A坏了会产生什么?如果CPU A,B坏了呢?如果CPU A,C坏了呢。。。。?如果你违心,你能够做个简略的数学组合。测试结束后,别说重写,就算加个正文都不行。因为主管payload的大妈会十分庄重的质问你,为什么你上报的货色数量减少了,然而品质没有减少?你须要和她具体的解释:硬件和软件是不同的,硬件是那种摸起来硬硬的货色,然而软件不是那种摸起来软软的货色。看着大妈鄙夷的眼神,这个时候你会十分悔恨本人手欠退出的哪一行正文。你还别不当真,这个是NASA的实在故事。

那为什么C语言还降落这么多呢?很简略,有些工作自身就不是C语言的。我上学的时候还用C语言编过窗口界面呢?而后很快微软的人就推出了MFC,就是一大堆宏把底层的C windowAPI包装了起来。

再起初这个技术也过期了。因为微软的人意识到,带有窗口的应用程序说到底不是C语言的本职工作,再这么一层一层包下去就有露馅的危险,于是他们创造了一个全新的语言C#来负责这个工作。

Java也是这样,突出网络,易用,平安,跨平台。无论是Java, c#还是python, 他们都无意避开进步硬件的运行效率这个问题,因为这个问题上没方法和C竞争,也无奈撼动Linux, Unix,GNU tool这些已有C代码的地位。剩下的就只是进步程序员的开发效率上大作文章。这对C语言是坏事,把本人不善长的货色去掉,让本人跑的更快!

随同着嵌入和实时零碎的衰亡,AI,机器人,主动驾驶等。这些都是C语言的外围利用,而且在这种利用下面,C语言没有竞争者。所以我感觉C语言会稳固在本人外围的利用中,并开始逐渐回升。

最初说点闲话,C++不会淘汰C语言。有了对象后你会发现再俭朴的对象也消耗资源,而且有了对象当前,总是情不自禁的去想继承这个事,一但继承实现了,你会发现继承带来的麻烦远超过你的设想。Java的发明人James被问到如果能够从新设计Java语言的话,第一个要做什么事?他说:“去掉对象”!作为一个已婚,有两个孩子的程序猿,我感同身受。如果大家感兴趣,我能够再写一个博客,聊聊C++和C的实在区别所在。

如果你看到这里,还什么都没记住。那就只记住一点:没人能预测将来。

如果再有人对你说C语言曾经过期了,最好本人思考一下,能求真最好,如果不能,至多要做到存疑。

02、为什么C仍占据统治位置?

于一种计算机行业的技术来说尤其如此。自1972年诞生以来,C语言始终放弃龙腾虎跃的状态,时至今日它依然是咱们用来搭建软件世界的根底建筑材料之一。

但有时一种技术可能长期存在,只是因为人们还没有来得及创造新的货色来取代它而已。在过来的几十年里,呈现了许多其余语言——其中一些明确地被设计用于挑战C的主导地位,有些语言试图凭借本人的人气缓缓瓦解C语言的统治位置。

为C须要被替换掉的观点辩论是简略的。编程语言钻研和软件开发实际都暗示了如何比C更好地去做事。但历经数十年的钻研和开发,C语言的位置却仍旧巩固。很少有其余语言可能在性能、裸机兼容性或通用性等方面击败它。不过,2018年C是如何与那些明星编程语言竞争的呢,其中细节仍值得一看。

C vs. C ++

当然了,C最常被拿来与C ++进行比拟,正如其名称自身所暗示的那样,C++作为对C语言的扩大而被创立进去。C ++和C之间的差别能够概括为C++更加宽泛(褒)或更加宽泛(贬),具体取决于这个问题你是问的C还是C++程序员。(笑)

尽管C ++的语法等方面依然是类C的,但它提供了许多在原生的C中本不可用的十分实用的性能:命名空间(namespace),模板(template),异样(exception),主动内存治理(automatic memory management)等等。须要顶级性能的我的项目,例如波及数据库,机器学习零碎的我的项目通常是用C ++编写的,以便我的项目能尽可能地榨取以及利用到每一点性能。

此外,与C相比,C ++在继续地更加踊跃地扩大。行将推出的C ++ 20会带来更多功能供开发者享受,包含模块,协同程序,同步库,以及概念,这些使模板更易于应用。C standard的最新版本只进行了大量更新,并侧重于放弃向后兼容性。

事实上,C ++中的所有附加性能同样也可能成为累赘。而且是很大的累赘。您应用的C ++专属性能越多,引入的复杂度就越高,对后果的修改就越艰难。将本人局限于仅一个C ++子集的开发人员能够防止许多开发中重大的坑和额外负担。然而有些团队想要从根儿上防备C ++的适度复杂性。保持应用C能迫使开发人员将本人局限于一个子集。例如,Linux内核开发团队就间接避开了C ++。

选C而不选C++对您——以及任何将会保护你代码的开发人员——来说都是可行的,通过采纳强制简洁主义来防止与C ++的复杂性纠缠。当然,C ++领有丰盛的高级性能,这是有它本人的情理的。但如果极简主义更适宜以后和将来的我的项目——以及负责我的项目的团队——那么还是选C更理智一些。

C vs. Java

几十年了,Java依然是企业软件开发的主力军之一——并且也是宽泛而言的开发的主力军之一。许多最重要的企业软件我的项目都是用Java编写的——包含绝大多数Apache Software Foundation我的项目——而Java依然是开发企业级需要我的项目的可行语言。

Java的语法从C和C ++中借鉴了很多货色。然而,与C不同的是,Java默认状况下不会编译为本机代码。相同,Java运行时环境,JVM,JIT(实时)编译Java代码以在指标环境中运行。在适当的状况下,JIT编译后的Java代码能够靠近甚至超过C的性能。

Java背地的“一次编写,随处运行”的理念也容许Java程序在指标架构上进行绝对较少的调整即可运行。相比之下,尽管C已被移植到许多架构中,但任何给定的C程序仍可能须要从新量身定做能力在,打个比方,Windows与Linux,两种不同的os之间失常运行。

这种可移植性和弱小性能的联合,以及宏大的软件库和框架组成的生态,使Java成为构建企业应用程序的首选语言。

Java输给C的中央是一个Java从未打算竞争的畛域:凑近底层构造运行,或间接与硬件打交道。C代码被编译成机器代码,由过程间接执行。Java被编译成字节码,这是一种随后会被JVM解释器转换为机器代码的中间代码。此外,只管Java的主动内存治理在大多数状况下都是个长处,但C更适宜于必须充分利用无限内存资源的状况。

也就是说,在某些方面,Java在速度方面能够靠近于C。JVM的JIT引擎在运行时依据程序行为优化例程,容许进行许多类型的优化,而这些优化是在未提前编译的C中无奈实现的。尽管Java运行时主动执行内存治理,但一些较新的应用程序能够解决这个问题。例如,Apache Spark局部地通过应用绕过JVM的自定义内存治理代码来优化内存中解决。

C vs. C#和.Net

在推出近二十年后,C#和.Net 框架依然是企业软件世界的次要组成部分。有人说C#和.Net是微软对Java的回应——一个托管代码编译器零碎和通用运行库——C和Java之间的许多种比照也实用于C和C#或.Net之间。

与Java(以及某种程度上来说Python也是如此)一样,.Net提供跨各种平台的可移植性和宏大的集成软件生态系统。思考到.Net世界中有多少面向企业的开发,这些都是不小的劣势。当您应用C#或任何其余.Net语言开发程序时,您能够应用为.Net运行时编写的大量工具和库。

.NET另一个相似Java的劣势是JIT优化。C#和.Net程序能够依照C语言提前编译,但它们次要由.Net运行时进行即时编译,并应用运行时信息进行优化。JIT编译容许对无奈在C中执行的运行着的.Net程序进行各种就地优化。

与C一样,C#和.Net提供各种间接拜访内存的机制。堆,栈和非托管零碎内存都能够通过.Net API和对象拜访。开发人员能够应用.Net中的unsafe模式来实现更高的性能。

但这些都不是没有代价的。托管对象和unsafe对象不能被任意替换,并且它们之间的编组会升高性能。因而,要最大化.Net应用程序的性能须要将托管和非托管对象之间的变动放弃在最低限度。

如果您无奈承当托管与非托管内存之间变动造成的性能损失,或者.Net运行时对于指标环境(例如,内核空间)来说是一个蹩脚的抉择,或者可能基本不可用,那么C就是你所须要的。与C#和.Net不同,C被默认能够解锁对内存的拜访权。

C vs. Go

Go的语法很大水平上借鉴了C——花括号作为定界符,语句以分号完结,等等。精通C的开发人员通常能够毫不费力地间接应用Go,甚至算上Go的独有性能,如命名空间和包治理,对开发人员来说也并不艰难。

代码可读性是Go的领导设计指标之一:让开发人员能够轻松把握任何Go我的项目,并在短时间内熟练掌握代码库。C代码库可能很难了解,因为它们很容易汇集大量专属于某个我的项目或某个团队的宏和和#ifdef。Go的语法及其内置的代码格局以及项目管理工具旨在防止这种结构性问题。

Go还提供了诸如goroutine和channel之类的附加性能,用于解决并发性和组件之间的消息传递的语言级别的工具。C须要开发者手动实现或由内部库提供,但Go提供了开箱即用的这些性能,使得构建须要这些性能的软件变得更加容易。

Go与C最深层次的不同之处在于内存治理方面。默认状况下,Go的对象会被主动治理并主动进行回收。对于大多数编程工作来说,这十分不便。但这也意味着任何须要确定性解决内存的程序都会更难编写。

Go的确蕴含了用于绕过Go的某些类型解决安全性的unsafe包,例如应用Pointer类型读取和写入任意内存。但unsafe会附带一个warning说用它编写的程序“可能是不可移植的,并且不受Go 1兼容性指南的爱护。”

Go非常适合构建命令行实用程序和网络服务等,因为这些很少用到太过粗疏的操作。然而,如果是低级设施驱动程序,内核空间操作系统组件以及其余须要严格控制内存布局和治理的工作,那么就最好用C来创立。

C vs. Rust

在某些方面,Rust是对C和C ++创立的内存治理难题的回应,也是对这两种语言的许多其余毛病的回应。Rust编译为本机机器代码,因而就性能而言,它被认为与C相当。但默认状况下,内存平安才是Rust的次要卖点。

Rust的语法和编译规定可帮忙开发人员防止常见的内存治理谬误。如果程序有一个不合乎Rust语法的内存治理问题,它就不会被编译。刚接触这种语言的老手,特地是以前用C语言的开发者,因为C语言为这类bug提供了短缺的容错空间,所以他们接触Rust的第一步是学习如何安抚编译器。但Rust的支持者认为,这种短期的苦楚有一个长期的回报:更平安的,不会减缓速度的代码。

Rust还通过其工具改良了C语言。默认状况下,我的项目和组件治理是Rust提供的工具链的一部分,与Go雷同。有一种默认的,举荐的办法来治理包,组织我的项目文件夹,以及解决C须要独自解决的其余许多事件,每个我的项目和团队以不同的形式解决它们。

然而,在Rust中被吹捧为劣势的货色对于C开发者来说可能并没有太大吸引力。Rust的编译时平安性能无奈禁用,因而即便是最小的Rust程序也必须合乎Rust的内存平安限度。默认状况下,C可能不太平安,但在必要时它更灵便,更宽容。

另一个可能的毛病是Rust语言的大小。即便思考到规范库,C的性能也绝对较少。Rust功能集十分宏大并且还在一直增长。与C ++一样,较大的Rust功能集意味着更弱小的性能,但也意味着更高的复杂度。C是一种较小的语言,但更容易在头脑中进行建模,因而可能更适宜那些对Rust来说太小,不值得大动干戈的我的项目。

C vs. Python

当今,每当议论软件开发时,Python仿佛总是能呈现在对话中。毕竟,Python是“对所有我的项目的第二佳语言”,毫无疑问是最通用的语言之一,领有数千个第三方库。

Python强调的,以及它与C最不同的中央,是有利于开发速度而不是执行速度。一个可能须要一个小时能力用另一种语言写进去的程序——比方C——可能用Python几分钟内就能写好。另一方面,该程序在C中执行可能须要几秒钟,但须要一分钟能力在Python中运行完。(一个很好的教训法令:Python程序通常比它们对应的C语言程序运行速度慢一个数量级。)然而对于古代硬件上的许多工作,Python曾经足够快了,这是它现在广泛应用的一个重要起因。

另一个次要区别是内存治理。Python程序齐全由Python运行时进行内存治理,因而开发人员不用放心调配和开释内存的细节。但同样,开发人员的轻松也是以运行时性能为代价的。编写C程序须要严格关注内存治理,但生成的程序通常是纯机器速度的黄金规范。

然而,在二者的血脉中,Python和C共享一个深层的关系:Python运行时参考是用C语言编写的。这容许Python程序包装用C和C ++编写的库。第三方库的Python生态系统的很多重要模块,例如机器学习方面的库,其外围是C代码。

如果开发速度比执行速度更重要,并且如果程序的大多数高性能局部能够被隔离到独立组件中(而不是遍布整个代码),那么纯Python或Python和C库的混合使得会是比独自应用C更好的抉择。否则的话,C依然是老大。

03、C语言为何值得去学

  1. 嵌入式畛域,C语言仍然是首选语言,嵌入式并没有因为其余下层语言的倒退而败落,当初嵌入式仍然还在其本身的畛域展示弱小的生命力。手机,电视机,机顶盒,空气净化器等等电子产品都是其畛域领域,从长远看短时间内不可能被隐没。而且智能机器人的崛起,C语言的应用频率又开始加大了。
  2. 操作系统内核代码还是C语言为主打,就语言的灵活性以及执行的效率来看C语言还是最合适的语言,而且在零碎档次的代码,C语言还是首选语言。而且当初很多风行语言的底层绝大部分的C语言构建实现。从这个层面讲C语言是永远不会过期的,顶多算是利用范畴变窄,但其作用仍然弱小。
  3. C语言的职位比例绝对利用级语言是低了点,然而整个软件行业在倒退,相对的C语言编程职位并没有缩小。而且对于有志于成为架构师档次的程序员来说,C语言还是必修课,构建软件框架还是须要对底层有所理解。

退一步来讲,即便感觉C语言方面的职位比例低一些,不好找工作,能够先从C语言动手,把本人的常识体系建设起来,编程语言属于工具领域,相熟一种工具的应用,很容易举一反三,切换到别的语言也绝对轻松些,而且给整个职业生涯起了个好头,打好了根底为更上一层楼做足筹备。

C语言之所以风行这么年,生命力这么旺盛和自身显明的高效,不便灵便挂钩。即便在下层语言应用概率变低,并不障碍在零碎级别持续发挥作用。任何一种语言都有其存在的社会价值所在。C语言还是值得作为入门语言粗浅的学习。

  1. C/C++程序员的支出没有受到影响,根据100offer的后盾数据浮现,当初通过100offer入职的程序员年薪最高达47W,最低22.4W,C/C++程序员的支出与其它编程语言的岗位相比并没有出现上风。随着C/C++逐渐变成某些特定公司和特定我的项目所需的语言后,高级C/C++程序员的支出也会更具备竞争性。

知乎红人vczh说:「我在上大学的时候几乎就只学习C/C++,起初实习的时候去了微软,成绩到了那里才晓得,那个组是不用C/C++的,怎么办?凭借着C++带给我的富裕的功底,我准时完结了老板给我的"两个星期内学会C#和WCF基础知识"的作业,顺畅开始作业。」

当然,这只是vczh的个人经历,不具备普遍性,但不可否认的是C/C++仍具备不可代替性。某家守业公司CTO在承受采访时示意:「即便有许多人唱衰C/C++,但在今世,仍有许多许多我的项目的指标渠道临时只供应C/C++编译器的撑持,仅从这一点而言,C/C++是不可能齐全消失的。」

从利用领域来说,C/C++实用于高性能计算、嵌入式体系、开发服务器软件、游戏、实时体系、网络通信等,短期内能齐全代替C/C++的语言并不存在,所以仍然具备很强的竞争性。

04、除了C,须要把握多种语言吗?

想要把握多种编程语言的9个理由

  • 能用多种形式来解决同样的问题,把握不同的编程语言意味着领有更多的抉择。毕竟,当你只有锤子时,所有看起来都像是钉子。
  • 更有竞争力,领有更多的就业机会。学习第二门编程语言,有时能加倍工作机会的数量。然而,这取决于你学习的语言品种。但无论怎么说,你将会有更多的适合机会,从而减少求职能力。
  • 表明你具备学习新语言的能力。潜在的雇主会认为你并非是死板或者惯守成规的人。
  • 学习是很乏味的。学习新的事物会让你的头脑放弃兴奋。这将有助于你在新畛域的成长和进步。
  • 紧跟以后的技术发展趋势。理解哪个行业在独领风骚,就能够永远站在潮流的尖端,你的技能便不会过期。
  • 这将揭示你为什么应该酷爱你的“主”语言,或者如何将事件做得更好。有时候,只有尝试过新语言,才会晓得主语言是何等的优良。你会更加观赏本人最爱的语言。与此同时,新语言可能会有一些惊人的个性,让你深觉相见恨晚。
  • 有助于成为一个更加优良的程序猿。学习新的语言,有助于进步在所有语言之间通用的技能,例如:设计和架构算法,或解决不同的数据结构。
  • 针对工作抉择最佳的工具。尺有所短寸有所长 - 有的语言更长于解决某些特定方面的事件。把握了多种语言,你能够在工作中选用最佳的工具
  • 表明你的学习能力强。没有任何事件比把握第二语言更能证实你的学习能力。

不想把握多种编程语言的9个理由

  • 把握一种语言更容易。通常,集中精力和全心投入能力精通某一事物。如果一直地在多种语言之间进行切换,那么真正精通一门语言的概率就会升高。把握一种语言也有助于你集中精力。
  • 大多数人只须要一份工作,大部分公司只应用一种语言。在你被录用后,把握多种语言不肯定会有所帮忙。有时候,只有把握我的项目所用的语言就够了。
  • 总有一些货色值得学习;有时候,这意味着要更深刻地学习一种语言。
  • 大多数状况下,专家能提更高的薪资要求,因为人们更违心为专家领取更多的薪水。John Sonmez在其视频《 I’m Not Sure I Want To Be A Specialist》中谈到为什么多面手并不总是最好的。
  • 即使仅把握一种语言,依然能够被认为是一个平凡的开发者。是否是平凡的开发者与你把握多少种语言无关。关键在于你发明的是什么。因为只波及一种语言,所以你能够花更多的工夫进行发明。
  • 你只须要学习无限的软件开发工具。大多数语言只有为数不多的一些工具。切换语言往往意味着要切换工具。只把握一种语言,你就能够更快地把握相干的工具。这将有助于进步工作效率。
  • 更易于定位本人的市场。因为只把握一种语言,基本上你只会朝这个方向安顿下来(即便不是出于本人的抉择)。
  • 你能够凭借任何一种语言解决大多数软件问题。不论有多少人通知你,大多数语言能够用于解决任何问题。如果解决问题是你的次要指标(本该当是),把握更多的语言并不一定有助于实现这个指标。
  • 深刻了解一件事比表面理解十件事更好。

这并非是一个非黑即白的问题。和其余问题一样,最好的解决办法是取两头值:总有一片灰色地带。如果你是一个初学者,那么学习一种语言,并将其利用到前十多个我的项目中会比拟容易。但此之后,倡议你成为一个「T形」软件开发者。

什么是「T形」软件开发者?

所谓「T形」软件开发者在某一个特定的区域领有很深的造诣,而且是一种语言的专家,T字母中的垂直线代表了这一点;此外,他们会持续宽泛学习另一种技能,T字母中的水平线代表了这一点。

那么,这与软件开发,特地是编程语言的学习,有什么关系呢?我的倡议是精通一种编程语言,这将成为你当前的生计,并用于解决大部分问题。你应该尽你所能把握这门语言。在此基础上,能够学习最适宜工作的第二种语言或技能。

T形软件开发者是一个多面手,精通于某一畛域。

在成为T形开发者的历程中,你将灵便地把握多种语言,同时具备某个领域专家的长处。

应该把握哪种编程语言?

一个常见的问题是,该当学习哪种语言。或者说,如果你是初学者,该当首先学习哪种语言。通常,我会抉择有肯定历史的语言作为次要语言。这种语言该当用于多个行业,并且有宽泛的应用群体和大量的开发工具。合乎这些规范的语言包含但不限于:C、C++、Java、JavaScript、C#、Python、Go等等。

TIOBE软件基于这些规范继续跟踪软件语言的流行性,并编入索引中。你能够点击TIOBE Index查看残缺的编程语言列表。索引会每月更新,前20名中的大多数语言都是不错的抉择。将来10年,这些语言还会风行吗?我不确定。不过至多在将来几年内还是很可能放弃风行的,我想,这对任何筹备着手的我的项目都是够用的。

说实话,对于是否须要把握更多的语言,其实并没有相对正确或谬误的答案,不谈需要选语言都是耍流氓,最初的决定还是取决于你的需要。

【参考资料】

1、Serdar Yegulalp

https://www.infoworld.com/art...

2、赵岩

http://zhaoyan.website/blog/i...

3、佚名

https://dzone.com/articles/do...

逆锋起笔是一个专一于程序员圈子的技术平台,你能够播种最新技术动静最新内测资格BAT等大厂的教训精品学习材料职业路线副业思维,微信搜寻逆锋起笔关注!