深入理解计算机系统(序章)------谈程序员为什么要懂底层计算机结构

万丈高楼平地起,计算机系统就像程序员金字塔的地基。理解了计算机系统的构造原理,在写程序的道路上才能越走越远。道理LZ很早就懂了,可是一直没下定决心好好钻研,或许是觉得日常工作中根本用不到这些,又或许是每次拿起书看到那些复杂的底层架构,看到存储器,寄存器,CPU,总线等等这些概念就头大。总之,由于各种各样的原因,对这块的知识一直没有认真花时间去钻研。那么你可能会问,那你写这篇博客的题目不就是准备学习这方面的知识吗?是的,LZ 准备下定决心钻研了,至于原因如下:

  ①、经常用一些不知其所以然的技术,会感到不安

    大家可以看看LZ前面写的博客,很多都是对框架的用法进行总结,至于为什么这个框架要这么实现等等而涉及的很少。原因很简单,LZ 研究框架的源码很吃力。因为源码的实现往往涉及到多方面的的知识,比如设计模式,比如JDK的一些高级特性等等。LZ 是想做一个有梦想的咸鱼,但是每次看到很多不懂的东西,就深深的体会到现实与理想落差的痛苦,所以LZ下定决心要改变这种无力感。

  ②、在这个数据爆炸的年代,很多系统对于项目性能的优化有很高的要求。那么如何调优成为了程序员不可避免的问题,我们知道 Java 是运行在 JVM 上的,程序的调优那就需要对 JVM 有一定的了解。LZ 本来想直接研究 JVM 的,书都找好了------《深入理解Java虚拟机:JVM高级特性与最佳实践》。但是 LZ 发现很难消化,理解起来特别困难,于是间接的将 LZ 推上了研究计算机系统的道路。

  ③、再就是如果你对计算机系统的构造不太了解,可能你平时写的程序都是错误的。

    比如我们一直以为两个正数的和或者积一定为正,但是用二进制补码表示的正数和或者积却不一定;程序员和编译器不能用(x-y<0)来代替(x<y),因为前者会产生溢出。甚至也不能用表达式(-y<-x)来代替,因为在二进制补码表示中负数和正数的范围是不一致的。算术溢出是造成程序错误和安全漏洞的一个常见根源。

  ④、第四个原因,这个也是最直接的原因。不知道大家是否了解大的互联网公司面试,比如阿里巴巴,腾讯这样的公司。他们面试对于基础的东西要求的很严格,你对这些东西的了解程度将直接决定你的面试成败。

    比如:讲一下JVM的结构,TCP/IP的三次握手、四次挥手,淘宝用户的数据怎么满足高并发?等等。像这些问题,如果我们不懂计算机底层知识肯定是不能过关的。

  ⑤、树立正确的计算机世界观

    培养一种心态,即计算机的一切是可以理解的,没有超出人类的智慧。即使有些问题你现阶段没有明白,但这些问题都是可以理解的,只是你时间不够,所以先放一下,等有时间再学习它们。这种心态可以防止你滑入无助的陷阱。 有时候你的潜意识会愚弄你,把很难做成的事情当成无法做成的事情。就像《肖申克的救赎》中表现的那样,一把很小的锤子也是可以砸开监狱的墙壁逃出来的。而Red第一次看到那个锤子时,他就认定了Andy肯定逃不出来了。而实际上Andy却用19年的时间确实把墙给凿开了,虽然其间各种艰辛,但是结局却很美好。

    计算机科学与其他学科相比,好的地方在于,它是人创造的,它的原理没有超出我们人类的大脑的理解范围,它为什么这样设计,每一个做法都是有理由的。而那些发明它的人,有许多现在还活着,比如晶体管的发明者,硬盘的发明者,显示器、鼠标、键盘等的发明者,有些发明者虽然已经过世,但是有丰富详尽的记录,他不是一门有可能超出人类理解范围的科学,所以我们不要担心不能理解它。

    其次 我们是程序员,不是造计算机的,我们也不需要对计算机的每一个部件都了解,我们只需要了解我们所写的程序在系统中的执行过程,以及计算机系统的构造对我们的程序代码有什么限制,有什么影响即可。

  好了,说了这么多,其实是想告诉大家,做一只咸鱼很简单。但是LZ是想做一只有梦想的咸鱼。如果和LZ有同样想法的人,又一直下不定决心去学习的人,我们可以一起,互相监督,互相学习交流。


《深入理解计算机系统》

  如题,LZ 学习是以《深入理解计算机系统》(Computer Systems A Programmer's Perspective)这本书为基础,我们先来介绍一下作者:Randal E.Bryant:1981年在麻省理工学院获计算机科学博士学位,现任美国卡内基·梅隆大学计算机学院院长,是ACM和IEEE的双会士。

  那么为什么要选择这本书呢?LZ也在网上找了很多这方面的教材,但是都不是太满意,不过当LZ看到这本书的时候却眼前一亮,从这本书的英文名字就可以看出是从程序员视角全面剖析的计算机系统,使读者深刻理解程序的行为,将所有计算机系统的相关知识融会贯通。注意是以程序员的角度来分析的,那么作为一个程序员,相对于市面上关于计算机系统的书,这个理解起来应该不会很困难。

  其次这本书是以案例驱动为讲解顺序的。第一章就给我们详细的讲解了学习程序的万能入门级程序“Hello World” 在计算机是如何运行的。说实话,LZ 接触了 C 语言,C#,Java,PHP等,也都写过每种语言的 “Hello World”,但是到底在计算机中是怎么运行的,LZ 是完全不了解的。

  LZ 后面打算根据自己的学习进度不定时更新《深入理解计算机系统》学习心得。

  软件开发产业正在发生变化,它将不再需要更多的程序员,它需要的是高级匠师,这句话与大家共勉。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容