我们这代程序员的幸运与不幸
幸运的是:我们可以不关注计算机的底层运行的原理,不需要因为很热爱计算机技术,通过一些学习高级语言编程也可以成为一个不错的程序员,拿到相对体面的薪水。
不幸的是:一个程序员对计算机技术没有热爱,没有抛开浮躁的心态去学习计算机底层知识,最终是无法成为一个更好的计算机工程师。工作时间越长,越是浮躁和焦虑,或是麻木。我们并没有真正的了解计算机。
计算机技术正在以惊人的速度发展,产生了许多新的技术。如果我们没有真正了解计算机,就会在新的技术中迷失自我。面对层出不穷的新技术,抓不住新技术的根本,只能学习到皮毛,永远都只能做一个代码的搬运工,无法获得成长、成就感和更好的回报。这是一个恶性循环,最后要么麻木,要么离开这一行,不可为不幸。
怎么去除这种不幸
现在开始抛开浮躁的心态,从计算机核心的基础重新开始学习。抓住技术的本质,方能应对层出不穷的新技术。
计算机技术发展了几十年,新的技术层出不穷,但是底层核心的技术几乎没有太多的变化。这本书从一定程度上画出了计算机核心技术知识范围参考,并做了一些简单易懂的讲解。无论是从零开始学习还是重新学习计算机基础知识,本书都是一个不错的选择。
《计算机是怎样跑起来的》内容简介
第一章 计算机的三大原则
- 计算机是执行输入、运算和输出的机器
- 程序是指令和数据的组合
- 计算机的处理方式有时与人们的思维习惯不同
第二章 试着制造一台计算机吧
作者从制造(组装)一台最简单原始的计算机的角度出发,讲解了硬件层面计算机的核心硬件,以及这些硬件的作用和相互之间的协作。
原始计算机核心硬件:CPU、内存、I/O、时钟发生器、总线和布线的主板。
第三章 体验一次手工汇编
基于上一章学习到的硬件基础上,进一步地学习计算机另一个核心:软件(程序)。介绍了Z80 CPU的核心寄存器和指令。并且通过分析实现一个简单功能的程序,介绍了计算机是如何运行二进制程序。同时介绍了汇编语言和机器语言的对应关系。
第四章 程序像河水一样流动
相对于上一章的机器语言和汇编语言,这一章从更上一个层次的抽象的角度,讲解结构化程序的三种核心流程:顺序、分支和循环。并且介绍了如何使用流程图表达程序的运行流程。还提及中断处理和事件驱动。
对于有一定高级语言编程基础的人,这一章会显得格外的亲切。
第五章 与算法成为好朋友的七个要点
从逻辑上有个经典的说法,程序=算法+数据结构。这一章和下一张就是分别讲解了作者对算法和数据结构的理解和学习建议。
本章从算法定义中几个关键词(明确、有限、步骤集合)讲解了算法的核心。以及学习和思考算法的一些建议。
第六章 与数据结构成为好朋友的七个要点
介绍了什么是数据结构。最常用的基本数据结构(数组、结构体、栈、队列、列表和二叉树)的讲解。
第七章 成为会使用面向对象编程的程序员吧
面向对象编程是一种编程思想,存在很多的知识和概念。显然谁也无法使用短短一个章节把它讲清楚。而且思想这种东西本身是很难讲清楚的,只能介绍一些核心的概念,然后通过读者自己不断的吸收好的观点,并且加以实践;才能有更清晰的认识。
作者通过介绍面向对象的一些核心概念,加上一些观点;描述了作者在那个时期对面向对象编程的理解。仅供参考。
第八章 一用就会的数据库
介绍了什么是数据库。数据文件、DBMS和数据库应用程序的关系。关系型数据库的一些基础概念,提及了SQL和数据库事务。
第九章 通过七个简单的实验理解TCP/IP 网络
简单地介绍了MAC地址、IP地址、DHCP协议、路由器作用、DNS和ARP协议。使得读者对计算机网络有一个基础的认识。
第十章 试着加密数据吧
介绍了数据加密的本质,最简单的加密,对称加密、非对称加密,以及数字签名的基本概念。
第十一章 XML究竟是什么
介绍了什么是标记语言,XML的相关基础知识,以及操作XML的一些组件。
在那个时代还没有html5,其他传输的数据格式还不流行,所以显得XML特别重要和前途光明。现在XML不是那么耀眼的数据格式了,但是还是比较的常用;还是具备不错的学习价值。
第十二章 SE负责监管计算机系统的构建
原谅我从事编码这么多年,竟然不为SE这个东西;可能是因为现在不流行这种称呼了。SE可能变成了SM、PO和架构师。不管称呼怎么变,要做的事情还是那么些。
从这一章节至少能够了解到:传统软件工程一些基础,并且对信息化的一些理解。
针对《计算机是怎样跑起来的》的个人观点
因为特殊原因,本书我读了三遍。在第一遍的时候,我的感觉是:作为一个已入行的程序员来说,第二、三章还比较有意思,其他章节讲的太浅,并且有些知识已经过时。 这恰恰说明了像我这样的程序员对计算机底层运行机制知识的欠缺。
另外我觉得能从一本书中学习到一些知识,说明这本书就还不错。而且这本书的定位本身就不是要把计算机运行原理、汇编、结构化程序设计、面向对象设计、UML、算法、数据结构、数据库、计算机网络、加密、XML和软件工程这些知识讲透。
本书只是一个学习计算机相关技术的一个简要的引子(或者目录)。有了这些引子,会使得我们更深入的学习有更加明确的方向,并且做好了一些基础概念的铺垫。
本书给我感触最深是:作者竟然能把技术知识表达的如此简单易懂。这是一种强大的能力。深厚的技术功底能够影响个人产出能力,如果还能把自己技术能力使用语言或者文字通俗易懂地表达分享给其他人,将会是更强大的力量。 学习到技术知识的同时,学习到一些表达能力,这是本书给我送上最好的礼物。