Twitter 上大家都比较喜欢我聊一下编程语言,下面是我 Twitter 观点摘抄:
-
C/C++: 我的入门语言,充满原生力量,其实指针、 内存分配和释放,用的熟练就好了,没啥难度。 比较麻烦的是,如果项目不是自己设计的,逻辑比较复杂,内存安全问题没法根治
-
Java: 我第一份工作的语言(J2ME),严谨,工业质量高,天生为企业程序设计的,特别是 Eclipse 开创了 IDE 智能编程先河。 但是不自由,特别是 Linux 下探索一些技术原理的时候,什么都要先定义 Class 再创建 Object 再设计 setter/getter,还要考虑模式设计的时候,不符合黑客道自由自在的精神
-
Haskell: 当年唐凤单刀编写 Perl6 编译器,那时候对一个人的生产力能达到多么恐怖的实力感到震惊(第一个是 John Carmack, 我的偶像),客观的说 Haskell 非常强,类型推导、 代码优美、 高性能递归、 无锁编程等极大开阔我的视野,可惜的是这个语言的作者大部分都是科学家,生态一般,很难找到工作
-
Elisp: 我写了 18 年 Elisp 代码,刷了 400+Emacs 插件,用中国人的话说就是,无招胜有招,什么模式设计,什么数据结构,都不存在的。 代码就是数据,数据就是代码,Elisp 最让我爽的是,你的思想就像水一样流动到键盘,想到那写到哪,加上 Emacs 实时热替换,这才是黑客编程的心流感觉,太爽了
-
Python: 创建 deepin 的前期写了很多 Python 代码,只用看一本书《Python 核心编程》就可以实现入门到精通。 Python 告诉我世间所有数据都可以用 string,number,bool,list,dict,tuple 来组合。 它从来不像其他编程语言那样宣扬宗教理念和小技巧,核心东西就那么多,你永远可以信赖它,完美的原型设计语言,简单实用
-
Ruby: 喜欢看 Rails 作者 David 的博客,人生就应该像 David 那么精彩。 Ruby 语言灵活充满人情味,能够激发“铸剑”的乐趣,但是随着年龄增长,曾经满世界背包找的 Ruby 小技巧最后都无法对抗记忆衰退,尊敬 Ruby 的小情调,但是现在我更喜欢记忆负担小的 Python
-
Vala: 很多人没有听过的语言,Deepin Terminal 第一版的语言,一个基于 C 编译器的语法糖语言,C#的手感,C 的编译和运行速度,第一版 Deepin Terminal 可以做到 50ms 内启动完毕,通过 GIR 自动对接 GObject 库,不用手动绑定,Deepin Terminal 几千行代码量,Github 居然统计我是国内写 Vala 代码最多的人(囧)
-
Golang: 公司主力语言,Python 手感,性能足够好,适当的 GC 比较适合业务逻辑编写,不会像 Ruby 那样内存爆炸重写,性能也比 Python 快太多了,可惜错误处理真的是丑啊,大公司的好处是背书和资源厉害,坏处是一些小细节就不听社区的反馈,而语法完美的语言生态发展缺钱,也许这就是月有阴晴圆缺吧
-
OCaml: 函数式编程,但是没有 Haskell 那么‘纯粹’,也提供 OOP 的东西,自己研究一下玩一下还挺好玩。 但是我想分享的是,函数式编程在列表处理的时候非常简洁好看,但是我们不能拿着函数式语言的锤子到处去找函数式场景的钉子,好看的衣服穿一穿可以,但是有时候也要下田处理一些脏活
-
JavaScript: 可能是世界上拥有程序员数量最多的语言,客观的说,这个语言没啥规范或者规范一直在变,变的都是语法这种无聊的事情。 至从 V8 和 npm 出来以后,你别说,众多程序员鄙视的语言,好脏好乱好热闹的生态就比好山好水好无聊的世界好很多,有时候感叹,代码优雅比不上人多力量大啊
-
CoffeeScript: 2013 年的时候,我们一帮底层 C++程序员魔改了浏览器引擎,用 CoffeeScript 写 Linux 桌面前端,语法优美,F12 调试界面 CSS,好爽啊。 但是后面微软大佬们发力做了 TypeScript 以后,CoffeeScript 这种语言就淡出人们的视野了
-
TypeScript: 如果你羡慕 JavaScript 轮子生态,有生产力,但是又鄙视 JavaScript 的混乱语法和标准,必须尝试 TypeScript,基本上是大前端的标配,像我这种野生程序员,不用太偏向语言派系之间的纯洁理念,架构好才是真的好,大部分代码都会被重构删除的,因为你的认知在不断提升
-
Lua: 用过一年 Mac,针对 Hammerspoon 写了一些配置,Lua 真的是快啊,语言超级简洁,机器码指令精简,效率很高,性能贼快贼快啊。 为啥 Emacs 比不上 Neovim,就是 Lua 比 Elisp 转速高太多,但是这个语言不支持 Native Thread, 所以通用型天赋受限制,再强 IPC 数据传输都比不上线程访问内存速度快呀
-
Swift: 梦中语言,兼顾简洁、 性能和优美的语言,设计的非常好,但是对于我这种 Emacs 程序员,写代码一定是键盘流,但是 Mac 一定要用它那个图形 IDE 写代码我受不了啊,可惜了。 传说 Rust 作者也参与 了 Swift 的开发,所以 Rust 的一些细节审美还是可以的
-
Rust: 这门语言非常好,综合实力很强,我每天都感谢上苍 rg/fd 这两个工具节省我太多时间了,Rust 性能和无 GC 的设计真的没的说,最适合命令行工具、 底层库,减少世界多少内存安全漏洞呀。 我不喜欢它编译器话太多,强迫我关心内存安全,因为原型设计阶段根本不用关心内存安全,没心情就不想写
-
Common Lisp: Emacs 粉丝,研究了一段时间,还是 Lisp 那味,到处都是括号和自由的味道,而且性能和库生态要比 Elisp 好太多了。 但是日常工作和学习都没有实践的机会,还是回到了 Elisp, 虽然精通 Elisp 没人要,但是最起码 Elisp 下班还可以写点 Emacs 插件提升我工作效率,Common Lisp 不知道能干啥
-
Shell: 在构建 deepin 的时候用的多,虽然没有 Python 优美,但是是最佳胶水语言呀,为啥? 因为你构建操作系统的时候,有可能 Python 解释器和很多库还没有移植到新的芯片上,这时候只能用 Shell 脚本。 客观的说,我 Shell 用的不是很好,佩服那些 Shell 代码一屏一屏写,一次搞对的系统架构大牛们
-
QML: 写 Qt 应用的时候撸过一段时间,结构化写界面比 Qt Layout/Gtk Box 快多了。 但是不看好,因为界面结构编程最好的是 JavaScript/CSS, 同时 QML 底层是 OpenGL 强制渲染,如果硬件不是自己做(比如嵌入式),QML 的性能很差,因为 Linux 的显卡驱动质量太差
-
CSS: 其实不算一门语言,但是作为前端最重要的技术,我很多年都坚持手写 CSS。 很多底层开发的人员鄙视做前端界面的。 但是客观的说,CSS 精通真的非常难,代码写好,用户体验要好,控件性能还要好,没有艺术和计算机交叉能力,还真的做不好这件事情
-
Scheme: 和 Common Lisp 一样,是比 Elisp 更完美的 Lisp 语言,核心非常小巧,设计很好,最佳的 Lisp 教学语言。 可惜的是,比 Common Lisp 以及 Elisp 还要小众,建议大家从学习的目的去学习 Lisp 思想,其他就算了,工作和爱好都用不上它
最后
我想分享的是,为什么要学习很多编程语言?
因为我们可以学习各种语言的设计思想和看问题角度,我们会因为“Wow,还可以这样” 来提升我们的认知,这才是价值。
而不是我学习了世界最好的语言,你们都是 xxx , 世界是混沌的,编程语言只是工具,我们不能拿着锤子到处去攻击别人炫耀自己,那样其实很傻。