1. Hello,world 1.1. “Hello,world”是布赖恩·克尼汉和丹尼斯·里奇于1978年出版的经典著作《C程序设计语言》中的第一个编程项目 1.2. 贝尔实验室可以说是现代计算机科学界中的智库,地位好比巧克力界的好时巧克力 1.3. 计算机科学界的大量创新都起源于贝尔实验室 1.3.1. 激光、微波和Unix系统 1.4. 要了解计算机不能做什么,我们需要先了解计算机擅长什么,以及它的工作原理 1.5. 了解这些技术背后的知识是非常重要的,因为这能让你在使用电脑时预料到哪些问题会出现,它们如何出现、为何出现,以及在哪里出现 1.5.1. 实际上你就是在跟一个由人类编写的程序进行互动而已 1.5.2. 这个程序背后的人跟你一样,会思考,有感觉,有偏见,也有独特的个人背景 1.6. 技术沙文主义者都愿意相信,计算机在绝大多数工作上都能做得比人类好 1.6.1. 计算机的运行基于数学逻辑,因此他们相信这种逻辑也适用于线下的现实世界 2. 硬件 2.1. 计算机的硬件是物理实体 2.1.1. 指计算机的芯片、晶体管和电线等,这些东西构成了计算机的物理形态 2.1.2. 微处理器是主机里最关键的零件 2.2. 计算机内部没有意识,只有一些功能模块在同时运行着,那个场面静默而壮丽 2.3. 电脑可以由人类手工组装,而且确实就是由人的双手组装而成的 3. 软件 3.1. 软件则是在硬件上运行的任何东西 3.2. 本地运行 3.2.1. 程序在你电脑的硬件上运行 3.3. 云端运行 3.3.1. 程序在别人的电脑上运行 3.4. 现在的程序都是模块化的 3.4.1. 所谓模块化,就是说可由不同的程序员构建不同的模块,而且只要将模块正确地拼接上,它们就能正常运行 3.4.2. 计算机编程人员非常擅长分析任务,将任务拆解成非常多的小步骤,并且让计算机处理每一个小步骤 3.4.3. 如果能将许许多多像这样的小步骤组合在一起,聚沙成塔,你就能干成大事儿 3.5. 计算机编程和编写软件通常是一回事 3.5.1. 学习编程入门知识所需的数学知识,大概等同于小学四五年级的水平 3.5.2. 编程的入门水平进阶到中等水平,需要懂得线性代数、一点几何学和一点微积分的知识 3.6. 编程既是一门艺术,也是一门手艺 3.6.1. 若把编程当作手艺,你可以跟师傅做学徒,然后以编程谋生 3.6.2. 若把编程当作一门艺术,则既要有极好的手艺,还需要接受高等数学方面的训练 3.7. 机器语言能将符号转换成二进制,好让计算机能理解并执行计算 3.7.1. 这些符号是我们人类之间用以沟通的文字和数字 3.8. 这是一个人工系统,而人类所使用的机器语言并非二进制,而是一种“方言”,叫作汇编语言 3.8.1. 这种方言会将符号汇编成机器代码 3.8.2. 读写汇编语言都不是易事,只有极少数人愿意花时间钻研这门语言 3.9. 操作系统 3.9.1. 20世纪80年代的个人计算机革命,有一部分要归功于操作系统的胜利 3.9.2. 操作系统运行在机器语言层之上,人类与之沟通要比直接跟机器语言层沟通容易得多 3.9.3. Linux操作系统 3.9.3.1. 基于Unix系统 3.9.3.2. 取自它的创始人林纳斯·托瓦兹(Linus Torvalds)的名字 3.9.3.3. Linux是基于文本的系统,非常不直观 3.9.4. OSX系统 3.9.4.1. 乔布斯当年花钱参观了施乐帕克研究中心实验室,发现了图形用户界面这个概念创意,还注册了版权 3.10. 网络浏览器 3.10.1. Safari、Firefox、Chrome或IE 3.10.2. 一个让你能够浏览网页的程序 3.11. 文字处理程序 3.11.1. 微软的Word 3.12. 内容管理系统 3.12.1. 是现代传媒机构需要用到的一种基本软件 3.12.2. 能够管理传媒机构日常印刷出版或在网络发布的所有文章和图片等资料 3.12.3. 传媒机构还可以使用内容管理系统给每篇文章应用统一的设计模板,让他们的文章看起来风格统一 3.12.3.1. 有助于品牌的建设,而且很实用 3.13. 模拟器 3.13.1. 在Mac上运行Windows系统程序 3.14. 网络服务器 3.14.1. 用于将文章从内容管理系统中取出,送到任何想到阅读它的人手上 3.14.2. 读者则通过网络浏览器(如Chrome或Safari)读取你的文章 3.14.3. 这种“服务器——客户端”的模式以及这种没完没了地发送和接收信息的过程,就是网络的运行原理 4. 数据 4.1. 数据的魅力是无穷的,它给予我们洞见 4.1.1. 它使我们有能力了解世界,让我们能设法理解超出我们理解范畴的概念 4.2. 如果我们不做深入的探究,可能会以为数据是从天神宙斯的脑中涌进这个世界的 4.3. 所有数据都是由人类生成的 4.3.1. 所有数据都是如此,无一例外 4.3.2. 最终,数据的本质就是人类在数数 4.4. 数据是由社会构建的 4.4.1. 数据是人造的,如果你脑中有数据非人造的观念,请立即摒弃 4.5. 人类制造计算机,计算机制造数据 4.5.1. 数学也是人类创造的一个符号系统 4.5.1.1. 计算机就是能计算的机器,能执行上百万次数学运算 4.5.2. 计算机并非诞生自绝对的宇宙规律或自然法则,而是一些专业人员在特定的组织环境中,有意图地做了上百万个细微的设计决策,从而得到的产物 4.5.3. 计算机生成的数据本质上也是由社会构建出来的 4.5.3.1. 计算机就是由人类制造的 4.6. 二进制数据:0和1 4.6.1. 所谓“处理”,其实就是“计算” 4.6.2. 计算机所做的任何事,本质上都是数学 4.7. 你所创作的内容来自你的想象,是独一无二的,对人类来说就是独一无二的 4.8. 对计算机来说,每个故事都没有区别,都是存储在硬盘上的0和1的集合 5. 大脑 5.1. 人的大脑神奇就神奇在这里:在特殊的情况下,它能够以特殊的方式进行自我修复 5.2. 如果截掉一块脑组织,大脑就会“变道”,创造新的通路,以补偿缺失脑组织造成的问题 5.3. 计算机做不到这一点 5.3.1. 如果拿走计算机的一块组件,它就运行不了了 5.4. 人的大脑比硬盘要灵活得多,适应性也强得多 5.5. 琢磨一些看起来不可能的事情,让人们保持思考的能力 6. 聊天机器人 6.1. 你也许可以想到能应付大部分对话的应答内容,但绝不可能应付得了所有对话 6.2. 计算机在应答人类上肯定会有局限,这是因为计算机程序员作为人类,也必然有想象力上的局限 6.3. 考虑到所有曾经发生的以及未来可能会发生的对话场景,不管众包给多少人,都是远远不够的 6.4. 人们会试着去预先设计聊天机器人的应答内容,但这总归是无望的,部分原因是我们都无法逃脱生活中的意外事件 6.4.1. 在对意外糟心事的预料上,程序员并不比别人强多少 6.5. 在需要人类设想某事最坏情况的时候,人类社群都会出现集体盲点,最终选择性地忽略一些事情 6.6. 正非对称 6.6.1. positive asymmetry 6.6.2. 一种认知偏差 6.6.3. 是一种认知倾向,它“偏向于强调最好或最积极的结果” 6.6.4. 许多社会文化都偏好于奖赏那些关注光明面的人,而忽视甚至惩罚那些提及阴暗面的人 6.6.4.1. 如果一名程序员提出产品的潜在新用户定位,另一名程序员指出新产品可能被用于骚扰或诈骗,前者的说法肯定会得到更多关注 6.7. Siri和其他语音助手一样,应答能力受程序员集体想象力(以及“正非对称”)所限