简介
《程序是怎样跑起来的》一书从计算机的内部结构开始讲起,以图配文的形式详细讲解了二进制、内存、数据压缩、源文件和可执行文件、操作系统和应用程序的关系、汇编语言、硬件控制方法等内容,目的是让读者了解从用户双击程序图标到程序开始运行之间到底发生了什么。同时专设了“如果是你,你会怎样介绍?”专栏,以小学生、老奶奶为对象讲解程序的运行原理,颇为有趣。本书图文并茂,通俗易懂,非常适合计算机爱好者及相关从业人员阅读。
《计算机是怎样跑起来的》倡导在计算机迅速发展、技术不断革新的今 天,回归到计算机的基础知识上。通过探究计算机的本质,提升工程师对计算机的兴趣,在面对复杂的**新技术时,能够迅速掌握其要点并灵活运用。 《计算机是怎样跑起来的》以图配文,以计算机的三大原则为开端、相继介绍了计算机的结构、手工汇编、程序流程、算法、数据结构、面向对象编程、数据库、TCP/IP 网络、数据加密、XML、计算机系统开发以及SE 的相关知识。本书适合计算机爱好者和相关从业人员阅读。 《计算机是怎样跑起来的》图文并茂,通俗易懂,非常适合计算机爱好者和相关从业人员阅读。
《网络是怎样连接的》以探索之旅的形式,从在浏览器中输入网址开始,一路追踪了到显示出网页的内容为止的整个过程,以图配文,讲解了网络的全貌,并重点介绍了实际的网络设备和软件是如何工作的。目的是帮助读者理解网络的本质意义,理解实际的设备和软件,进而熟练运用网络技术。同时,专设了“网络术语其实很简单”专栏,以对话的形式介绍了一些网络术语的词源,颇为生动有趣。
本书以图配文的形式,直观易懂地详细介绍了面向对象的全貌及其中包含的各项技术,包括面向对象编程、框架、设计模式、UML、建模、面向对象设计和敏捷开发等。对于各项技术是如何使用的(How),书中只进行最小限度的说明,而重点介绍这些技术究竟是什么样的(What)以及为什么需要这些技术(Why)。另外,书中设有“编程往事”专栏,介绍了作者年轻时的一些经历;还设有“对象的另一面”专栏,以与正文不同的视角讲解面向对象这一概念普及的背景和原因,通俗有趣。
部分摘录:
对计算机来说什么都是数字 计算机有计算机的处理方法,这是三大原则中的最后一点。计算机本身只不过是为我们处理特定工作的机器。如果计算机能自己干活的话,那么笔者一定会买几百台,让它们先替自己完成一整年的工作。但是,并没有这种会挣钱的计算机,计算机终究只是受人支配的工具。
迄今为止,使用计算机的目的就是为了提高手工作业的效率。例如,文字处理软件可以提高编写文档的效率;电子邮件可以提高传统邮件寄送的效率。总之,作为可以提高工作效率的工具,有些靠手工作业完成的业务可以直接交给计算机处理。但是也有很多手工作业无法直接由计算机处理。也就是说,在用计算机替代手工作业的过程中,要想顺应计算机的处理方法,有时就要违背人们的思维习惯。请诸位特别留心这一点。
用数字表示所有信息,这就是一个很具有代表性的计算机式的处理方法,这一点也正是和人类的思维习惯最不一样的地方。例如,人们会用“蓝色”“红色”之类的词语描述有关颜色的信息。可是换作计算机的话,就不得不用数字表示颜色信息。例如,用“0,0,255”表示蓝色,用“255,0,0”表示红色,用“255,0,255”表示由蓝色和红色混合而成的紫色。不光是颜色,计算机对文字的处理也是如此。计算机内部会先把文字转换成相应的数字再做处理,这样的数字叫作“字符编码”。总之计算机会把什么都用数字来表示。
熟悉计算机的人经常会说出一些令人费解的话,例如“在这里打开文件,获得文件句柄”“把用公钥加密后的文件用私钥解密”。那么,他们所说的“文件句柄”是什么呢? —— 是数字。“公钥”是什么呢?——是数字。“私钥”呢?——当然还是数字。无论计算机所处理的信息是什么形式,只要把它们都当成是数字就可以了。虽然这有些违背人们的思维习惯,但是处理数字对计算机来说却是非常简单的。
下面笔者就讲一件自己年轻时的糗事吧。事情发生在一次与老程序员探讨问题时,我问他:“用某某程序处理的某某数据,在计算机内部也是用数字表示的吧?”老程序员听后,吃惊得张开了嘴,回了一句:“这不是明摆着吗 !”
1.5 只要理解了三大原则,即使遇到难懂的最新技术,也能轻松应对 有关计算机三大原则的说明到此结束。只要理解了这三大原则,即使遇到难懂的最新技术,也能轻松应对。下面就给诸位看一个具体的例子。这里摘录了一段有关 .NET 技术的介绍,.NET 是微软公司率先提出的一种新技术。如果要正式地介绍 .NET 技术,就会像下面这样进行说明。
【有关 .NET 的说明之一】
微软公司率先提出了作为新一代互联网平台的 .NET 技术。作为 .NET 核心的 XML Web 服务使用通用技术 SOAP、XML,促使企业间的计算机协同工作。
真是不好理解的一段话啊。可是如果把 .NET 的核心技术对照着计算机三大原则再介绍一遍的话,就会像下面这样进行说明。
【有关 .NET 的说明之二】
计算机是执行程序的机器。程序是指令和数据的集合。为了使互联网上相互连接的计算机能通过程序协同工作,微软公司采用了 SOAP 以及 XML 规范。SOAP 是关于调用指令的规范,XML 则是定义数据格式的规范。
只要定义出了指令和数据的规范,装有符合规范的程序的计算机自然就可以相互协作了。所谓计算机的协同工作指的是,输入到一台计算机中的数据,可以通过互联网传送到与这台计算机相连的其他计算机上执行运算,运算所输出的结果再返回给这台计算机。像这样部署在其他计算机上能执行某种运算的程序就叫作 XML Web 服务。
这回怎么样?应该变得容易理解了吧?如果又想到了其他的问题,比如“为什么不得不遵循 SOAP 和 XML 的规范呢?”或者“实际看了看 SOAP 和 XML 的规范,才发现也很复杂。”那么就可以把答案归结为“因为那些都是适合计算机的处理方式”。
1.6 为了贴近人类,计算机在不断地进化 围绕着计算机的技术正在以狂奔般的速度不断进化,与其说是日新月异,倒不如说是“秒新分异”。虽然也许有人会觉得眼前的已经够用了,希望能停留在现有的技术水平上。但是计算机的进化是不会停止的,因为计算机还远远没有到达完善的地步。
计算机进化的目的只有一个——与人类更加相近。要想贴近人类,就必须从计算机的处理方式中摒弃不符合人们思维习惯的部分。请对照着计算机三大原则之一的“计算机有自己的处理方式”来记忆这个结论。
举例来说,键盘这种不好用的输入设备进化成了好用的鼠标。平面的 2D(二维)游戏进化成了立体的 3D(三维)游戏。无论是哪一种进化,都是为了使计算机的处理方式更加贴近人类。
这样发展下去的话,也许计算机进化的最终形态就是机器人了,有着与人类一样的外表,可以使用人类的语言。例如在 1985 年茨城县筑波市举办的筑波世博会上,就展示出了一台用 CCD 照相机识别乐谱,弹奏钢琴的机器人。也许有人会觉得:“数码音乐什么的用个人计算机不是也能完成吗?”但是这个发明的意义在于机器人能和人类做相同的事了。就在不久前,本田公司开发出的两足步行机器人也成为了热议的话题。也许又有人会觉得:“为什么非要特地用两只脚行走呢,装上轮子能动起来不也一样吗?”但是这个发明的意义还是在于机器人能和人类做相同的事了。有乐谱和钢琴就能演奏,人能走的道路或台阶它也能走,这样的机器人无疑才能更加方便地应用于人类社会。
若与十几年前相比,诸位身边的个人计算机也在逐渐贴近人类。20 世纪 80 年代中期盛行的个人计算机操作系统是 MS-DOS,其操作方法是靠在全黑的画面上敲入字符,把命令传给计算机。进入 90 年代后,MS-DOS 进化成了 Windows,用户可以在图形界面上通过鼠标的操作直观地下达命令(如图 1.3 所示)。开发出 Windows 的美国微软公司,正将目标锁定在用户体验(User Experience)上,旨在开发出超过现有 Windows、更加贴近人类的用户界面(计算机的操作方法)。Windows XP 和 Office XP 末尾的 XP,代表的就是 Experience(体验)。Windows 若能这样不断进化下去,早晚会有一天,面向个人计算机的语音输入和手写输入等技术将变得极为普及。