小众编程语言
这里先给出小众的定义:以 TIOBE Index for October 2021 为标准,排名在 20 位以后的编程语言。其中排名前 20 的编程语言为:
- Python
- C
- Java
- C++
- C#
- Visual Basic
- JavaScript
- SQL
- PHP
- Assembly language
- Classic Visual Basic
- Go
- MATLAB
- R
- Groovy
- Ruby
- Swift
- Fortran
- Perl
- Delphi/Object Pascal
在 TIOBE 榜单 20 至 100 位里的小众编程语言:
Scratch (24)
麻省理工媒体实验室开发一款面向教学的编程工具。主要用于少儿编程教学。Rust (26)
由 Mozilla 基金会主导开发的一款通用型编程语言。可用于替代 C++ 进行系统级的开发。Rust 也是实验性操作系统 Redox 所使用的开发语言。
Rust 开发的网站框架比较丰富,知名的有 Actix、Rocket、Iron。Julia (28)
最初是为了满足高性能数值分析和计算科学的需要而设计的。支持并行计算和分布式计算;可直接调用 C 和 Fortran 库;底层通过 LLVM 编译为本地代码。
Genie 是一款使用 Julia 开发的高性能(据说)、全栈式 MVC 网站框架。Scala (30)
运行于 Java 平台上的多范式编程语言。设计初衷是要整合面向对象编程和函数式编程的各种特性。Scala 使用 Actor 模型作为其并发模型。Lua (32)
轻量级的可嵌入式脚本语言。常被用于游戏开发。另有 LuaJIT 项目可以令 Lua 支持即时编译。OpenResty 支持使用 Lua 脚本进行网站开发。Clojure (33)
运行于 Java 平台上的函数式编程语言,是 Lisp 的一种方言实现。另外有可编译为 ECMAScript 的 ClojureScript 项目,和运行在 .NET 平台上的 ClojureCLR 项目。Kotlin (38)
由 JetBrains 开发的一款运行于 Java 平台的编程语言。被 Google 推荐作为 Android 平台的开发语言。此外 Kotlin 还支持作为脚本运行。除了 Java 平台外, Kotlin 还支持编译成 JavaScript 代码(Kotlin/JS)和本地代码(Kotlin/Native)。
Ktor 是官方推出的一款异步网站框架,支持 Kotlin 协程。Dart (40)
由 Google 主导开发的编程语言,目标是成为下一代的前端开发语言。然而就目前来看,可能离目标的差距还很大。它能够被编译成 JavaScript 运行在浏览器中。现在主要被跨平台应用开发框架 Flutter 所使用。D (44)
由 Digital Mars 公司的 Walter Bright 所创建的编程语言。设计源于 C++ 语言,但并不兼容 C++ 语法。能兼容 C 语言的 ABI。TypeScript (46)
编译目标为 JavaScript 的转译语言。由微软开发和维护。兼容 JavaScript 语法,支持静态类型检查、类以及泛型。使用 ts-node 可以方便地在 Node.js 环境中直接运行 TypeScript 脚本。Elixir (50)
运行于 Erlang 虚拟机上,用于构建可伸缩、可维护应用的动态、函数式编程语言。同 Erlang 一样,采用 Actor 模型作为并发模型。在语法上借鉴了 Ruby 语言。
Phoenix 是一款使用 Elixir 语言实现的网站框架。同样也借鉴了 Ruby on Rails。Elm (68)
是一种强类型、纯函数式、最终编译为 JavaScript 的编程语言。Elm 主要用于网站前端开发。Haxe (70)
Haxe 可以构建针对 JavaScript、C++、C#、Java、JVM、Python、Lua、PHP、Flash 的跨平台应用程序,也可以运行在其自带的虚拟机(HashLink 和 NekoVM)里。Nim (81)
经历 10 年磨砺,Nim 语言终于迎来了正式版。它参考了包括 Ada、Modula-3、Python、Lisp、Delphi、Oberon 等多种语言。Nim 支持元编程、函数式、消息传递、过程式以及面向对象编程。 Nim 编译器生成 C 语言代码,并使用外部 C 编译器来进行构建。此外还支持生成 C++、Objective-C 以及 JavaScript 的代码。
Nim 可以调用 C/C++ 的类库,还可以与 Lua 和 Python 语言的解释器进行交互。OCaml (83)
OCaml 是一个函数式、指令式、模块化、面向对象的通用的编程语言,适合用于编写高性能、单线程、专门性强、结构复杂、正确度高的软件。一般用于编译器、程序分析、金融交易、虚拟机等方面。
TIOBE 榜单之外的微众编程语言:
Erlang
面向并发的函数式编程语言。运行于 Erlang 虚拟机平台 BEAM 上。著名的消息队列服务 RabbitMQ 就是使用 Erlang 开发的。Crystal
Crystal 的语法很大程度上受 Ruby 的启发,对于有经验的 Ruby 开发人员来说,它的学习曲线较低。
静态类型检查,可以在 Crystal 中编写同 C 语言绑定的代码以调用 C 代码。使用 LLVM 作为后端实现本地编译。mruby
Ruby 语言的轻量级实现,主要作为嵌入式脚本引擎之用。V
V 语言语法与 Go 类似,并受 Oberon、Rust、Swift 的影响,是一种静态编译编程语言。类似 Nim,V 语言编译器生成 C 语言代码,通过 CLang 编译成本地代码。
目前看来,V 语言本身还不够完善,风评也欠佳。Zig
设计目标用来替代 C 语言。Zig 的语法小巧简洁,可以被 500 行的 PEG 语法的文件所描述。这是优点也可以算是缺点:不支持函数重载、不支持操作符重载、没有默认参数、没有预处理器、没有宏、手动内存管理……Squirrel
被设计用于游戏开发的可嵌入式脚本语言。使用 Squirrel 的游戏有:《小小国王与约定之国 最终幻想水晶编年史》、《求生之路2》、《传送门2》等。但官方自从 2016 年发布 3.1 stable 版本后就再也没有发布过新版本。在沉寂多年后,作者于 2022 年 2 月 10 日,发布了 3.2 stable。CoffeeScript
编译目标为 JavaScript 的转译语言。PureScript
是一种强类型、纯函数式、最终编译为 JavaScript 的编程语言。Fantom
可以运行于 Java 平台和 .NET 平台上,也可以编译为浏览器中使用的 JavaScript。最初诞生于 2005 年,然而缺少大公司支持,一直默默无闻。Hack
由 Facebook 开发的一款语言,运行在 HHVM 虚拟机上。支持异步、泛型、类型检查等。Hack的语法类似于 PHP。
然而,自 PHP7 引入 JIT 技术后,性能大幅提升,Hack 在性能上的优势不再明显,地位有些尴尬。Opa
Opa 不仅是一门编程语言,还是一套完整的网站全栈式开发框架。Opa 的语法类似于 JavaScript,前端生成完全兼容 JavaScript 的代码,可以访问所有的 JavaScript 库;后端生成的 JavaScript 可运行于 Node.js 上。Red
Red 是一门新的编程语言,它受到了 REBOL 很大的启发,但由于它有本地代码编译器,Red 的应用领域更加广泛。Red 的 Toolchain 非常小,支持多个平台的交叉编译,编译后的程序文件也非常小,并且提供了跨平台的 GUI 组件。然而作为个人项目, Red 的发展非常缓慢,远远没达到生产环境可用。amber
使用现代类型安全和运行时安全的编程语言,编译目标为 Bash 脚本。Lobster
语法类似 Python,静态类型,可以选择使用 JIT 运行或转译为 C++ 代码以获得更快的运行速度,也可嵌入到 C++ 项目中作为脚本语言使用。主要用于游戏开发。Beef
语法类似 C#,但需要手动管理内存。最终编译为本地代码运行。可以和 C++ 代码互操作。