为什么我会成为 Gopher
本文最后更新于 169 天前,其中的信息可能已经有所发展或是发生改变。

Go 可能是我继C/C++和Python之后学的第一门语言了,但在体验了数个其他语言后,发现Go还是真香。

本文含有大量主观观点,没错我就是要开团,也仅能代表个人的观点。

犯下了怠惰之罪的Python

Python怠惰就怠惰在竟然把所有依赖做到一个环境里去,于是各种依赖版本不可避免的就开始打架,代码还没写,环境先变成了屎山。此外就是慢,不过当作一个脚本语言的话也不用期望太多。

干脆都用Poetry得了,有一个正常语言该有的lockfile,所有问题都能得到解决。

犯下了傲慢之罪的Java

Java就是依托答辩,语法像C却没有一点C的轻捷,但对象这回事属实烙印在了Java的深处。读取stdin要定义一个Scanner对象,对字符串做操作要定义一个StringBuilder或者StringBuffer而不是String,不胜枚举。用户自己定义的也是一样,明明没有面向对象的需要却非要做成一个对象,连带着画出那诡异的UML图,如果面向对象味儿不够还要再用各种设计模式包装,观察者,单例,工厂……能不能别给自己加那么多戏。

终于做完了一个项目,自信地点击了Gradle Build,过了好久还没完成,于是睡了一觉,终于build完成了。打开它,可用内存便无影无踪,别人30MB能解决的问题Java搞上300MB。

犯下了暴食之罪的JavaScript

我不喜欢JavaScript的地方是它的依赖管理。其实应该说Node.js的依赖管理才更加合适,但现代的前端开发,又很难离得开Node.js。首先拦在面前的便是一大串包管理器,npm、yarn、pnpm,各自宣称解决了一些问题,但各自又有各自的lock文件。何况最烂但用得最广泛的npm会在你的每一个源代码目录中拉一坨.node_modules,随便起一个小页面,300MB没了,稍复杂的页面奔着1GB去了,而这npm install还经常由于各种奇奇怪怪的问题失败。

另可参阅:Programs are dead

犯下了贪婪之罪的Kotlin

不得不说Kotlin还是缓解了大量Java的不足,大大简化了各种繁琐的模式。单例,直接上 object 或者 companion object;观察者模式,一个by关键字就能解决。换成Java,不知道要打多少snippet。此外还有各种把if赋值上提之类的语法糖,确实应了那句话,甜到齁。此外和Java类的互操作性也十分舒适。在开发Android应用时感觉到这俩简直是天造地设,完美契合。

但毕竟Kotlin设计之初就是为了在某种程度上与Java共存的,各种设计模式再简化也只能是语法简化。此外还有那又笨又重的JVM,完全逃不过去。

犯下了怠惰之罪的C

我说C为什么摆烂,C有底气的啊,看到C就像看到了汇编,一目了然。这倒是一种独特的优势,除了memory safety之外十分适合偏向底层的开发,也没有Rust那么难学。但客观上,缺少诸多现代特性确实给C成为一个广泛用于应用软件的语言拖了后腿。

至于C++,我感觉挺难说,坚持ABI兼容的后果,到现在还未知,但至少Google已经出去单干了。


在我看来Golang就是if err != nil 还不够优雅了,不过似乎Go 1.20会缓解这个问题。我真不想写try-catch。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇