图灵程序设计丛书:程序是怎样跑起来的

图灵程序设计丛书:程序是怎样跑起来的 pdf epub mobi txt 电子书 下载 2025

[日] 矢泽久雄 著,李逢俊 译,[日] 日经Software 校
图书标签:
  • 计算机原理
  • 程序设计
  • 底层原理
  • 编译原理
  • 操作系统
  • 汇编语言
  • 计算机科学
  • 图灵
  • 技术入门
  • 经典教材
想要找书就要到 静流书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 人民邮电出版社
ISBN:9787115385130
版次:1
商品编码:11676683
包装:平装
丛书名: 图灵程序设计丛书
开本:32开
出版时间:2015-04-01
用纸:胶版纸
页数:259
字数:204000
正文语种:中文

具体描述

编辑推荐

  日文版重印41次!
  “计算机组成原理”图解趣味版
  蹲马桶就能看懂的编程基础知识
  如何向小学生讲解CPU和二进制?
  如何向中学生讲解内存和磁盘?
  如何向女高中生讲解操作系统的原理?
  如何向老奶奶说明显示器和电视的不同?
  如果你完全没有思路,就应该读一读这本书。
  以图配文,深入讲解编程基础知识
  语言通俗,即使是文科生也能看得懂
  特设“如果是你,你会怎么做?”专栏,生动有趣

内容简介

  《图灵程序设计丛书:程序是怎样跑起来的》一书从计算机的内部结构开始讲起,以图配文的形式详细讲解了二进制、内存、数据压缩、源文件和可执行文件、操作系统和应用程序的关系、汇编语言、硬件控制方法等内容,目的是让读者了解从用户双击程序图标到程序开始运行之间到底发生了什么。同时专设了“如果是你,你会怎样介绍?”专栏,以小学生、老奶奶为对象讲解程序的运行原理,颇为有趣。《图灵程序设计丛书:程序是怎样跑起来的》图文并茂,通俗易懂,非常适合计算机爱好者及相关从业人员阅读。

作者简介

   矢泽久雄,YAZAWA股份有限公司董事长兼总经理。GrapeCity信息技术集团顾问。电脑作家之友会会长。
  曾在某大型电子公司从事过电脑生产,在SoftwareHouse做过程序员,现主要从事软件包的开发工作。工作之余笔耕不缀,从电路到编程语言均有涉及。代表作有《计算机是怎样跑起来的》《使用C语言学习程序设计的基础》《征服C++类和继承》等。自称软件艺人。
  
  李逢俊,北京易网联信信息技术有限公司CEO。
  哈尔滨工业大学硕士毕业后在日工作8年,曾在日本知名游戏公司担任移动互联网部门负责人,拥有丰富的移动游戏开发及运营经验。2011年回国创业,创建易网联信团队,致力于精品手机游戏的开发及运营。

内页插图

目录

第1章 对程序员来说CPU是什么
1.1 CPU的内部结构解析
1.2 CPU是寄存器的集合体
1.3 决定程序流程的程序计数器
1.4 条件分支和循环机制
1.5 函数的调用机制
1.6 通过地址和索引实现数组
1.7 CPU的处理其实很简单

第2章 数据是用二进制数表示的
2.1 用二进制数表示计算机信息的原因
2.2 什么是二进制数
2.3 移位运算和乘除运算的关系
2.4 便于计算机处理的“补数”
2.5 逻辑右移和算术右移的区别
2.6 掌握逻辑运算的窍门
COLUMN如果是你,你会怎样介绍?--向小学生讲解CPU和二进制

第3章 计算机进行小数运算时出错的原因
3.1 将0.1 累加100次也得不到10
3.2 用二进制数表示小数
3.3 计算机运算出错的原因
3.4 什么是浮点数
3.5 正则表达式和EXCESS系统
3.6 在实际的程序中进行确认
3.7 如何避免计算机计算出错
3.8 二进制数和十六进制数

第4章 熟练使用有棱有角的内存
4.1 内存的物理机制很简单
4.2 内存的逻辑模型是楼房
4.3 简单的指针
4.4 数组是高效使用内存的基础
4.5 栈、队列以及环形缓冲区
4.6 链表使元素的追加和删除更容易
4.7 二叉查找树使数据搜索更有效

第5章 内存和磁盘的亲密关系
5.1 不读入内存就法运行
5.2 磁盘缓存加快了磁盘访问速度
5.3 虚拟内存把磁盘作为部分内存来使用
5.4 节约内存的编程方法
5.5 磁盘的物理结构

第6章 亲自尝试压缩数据
6.1 文件以字节为单位保存
6.2 RLE算法的机制
6.3 RLE算法的缺点
6.4 通过莫尔斯编码来看哈夫曼算法的基础
6.5 用二叉树实现哈夫曼编码
6.6 哈夫曼算法能够大幅提升压缩比率
6.7 可逆压缩和非可逆压缩
COLUMN如果是你,你会怎样介绍?--向沉迷游戏的中学生讲解内存和磁盘

第7章 程序是在何种环境中运行的
7.1 运行环境=操作系统+硬件
7.2 Windows克服了CPU以外的硬件差异
7.3 不同操作系统的API不同
7.4 FreeBSDPort帮你轻松使用源代码
7.5 利用虚拟机获得其他操作系统环境
7.6 提供相同运行环境的Java虚拟机
7.7 BIOS和引导

第8章 从源文件到可执行文件
8.1 计算机只能运行本地代码
8.2 本地代码的内容
8.3 编译器负责转换源代码
8.4 仅靠编译是法得到可执行文件的
8.5 启动及库文件
8.6 DLL文件及导入库
8.7 可执行文件运行时的必要条件
8.8 程序加载时会生成栈和堆
8.9 有点难度的Q&A;

第9章 操作系统和应用的关系
9.1 操作系统功能的历史
9.2 要意识到操作系统的存在
9.3 系统调用和高级编程语言的移植性
9.4 操作系统和高级编程语言使硬件抽象化
9.5 Windows操作系统的特征
COLUMN如果是你,你会怎样介绍?--向超喜欢手机的女高中生讲解操作系统的作用

第10章 通过汇编语言了解程序的实际构成
10.1 汇编语言和本地代码是一一对应的
10.2 通过编译器输出汇编语言的源代码
10.3 不会转换成本地代码的伪指令
10.4 汇编语言语法是“操作码+操作数”
10.5 最常用的mov指令
10.6 对栈进行push和pop
10.7 函数调用机制
10.8 函数内部的处理
10.9 始终确保全局变量用的内存空间
10.1 0临时确保局部变量用的内存空间
10.1 1循环处理的实现方法
10.1 2条件分支的实现方法
10.1 3了解程序运行方式的必要性

第11章 硬件控制方法
11.1 应用和硬件关?
11.2 支撑硬件输入输出的IN指令和OUT指令
11.3 编写测试用的输入输出程序
11.4 外围设备的中断请求
11.5 用中断来实现实时处理
11.6 DMA可以实现短时间内传送大量数据
11.7 文字及图片的显示机制
COLUMN如果是你,你会怎样介绍?--向邻居老奶奶说明显示器和电视机的不同

第12章 让计算机“思考”
12.1 作为“工具”的程序和为了“思考”的程序
12.2 用程序来表示人类的思考方式
12.3 用程序来表示人类的思考习惯
12.4 程序生成随机数的方法
12.5 活用记忆功能以达到更接近人类的判断
12.6 用程序来表示人类的思考方式
COLUMN如果是你,你会怎样介绍?--向常光临的酒馆老板讲解计算机的思考机制
附录让我们开始C语言之旅
C语言的特点
变量和函数
数据类型
标准函数库
函数调用
局部变量和全局变量
数组和循环
其他语法结构

前言/序言

  大家还记得自己初次接触计算机时的情形吗?想必多数读者使用的都是Windows系统,应该也有不少读者使用VisualStudio和Java等集成开发环境(IDE,Integrated Development Environment,即集成了编程所需的各种工具的开发软件)开发过程序。Windows的图形化操作界面,大大提高了计算机操作的便利性,而利用集成开发环境开发程序,就像用绘图软件画图一样简单。由此可见,这是一个便利的时代。
  然而,现实却不容乐观,我们在享受这些方便的同时也付出了代价。虽然拥有一定的编程能力,却无法进一步提高自身技能;知识应用能力的不足导致无法编写源程序。越来越多的程序员正为这些问题而烦恼。个中原因在于,大家不了解程序运行的根本机制。
  “双击程序图标,程序开始运行”,作为一名程序员,对程序的了解仅仅停留在这一表层是不行的。我们还应该了解更深层的机制:加载到内存中的机器语言程序,由CPU进行解析和运行,进而计算机系统整体的控制和数据运算也开始运行。了解了程序的运行机制后,就能找到编写源程序的方法。
  本书以通俗易懂的方式来解析程序的运行机制,适合想要学习编程的读者,迫切希望提升技能的初级程序员,以及对计算机较为熟悉的中级用户阅读。为了便于说明,书中涉及了不少计算机硬件知识,不过本书的主题依然是编程,也就是软件。
  《日经Software》杂志上连载过名为“程序是怎样跑起来的”的文章,而本书就是在整合以上内容的基础上创作的。2001年10月,本书第1版出版后,受到了众多读者的欢迎,我们也收到了很多反馈信息。
  大部分读者表示“了解了CPU的寄存器和内存的运行方式,也知道了自己编写的程序的运行机制”,收获颇丰。不过也有编程经验较少的读者表示“内容有点难”。
  值此第2版出版之际,我再次核对了全文,大幅增加了寄存器和栈等内容的相关说明,并作了详细的注释。实例程序的代码也由原来的VisualBASIC语言,换成了更便于说明程序运行机制的C语言,并在书的末尾添加了一个辅助章节,对C语言进行了简单的介绍。通过这样的改动,相信即便是觉得第1版有点难的读者,也会感到满意。
  无论任何事情,了解其本质非常重要。只有了解了本质才能提高利用效率。这样一来,即使有新技术出现,也能很容易地理解并掌握。接下来,就让我们一起在本书中探索程序的奥秘,寻求程序的本质吧。
  矢沢久雄
《软件构建艺术:从代码到产品的飞跃》 一、 揭示软件的本质:理解冰山下的运行机制 你是否曾疑惑,你手中的智能手机、每天使用的应用程序、甚至驱动庞大互联网的复杂系统,它们究竟是如何从一堆看似杂乱无章的代码,最终变成能够触及我们生活方方面面的强大工具?《软件构建艺术:从代码到产品的飞跃》这本书,将带你深入探索这个问题的核心,揭示软件的本质,理解冰山下的运行机制。 我们习惯于享受软件带来的便利,却很少去思考其背后的构造。这本书并非单纯的编程语言教程,也不是关于算法的炫技展示。它更侧重于软件的“生命周期”和“架构思维”,从宏观层面剖析软件是如何从一个抽象的概念,一步步落地,最终成为一个稳定、高效、可维护的产品的。 我们将从最基础的概念开始,探讨“程序”的定义,它不仅仅是一系列指令的集合,更是解决问题的逻辑载体。我们会深入理解“代码”作为人类与机器沟通的桥梁,其背后蕴含的严谨性和艺术性。你将看到,每一行代码都凝聚着开发者的思考和设计,它们如何被组织、被调度,最终共同协作完成复杂的任务。 书中最引人入胜的部分,便是对软件“运行”过程的细致描绘。我们将超越“输入-处理-输出”的简单模型,去理解程序在计算机内部的真实旅程。这包括: 编译与解释的魔术: 探讨高级语言如何被转化为机器能够理解的低级语言,以及编译型和解释型语言各自的优劣,理解代码从“文本”到“可执行文件”的演变过程。 内存的奥秘: 深入剖析程序运行时所占据的内存空间,理解栈(Stack)、堆(Heap)等概念,以及内存分配、回收的机制,这是程序能够高效运转的基础。 进程与线程的协作: 学习如何将庞大的任务分解成更小的单元,并让它们并行或并发执行,理解进程、线程的区别与联系,以及它们在多任务环境下的协调工作。 操作系统作为舞台: 认识到操作系统在软件运行中的关键作用,它是资源的调度者,是程序的管理者,理解操作系统如何为软件提供运行环境,并处理硬件交互。 数据在流动: 追踪程序运行时数据的产生、传输、存储和销毁,理解数据结构如何影响程序的效率,以及各种数据传输协议在网络通信中的作用。 通过这些深入浅出的讲解,你将能够建立起对软件运行原理的全面认知,摆脱“黑箱”的困惑,真正理解软件是如何“跑起来”的。 二、 构建坚实的基石:软件设计的艺术与原则 仅仅理解软件如何运行是远远不够的,一个优秀的产品背后,必然有着精妙的软件设计。这本书将引导你进入软件设计的殿堂,学习如何构建出既能满足当前需求,又具备未来扩展性的高质量软件。 我们将深入探讨以下软件设计的重要方面: 架构思维的培养: 学习如何从整体上规划软件的结构,理解不同的架构模式(如微服务、单体应用、事件驱动架构等)的适用场景与权衡。我们将分析优秀架构的特点:模块化、低耦合、高内聚,以及它们如何保证软件的可维护性和可扩展性。 SOLID 原则的实践: 深入理解面向对象设计中的五大基本原则(单一职责原则、开放封闭原则、里氏替换原则、接口隔离原则、依赖倒置原则),并学习如何在实际编程中灵活运用它们,避免设计陷阱,写出更易于理解和修改的代码。 设计模式的智慧: 介绍并解析一系列经典的设计模式,如工厂模式、单例模式、策略模式、观察者模式等。这些模式是前人智慧的结晶,能够帮助我们解决软件开发中反复出现的设计问题,提高代码的可重用性和灵活性。本书将通过丰富的案例,展示设计模式如何在实践中发挥作用,避免“生搬硬套”。 数据结构与算法的基石: 虽然本书不是纯粹的算法书籍,但会强调数据结构和算法在软件设计中的重要性。我们将探讨不同数据结构(如链表、树、图、哈希表等)的特性和适用场景,以及常用算法(如排序、查找、图遍历等)如何影响程序的性能。理解这些基础知识,是做出高效设计的前提。 接口设计的艺术: 强调清晰、简洁、易于使用的接口设计,无论是模块间的接口,还是对外提供的API。我们将讨论接口的契约精神,以及如何通过良好的接口设计,降低模块间的依赖,提高系统的灵活性。 通过对这些设计理念和实践的深入学习,你将能够从“写出能运行的代码”晋升到“写出高质量、易于维护、易于扩展的代码”。这本书的目标是培养你的“工程思维”,让你在面对复杂问题时,能够有条不紊地进行设计和实现。 三、 迈向产品化:软件工程的实践与管理 软件的生命力在于其能够转化为一个真正可用的产品,并持续地服务于用户。《软件构建艺术:从代码到产品的飞跃》将带领你了解软件从开发到发布的完整流程,以及在这个过程中所涉及的工程实践和管理方法。 我们将触及以下关键领域: 开发流程的演进: 介绍敏捷开发、Scrum、Kanban等现代软件开发方法论,理解它们如何提高团队协作效率,缩短开发周期,快速响应市场变化。 版本控制与协作: 深入理解 Git 等版本控制系统的强大功能,学习如何进行代码的提交、分支管理、合并,以及团队间的有效协作,确保代码的安全和一致性。 自动化构建与测试: 探讨持续集成(CI)和持续交付(CD)的理念,了解如何利用自动化工具(如 Jenkins、Docker 等)来构建、测试和部署软件,大幅提高开发效率和产品质量。我们将重点讲解单元测试、集成测试、端到端测试的重要性,以及如何编写有效的测试用例。 代码质量的保障: 强调代码审查、静态代码分析工具的应用,以及如何建立编码规范,确保代码的可读性、可维护性和健壮性。 部署与运维: 了解软件发布到生产环境的常见策略,如蓝绿部署、金丝雀发布等,并初步接触软件监控、日志分析等运维知识,理解如何保障软件在生产环境的稳定运行。 项目管理的基础: 简要介绍软件项目管理中的关键要素,如需求管理、任务分解、进度跟踪、风险管理等,理解一个成功的软件项目是如何被规划、执行和交付的。 这本书的目标,是将你从一个仅仅会编写代码的“开发者”,蜕变成一个能够独立构建、交付并维护高质量软件产品的“软件工程师”。它为你提供的是一套完整的“工程思维”和“实践工具箱”,让你在软件开发的道路上,能够走得更远,飞得更高。 《软件构建艺术:从代码到产品的飞跃》,不仅仅是一本书,更是一次深入的探索之旅,一次思维的升华。它将为你打开一扇通往软件世界深处的大门,让你真正理解软件的灵魂,掌握构建卓越软件的艺术。无论你是初入编程殿堂的学生,还是希望提升自身技能的在职开发者,这本书都将是你不可或缺的良师益友。

用户评价

评分

说实话,这本书的内容对我来说,就像是打开了一个新的维度。我一直认为,程序员的工作就是编写代码,然后让它跑起来,但这本书让我意识到,这只是冰山一角。它深入剖析了从我们输入的源代码,到最终在CPU上执行的机器码之间,经历的层层转化和转换。编译器的作用、链接器的原理、操作系统的调度机制,这些我之前模糊的概念,在这本书里得到了清晰的解答。我印象特别深刻的是关于进程和线程的讲解,让我明白了为什么程序有时候会卡顿,为什么多线程编程需要注意同步问题。这本书就像是一本“计算机的解剖学”,让我能够透彻地了解计算机的内部结构和工作原理,不再是对那些“黑盒子”一无所知。我特别欣赏作者在讲解过程中,不断引用实际的例子和图示,这使得原本可能枯燥的技术内容变得易于理解和消化。我感觉自己不再是那个只能在代码层面工作的“码农”,而是开始具备了一种更宏观的视角,能够理解程序在整个计算机系统中的位置和作用。

评分

这本书,我拿到手之后,第一感觉就是沉甸甸的,厚实的纸张,精美的印刷,立刻就觉得物超所值。我之前接触过一些编程相关的书籍,但总觉得隔靴搔痒,停留在“是什么”的层面,而这本书,从名字就能看出它想深入到“为什么”和“怎么样”。我特别期待它能为我揭示那些隐藏在代码之下的秘密,比如一个简单的`print("Hello, world!")`在底层到底经历了什么?CPU又是如何一步步执行我的指令的?内存管理是怎么回事?操作系统扮演着怎样的角色?我希望这本书能用通俗易懂的语言,把这些复杂的概念一一剖析清楚,让我能够真正理解程序运行的本质,而不是仅仅停留在API的调用上。我之前在网上看到过一些关于操作系统原理的讲解,但总觉得碎片化,不成体系,这本书的出现,正好填补了我在这方面的知识空白。我希望它能让我从一个“调参工”升级为一个真正理解“机器语言”的开发者,能够写出更高效、更健壮的代码。而且,这本书的出版社是大名鼎鼎的图灵,他们家的书向来以质量著称,这一点也让我对这本书充满了信心。我迫不及待地想翻开它,去探索程序运行的奇妙世界。

评分

拿到这本书的当下,我并没有立刻去翻阅,而是把它放在书架上,让它静静地在那里。我知道,这是一个需要静下心来,慢慢品味的宝藏。我曾经尝试过阅读一些关于底层技术的书籍,但往往因为过于理论化而感到枯燥乏味,最终不了了之。而这本书,我之所以对其充满期待,是因为我从它的名字和简介中,感受到了一种“接地气”的力量。我希望它能用一种更贴近实际应用的方式,来讲解那些看似高深的计算机原理。我想知道,当我在IDE里敲下代码的时候,它到底经历了怎样的“生死劫难”,才能最终变成运行在CPU上的指令?操作系统是如何管理这些“劫难”的,又是如何协调各个程序之间的“争斗”的?这本书,就像是一本“程序员的百科全书”,它能让我对计算机世界有一个更全面、更深入的了解,不仅仅停留在编程语言的层面,更能触及到硬件、操作系统、编译原理等核心领域。我期待它能带我进入一个全新的知识领域,让我对计算机有一个更加立体和深刻的认识。

评分

这本书的价值,在我看来,远不止于它所包含的知识本身,更在于它提供的一种思考方式。它教会我如何去“解构”一个看似复杂的问题,如何一层层地剥离表象,去探寻事物最本质的原理。我之前在学习某些框架或者库的时候,总是被它的API牵着鼻子走,不知道背后的原理是什么,用起来总感觉心里没底。但读了这本书之后,我发现自己能够更主动地去思考,去探究这些工具为什么会这样设计,它们在底层是如何工作的。我开始能够将自己编写的代码,置于整个计算机系统的运行流程中去审视,思考它的效率,它的资源占用,以及可能存在的瓶颈。这种由内而外的理解,让我在编程实践中受益匪浅。我感觉自己不再是孤立地写代码,而是能够更深入地理解代码与硬件、与操作系统之间的联系,这让我对自己的职业充满了新的认识和期待。而且,这本书的逻辑结构非常严谨,层层递进,让我能够循序渐进地掌握知识,不会感到突兀或混乱。

评分

刚开始接触这本书的时候,我其实是带着点儿忐忑的。毕竟“程序是怎样跑起来的”这个主题听起来就相当硬核,而且我本身也不是计算机科班出身,担心会看不懂。但当我翻开第一页,看到作者那种娓娓道来的叙述方式,我的疑虑立刻烟消云散了。他没有上来就抛出一大堆晦涩难懂的术语,而是从最基础的机器码开始,一步一步地引导读者进入计算机的世界。我特别喜欢他解释CPU如何执行指令的那部分,感觉就像是给CPU装上了一个可视化界面,让我能清晰地看到它内部的运作流程。还有关于内存的讲解,也让我对数据的存储和访问有了更深刻的理解。我之前一直觉得内存就是个大仓库,东西放进去拿出来就行了,但这本书让我了解到,内存的分配、回收,以及缓存机制,都对程序的性能有着至关重要的影响。这本书的优点在于,它能够将这些抽象的概念具象化,并且用非常生动有趣的方式呈现出来,让我觉得学习过程一点也不枯燥。我感觉自己好像在跟着一位经验丰富的向导,一起探索计算机的奥秘,每一步都充满了惊喜。

评分

还可以吧,值得推荐的一本书

评分

GOODGOODGOODGOODGOODGOODGOODGOODGOODGOODGOODGOODGOODGOOD

评分

非常好的一件宝贝,非常好的货物

评分

非常脏,好失望,里面更有页粘在一起

评分

618买的,但这书不参与满减优惠。

评分

朋友推荐的书籍,职业需要,多看几本书总是没错的!快递很快!

评分

写了几年程序了,以前也看过日本写的编程书籍,发现小日本的思维还是有值得借鉴的地方,比那种看起来就很沉重的教科书要轻松多了

评分

折扣买的,价格挺合适,慢慢研究

评分

书很好,很容易能看懂,应该够十个字了吧?够不够?不够?我再加一点,现在肯定够了,就这样吧

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有