《黑客与画家》读书笔记(术语解释)

术语解释
2017-02-23
抽象(abstract) 隐藏细节。编程语言越抽象,你写出程序所需的运算步骤就越少,每一步的功能就越强。
2017-02-23
算法(algorithm) 完成任务的方法。菜谱也算是算法。
2017-02-23
字母数字式字符(alphanumeric character) 26个英文字母和10个阿拉伯数字的总称。
2017-02-23
数组(array) 一种存储数据的方式,教材中又称矩阵(matrix),即一个个用数字编号的存储空间,排列成一个n维的集合。
2017-02-23
应用服务提供商(ASP,Application Service Provider) 这种软件公司允许用户通过网络使用存放在服务器上的软件,而不是采用传统的方式让用户在自己的电脑上安装软件后使用。
2017-02-23
贝叶斯定理(Bayesian) 一种统计推断的方法,又称贝叶斯算法。
2017-02-23
二进制(binary) 如果这个词前面有冠词(比如a binary),指的是软件的目标码。如果没有冠词,指的是采用二进制(而不是日常使用的十进制)作为表示数字的方法
2017-02-23
位操作(bit manipulation) 对某个内存区域的一些简单转换操作,比如在屏幕上移动窗口就可以通过位操作实现。
2017-02-23
代码膨胀(bloatcode) 程序过于冗长,大大超过合理的长度。
2017-02-23
块结构(block-structured)
2017-02-23
Blub困境(Blub Paradox) 程序员的思想往往会受到自己正在使用的语言的束缚,不相信还存在更强大的语言。
2017-02-23
自下而上编程法(bottom-up programming) 一种编程的风格,与早期的“自上而下编程法”(top-down)正好相反,“自上而下编程法”要求你把编程任务分解成一个个更小的单元,“自下而上编程法”要求你先开发最底下的层,然后用底层所定义的“语言”开发上一层,这样直到最高层。这两种编程法可以结合使用。
2017-02-23
限制(bound) 受到某种资源的约束,比如I/O限制、内存限制、CPU限制等。
2017-02-23
跳转(branch) 机器语言的goto命令。
2017-02-23
布鲁克斯假说(Brooks’s Hypothesis) 程序员一天写出的代码行数是一个常量,与他使用什么语言无关。
2017-02-23
缓冲区(buffer) 一个内存区域,用来保存程序需要的输入数据,或者将程序的输出数据累积起来,到一定数量后再输出。
2017-02-23
缓冲区溢出攻击(buffer overflow attack)
2017-02-23
字节码(byte code) 类似于机器语言的计算机语言,但是不局限于特定的计算机。由于字节码与机器语言很类似,所以很容易开发出字节码解释器,让它把字节码转换成相应的机器语言命令。
2017-02-23
CGI脚本(Common Gateway Interface script,通用网关接口脚本) 当网络服务器需要进行某种运算(比如数据库搜索)而不是直接传输现有文件时所运行的一种程序。CGI脚本的主要缺点是,每次运行只能生成一个页面,无法像桌面软件那样将数据保存在内存中从而实现与用户的不间断对话。
2017-02-23
校验和(checksum) 一种用特征值验证文件的方法。特征值通过对文件的所有信息进行某种计算而产生。
2017-02-23
循环定义(circular definition) 参见“无限循环”(infinite loop)。
2017-02-23
类(class) 面向对象编程语言的一种数据类型。
2017-02-23
点击轨迹(click trail) 同一个用户向网络服务器发出的一系列HTTP请求,基本等同于他浏览的网页顺序。
2017-02-23
客户端(client)
2017-02-23
源代码(source code)
2017-02-23
托管(collocated) 通常指放在ISP处。
2017-02-23
注释(comment)
2017-02-23
Common Lisp Lisp语言的一种流行的方言
2017-02-23
编译器(compiler)
2017-02-23
“解释器”(interpreter)
2017-02-23
复杂度(complexity) 算法的“时间复杂性”(time complexity)指的是,当输入的数据量不断增加时,计算机完成这种算法所消耗的时间。比如,假定你要在一间屋子中寻找某一个人,方法是看每个人的脸,那么找到这个人所需要的时间与屋中的人数成正比。这样一种算法就叫做O(n),意为所需的时间与n成比例(n代表数据量)。现在进一步假设你要在屋子中寻找看上去长得很像的两兄弟(或两姐妹),那么你所需要的时间可能与人数的平方成正比,因为你也许不得不每两个人就比较一次,而所有可能的两人组合是人数的平方,算法就是O(n︿2)。
2017-02-23
条件结构(conditional)
2017-02-23
基于内容的过滤(content-based filtering) 根据电子邮件的内容而不是它的外部特征(比如发信地址)进行过滤。
2017-02-23
CPU(中央处理器,Central Processing Unit)
2017-02-23
处理器现在广泛用于各种各样的设备,比如显卡和硬盘。
2017-02-23
崩溃(crash) bug引起的操作系统或应用程序停止正常工作。用在硬盘上面也指硬件失灵。
2017-02-23
冗余(cruft)
2017-02-23
周期(cycle) 执行一个机器指令的最少时间。一台内部时钟频率1 GHz的计算机可以在1秒内完成10亿个周期,即每秒执行10亿条机器指令。
2017-02-23
DARPA(美国国防部高级研究计划局,Defense Advanced Research Projects Agency) 一个赞助美国国内很多计算机研究项目的机构。
2017-02-23
数据结构(data structure) 一种由多个部分组成的数据格式。比如,一对数据可以组成一个数据结构,表示图形上的一个点。
2017-02-23
数据类型(data type) 编程语言处理的数据种类。
2017-02-23
动态类型(dynamic typing)
2017-02-23
“静态类型”(static typing)
2017-02-23
排错(debugging)
2017-02-23
声明(declaration) 程序的要素之一,描述的成分多于命令的成分。最常见的声明是变量类型声明,用于说明一个变量包含哪一类数据。
2017-02-23
废弃(deprecated) 原来属于标准的某种做法,现在它的设计者后悔做出了这样的设计。
2017-02-23
设计战争(design war) 一种竞争规则,只要是最好的设计就能获胜,而不是其他因素(比如广告宣传、销售渠道的控制)主导竞争。
2017-02-23
硬件驱动程序(device driver) 操作系统的一部分,使操作系统可以与硬件设备(比如打印机)对话。
2017-02-23
diff 对某件东西的两个版本进行客观的、精细的比较。这个词源自Unix操作系统的一个用来比较文件的应用程序。
2017-02-23
嵌入式语言(embedded language) 在一种语言内部定义的另一种语言,常用于解决某些特殊的问题。比如,如果你定义了一系列操作图像的命令,你就可以把它们视为一种操作图像的语言,参见“自下而上编程法”(bottom-up programming)。
2017-02-23
最终用户(end user) 需求很简单的用户的婉转说法。
2017-02-23
编程环境(environment) 帮助编程的软件,比如编辑器和性能分析器。
2017-02-23
表达式(expression)
2017-02-23
字段(field) 一种数据结构的组成部分。
2017-02-23
FreeBSD 一种Unix的开源版本。
2017-02-23
自由软件(freeware)
2017-02-23
在一些语言中函数也是一种数据类型。
2017-02-23
垃圾回收机制(garbage collection) 程序自动判断哪些内存不再需要,并予以回收,而不是要求程序员在使用完毕后明确声明
2017-02-23
goto 将程序的运行顺序从一部分改向另一部分的命令。goto与子程序调用最大的不同在于它使用后没有办法再回到原处。所以如果用了goto,程序往往会乱成一团。现在已经很少使用这个命令了。
2017-02-23
格林斯潘第十定律(Greenspun’s Tenth Rule) “任何C或Fortran程序复杂到一定程度之后,都会包含一个临时开发的、只有一半功能的、不完全符合规格的、到处都是bug的、运行速度很慢的Common Lisp实现。”
2017-02-23
破解(hack) 一种破坏规则的解决方法,可能有益也可能有害。
2017-02-23
黑客(hacker)
2017-02-23
散列表(hash table) 一种类似数据库的数据结构,存储在里面的每一段数据都有一个对应的键,使用时只要按照键就可以取出对应的数据。
2017-02-23
邮件头(header) 电子邮件最前面的那部分,包含了邮件本身的相关信息。普通用户只会看到发信人(From)、收信人(To)、日期(Date)、主题(Subject)、抄送(Cc)等信息,但是还包含其他信息(比如邮件的传送路径)。
2017-02-23
启发(heuristic) 从经验法则中得到灵感。
2017-02-23
缩进(indented)
2017-02-23
解释器(interpreter)
2017-02-23
内循环(inner loop) 一个程序中执行次数最频繁的部分。
2017-02-23
记录仪(instrument) 修改程序使得它的每一步结果都得到记录,这样的话,如果程序运行速度缓慢或者占用太多内存,你就能找到原因。
2017-02-23
蹩脚(kludge) 水平很差的破解。(这个词与stooge“丑角”是押韵的!)
2017-02-23
雏形创业公司(larval startup) 创业公司最早期、还未成形的阶段。此时,潜在的创业者还不确定是否应该成立一家公司创业。
2017-02-23
历史遗留软件(legacy software) 这些软件虽然还有人使用,但是并不符合使用者的要求。他们继续使用它们只是因为无钱购买新软件,或者不敢改变现状。
2017-02-23
闭包(lexical closure) 一个函数,通过它可以引用由包含这个函数的代码所定义的变量。
2017-02-23
LFSP(聪明人的语言,Language For Smart People) 设计目标主要是追求功能强大而不是保证安全性的编程语言。
2017-02-23
函数库(library)
2017-02-23
Linux Unix操作系统的一个开源版本。讲究一点的话,它应该被称为GNU Linux,因为它的内核部分是由Linus Torvalds编写的,但是其他更大量的代码来自Richard Stallman的GNU项目。
2017-02-23
列表(list) 一连串的数据块,各个数据块的类型通常是不一样的。不同的列表可以像火车车厢一样连接在一起,组成更大的列表。
2017-02-23
字面量(literal representation) 一种直接在高级语言中表示数据的方法。
2017-02-23
机器指令(machine instruction)
2017-02-23
机器语言(machine language)
2017-02-23
宏(macro) 一个能够生成其他程序的程序。
2017-02-23
大型机(mainframe) 根据20世纪六七十年代的设计而建造的大型计算机。
2017-02-23
对数学家的妒忌(math envy) 担心自己不如数学家聪明。这种焦虑的一个重要体现就是让自己的工作成果带有一种完全不必要的数学味。
2017-02-23
元循环(metacircular) 当一种语言的解释器用这种语言本身开发时,就会出现这种情况。与其说这是为了做出这种语言的一种实现,还不如说这是描述语言的一种技巧。
2017-02-23
方法(method) 面向对象编程中充当某个类的属性的一个子程序。
2017-02-23
模块(module) 一组子程序和变量,它们可以被视为是一个整体。通常情况下,模块外部的代码只能访问模块内部一部分专门对外公开的子程序和变量。
2017-02-23
摩尔定律(Moore’s Law) 摩尔定律的正式版本是指,一块芯片上的晶体管数量每两年就会翻一番。但是,大多数人提到这个术语时,指的却是处理器的运算速度每18个月就会翻一番。很多人认为摩尔定律更像是商业计划,而不是产业发展的规律,毕竟它的提出者Gordon Moore是英特尔公司的创始人之一。
2017-02-23
数字密集运算(number crunching) 对巨量的数值资料进行直接处理。
2017-02-23
目标码(object code) 编译器产生的机器语言。
2017-02-23
OO(面向对象,object-oriented) 一种组织程序的方式。假定不同的类代表不同类型的数据,那么针对这些数据执行某种特定任务的代码,可以根据数据的不同被分别写进不同的类,成为这些类的方法。
2017-02-23
“奥卡姆剃刀”原则(Occam’ Razor) 简单的解释就是较好的解释。
2017-02-23
开放源代码(open source)
2017-02-23
正交的(orthogonal) 彼此独立、能够以多种方式组合在一起的一组东西。经典的乐高积木就比普通的塑料模型玩具更有正交性。
2017-02-23
优化(optimization) 调整程序,使得它的效率更高。
2017-02-23
帕金森定律(Parkinson’s Law) 完成一项任务所需要的资源会不断扩展,直至把这种资源消耗光为止。
2017-02-23
解析器(parser) 读取输入的数据然后生成解析树的程序。
2017-02-23
解析树(parser tree) 解析器读取源码后生成的数据结构。它是将源码翻译成机器语言的第一步。
2017-02-23
补丁(patch)
2017-02-23
PDA(个人数字助理,Personal Digital Assistant) 一种可以随身携带的小型计算机。它的操作界面通常比正规计算机更简单,限制也更多。
2017-02-23
管道(pipe) 将操作系统的各种命令连接起来的一种方式,使得一个命令的输出变成另一个命令的输入。
2017-02-23
指针(pointer) 一块数据,它的值是另一块数据的内存地址。
2017-02-23
指针运算(pointer arithmetic) 通过对已知地址进行加法运算在内存中找到目标对象。这是低层次语言的一种技巧。
2017-02-23
可移植性(portable)
2017-02-23
门户(portal) 网站。
2017-02-23
过早设计(premature design) 过早决定一个程序的行为。
2017-02-23
过早优化(premature optimization) 还没有写完程序,你就开始考虑它的性能问题。
2017-02-23
进程(process)
2017-02-23
性能分析器(profiler) 一种观察运行中的目标程序的程序,它会告诉你目标程序的哪一个部分最消耗资源。
2017-02-23
伪码(pseudocode)
2017-02-23
QA(质量保证,Quality Assurance) 软件行业中负责找出和登记bug的人。
2017-02-23
递归(recursive) 一种调用自身的算法。警察审讯犯人时就会用到递归。警察先问犯人是否知道案件的情况,或者是否知道谁干的,如果犯人回答知道,那么继续这样问下去。
2017-02-23
RAID(冗余独立磁盘阵列,Redundant Array of Independent Disks) 一种硬件,将多个硬盘模拟成单硬盘,(理论上)避免了硬盘崩溃。
2017-02-23
“读取—求值—打印”循环(read-eval-print loop) 一种顶层解释器(toplevel)。
2017-02-23
RISC(精简指令集计算机,Reduced Instruction Set Computer) 这种计算机的机器语言功能有限,但是运行速度较快。它的目标是更好地适应编译器的需要
2017-02-23
扫描(scan) 读取一串字符,将其分解成一个个的语义单位(token)。
2017-02-23
脚本语言(scripting language) 一种编程语言,用来对某个程序进行定制。有时,开源编程语言(比如Perl和Python)也被称为脚本语言,但是这种叫法意义不大。
2017-02-23
SETI@home(搜寻地外文明,Search for Extra-Terrestrial Intelligence) 一个科研项目,使用互联网上桌面电脑的空闲计算能力搜索宇宙中其他生命发出的电磁波。
2017-02-23
s-表达式(s-expression) 一种语义单位(token),用括号表示,内部可以再包含0到多个s-表达式。
2017-02-23
套接字(socket) Unix操作系统的一种内部渠道,不同计算机的进程通过它可以在网络上交换信息。
2017-02-23
面条式代码(spaghetti) 扭曲缠绕在一起的代码,没有人能够读懂,包括作者本人。
2017-02-23
spam 无缘无故收到的、数量庞大的垃圾邮件,通常是广告。这个词来自Monty Python剧团的喜剧小品,每当餐厅服务员打开一听Spam牌罐装肉,一群维京海盗打扮的演员就齐声高唱“Spam,Spam,Spam”,将主人公的对话声都淹没了,因此spam就有了外界强加的大量打扰的含义。
2017-02-23
规格(spec) 软件的规格说明书。对程序功能的一种非正式描述。
2017-02-23
SSH(安全shell,Secure Shell) 可以安全连接远程计算机的一种程序。
2017-02-23
SSL(安全套接字层,Secure Sockets Layer) 一种在网络上安全传输数据的协议。
2017-02-23
状态机(state machine) 一种理论上的机器,它的所有可能状态是一个集合。当满足某些条件时,状态之间就会发生转换。
2017-02-23
语句(statement) 一串不产生值的代码。为了使得自己有用,它必须能够产生一些实际效果,比如显示内容。有人认为这个概念本身就是错的,在一些语言中根本没有语句,只有表达式。
2017-02-23
静态类型语言(static typing) 这一类编程语言的所有变量的类型在开始编写程序的时候就必须知道。
2017-02-23
子程序(subroutine)
2017-02-23
子集(subset)
2017-02-23
西装革履的人士(suits)
2017-02-23
符号(symbol) 一种数据类型,语义单位(token)就是符号的实例。符号与字符串很类似,除了两点区别:(a)一个符号就是一个独立的单位,而不仅仅是一串字符;(b)一个符号通常只有一个对应的名称,而包含同样字符的字符串却可能有好几种。
2017-02-23
句法(syntax)
2017-02-23
系统管理员综合症(system administrator disease) 系统管理员心底里总是认为,他们管理的那些设备只是独立的设备,而不是用户的工具。更概括地说,他们的态度就是将客户视为一种麻烦,而不是自己能够有这个饭碗的原因。这种心理是感受不到竞争压力的工作职位所特有的。
2017-02-23
一次性程序(throwaway program) 为了满足暂时性需求而编写的程序。
2017-02-23
语义单位(token) 一串同属于一个单位的字符。更通用的叫法是“词”(word)。
2017-02-23
顶层解释器(toplevel) 编程语言的一种界面,你可以在其中用这种语言与计算机进行不间断的对话,正如你在Unix的shell界面中所做的那样,而不是简单地编译程序,然后运行,对话就结束了。
2017-02-23
树(tree) 一种数据结构,它包含的每一个实例都可以指向两个或更多的实例,比如家谱树。
2017-02-23
图灵完备(Turing-complete) 如果一种编程语言写出的所有程序都能被转换成图灵机程序,并且反之也成立,那么这种编程语言就是图灵完备的。所有当代编程语言都是图灵完备的,这意味着(在理论上)它们的功能都是一样强大的。图灵完备又称图灵等价(Turing- equivalent)。
2017-02-23
图灵机(Turing machine) 一种完全虚构的计算机,作用是证明计算理论。由于所有计算机的程序都可以被转换成图灵机程序,所以在这个意义上,你不可能做出比图灵机更强大的计算机。但是没有人能保证这一点,因为“计算机”这个词并没有被正式定义过。
2017-02-23
UDP 一种网络传播信息的协议。
2017-02-23
UI 用户界面(User Interface)。
2017-02-23
向量(vector)
2017-02-23
正常运行时间(uptime) 一台计算机(特别指一台服务器)正常工作的时间百分比。它的另一个意思是指某台计算机从上次宕机到现在的时间长度。
2017-02-23
朦胧件(vaporware) 谈论已久但是迟迟不亮相的软件。
2017-02-23
VC(风险投资商,Venture Capitalist) 为他人创业或再融资提供金钱的人,他们要求创业者用股份来交换投资。
2017-02-23
1.0版(version 1.0) 某样东西的第一个版本,暗示不完整、不好用。
2017-02-23
楔住(wedged) 表示无回应状态,尤其是指服务器。
2017-02-23
所见即所得(wysiwyg) What you see is what you get(你看到的就是你得到的)的缩写(发音为whizzy wig)。比如文字处理器中,你在屏幕上看到的页面与打印机的输出是一样的。

你可能感兴趣的:(读书笔记,黑客与画家,读书笔记,计科人文)