如果我们把人类文明想象成汽车的话,那么软件开发行业就相当于汽车的引擎,编程语言就像引擎的燃料。作为一名开发者,需跟随技术潮流的发展来学习新技术。 众所周知,编程语言在不断发展变化中,从最初的机器语言发展到如今2500种以上高级语言,每种语言都有其特定的用途和不同的发展轨迹。 尽管编程语言排行榜时看时新,但"后浪"们掀起的波澜却十分有限。与近年来陆续涌现的新兴编程语言相比,那些出道即巅峰、一巅几十年的"前浪"们,似乎还没有要退位让贤的意思。 数十年来,陆续出现的新兴编程语言不在少数,其中不乏一些以取代某种老语言为目的而设计的。今天,我们就来盘点一下,这些年轻的编程语言,是否能够追上"前浪"们的脚步呢? 01老牌前浪编程语言 JAVA 就编程语言的兴衰而言,争论最大的莫属Java了。作为核心编程语言,Java拥有21年的历史,无论是实用性、兼容性,还是强悍的性能,无一不在彰显其价值。要知道Java长期霸占编程语言流行排名榜首,Java工程师需求量占总需求量60%,世界500强企业中90%在使用Java。 目前Java工程师人才缺口超过30万,其中日均招聘量达20000,因Java在大数据领域的深度应用,预计3-5年内Java人才需求将再翻一倍。就业范围广、人才需求大、岗位晋升快、薪资高、前景好,各种行业领域均可看到Java的身影,像网站、游戏、APP、金融应用等等。 不要看着近两年Python大火,就以为Java就此落败。要知道,Java作为一种老牌编程语言,较之其他新兴语言更成熟。同时作为行业主流的一部分,仍然有望坚持下去。 图片源自网络,仅做配文展示 JavaScript JavaScript是一种无处不在的编程语言,但因为它的不稳定性导致很多人讨厌它。在很长一段时间里,JavaScript在网络开发领域被视为PHP的助手,也因为它太不稳定,使得部分开发人员并不认为JavaScript是一种"真正的语言"。随着时间的推移,这种情况得到改善,这主要得益于HTML5和ES6标准的改进。 JS长盛不衰的原因: 第一,现成的解决方案永远无法替代web开发人员。JavaScript对于定制和重塑专门构建的解决方案仍然是一种有价值的语言。 第二,虽然进入门槛越来越低,但至少近期内不会扼杀JavaScript。甚至可以说,随着学习人员越来越多,网络教程也在激增。 第三,关于 WebAssembly问题,虽然对JavaScript是一个较为严重的威胁,但WebAssembly 从来就不是为了模仿现有的 JavaScript 用例而设计的。它甚至可能会激发人们对JavaScript的信心,要知道它解决了开发人员抱怨的许多问题,这意味着JavaScript可能更适合解决某些问题。 除此之外,Javascript永远不会消亡还有很多其他原因。像随着node.js越来越受欢迎,react愈发受到民众青睐,尤其是node.js,后者影响着它如何扩展语言的可能性,从浏览器转移到服务器。 虽然它周围有广泛的工具生态系统,它的使用方式也可能发生改变,但这种语言还是会继续存在,并有着光明的未来。 C语言 C语言作为最古老的的编程语言之一,诞生于1972年,历经近50年IT科技翻天覆地的变迁,却依然屹立不倒,在600多种编程语言里排名几十年如一日始终雄霸前两名位置。 由于更接近硬件底层,因此执行效率极高,它比汇编语言代码生成的目标程序效率仅低10%~20%。属于所有高级语言里执行速度最快的,广泛适用于底层系统开发(Linux/Unix/Windows均是C写的)、嵌入式开发、驱动程序、网络游戏引擎、搜索引擎、高并发编程等。C虽然学起来比Java/Python等难些,但会了它对了解操作系统底层原理非常有帮助,且很多大厂的核心项目代码依然是用C开发的,所以对你找工作也是很好的加分项。 2019年TIOBE10月榜单C排名第二,不愧千年老二的称号,与2018年10月排名持平。与Java不同,C的评级在一年中实际上有所上升。不必否认,虽然数字很小,但它的强劲仍说明,它离死亡还有很长的路要走。11月TIOBE榜单,C在变幻莫测的编程界依然保持自己的地位,并无限缩小与Java的差距。 图片源自网络,仅做配文展示 虽然我们会看到像Rust语言对C的冲击,但对于想要真正深入了解编程的人来说,C很基础。即使它不一定有很广泛的用例,却能让开发人员和工程师更深入的了解代码在软件堆栈的各个级别中是如何工作的,这也就意味着C是一种值得关注的编程语言。 02新兴后浪编程语言 Kotlin 图片源自网络,仅做配文展示 谷歌在2019年5月宣布Kotlin现在是Android应用开发人员的首选语言,这表明了该语言已经被广泛采用。 尽管许多Android开发人员尚未完全迁移到Kotlin,但已经迁移的人都知道它提供的好处。 《HeadFirst Kotlin》的作者Dawn和DavidGriffiths 分享了Kotlin崛起背后的一些原因: 对于由IDE公司创建的语言,Kotlin拥有良好的工具支持水平也就不足为奇了。用于代码合同的实验性DSL使开发人员能够提供有关代码行为方式的保证。您的功能有副作用吗?是否可以保证返回非空值?代码合同允许您做出这些承诺,并且编译器可以使用它们来放松编译时检查。 现在,不同的Kotlin平台之间的障碍也正在被打破。"expect"/"actual"限定符使开发人员可以更轻松地编写跨Java/ Native / JS 环境兼容的代码。序列化支持意味着将JSON数据转换为Kotlin对象更加容易,反之亦然。 希望看到Kotlin继续保持惊人的增长—— 并且不仅仅是在 Android中。 Go 图片源自网络,仅做配文展示 诞生于2009年的Go语言堪称编程语言中的"星二代"。Go的早期作者有三人,分别是RobPike,KenThompson 和RobertGriesemer,每一位的来头可都不小。 RobPike 曾是贝尔实验室的Unix团队以及Plan9 操作系统计划的成员,与Thompson共事多年,并共创出广泛使用的UTF-8字元编码,KenThompson 则是B语言、C语言的作者,Unix之父,1983年图灵奖和1998年美国国家技术奖得主;而RobertGriesemer 在开发Go之前是GoogleV8、Chubby和HotSpotJVM 的主要贡献者。 2007年,RobPike 认为C++在Google分布式编译平台上的编译过程太过漫长,于是他和RobertGriesemer 开始探讨"简化编程语言相比于在臃肿的语言上不断增加新特性,会是更大的进步"。 两人一拍即合,随即说服了身边的KenThompson,三人决定要捣鼓一门新语言。几天后,他们在Google内部发起了一个叫Golang的项目。很快,一个在 C语言基础上进行了优化的新语言诞生了,这就是Go。 作为一个设计目的就是为了取代C/C++的新语言,Go的语法在很多地方借鉴了C/C++。比如用花括号作为定界符,以分号作为语句结束等等,这使得Go很容易就能被精通C/C++的开发人员接受。 而在沿袭C/C++基本语法的基础上,Go新加入了很多针对当下流行的分布式系统的实用功能,比如超轻量级的线程goroutine,在高并发的系统中,可以按照多线程的方式写程序,从而保证逻辑的清晰和简单,又可以获得非常高的性能。 此外,Go语言作为Google大力支持的"亲儿子",拥有编译、测试、调试、性能分析等一整套成熟的工具,编译效率极高,再加上其还内置了http、json、xml、正则表达式等很多后端系统开发中常用的库,可以说是一门已经非常成熟的工程化开发语言。 2020年应该使Go的Contracts规范更加清晰,这就是众所周知的Generics提案。 根据Bodner的说法,"Go似乎将使用一种与其他语言略有不同的方法来实现泛型,但它很适合Go的习惯用法。"希望它将使 Go保持其惯用的风格,同时添加开发人员发现在其他语言中有用的功能。 Rust Rust是继Go之后另一个试图取代C/C++的新语言。 图片源自网络,仅做配文展示 2010年前后,随着大规模业务的拓展和分布式计算的流行,GraydonHoare也和RobPike一样看到了C++等传统编程语言在高并发场景下的缺陷,试图创造更优秀的语言来替代它们。 Rust最初是Mozilla基金会为了解决软件在语言级别上无法真正利用多核计算带来的性能提升而创建的,这一点与Go有些类似。相比前辈C++,Rust在代码安全这一特性上下足了功夫。比如内存安全方面,Rust在安全代码里不容许空指针、悬垂指针和数据竞争,这些问题在编译阶段就无法通过。 Rust社区核心开发者Nichols表示:"之前,我们只能使用C或者C++才能编写具有较低内存占用空间的高质量代码。但是,在生产代码中使用这些语言需要你手动管理内存并了解可能导致未定义行为的所有方法。不断扩展的CVE代码漏洞数据库证明,即使是最优秀的程序员也疲于应对层出不穷的代码漏洞。"为了确保你安全地使用内存,Rust编译器非常严格,这样你就可以专注于你真正想要解决的问题。" 03未来是什么样的? 可以预见,变化是不可避免的,并且随着编程语言继续倾向于针对云,微服务,大数据和机器学习中的新趋势进行优化,每种语言及其生态系统将继续以自己独特的方式进行适应。 总结来说,这些新兴语言为特定问题、需求与任务带来了更强大的解决方案、更简单的语法、更丰富的类型以及更轻松的检查/测试手段。虽然它们不可能在短时间内完全替代原有编程语言选项,但年轻一代确实拥有光明的发展前景,并有望帮助企业在市场竞争当中占据独特的优势地位。 但无论市场如何变化,技术的高低永远是决定项目成功与否的核心因素之一。针对自己的不同需求,才能选择出最适合自己的编程语言。才能有希望为整个行业带来更大的变革。