照片由Mehmet Ali Peker在Unsplash上拍摄
我肯定说过,这个的正确答案是Haskell。有了它,用少量的代码可以完成令人惊讶的复杂事情,但语言本身确实很难掌握。
我的评估是,如果你没有大学数学学习的至少辅修,那么对这门语言的全面了解几乎是不可能的。
在大学里,我主修信息技术,辅修数学,我知道几十种其他编程语言,并且已经编程超过10年了。
尽管如此,Haskell对我来说太难有效使用,因为在写每行新行之前,我必须花很多时间思考。然而,我可以慢慢阅读和理解其他人编写的代码。
如果我知道更多的数学,Haskell可能会更容易学习。因为Haskell是一种如此复杂的语言,所以它的专家报酬很高。我真的不明白为什么任何公司会选择Haskell来做新项目,因为作者的工资水平会这么高。
我认为更易于控制的编程语言会产生更好的性价比/质量比,即使您需要编写更多的代码来做同样的事情。
目前,Rust是一种许多人觉得难以学习的语言,但它仍然很有希望。基本功能是,据我所知,这是唯一允许您使用共享内存区域的语言,但编译器仍然可以防止多线程代码中的数据竞赛错误。
此外,这在不使用GC的情况下是可能的,因此完成的程序的性能与C和C++中的程序相当。
Java和其他所谓的托管语言在性能方面与Rust/C/C++语言不竞争,但它们之所以被使用,是因为程序员不必太在意内存管理(但即使要获得相当好的性能,您仍然需要非常关注它)。
此外,值得注意的是,例如,Java的GC无法防止数据竞赛错误,但代码的正确性是基于开发人员的关心。
在Rust中,编译器不允许编写会导致数据竞赛错误的代码。然而,这需要以略微不同的方式呈现某些传统算法,这可能会使使用该语言变得困难——特别是如果开发人员以前已经拥有其他编程语言的经验。
我个人预测了Rust的最佳未来,Rust是一种困难的语言,可以产生出色的结果。它在困难和所获得的好处之间有相当好的妥协。将来也有可能有人想出一种Rust++(希望在现实中是一个更好的名称)语言,该语言在安全性和性能方面可以提供与Rust相同的东西,但更易于使用。
由于新编程语言的开发如此缓慢,这在未来10年内几乎不会发生。在任何新创建的语言之上启动更大的项目总是一个巨大的风险,因为该语言可能会因缺乏使用而死亡。然后,一个人的项目将变成既运行项目,又单独维护翻译。
目前,Rust不太可能消亡,因为许多大型组织已经使用它。例如,Meta(前身为Facebook)选择了这种语言作为其官方语言之一。除此之外,Meta只使用Hack(Facebook本身创建的PHP的亲戚)、C++和Python。
这就是为什么我建议每个人学习Rust语言,即使你现在在工作中不需要它。它使用的数据结构也可以在其他编程语言中使用,因此学习它很有用,即使您通常使用其他语言编写代码。
我的编程历史始于Pascal、Symbolic Assembly、C和C++,但学习Eiffel和Perl语言改变了我对新程序的想法。
也有一些学习Haskell语言的尝试,但没有那么多。我比Haskell更了解Rust,尽管Rust大约更新了15年,而且我过去几年才学过它。
我仍然认为自己是Rust的初学者,特别是在使用线程之间共享数据时编写多线程代码时(参见,例如,消息传递)。
Arc和Mutex类型开始站得住,但我仍然怀疑与最佳数据结构相比,我使用它们太多了。
因此,在我看来,Rust对数据结构的大力强调是一个完全正确的模型,因为在设计任何新应用程序的软件架构时,选择正确的数据结构可能是最重要的决定。