程序员有哪些必读书单?求推荐

发布时间 2023-12-07 17:49:13作者: 易先讯

我在不同阶段有看不同的书,我看了好多书,可以跟大家讲讲。

  学C++时候,C++那本lipman写的,lipman是第1个实现C++编译器的CFont,他是那个C++2号人物,他那本非常经典的红皮的 《C++ primer》

  你要学linux系统调用、编程接口的话,你看《UNIX环境高级编程》,这本书不错的,被誉为unix环境下编程的圣经。

  你要看泛型编程的话,可以看《C++ Templates》,要C++各种技巧的话,它有本书叫《C++设计性思维》

  你要是想去看源码的话,linux的话,它有一本《linux内核设计原理与实现》,还有一本叫做《深度理解linux内核》,这两本都挺不错的。

  讲设计的话,《设计模式GOF》,讲什么重构啊,还有像DDD领域驱动设计啊,讲一些类似哲理性的《人月神话》嘛。

  我还有一个可能比较偏的观念,我觉得学点汇编真的挺好的。你学完汇编很多东西你就明白了,就知道它的原理,就是说我怎么操作这个计算器啊,我函数调用它到底是怎么回事啊,我把参数到栈里面去,把返回值通过EAX寄存器返回来,我jump跳转过去,那你就明白我函数调用为什么会有开销,因为它有栈帧建立撤销,它有控制跳转,它要重新刷新缓存,你就知道我为什么要用inline了。你看了函数调用的那些汇编代码之后,你就会知道为什么我一个数组我传不过去,我只能够传那个数组第1个元素的指针+数组长度,这些东西你就都知道了。

   对我影响最大的一本技术书籍叫做《深入理解计算机系统》,这本书是卡内基梅隆大学计算机学院原来的那个院长写的,我真的觉得写得非常好,我把它看了很多很多遍,他讲了好多细节的东西,比如说像汇编、编译、链接、虚拟内存、线程、网络,这是很细节的。我觉得你要从很细节的地方,要很底层的地方要去理解这个系统,然后你才能够再去讲架构。

  实际上架构跟coding是两个层次,一个致广远,一个尽精微,它确实是两个层次,我给你举个例子,比如说你是一个省长,你要来规划你们这个园区,你不可能说我这栋楼到底该怎么建,这栋楼到底该怎么设计,这是很细节的问题,你要让下面人做,你可能是想我在哪个地方圈块地对不对?就是说它不是一个层面的一个问题,包括你看地图也是,你首先你可能把它缩小缩小缩小,你看到的是每个省对不对?然后你再把它放大。我讲的是一个层次的问题,你首先要解决基本的一些问题,你要把基本功练得很好,然后你才会有能力去解决全局的问题,去讲它架构设计的问题,架构问题讲来讲去其实很简单,比那些什么数据结构简单多了,他并没有什么复杂的。

  听别人都是说,淘宝啊,高并发啊,什么几十亿级啊,其实有什么嘛,它前面不都是很多手机连过来,然后加一个什么域名解析,找到它对应的服务器,服务器前面拿一个LVS那个负载均衡,然后一过去之后NGX7层负载均衡,访问不同的一个页面,把url一解析打到下面后面的微服务上面去,微服务后面又是一个分布式的,然后再来一个分布式的一致性数据库,所有的技术问题都交给分布式数据库去解决。那么服务怎么治理,然后加监控,然后我们就要做配置更新啊,它是固定的框架。你去看微信也是这么做的。他那些什么吹破天的东西,并没有什么特别的,他每个服务器实例的QPS也就那样。