< 返回版块

2019-03-28 21:00    责任编辑:tk

标签:rust, go, python

来源: https://blog.liw.fi/posts/2019/03/24/on_learning_rust_and_go_migrating_away_from_python/

学习Rust和Go:逐渐迁离Python

我从1993年开始使用Python。自2000年以来,它一直是我的主要编程语言。我用Python编写了大量的代码,无论是为了工作还是在业余时间。最近几年来,我对它越来越不满意。一部分原因是我希望从编程工具中得到更多的帮助,比如静态类型检查、更好地处理抽象和代码模块,以及帮助我编写更大、更复杂的软件。另一部分原因是我现在编写软件更具挑战性,需要尝试发挥更多的现有的硬件的能力。还有一部分原因是我没有感觉到Python社区正在朝着我想要的方向发展。相反,我觉得Python社区乐于在我不愿意做的事情上走捷径和妥协。如果这能让他们的生活更美好,那当然很好,但这却让我想要别的东西。

我用Python编写了备份应用程序Obnam,这个过程持续了14年直到一年前我让它退休。在Obnam持续开发的过程中,Python 3发出现了。我认为Python3 实际上是一件好事,但是2到3转换是痛苦的,而Obnam到最后都没有完成。Obnam还有些其他的让开发工作变得不那么有趣问题,因此Python 3并不是杀死它的原因。

我用Python编写的Obnam和其他大型程序给了我一种强烈的感觉,在达到一定的程序规模和复杂性以前,它是一种很好的语言。Obnam大约有15000行Python代码。在Python中,这个代码量我来说就太难了: 经常会出现一些bug,而这样的bug在一个静态的、有强大的类型系统的语言中是很容易发现的。我可能该更加注重如何使用Python,以及更小心的组织代码结构,但我的观点是:像Python这样的语言需要非常的自律,以至于在某种程度上变得太过了。

所以,在过去的几个月里,我一直断断续续的在学习Rust和Go,当然是在其他任务之间的短暂空闲时间里。两者都有静态类型系统,而且可以认为是强大的。两者似乎都有不错的模块系统。也似乎都很好地支持并发。对于我所编写的非小型软件来说,这、两种都可以很好地替代Python。但我希望使用Rust编写任何非工作程序,Go只在工作需要时才使用。

Rust是由Mozilla发起的社区开发。Go的开发似乎实际上是由谷歌控制的,而谷歌正是Go的发明者。我宁愿把我非工作的未来押在一种不受大公司控制的语言上,尤其还是当今的监控经济中的主要玩家之一。我在空闲时间编写代码,因为它很有趣,我将它作为自由软件发布,因为这也是合乎道德的事情。我强烈地感觉到软件自由是人类长期幸福的基础。

不管怎么样.

忽略道德问题,Rust似乎是两种语言中较好的一种。它拥有更好的类型系统、更好的编译器、更好的工具,在我看来,它吸收了在过去三分之一个世纪里编程语言和工具的一些精华。Rust的思想更好:事物的设计是有充分理由的。它并不总是像Go那样方便或熟悉,但它似乎不会像Go那样为了短期的方便而做出妥协。

请注意,我没有使用这两种语言编写任何重要的代码,我只是根据阅读学到的知识来写。随着我对两种语言的了解越来越多,我的观点在未来可能会改变。