《Fluent Python》读后感

历时84个小时读完本书,首先感慨读的很畅快,内容有深度但是并不难。我读的英文版,可能因为作者是巴西人,所用英语并没有太难的句子,对得起书名的Fluent。

  本书绝对是技术书籍的典范,从范例到细节再到可能出的问题,分析优缺点,和其他语言比较,甚至还有很多八卦(比如erlang和go的设计理念),一些概念的历史(比如magic method一词来自Ruby社区,Python社区也把它们称为special method)。

  我也八卦了一下作者的生平,巴西人,做了十多年的编程语言讲师。行文绝对是简单易懂,复杂的概念也会通过一些简单的实例从浅入深来让人理解。

  我先引用作者在最后一章<<Class Metaprogramming>>soapbox(作者的章后总结)中的引言:

  加州大学两位教授(Brian Harvey 和Matthew Wright)的课件 -- 两种计算机科学的教学观点:

  保守观点

  计算机程序在人类的思维中会变得非常庞大和复杂。因此,计算机科学教育的目的是教会人们如何训练它们的编程能力,比如以这种方式--让500个平庸的程序员聚集在一起,给出规格让他们生产出一个程序。

  激进观点

  计算机程序在人类的思维中会变得非常庞大和复杂。因此,计算机科学教育的目的是教会人们如何扩展自己的思维以和程序契合,学习更多的概念,将会比单一解决方法更加弹性和有用。一个程序每个单元的编程的想法都必须统观全局。

  作者说自己显然是支持后者的(我觉得可以用知其然,知其所以然来概括),并且说他认为Python也正是根据后者的精神来设计的。

  作者说他除了Python从来没见过这样一门编程语言能对初学者来说简单,对专业人士实用,对黑客惊喜的语言。

  因为Python是自己的第一门编程语言,有段时间一直在找Python的优缺点和发展前景,知乎上面相关的问题比较多。很多人的意见当时我不是看的很懂,现在觉得是他们不懂,有一个说法是"谁能减轻程序员的命名压力就是未来的王者,python取消lambda的单行限制后再来谈前景",当时我觉得命名有这么重要吗?现在我的观点是没那么重要,python的lambda也是有意而为之。

  这本书其实很大一本部分是在讲类和OOP。国内精彩能看到批评OOP,宣扬函数式编程的有点,这无可厚非,OOP有它的缺点。

  但是OOP可以说是编程语言界最伟大的发明之一了,图灵奖有两届得主的成就都是和OOP有关。

  所以我明白有部分人是在唱反调博关注而已。国内的码农技术能力也没有想象中的高,看他们出的书就能看出个大概。

  由此我想到了另外一个问题,为什么“程序员是年轻饭,年纪大了不是转管理就是失业”的说法大行其道,貌似很少有人真正享受编程,不然浸淫几十年为何会怕被一个小年轻取代。

  大多数人是守旧拒新的,毕竟一套自己熟悉的框架、语言说换就换也不是那么容易。但是在这一行更换工具其实是常态,自己的技能不应该固定于工具,而是一些更底层,更细分领域的知识。比如不应该区分诸如Java/C++/Python程序员,而是以专注的领域来区分如网络编程/数据挖掘/信息安全/计算机图形等等。。这些领域内的知识才是程序员的立身之本。

  回到本书,阅读顺序可以打乱,有些概念可能你以及从其他渠道直到了,但是推荐按大章节为单位来阅读,因为其中的内容是连贯并顺畅的,比如第5大章控制流,它的章节顺序是迭代器/生成器 -> 上下文和else语句在try和for中的使用 -> 协程 -> 并发和future -> 并发和asyncio库这种学习顺序是精心安排的,如果你跳过某些章节可能会出现代码看不懂的情况,或者你没有学协程就去学asycio的话一些概念你根本没法理清。

posted @ 2021-10-15 20:40  chenghaixinag  阅读(198)  评论(0编辑  收藏  举报