除外上下班路上听的政史哲经济金融书籍,这是今年认认真真从头到尾看完的第一本书。
第一版是7年前出版的,我大概4年前囫囵吞枣的看了一遍,今年第二版出版,看了下盗版的电子书,发现更新了大量内容,遂再次购买阅读。
看得书多了,习惯性的常常关注书籍的逻辑结构和作者的语言组织能力。这本书从python的内置数据结构说起,随后是python独有设计模式的基础,函数作为一等对象,OOAD,最后到元编程。一步一步的讲了pythonic的编程风格。作者作为多年的python布道者和高级python工程师,无论从逻辑结构还是从语言组织能力来说,本书都堪称佳作(翻译是真的烂,甚至不如机翻,建议读英文原版)。
相比第一版成书时的python3.4,当下的python3.10最大的更新就是typehints以及异步的acync/await关键字。
3.5版本开始,逐步引入了typehints。初时完全不理解一个动态语言用类型标注的意义,浪费时间做无用功,解释器也没对这个类型标注做编译期优化(是的,python在脚本运行和import之前会把代码简单翻译成字节码)。直到后来,手里的项目越来越大,也加入了几个志同道合的小伙伴一起工作。这时发现,typehints太重要了,极大的减少我们宝贵的时间和昂贵的沟通成本。但是,又引出了另一个问题,typehints本身的代码风格就很不简洁。甚至比起来静态语言都差得远,这本身就完全违背了pythonic简单优雅的理念,何况python的typehints完全不提升代码的性能,如果完整写typehints的话,干嘛不用一个静态语言呢?
至于acync/await,这是现代语言编程范式互相抄袭的一部分。JavaScript在2017年推出的acync/await,之前也有所谓的回调地狱。python在抄这个功能之前,自己提出了晦涩难用的yieldfrom解决方案。然而,哪怕是抄了这个acync/await方案,很多现有库和框架不支持异步。稍不注意,引入同步代码就会导致性能的崩塌。所以,在gil锁还没被移除的现在,直接选择多线程是更合理的方案。
python最初只是作为一个脚本语言设计。Guido可能完全没想过它能火到世界顶级互联网公司都用它来做后端语言,且机器学习、深度学习已经完全绕不开python了。只看我第二段提到的那些设计,python这门语言的设计条理性,范式一致性都堪称完美,兼顾了优雅、简单和工程性。但现在的typehints和异步都是为了给当年的设计缺陷打补丁,这个补丁如同它的本意那样,让这门语言失去了原有的协调性和美感。在各种语言互相抄袭设计范式的当下,kotlin,c#,js,甚至c++,都成为了python的有力竞争对手,而且跟这些语言的性能和程序员性价比来讲,python的优势只剩下AI了。
只能说祝python越来越好吧。
相关推荐
© 2023-2025 百科书库. All Rights Reserved.
发表评价