查看原文
其他

Python、Go、JavaScript、Rust 将长盛 5 年!

CSDN 2020-02-17

编程语言正在不断演化,但预测 5 年后会如何则很有难度,作者给出了一个答案。

作者 | Timothy Mugayi
译者 | 明明如月,责编 | 唐小引
封图 | CSDN 付费下载自 VCG
出品 | CSDN(ID:CSDNnews)

在这篇文章中,我们将看到一个我自己手动排行的编程语言和框架的列表,我相信这些语言和框架在未来 5 到 10 年内仍然坚挺。我不希望这个编程语言列表带有太多偏见。确定这个名单非常困难,因为每个人都会有些许偏见。当我草草记下我的想法时,我在思考随着时间推移编程的范式和创新是否符合演变。2020 年后,更快,更易用,更实用,更抽象的抽象技术变得流行。在此精选列表是基于我对技术的趋势、工作机会、使用情况、范例、基于流行性的统计以及未来的技术创新来预测的。

在科技界一年就像一生,因此在未来 5 年内可能会发生很多变化,但我相信这份精心策划的清单仍然很重要。如果您刚开始学习如何编程,不知道该选择哪种语言或框架,那么这份精选清单则可以帮到你。


回顾


当我们踏入 2020 年,回顾过去 5 年,很多事情都发生了改变。如区块链、深度学习、量子计算等新技术开始出现。对于那些刚刚开始学习编程甚至是经验丰富的开发人员来说,为了在这个不断变化的领域中保持与时俱进,思考自己在目前的发展状况大有裨益。现在就是学习新技术的最好时机。


为什么确保你选择和学习正确的语言或框架很重要?


学习一门新的语言和框架对你来说是一种投资,你花的金钱和时间有去无回。 技术总是在不断变化,随着年龄的增长,保持与时俱进的需求变得越来越重要。选择正确的语言和框架可能会改变你的一生,可能会彻底改变你做工作的方式和发展轨迹。因此你肯定想选择一个近几年不会过时的编程语言。


Rust


Rust 是一种系统编程语言,旨在取代 C 和 C++ 开发。Rust 提供了和 C 和 C++ 匹敌的性能,但是使用起来更加友好。对于那些已经在 c / C++ 中编写了很长时间的程序的人来说,他们非常喜欢听到这样的话。

已经有相当多的新开发者涉足这个领域。Rust 拥有不断增长的用户群。有数百家公司使用 Rust 进行开发,比如 Dropbox、 Yelp 和 Cloudflare。亚马逊最近宣布的虚拟化技术 Firecracker 这种产品也使用的是 Rust 的。在 StackOverflow 的 2016 年开发者调查中,Rust 也被评为“最受欢迎”的技术 (这意味着更多的用户会坚持使用 Rust)。

尽管与那些已经问世几十年的其他编程语言相比,它还是相对比较年轻,但它拥有大量可用的库,可以用来加速开发。你可以在 crates.io 或 GitHub 上找到你需要大多数的东西。

Rust 的主要特征

Rust 的主要特征是运行速度快和内存利用率高。它没有运行时或垃圾收集器,它适合用在对性能要求高的关键的服务,它可以在嵌入式设备上运行,并且很容易与其他语言集成。在接下来的 5 年和 10 年里,随着我们遇到硬件编程语言的限制,这些语言的速度更快,占用的内存更少,提高了速度和响应能力,使我们能够更省力的编写代码,这类语言将变得更加重要。

  • 可靠性:Rust 丰富的类型系统和所有权模型保证了内存和线程的安全,并能够在编译时消除许多错误。

  • 生产力:Rust 有很好的文档,提供了一个非常友好的编译器,错误信息提示非常友好。C,C++ 代码的编译器提示消息则是出了名的难以理解。Rust 的编译器则更好。如果你想学习系统编程,使用“ rustc”编译器做可以让你不用担心内存安全而能够专注其他的事情。

正如一位著名的程序员曾经说过:Pascal 就像穿着紧身衣,C 就像在玩刀,而 C++ 就像在玩弄燃烧的电锯。在这个比喻中,Rust 就像是穿着保护装备悬挂在绳子上做跑酷运动。是的,这看起来有点可笑,但是你可以用它做各种很酷的动作而不伤害自己。


Python


在过去的几年里,Python 的流行度一直在稳步上升,尤其是在过去的 10 年里,最终迈进了 TIOBE 指数的前 5 名。

Python 非常实用。对于初学者来说,它是一个脚本语言,这意味着入门非常快,不像 java 还需要编译。它的本质是面向对象的语言。在大学的许多学术课程中,Python 已经取代 Java 成为默认的首选编程语言。对于初学者来说,安装 Python 解释器并运行非常容易。

print (‘hello world this is my. First program’)

如上述代码所示,你的第一个程序就这样用 Python 写完了。

Python 正在为未来铺平道路。它在未来 5 年乃至更长的时间段内都将具有较大影响力。Python 已经让机器学习、深度学习、人工智能、大数据等所有流行的数据科学流行语等新的技术范式成为可能。互联网上有大量成熟的库,如 TensorFlow、 Scikit-Learn、 Dask for distributed Data Science 大规模可扩展计算, Python 也可以用于量子计算。虽然我们离量子计算还相对较远,但是 Python 是一个可以确保你作为一个量子程序员的地位的语言。

Python 在企业和初创企业中都很受欢迎。在过去 5 年中已经取得了巨大的进展。现在一些使用广泛的平台,比如 Reddit和许多 Google 库都是建立在 python 之上的。

我个人使用 Python 编写脚本并快速自动化许多任务。它一直是一种让自由职业者快速完成项目的不可多得的语言。

Python 提供了可以访问网络框架,比如 Django 框架,它是构建前端和后端网络应用的最好的 Python 框架之一。坚持 DRY 原则快速构建应用程序的哲学,需要很少的代码量和需要很少的编程经验。


Ruby


Ruby 是另一个功能强大的高级语言,它可以让你轻松地构建应用程序。作为面向对象程序设计语言,对于那些有 Python 开发经验的人来说,Ruby 语法看起来与 Python 非常相似。该语言还配备了构建复杂应用程序所需的所有工具。

许多硅谷的初创公司都是建立在 Ruby 之上的,比如 Airbnb、 Twitch、 GitHub 和 Twitter。Ruby on Rails 是一个运行 Ruby 的全堆栈 Web 应用程序框架,这让 Ruby 更加流行。

Ruby 的一些关键特性:

  • 提供了一个健壮的高质量库。

  • 语法简单,有助于快速开发原型。

  • 学习门槛低,新程序员很容易上手。

  • 是一种面向对象程序设计语言,所以你可以拥有一切面向对象语言的优势。

  • 由于 Rust 的内存占用很小,可用于构建分布式在线服务或网络服务。


Golang


Go(Golang)是 Google 开发的一种相对较新的编程语言。它最近越来越受欢迎。 提供了极好的多线程支持,因此,许多严重依赖分布式系统的公司都正在使用它。它是为解决谷歌面临的一些棘手问题而设计的。谷歌还将 Go 作为新项目的主要语言,并用 Go 取代其他语言。因为谷歌与我们的日常生活息息相关,所以我们不可能忽视它,认为它在可预见的未来将继续保持活跃。

我必须承认,它是一门非常优雅的编程语言,语法很简洁。它在动态类型语言、解释性语言的易用性和类型安全、内存安全之间取得了平衡。

主要功能:

  • 由于有内在并发支持,它可以有效提高 CPU 利用率。擅长云系统开发,分布式系统,微服务。

  • 轻量级、执行速度快和开发效率高。

  • 内存占用和二进制文件较小。

  • 自动垃圾收集。

  • 无异常,它自己处理错误, 等。是的,你没看错。这对你来说意味着什么?您必须准确地知道如何自己处理这些错误,而不是抛出一堆 try-catch 异常。仔细想想是不是这样?

有趣的事实:

  • 全球 Go 语言开发人员平均年薪: 109,483 美元。在美国,这种顶级编程语言的平均年薪为13.6 万美元。

  • 在 2019 年 Stack Overflow 开发者调查中,Go 是全球排名第三的高薪语言。

  • GitHub 上第四活跃的编程语言。


GraphQL


与今天相比,以前的 Web API 设计相对简单,有用于从服务器检索数据的 REST 表示状态转移标准,该标准是基于URL来访问数据的。

然而,需求增长超过了标准。数据不再是之前静态的样子了,它更加动态,因此 GraphQL 应运而生。GraphQL 是 REST 架构的替代方案,旨在克服REST的缺点。与 REST 不同,GraphQL 允许脱离固定数据结构方式来请求客户机需要的特定数据。在后端,GraphQL 向 API 指定如何向客户端显示数据。GraphQL 通过 API 重新定义了开发人员的工作,这些 API 为市场提供了更多的灵活性和速度;它改善了客户机与服务器之间的交互,使前者能够进行精确的数据请求,准确的获得他们所需要的东西。

最初由 Facebook 在 2012 年创建,GraphQL 内部用在他们的移动应用程序,通过其特定的数据获取功能来减少网络使用。从那时起,GraphQL 规范开源了。现在主要的编程语言如 Python,Java,c # ,Node.js 等都支持它。

由于其生态系统的快速扩张,这使得它成为在可预见的未来继续坚挺的技术之一。它有丰富的扩展库和功能强大的工具,如 Apollo、 GraphiQL 和 GraphQL Explorer。

GraphQL 的一些关键特性:

  • 查询速度更快,选择查询的字段减少请求。

  • 非常适合复杂系统和微服务。通过其 API 集成多个系统。

  • GraphQL 可以将来自多个地方的数据聚合成单个 API。

  • 不存在过多或过少抓取的问题。众所周知,REST 响应要么包含过多的数据,要么包含的数据不够。

  • 验证和开箱即用的类型检查。

  • 自动生成 API 文档可取代 Swagger,并且在 GitHub 问题中可以找到使用规范。

  • 无版本的 API 演进,这是 REST 的一个常见问题随着 API 演进,你不得不创建一个新的 API 或者在 URL 前面加上版本,并且有无可挑剔的文档。通过使用 GraphQL,你可以得到一个单一的、不断发展的版本,这使你的应用程序可以不断地访问新特性,并且鼓励编写更简洁、更易维护的服务器代码。

GraphQL 并不是试图取代 REST,它们是解决不同类型问题的两个不同的东西。随着我们迈向大数据,投入一些时间学习 Graphql 就非常有必要。


Angular



Angular 由 Google 开发的,一种用于软件开发的成熟的 TypeScript 框架。它是构建 web 和移动应用程序的主要开源框架之一。Angular 是一个完全基于 AngularJS 改写的。从 AngularJS 开始,它在刚开始的时候就具有一定的影响力,现在 Angular 经过多年的发展,它已经发展成为一个全面的开发框架,其中包括了构建网络和移动应用所需的所有工具和组件。这个框架的美妙之处在于它遵循着一个清晰的路线图,每六个月发布一个新的 Angular 主版本,如果你想长期使用 Angular 的话,这点很重要。

Angular 的主要特征:

下面只讨论 Angular 9 中提到的特性,这些特性可能会解决性能问题。

  • Google 为这个框架提供了长期的支持,并不断地改进它。定期改进非常受追捧,这表明这个框架有一个充满活力。因此,鉴于谷歌正在支持它并对其进行投资,表明该框架在可预见的未来仍将具有相关性。

  • Angular 9 的另一个关键特性是通过 Ivy Compiler 减少了大包文件,从而占用了很小的空间 —— 试图通过减少 JavaScript 包的大小,Ivy 加快应用程序启动。

  • 为需要支持多种语言的应用程序提供更好的国际化支持。


JavaScript


我斗胆说一句:JavaScript 是一个不可替代的语言,毫无疑问它将在未来的几年里继续存在。因此,投资学习这门语言非常划算。它不仅仅是一个客户端的开发脚本语言,通过像 Node JS,Angular 和 React 这样的框架和库,你还可以在服务器端使用 JavaScript 来开发用户界面。

JavaScript 是所有大型科技公司的核心,比如 Netflix,Facebook,Google 等等。因此,JavaScript 作为一种语言和其他编程语言一样都具有合法地位。2020 年是开始投资的一年。把你的空闲时间投入到学习 JavaScript 上来吧。

现在想一想,几乎所有的网站都在某种程度上使用了 JavaScript。


荣誉奖


Webassembly ( 缩写为 Wasm) 应该获取荣誉奖,但不能成为前 7 名,因为它既不是框架也不是编程语言。

Wasm 被设计为编程语言的编译目标和二进制格式,其目标是为 web 应用程序提供接近本机的性能。这意味着什么?把它想象成一个公共的中央平台,开发人员可以将各种编程语言编译成 web 汇编,然后在这个平台上运行它们。另一个类比是它是所有编程语言的 Java 虚拟机。

从本质上讲,每当您在 Internet上通过 Web 浏览器运行应用程序时,Wasm 都将目标定为 Web 应用程序的近乎本机的性能,在接下来的 5 年中,大多数情况都需要用到 Wasm。想想那些需要完美表现的网络游戏吧。通过点击一个按钮,你就可以从服务器下载应用程序代码,并将其加载到运行 Wasm 的浏览器虚拟机中。Wasm 得到了如 Mozilla,微软,谷歌和苹果等大企业的支持。

这种 Web 汇编的广泛应用鼓励去中心化计算,例如 Ethereum 正在着手开发 ether 2.0,在本文撰写之时,Ethereum 将利用其新提出的重新设计智能合同执行层的建议,使用 WebAssembly 的确定性子集。在这个巨大的数字化空间里,学习模型正逐渐成为软件开发人员构建、人与应用交互的技术支柱。

Web 汇编可以让 JavaScript 做它擅长的事情,并将它不能做的部分委托给其他语言。可以把它想象成下一代 Web Ajax。Ajax 使客户端应用程序成为可能。Web 汇编允许您超越仅仅使用 JavaScript 进行节点或 JavaScript 可能不擅长的复杂的低级计算。因此,web 汇编的未来看起来是前途一片光明。


总结


如果你仔细想想,所有的编程语言和框架都有能力构建复杂而强大的功能, 都可以构建解决现实世界中紧迫问题的应用程序。没有放之四海而皆准法则,因为每种语言和框架都有其优势和不足,以及有意义或无意义的地方。对语言的需求是由用例、市场需求或使用该专业知识的资源库驱动的。

永远记住,任何编程语言或框架的目标都是完成任务,要选择最适合你的技术。

真正的敏捷适应性和迭代学习才能真正让你在未来几十年保持与时俱进。就我个人而言,作为一个通晓多种语言的开发者,这为我敞开了大门

如果你喜欢这篇文章,那么请与你的朋友和同事分享,如果你认为这些语言在未来 5 年内将不再适用,那么请评论,我也很乐意听到你的声音。

英文:Top 7 Programming Languages & Frameworks To Learn in 2020 That will Still be Relevant In 5+ Years

链接:https://medium.com/swlh/top-7-programming-languages-frameworks-to-learn-in-2020-that-will-still-be-relevant-in-5-years-11245d7e2d56

作者简介:Timothy Mugayi。技术传播者,讲师,多语言开发者,热爱技术创新

译者:明明如月,知名互联网公司 Java 高级开发工程师,CSDN 博客专家。

【END】

推荐阅读 
☞阿里腾讯华为在行动!程序员远程办公究竟用哪个视频会议好?
疫情肆虐下,程序员们都在哪里?
延迟上班别发愁,远程办公抗疫情!
☞疫情严重,潜伏期也有传染性?科技公司在行动
☞程序员谈从科比的曼巴精神中,我们能学到什么?
你点的每一个在看,我认真当成了喜欢

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存