4

最有用的编程语言

 8 months ago
source link: https://www.techug.com/post/top-languages-2024/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

最有用的编程语言

有抱负的开发人员经常问我什么是最值得学习的编程语言。就我个人而言,我主要使用 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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK