《程序员的呐喊》读书笔记

对这本书没什么很大的期待,但是看完之后感觉对我的职业观产生了冲击了。而且很多观点其实我一直在想的,但是经验和觉悟太低一直都没能写出来,看到文中写的就深有同感。

编程语言里的宗教

语言本身不给力,类库再牛也是有限的

额这不是在吐槽Java吗,但是至少现在看来Java还是挺牛逼的呀。还是自己接触的语言太少了。作者在后面提到语言就是程序员的宗教。此言不差。

Java 在语言层面上和C++也就打个平手,其实Java 要好的多,至少他有了字符串,连字符串都支持不好的语言哪是人用的。

这个把C++喷的,其实还是赞同的哈哈哈,不过貌似作者对字符串有执念,所以对perl也非常喜欢。

高斯林自己也承认,要是有机会重来的话,绝对不会考虑接口。

这里又开始怀念C++的多重继承了XD

软件工程有自己的政治轴心。一端是保守派,另一端是自由派。

本质上,保守主义就是风险管理。

软件自由主义者在保守派眼里就是一帮邋里邋遢,缺乏纪律,天真无邪,没有原则,彻头彻尾的坏工程师,而保守主义者,在自由派眼里就是偏执狂,只会散播恐惧,自欺欺人的官僚主义者。

我有时候觉得自己是个保守派,更多时候觉得自己是个自由派。大概算什么混乱中立阵营吧2333

无关政治的有算法,数据结构,具体数学,复杂度分析,信息理论,类型理论等计算机科学理论。

Google这几年越来越擅长用更多的机器和更少的代码来工作

好黑。

学习是一件很困难的事情,要是你觉得很简单,那你肯定是在摸鱼,不去挑战一些过去做不到的事情。要么是你觉得很简单,那你是不可能提高自己的。

啊,这么一说感觉自己最近一年一直在做简单的事情o(╯□╰)o

学习是一件很痛苦的事情,但是荒废时间会让人更痛苦,

更让我生气的是安于现状,不思进取。

虽然很有道理的样子,但是怎么开始贩卖鸡汤了。

身为程序员不沉迷于性能的话,还叫什么程序员呢。

程序员非常在意性能,他们愿意为此花费无数时间,去摆弄算法和数据结构,压榨程序里的每个指令周期和字节,但却不愿意用这些时间去学习在新硬件上新语言。

对语言的执念啊。。。

如果你想上进的话,唯一要做的就是持之以恒,不管你是想要提高自己的编程水平,还是数学水平,或者是想要健身,玩风筝,甚至克服人类比害怕死亡更甚的第一恐惧:公开演讲。只要脚踏实地,就能循序渐进。

有舍就有得,这就是零和博弈。

好好享受生活吧,其他的顺气自然就好。

代码里的哲学

软件需要哲学家

一般大家都觉得自己生在启蒙时代,其实并非如此,人类压根就没怎么变过,我们依旧互相折磨。杀伐不断。

代码的最大的敌人就是体格。

任何聪明的团队都会尽一切努力避免代码成山。

10年以来把代码拆成小函数的做法一直都被标榜为“良好的设计”,这完全要归功于马丁福勒的《重构》

假如你下定决定要精简代码量,那最终的结果就是要被迫放弃Java

要激起语言之争,一般有两个要素,意识绝大多数程序员都不喜欢学习新语言,其次是经济因素,最终一切还是向钱看。

程序员的数学

程序员觉得数学没用,我经常听到这种观点。说难听点,只要你活下去,什么都不懂又怎么样。所以我才会同意他们的观点,就算不懂数学,你的生活也会好好的。

这段比较讽刺。

学习数学的正确方法

广度优先才是学习数学的正确方法,深度优先不行的。先打开眼界,搞清楚什么是什么。

学习数学的正确方法应该是忘记那些算法和证明,去了解那些技术的方方面面,名称和作用,大概是怎么计算的,历史有多悠久,是谁发明的,局限性在哪里,相互之剑的关联是什么。大概这就是所谓的数学里的素质教育。

我觉得学习数学的最佳方式是每天花上15—30分钟浏览下维基百科。

不要被习题抹杀了你对数学的兴趣,要是对某个题目章节让你觉得无聊,不妨大胆跳过去,在频繁也没关系,跟着感觉走这样你的学习速度会快很多,也有助于培养自信。

这段学习数学的方法全部摘抄下来还是挺有价值的。

关于编译器

对于编译器一无所知的人往往在计算机科学教育和系统架构的整体把握上有缺陷。

编译原理和面试变现之间的线性关系。

不懂编译器原理的人也不懂计算机的原理,如果你吃不准自己是不是真的懂,那么你就是不懂。

编译原理是计算机科学里第二重要的课程。

编译原理之所以是一门重要的计算机科学课程的原因就是它非常切实的将以前学过几乎所有东西都捏合在了一起。

如果你不选修编译原理,那就要冒着永远混迹与二流程序员行列的风险:就是那种从热情的青年架构师最后混成阴郁的古董架构师,终其一生都在构建某种大型系统,还引以为傲。