最有用的编程语言

有抱负的开发人员经常问我什么是最值得学习的编程语言。就我个人而言,我主要使用 JS–这是一个可靠的选择,但如今每个人和他们的狗都在学习 JS,所以也许是时候增加一些多样性了。我很好奇–哪种编程语言对你来说应用面最广,并能在未来几年为你提供最多的职业机会?这就是我们今天要回答的问题。

计划是这样的。我列出了 8 个技术专业:

  • 2 个网络开发领域:后端和前端。这两个领域都很重要,也是我最有经验的领域。
  • 移动和桌面原生应用开发。原生应用开发(尤其是桌面应用)似乎已不再受青睐,但这些领域仍有足够多的工作要做。
  • 质量保证自动化。随着工程技术的发展,质量保证也在不断增长,而且越来越依赖于自动化测试。
  • 嵌入式系统。我们的重点是微控制器编程,而不是装有完整 Windows / Linux 操作系统的胖盒子。随着物联网的发展,这是一个相当有前景的领域。
  • 游戏开发。当然,我对这一领域了解不多,但我也会尽我所能来介绍,因为许多开发人员都梦想着有一天能开发出一款有趣的游戏。
  • 数据分析和机器学习。过去十年中最热门的领域之一。

竞争者是 TIOBE 前 20 强中的常见语言:Python、C、C++、Java(与 Kotlin 和其他 JVM 语言放在一起)、C#(同样,也包括 VB 和其他 .NET 语言)、JavaScript(和 TypeScript)、PHP、Go、Swift、Ruby、Rust。我排除了 SQL 和 Scratch,因为它们不是通用语言,也排除了 Fortan 和 Matlab,因为它们在科学/工程计算之外并不常用。

一门语言成为该领域的行业标准可得 1 分–拥有庞大的社区和生态系统,大量的工作机会。对该领域的某些任务有用可得 0.5 分。

那么,让我们来看看哪些语言能让你成为最全能的工程师吧?

后端

让我们从简单的开始–Java、C#、Python、PHP、Go 和 Ruby 都是优秀的后端编程语言。在这几种语言中,我认为 PHP 更有用一些,因为许多低代码解决方案都依赖于它,而 Ruby 正在逐步衰落。不过,所有这些语言都获得了 1 分。

接下来是 0.5 分:

  • C++,用于高负载和时间紧迫的场景、
  • JS – node.js 常用于支持前端,但对于 JS 开发人员来说,严格意义上的后端工作并不多。
  • Rust – 目前仍未得到广泛应用,但发展迅速。

这里唯一失败的语言是 Swift(从技术上讲,它可以在服务器上使用,例如通过 vapor,但我在这个领域中找不到任何工作)和 C。

前端

很明显,JavaScript 是前端开发人员的语言,它可以在浏览器中本地运行。但是,令人惊讶的是,其他语言也能胜任!

所有可靠的后端语言(Java、C#、Python、PHP、Go、Ruby)都能得到 0.5 分,因为你可以通过老式的服务器端渲染 HTML 来解决许多用户界面问题。C# 在这方面略胜一筹,因为 blazor 相当聪明,而且很受欢迎。

C、C++ 和 Rust 得 0.5 分,因为它们可以编译成 WebAssembly 并在浏览器中运行–看看 figma 就知道了。Rust 还支持一些很酷的 JS 工具,如 biome swc。

唯一不及格的语言还是 Swift。

质量保证自动化

质量保证自动化的主题其实很简单。

Java和python最受欢迎–Allure、Selenium、JUnit和pytest是目前市场上最炙手可热的自动化工具。

让 JS 得到 0.5 分的是 playwright 和 cypress,它们是测试复杂网络前端的首选工具。少数自动化工具支持 C# – 得 0.2 分。

移动应用程序

另一个简单明了的领域。Android 应用程序使用 JVM 语言(Java / Kotlin)编写,iOS 则集成了 Swift(最终)。

JS 得分为 0.5 分,因为使用 React Native 可以有效地构建应用程序,而使用 PWA 或老式 WebView 也能取得不错的效果。

C# 得 0.5 分,这要归功于 XamarinMAUI

桌面应用程序(windows/linux/MacOS)

C++、C# 和 Java 是这里的三大 “王者”。JS 得 0.5 分,同样是因为它的 electron–无论是否令人厌恶,它都被广泛使用。Swift另得0.5分,因为你用它来构建MacOS应用程序,但MacOS电脑相对小众。

Rust 有一个被大肆宣传的用于构建桌面应用程序的 Tauri 项目,但它并没有那么普及,我也不知道有什么高知名度的应用程序在使用它。让我们为每个人的努力打 0.2 分,稍后再看。

嵌入式系统

嵌入式系统通常资源紧张,因此编译语言是首选。基本上任何嵌入式工作都需要 C 和 C++。

Rust 一如既往地很有前途,但还不是那么流行,所以得 0.5 分。另外,Python 有一半的分数–用于边缘计算机视觉和原型开发,但对内存的要求很高。

游戏开发

大型游戏开发的主要语言是 C++(用于虚幻引擎)和 C#(用于 Unity)。

由于手机游戏的出现,Java 和 Swift 各得 0.5 分,因为这是您可能会用到的语言。JS(浏览器游戏)另得 0.5 分。

Rust 应该非常适合游戏,但(正如现在所预料的那样)它还没有完全成熟。

数据分析与机器学习

Python 是所有数据相关工作的首选语言,这已不是什么秘密,而且大多数前沿工作都使用 Python。

但是,你知道还有另一种顶级语言可以让你在数据与 ML 的热潮中分一杯羹吗?大公司拥有大量数据,对吗?而大公司喜欢 Java。因此,许多大数据工具(尤其是来自 Apache 的工具–Hadoop、Spark、Jena)都使用 Java,而且大多数数据工作都要求有 Python 或 Java 经验,所以 Java 又得 1 分。

更多惊喜大量数据量大的 python 库实际上是用 C / C++ 编写的,例如,超过三分之一的 numpy 或大部分 LlamaCPP,这两个库都是半分。正如你所期望的那样,Rust 也通过 pola.rs 等产品在这一用例中获得了越来越多的关注,因此再得 0.2 分!

最后的半分归功于 JS,因为它为大部分 UI/可视化应用提供了动力(如 bokeh)。

在揭晓最终排名之前,我们先来权衡一下各个类别,因为它们的体量并不相同。我使用了一些对招聘信息、reddit/linkedin 群组分析和个人经验。以后台作为参考,我认为前台的规模大致相同。移动开发的规模大得出人意料–让我们给它 0.6 的权重。至于质量保证,我认为 0.2 是合理的,因为每 3-5 名开发人员配备 1 名质量保证是正常的比例,而且人工质量保证仍然存在。桌面是最小的领域,在我看来应该是 0.1。游戏开发方面,0.5 只是我的随机猜测。最后,数据人员出奇地多–工资高,我们把它定为 0.6。

综上所述:

  1. Java 在 5 个类别中均名列前茅,并具有一定的游戏开发/前端功能,因此以较大优势占据第一位。其他 JVM 语言(尤其是 Kotlin)也在此列,但由于使用范围不广,所以会打折扣。
  2. 接下来的三种语言非常接近,但 JS 稍微领先,因为它在除嵌入式之外的所有方面都表现一般,尽管它只是前端开发的首选。
  3. Python 和 C# 并列第三。这两种语言都是顶级的后端语言,在其他方面也有强项(Python 的 QA / ML,C# 的桌面和游戏开发)。
  4. C++ 也不甘落后,因为在效率方面,它仍然是顶级语言。当其他语言需要加速时,C++ 也会进入它们的领域(WebAssembly/ML)。
  5. 接下来是 “三个后端朋友”–Go、PHP 和 Ruby。它们都是构建网络后台的顶级语言,但除此之外就没什么了。其中,Ruby 正在走下坡路,而 PHP 和 Go 都有各自的优势。
  6. Rust 的得分并不高,但仍跻身前十,对于这样一门新语言来说,已经不错了。通过蚕食传统 C++ 领域,Rust 具有巨大的发展潜力,我们非常期待它在 3-5 年后的表现。
  7. 我们都喜欢古老的 C 语言,但 C++ 看起来更适合复杂的系统。
  8. Swift 排在最后–对于一种只适用于一家公司产品的语言来说,这已经很公平了。

令人惊讶的是,最有用的语言竟然是 Java。Python 和 JS 作为初学者的最爱,也是强势语言,但侧重点截然不同。C# 或许更值得关注。

总之,今天我们了解到了许多令人惊叹的技术,这些技术让各种语言可以潜入对方的领地。如果重新开始,你会学习哪种语言?

本文文字及图片出自 The most useful programming language

你也许感兴趣的:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注