主要观点:
- 作者起初不喜欢 Python,认为它不如 Ruby 及 Scheme,如 Python 的
if
是语句而非表达式等设计让其不满。 - 后来作者写 TypeScript 时意识到坏的语言特性可通过静态分析被原谅,且开始写 Rust 让其明白可变性并非不可接受。
- Python 已改变,支持类型提示、
match
语句等,类型提示是将类型集成到现有生态系统的好案例,作者喜欢 Python 中与类型无关的一些特性如关键字参数等。 - Ruby 在过去 10 年变化不大,作者虽仍用 Ruby 写脚本但已感觉不同,怀念其他语言的特性,或许自己已变不再适合 Ruby。
关键信息:
- Ruby 是作者编程初恋,语言设计受 Smalltalk 和 Lisp 启发,如对象和原始类型无区别等。
- Python 曾被作者嫌弃,如
if
等设计与 Ruby 不同。 - TypeScript 是动态语言上类型系统的金标准,能进行多种类型操作。
- Python 支持类型提示等改变后,作者对其态度转变。
重要细节:
- Ruby 中可通过块和
NilClass
、FalseClass
上的方法重实现if
。 - Python 中条件赋值需先声明再在
if
语句内修改。 - TypeScript 能基于函数返回类型窄化变量类型等。
- Python 的类型提示可用于验证模式和简化定义 Web API 等。
- Ruby 过去 10 年变化不大,作者虽仍用但感觉不同。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。