梦断代码阅读笔记4
卡普尔的团队开始问自己一个看似简单的问题:我们如何组织信息?如何对这种信息组织法建模——需要怎样的数据结构才能让计算机也能回答这个问题?
软件没有磁芯。它就像洋葱般层层叠叠,每一层都辛辛苦苦地建立于前一层基础之上。程序员把这种结构叫做“抽象层叠",每当新添一层时,就要把一些复杂而特殊的东西转换为简单而通用的东西。
在抽象层叠的最底端, 正好在核心内存之上的部分就是汇编语言。
语言的选择可能都是一个项目在前期选择时必须要经历的痛苦抉择。文中谈到了汇编、Fortran、C、Perl,谈到了编译型语言和解释型语言,最后项目用Python语言来实现。
Python 是一种“解释型语言" 。“编译型语言" 通过编译器先将程序员的源代码翻译为机器可读的二进制代码后再运行,而解释型语言则是在运行时做类似的工作——解释器逐行翻译源代码,再喂给处理器运行。解释型语言效率较差,因为你要同时运行自己的程序和解释器。但这也使得解释型语言较为敏捷。
Python是解释型语言,但是简单易懂的语言,很明显在修改错误和拓展程序上事半功倍。这恰恰说明了,解释型语言这种往往被忽略的“脚本语言”是至关重要的。
很多语言都用括号或其他符号来划分代码块,而Python 却只简单地用缩进表示。它的另一个优点是变量类型设定宽松。
Python 的信条,范·罗萨姆说,是TOOWTDI: There’s only way to do it.
Python和Java语言一样提供了“垃圾回收"机制。
当程序不再需要先前申请的内存空间, Python 就会负责清理。
面向对象技术不是围绕一系列命令行来组织程序,而是基于一些叫做对象的代码片段来组织程序。当接收到其他对象的呼叫时,对象就会做出操作。对象之间通过严格定义的输入输出彼此相关。软件对象通过互相之间发“消息" 来触发”事件",达到交互的目的。共享特性对象可以组建为“类", 还可以从“父类" 继承特性。
语义网时基于一种名为RDF的技术。RDF 以“ 三元组" ——包括三个部分的语句——存储所有信息,描述事物之间的关系。