学习这些编程语言是值得你花时间的,即使你不使用它们: 1/6 C C 语言与汇编语言相差一步。它迫使你理解“栈”和“堆”之间的区别。你还必须处理指针——训练你的大脑处理间接性将帮助你更好地理解更难的问题,因为几乎每个“难”问题都必须以某种间接性进行建模。
2/6 汇编 学习汇编如何工作是学习编译器工作原理的前提。与C语言不同,你还必须学习何时使用“寄存器”,这将帮助你更强烈地感知什么是高效代码,什么不是。我认为,懂得如何用汇编编程可能是我能够快速掌握新区块链的最大助力。我以“任何功能正常的虚拟机/CPU架构必须具备以下特征,那么我在哪里可以找到它们?”的思维模型来接触它们。这帮助我以一套智能的问题来接近新系统,而不是在想到底发生了什么。
3/6 Rust Rust 对同一值的多个引用非常严格,而其他语言并不强制你考虑这一点,尽管这可能是实际错误的来源。 此外,Rust 的类型系统设计得相当周到,因此你在如何建模现实世界方面有更多选择(当然,这是一把双刃剑,因为你可能会过度思考简单问题,所以你必须学会如何控制它赋予你的能力)。学会编写惯用 Rust 的人也不会远离学习如何编写函数式编程。
4/6 Lisp 如果你想学习函数式编程而不被编译器惩罚,这是最好的方法。此外,你将接触到现存最强大的宏系统,并且你会在 JSON、XML 和源代码等事物中“看到”递归结构。 递归结构并不意味着编写递归代码。相反,它迫使你思考如何将一个大问题分解成更小的问题,并首先考虑边缘情况,而不是后面再考虑。 Lisp 还开创了:垃圾回收、if 语句、宏、第一类函数以及许多其他东西。几乎所有现代语言都借鉴了 Lisp 发明的一些思想。因此,如果你知道 Lisp,你可以聪明地问:“这个语言有没有做 X 的方法?如果没有,我该如何实现?” 如果你执着于“实用”,我推荐 Clojure 方言,但仅仅为了学习,Racket 是相当友好的(如果你知道其中一个,学习另一个就非常简单)。
5/6 Haskell Haskell 可能是现存最严格的类型系统(至少在我知道的语言中)。它甚至比 Rust 更严格,迫使你考虑如何处理可能失败的操作(例如网络调用)。这就像和一个极其挑剔的高级程序员一起工作,他会抓住你每一个错误,即使是那些极低概率导致 bug 的问题。是的,编译器比 Rust 更加苛刻,但关于“你没有考虑到 … 的可能性”的持续反馈将帮助你更快提升技能。如果你是初级工程师,想要一个随时可用的高级工程师,那就用 Haskell 编程,祖先的智慧将会赐予你。
6/6 它们如何帮助 有效的学习发生在你尝试解决一个问题并立即获得反馈的时候——这些语言各自以自己的方式做得很好。 这些语言迫使你参与到一些像 JavaScript 或 Python 会掩盖的问题中,并直接、即时地反馈你做错了什么。 记住:初级和高级程序员都可以编写“解决”问题的代码——但高级代码要精炼得多。这种“精炼”来自于训练——这些语言都免费提供给你。
7.49K