学习 Python 让我学会接受不纯粹

在学习 Python 之前,我喜欢那种编译期类型、拥有类型演算的语言,如 Typescript,我对动态类型语言感觉很不舒服,认为它们难以维护,它的类型无法提供指导,反而是桎梏,它的约定俗成实在太多(说的就是 Python,以“协议”之名做了多少魔法)。

但学习 Python 的过程中(其实倒也不是 Python 自己的功劳,只是正好是它罢了),思想逐渐有一些改变——Python 不像 ts,haskell 那样精确、纯粹,短小精悍(我是说……就基础概念的数量来说……吧),在 Python 中,做一件事有 n 种方式,Python 的设计者不追求语言的“正交性”,只追求用最简单的方式最快地把事情做出来,可以说这是一种实用主义(这倒是废话,工具当然要追求实用主义),但它确实成功了。为什么是 python,不是 perl,ruby?或许答案就在这里……吧?(这里还有待商榷,我觉得 perl 因为其底层设计(一个高级语言,还搞出引用和指针,列表默认展平,操作全局变量太多导致多线程会很麻等),在现代应用的上下文下确实更难发挥,但 ruby 的设计也是很精彩的,它没能比过 python 的原因确实得捋一捋,是因为它太过复杂?设计者不愿意优化性能?不适应科学计算?)

学习 Python 前,我满脑子都是函数式编程,是纯粹性,能用 map-filter-reduce 就绝对不愿意用 for,能用链式调用就绝不写一行一行语句,即使问题本身其实更适用于用命令式的风格去解决。这在我在前端框架上的选择上也有体现——我最初学的是 Vue,但听说 React 更纯粹,就去学 React 了,后面的几个项目也都是用 React 做的。React 虽然香,它纯粹,精简,可以说只要会 js,理解一点函数式编程,就自动地会了 React,而代价则是需要维护依赖数组,偶尔遇到循环更新的问题会一筹莫展。

Vue 呢?Vue 之于 React 对我来说就像 Python 之于 ts,haskell,它不纯粹,它引入一堆概念,学习成本相对高,带来的却是问题的快速解决(即使后续维护可能会伤脑筋),我觉得我有必要再去学一学 Vue,看看它对我究竟又能起到什么启发,对我能不能称为一个比 React 更好的工具。

拔高一下,这里的纯粹与否其实不止是语言的纯粹性(纯函数的那个 pure),它实际上也是说是否“完美”,关于是否有杂质。我们追求纯粹,这毫无疑问是正当的,我们的社会实践中会努力地祛除杂质,让水越来越清,但也要认识到,无论多么努力,杂质总是会有的,去掉了旧的也会生成新的。如果满脑子都是这种完美主义,要一切事情都尽善尽美,完全纯粹的话,那就无法进步了,强行地追求这种纯粹更是会造成严重的后果(“极左”,带来的破坏和右派一样大,当然这里同样值得进一步商榷,极左里既有那种好心办坏事的,也有扛着红旗反红旗的)。主席对此是心知肚明的,主席知晓资产阶级法权这个杂质,也在采取一切办法去尝试消灭它,但终究是没有幻想能直接把它丢掉,一步迈入共产主义,因为这就是做不到。

总而言之,这里的结论是——更关心去解决问题,而非更关心是否纯粹。这里没说不关心纯粹性哈!如果只关心前者,那等于是只关心当下,只关心当前利益而非长远利益,等于实用主义入脑,丢掉了阶级立场!

唉,社会问题从来就是这么复杂,没有问题是能片面地看待的,所有问题都是系统性的,要综合考量。