我让AI列出了一些较为常见的编程语言,要纯编译型的
得到如下

  • 经典编译型语言

    名称主要特点
    C最经典的编译型语言,直接编译为机器码。
    C++基于C的扩展,同样通过编译器生成原生二进制文件。
    Fortran科学计算领域的老牌语言,编译为高效机器码。
    COBOL商业和金融领域的历史语言,完全编译执行。
    Ada高可靠性系统(如航空航天)的编译型语言。
    Pascal/Delphi(Object Pascal)Delphi/free pascal将Object Pascal编译为本地可执行文件。
  • 现代系统级语言

    名称主要特点
    Rust强调内存安全,直接编译为机器码。
    Go (Golang)编译为静态链接的二进制文件,无运行时依赖。
    D结合C/C++特性,直接编译为原生代码。
    Zig注重编译速度和硬实时系统,生成轻量级二进制文件。
    Nim编译为C/C++后再生成机器码,支持跨平台。
  • 函数式与专用领域语言

    名称主要特点
    Haskell虽然支持解释模式(如GHCi),但主流使用编译器(GHC)生成机器码。
    Oberon / Modula-2强调简洁和安全的系统编程语言,完全编译执行。
    OCaml函数式编程语言,适合工业级应用和学术研究
  • 移动与跨平台编译

    名称主要特点
    Objective-C曾是苹果开发的主要语言,面向对象
    SwiftApple生态的主力语言,编译为机器码(或LLVM IR)。
    Kotlin/NativeKotlin的变体,编译为本地二进制而非JVM字节码。
    Scala NativeScala的变体,绕过JVM直接生成机器码。
  • 其他

    名称主要特点
    Crystal语法类似Ruby,但性能接近C语言
    Vala生成C代码后编译为二进制,用于GNOME生态开发。
    FreeBASIC兼容BASIC语法的编译型语言。

以上这些语言,逐个分析

  • c/cpp 代码繁琐,手动控制内存,这次本身就不考虑的
  • Fortran/ COBOL 过于古老,而且用途领域狭窄,不考虑
  • Ada本可以考虑的,已经学习了近半年, 但问了deepseek, 回答是没什么发展前途故放弃
  • Pascal/Delphi(Object Pascal) 老牌语言了,最早就是 C与Delphi入的编程邪途. 除非实在没有办法,不然暂时不考虑pascal系
  • Rust 语法过于奇特,所有权体系难以掌握. 不考虑
  • Go (Golang) 领域狭窄,又是谷歌出的东西(谷歌出品容易放弃), 不考虑
  • D 没想过,据说还行,不过与cpp拉不开差距的东西,同一代竞争中失败了,不考虑
  • Nim 曾很早就关注它,但现在反而没有兴趣了,不为什么
  • Zig 还不成熟,就好像五六年前的nim. 但语法简单(相对而言,在比较新的语言中算简单的), 有C的味道(学习起来比C略难,比rust简单). 可以关注,甚至把它作为C的替代品(目前工具链支持C跨平台编译极好)
  • Haskell 听说用的人不少, 也许以后会考虑
  • (Oberon / Modula-2) pascal系的、偏学术,在C/CPP时代竞争失败,不考虑
  • OCaml 函数式编程语言,适合工业级应用和学术研究. 也许以后会考虑
  • Objective-C 曾是苹果开发的主要语言,面向对象. 苹果抛弃了它,没有前途,不考虑
  • Swift Apple生态的主力语言,编译为机器码(或LLVM IR). 生态小,在苹果以外的平台上竞争力较小, 不考虑
  • Kotlin/Native Kotlin编译为本地二进制而非JVM字节码。 看着好,听说问题一大堆,不考虑
  • Scala Native Scala的变体,绕过JVM直接生成机器码。 看着好,听说问题一大堆,不考虑
  • Crystal 语法类似Ruby,但性能接近C语言. 暂时怕了, 不想再学了
  • Vala 与GTK生态紧密相联,这次重点考虑它的替代品
  • FreeBASIC BASIC系的,不考虑,语法过于古老,功能也较少,生态也小

编译语言也就这么些,这里已经包含了一些上古、冷门的编译语言。说起来,编译语言要适合应用(非操作系统、非功能库、业务相关处理-往往是客户打交道)开发的语言一定要有GC和庞大的标准库.说起来虚拟机语言java/c#也适合这个定义.

而为速度而生的语言(C/CPP/Zig/Rust) 几乎都没有GC, 开发起应用类型的软件真的需要很多的积累

那么对于我而言,

  • 系统级开发语言. 纯速度型,数量极少可供选择. 选择zig/c

    • Pascal/Modula-2 - 性能较弱(Pascal作为中间型语言还可以). 不考虑
    • rust - 性能没问题,学习难度过高. 不考虑
    • cpp - 性能没问题,学习难度过高(过程式、面对对象式、函数式、...等等混在一起,功能过多,没有良好设计,叠床架屋). 不考虑
    • zig/c - 语言本身简单(C称得上极简单), 用起来靠程序员水平,拼算法拼设计 写的好牛逼写的不好傻逼, 反正不拼快速开发.
  • 快速开发型(容易写容易跑),选perl/python
    还有ruby/php/js可选,反正性能也就那么回事,快一点慢一点没有质的区别. 纯看喜好
  • 中间型,速度相对快+相对容易编 的语言就比较难选了。
    大部分是编译型语言也有一些奇葩(比如 julia), 带GC 带功能丰富的标准库(或生态较丰富)的语言. 这个层次的语言不要求速度最快(只要比perl/python快100%就行), 主要看中使用方便、并且有特长.

    • vala gtk生态的一员。
    • julia的gtk、图表、数值计算、语法、协程 算是优点,相对vala也是优点(缺点就是编译很慢很慢,不如不编译). 比ocaml/haskell速度都要快一些
    • ocaml 据说华尔街某大公司(Jane Street)作为主力在用
    • haskell 金融机构用得多
    • crystal 如上所述,虽然各方面都不错, 暂时不考虑

从应用领域来看

分为以下几大类

其中除数据展示之外,其余类型应用都没有必须使用GUI的理由。可以采用TUI/WUI(WebUI - 使用浏览器)/WebViweUI(如tarui、electrion)。

名词定义

  • 本地应用指:在一台计算机上运行程序但不接受网络请求的应用方式. 一般来说本地应用对性能的要求不太严苛
  • 小规模网络应用:指可以接受网络请求、但并发数较少的应用。内部RPC/本机RPC也属于这类
  • 大规模网络应用:指可以接受网络请求、但并发数高(极高)的应用

下面表格由于 markdown表格的原因,并非一行对应一行 排列,第一列为空白的行说明与上一行应在同一格

应用领域应用场景本地应用小规模网络应用大规模网络应用
数据收集、转换- 本地文件1. 快速开发型语言查看[对接外部系统/从外部系统获取数据]查看[对接外部系统/从外部系统获取数据]
- 网络网页2. 中间型语言
- 读取、转换、写入、装载 数据操作.常常操作数据库
- 外部API(json-rpc/rest)获取数据
工具软件- 文件管理1. 快速开发型语言查看[对接外部系统/从外部系统获取数据]查看[对接外部系统/从外部系统获取数据]
- 数据同步2. 其次中间型语言
- 调用、组合外部工具3. 最后系统级语言
数据计算- 数学计算(不包含一般的数据清洗专门的中间型语言任意提供网络服务的同小规模网络应用, 但可以组合提供网络服
合并 整理) 专门中间型语言务的语言 + 专门的中间型语言
- 推导、证明
数据展示图表1. 快速开发型语言提供网络服务功能的快速开发语言同小规模网络应用, 视情况选择网络性能更
2. 中间型语言 强大的语言
(后台/应用)管理持续运行的应用(可以是本地应用也可以1. 快速开发型语言参见[对外客户服务/接受请求]小规模网络应用参见[对外客户服务/接受请求]大规模网络应用
是网络应用), 修改其运行状态、改变其2. 中间型语言
配置内容
对接外部系统- 为外部系统服务(接受请求) 1. 快速开发语言网络功能特化的语言(java/golang/...)
- 从外部系统获取数据 2. 中间型语言
- 向外部系统推送数据
- 同时处理以上类型
对外客户服务以人为最终用户(操作GUI/WUI/WVUI) 1. 快速开发语言网络功能特化的语言(java/golang/...)
2. 中间型语言
- 接受请求,返回数据
- 推送数据
链接库- 动态库1. 系统级开发语言
- 静态库2. 其次中间型语言

以现选中语言视角对以上再做整理

语言适合应用领域
python数据收集、工具软件、简单的数据计算、应用后台管理、对接外部系统、对外客户服务,数据展示
perl数据收集、工具软件、简单的数据计算、应用后台管理、对接外部系统、对外客户服务
haskell科学计算、工具软件、对接外部系统、应用后台管理、对外客户服务、区块链、数据展示?
ocaml科学计算、工具软件、对接外部系统、应用后台管理、对外客户服务、区块链、数据展示?
julia科学计算、数据展示、GUI
zig工具软件、链接库
valaGObject生态、GUI

如果不用GUI,那么vala与julia的价值大大下降。如果haskell、ocaml的数据展示功能不行的话,julia还有一席之地

Ada就特殊了,没有极限性能(性能要比C弱一点,最好也就是C语言一般性能)也没有丰富庞大的标准库(有的只是与C一样可怜的最小库), 孱弱的生态. 属于系统级语言 中间型语言中什么都不沾边, 这么一分析它真的竞争力低下(虽然设计的很好,有点超越时代了,但错过了就是错过了)


德熀
10 声望2 粉丝

兴趣广泛