0%

【燕子集】158 红颜如霜

清晨赶早场,道路川流熙攘。暮色望垂杨,拱桥粼粼月光。

又是异常炎热的一周,深圳旁边有海还好,广州稍热一点,内地就更热了。更可怕的是三伏天才刚开始,今年的天气真的让人头皮发麻。大热天能去的地方不多,体育场算是很好的选择,阴凉又有沙子玩。

下半年一开始就进入了忙碌模式,在经济下行周期,无论是外部还是内部的竞争都更加激烈。毕竟蛋糕没有变大甚至越来越小,还是先吃到肚子里比较重要。但是吃蛋糕也是有技巧的,不能只看着眼前的苟且,还要为未来多做打算,这样等机会来临的时候,才能地板油起步一飞冲天。

周杰伦的新专辑也终于在千呼万唤中跟大家见面了,简单听了一下,感觉还是略有失望,只有《红颜如霜》还稍微能单曲循环一下。昨晚恰好和子妍聊到古龙,古龙是我最喜欢的武侠作家(没有之一),当我把绝大部分古龙的作品读了一遍之后,就会发现红颜不是重点,情情爱爱也不是重点,古龙笔下大部分的都是“非主流红颜”。于是仔细想想,喜欢红颜如霜,其实向往的是那种洒脱不羁的侠客精神。

作为侠客,很多故事里的主题都是要斩断过去,在代码的世界中,所谓的斩断过去就是不向下兼容,最著名的例子就是从 python 2 升级到 python 3(简单介绍一下,这是同一个编程语言的 2 个不同的大版本,一般来说是需要相互兼容的,但是在 python 这个并没有这么做)。

为什么 python 的研发团队要冒着社区分裂,无法复用历史代码,在很长一段时间内两个版本并行的风险,还是最终选择不向下兼容呢?这背后的故事也是挺有意思的(注:目前 python2 早已停止支持)。

Python 发明于 1989 年,最初只是想要成为 C 和 Shell 的胶水层,目标是成为一门全功能、易学、可扩展的语言。在 AI 时代来临时,Python 的这种特性使得它成为了天选之子,逐渐坐上了人工智能领域的头把交椅,但是问题也来了,Python2 原来更像是游击队,在转变为正规军的道路上,有几座不得不翻越的大山:

  • 大山 1:JIT Compiler。主要用来实现字节码到实际机器代码的转换,用来提升代码运行的速度。
  • 大山 2:GIL。全局解释器锁,这使得 Python 并没有真正的多线程
  • 大山 3:代码风格
    • 糟糕命名:popen2, popen3 一样的函数名
    • 不统一:很多后加入的库与标准库命名规范不一致
  • 大山 4:str 滥用问题。看起来一样的字符串,可能不是同一个东西,这会造成很多的困惑
  • 大山 5:unicode 问题。使得对于非英美系语言的支持无比难受
  • 大山 N….

一系列的大山阻挡在前,现在的问题来了,是在原来的老爷车上缝缝补补,开始一段艰难的旅程,毕竟原来的底层架构和设计思想,不足以承担历史重任;还是停下来做一辆新车,用更适合新时代的技术征服新时代的高峰,所谓磨刀不误砍柴工?

你怎么选?

为了成为更好的侠客,需要斩断过去;为了成为更好的 Python,也需要重头再来(笑,不是欲练此功必先自宫)。当然了,这其实也是一种技术选择,最终的答案只能交给时间了。