为什么学那么多没用的编程语言?
今年是 Rust 大年,发展非常迅速,也是今年要重点学习的一门编程语言,但是因工作过于繁忙,遂搁置一边。
上半年只看了一个 star 只有 900 多的超小众实验性编程语言 Vale,我学了能干嘛呢?P 用没有!
那为什么做无用功? 为什么学一些看起来对你的工作毫无作用的编程语言呢? 工作上又用不到,何必呢?
大部分人学习编程语言容易陷入语言自身的 细节,各种语法、标准库啊。但我认为除了这些向内学习之外,还有另外一个重要的途径是从外部视角,跳出棋局看庐山。
这里面就包含两个视角,时间线和空间线。
时间线就是历史发展的脉络,它们的成长轨迹,以及家谱追溯是什么样子,并且它中间包含的重要思想有哪些,哲学有哪些,如何演化,未来可能是什么样,这部分主要包含在编程秘史 Galaxy Brain 中。
另一个重要角度就是空间线,当下世界中,当下形势版图中,横向来看,它和别的语言相比是什么样子的,这是一个非常重要的开阔眼界的视角。所有的编程语言都可以看作人类智慧的大熔炉,通过各种思想碰撞辩论各种"战争",才能更好的创造创新,改变世界。
SICP 中有一段话非常经典:
编程语言主要是给人看的,方便人们之间准确的交流信息,顺便能够机器执行。
体会这句话,人排在机器前面,所以现代语言的设计重点考虑人的感受以及信息的表达力。
据说,具有全局视野,统一视角的人,才具有极高的上限,据谁说,据我说。
那回到学 Vale 这门语言上,作者在实现一个功能时,参考了市面上各个高级语言的实现方法,总结了各自的优缺点,包括更高级的 RAII,Weak Ref 实现,Structured Concurrency,Fearless FFI 等,这就是时间线。
这些东西在 Dart,Swift 身上都没看到过类似的文章,真的是收获很多,底层的很多格局都打开了。