编程机制探析(Insight into Programming Mechanism)
贝吉塔不爱算法
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
展开
-
《编程机制探析》初稿目录(已提供PDF下载)
原创 2011-08-29 13:33:21 · 183 阅读 · 0 评论 -
《编程机制探析》第三章 计算机运行结构
即,用我们老百姓的话来讲),硬盘中存储的数据叫做软件,除此之外,计算机所有其他的部件,全都叫做硬件。注意,硬盘本身也是硬件。因此,软件是存储在硬件中的。软件必须依托于硬件,才有依托之地。打一个不太恰当的比方,硬件相当于看得见、摸得着的物质文明,而软件就相当于看不见、摸不着的精神文明。当然,上述说法只是直观的说法,不是专业的说法。那么,什么是专业的说法呢?专业的说法,必然要涉及到计算机体系结构。提到计算机体系结构,就不得不提到冯.诺依曼结构。正如本书不会对图灵机展开详述一样,本书也不会对冯.诺依曼原创 2011-08-29 13:50:31 · 185 阅读 · 0 评论 -
《编程机制探析》第二十六章 页面生成技术
2011-10-18 14:54:35 · 147 阅读 · 0 评论 -
《编程机制探析》第十七章 函数式编程
有熟练掌握递归,我们还是可以向函数式进军。我们可以在学习函数式编程的过程中,逐步习惯递归的写法。函数式编程并非主流编程模型,函数式语言亦非主流编程语言。但我们在描述某些具体问题时,不可避免地要涉及到一些代码。本书会尽量选择有代表性的函数式语言。本书的选择是Haskell和ErLang这两门函数式语言。Haskell是一门学术性很强的、特性很全面、形式很正规的函数式语言,很适合用来描述函数式编程的一些重要核心概念。因此,Haskell是一种常见的教学语言。本书也不能免俗。ErLang是一门比较实用2011-08-29 14:34:16 · 180 阅读 · 0 评论 -
《编程机制探析》第十八章 函数式语法
l。我们从ErLang语法开始讲起,因为,ErLang语法比较简单易懂。不过,需要说明的是,这里的“简单易懂”,是对我们命令式程序员来说的。ErLang语法与命令式语法比较接近,命令式程序员看起来更舒服。相比之下,Haskell的语法虽然更简洁,但是,相距命令式语法甚远,读起来颇有难度。读者可能会说,既然这样,你就干脆只采用ErLang得了,干嘛还要多讲一个Haskell。我也想这么做,但问题在于,Haskell语言中存在着很多ErLang语言中不具有的特性,而那些特性涉及到函数式编程中的重要概2011-08-29 14:35:24 · 188 阅读 · 0 评论 -
《编程机制探析》第十九章 函数 = 数据 = 类型 ?
2011-08-29 14:36:52 · 138 阅读 · 0 评论 -
《编程机制探析》第二十章 流程控制
2011-08-29 14:42:00 · 165 阅读 · 0 评论 -
《编程机制探析》第二十一章 AOP
2011-08-29 14:43:07 · 134 阅读 · 0 评论 -
《编程机制探析》第十四章 关于方法表的那些事
对象和动态类型对象的内部机理——方法表(虚表)的内存结构以及实现机制。我们先从静态类型语言中常见的语法陷阱开始。这些语法陷阱能够帮助我们更深入地理解静态类型对象的方法表的结构和特征。让我们回到上一章开头的那段代码。那个Visitor有两个方法,visitA和visitB。其中visitA就表示访问A类型的数据元素,接受的参数也是A类型。visitB表示访问B类型的数据元素,接受的参数也是A类型。这种写法是我的偏好,也是我的建议。我希望读者能够接受我的这种建议:除非为了达到某种特殊目的,绝对不要在2011-08-29 14:55:39 · 127 阅读 · 0 评论 -
《编程机制探析》第二十二章 互联网应用
。《黑客帝国》中,莫菲斯递给尼奥一粒药丸,“欢迎来到真实的世界。”在计算机界中,也有“真实的世界”(Real World)的说法。比如,我们经常看到这样的话:这种方案看起来很美,但不适用于真实的世界。(That sounds great, but not for real world.)我不喜欢真实的世界,我只喜欢在理想的模型中畅游。历经多年的应用开发,我早已明白,真实的世界是嘈杂的、琐碎的、无聊的。你很难把东西做得很漂亮,很满意。为了避免误解,我这里澄清一下。我并非完美主义者,也没有精益求2011-10-18 14:47:35 · 179 阅读 · 0 评论 -
《编程机制探析》第二十四章 HTTP要点
2011-10-18 14:50:54 · 140 阅读 · 0 评论 -
《编程机制探析》第二十三章 HTTP
也照样编写Web程序。我就曾经是其中的一员。这种现象的产生,与现代软件业的开发模式大有关系。这事儿,说起来话就长了。软件开发管理,一向是管理界的一大难题。因为,没有哪个程序员愿意被管理。每一个程序员都觉得自己是人才,而不是人力资源。人才,尤其是智力人才,应该是有发挥自由度的,怎么能像体力工人一样被管理呢?但是,胳膊扭不过大腿。公司管理层就不信这个邪,非要解决这个管理上的难题。随着软件工程管理的发展,大量的程序员都被管理起来了,成为办公室蓝领工人,甚至更惨,成为码农。怎奈心比天高,却命比纸薄。呜呼哀哉2011-10-18 14:49:24 · 139 阅读 · 0 评论 -
《编程机制探析》第二十五章 Web开发架构
主要是针对桌面程序来说的。桌面程序的图形界面元素十分丰富,交互性、操作性也十分良好。Web应用程序的界面,传统来说,只有一种,就是在浏览器中显示的HTML。一开始的时候,HTML并不是为了应用程序而设计的图形界面,而是以内容文本表现为主要目的的文本结构。HTML具备了最基本的图形界面元素,但是,从功能、效果、交互性、可操作性来说,都比桌面程序简陋了许多。Web应用拥有与生俱来的优势,Web应用是基于HTTP协议的,而HTTP协议是一次性应答协议,不保持长连接,这就使得Web应用可以支持大用户量和访问量。2011-10-18 14:53:04 · 154 阅读 · 0 评论 -
《编程机制探析》第十六章 树形递归
2011-08-29 14:32:20 · 141 阅读 · 0 评论 -
《编程机制探析》第八章 Compositor Pattern
而构建成一个更复杂的设计模式。当然,这样构建出来的设计模式,通常已经失去了通用性。在前面的章节中,我们用sort排序算法作为例子,讲解了最简单的Visitor(Functor)Pattern。那个排序的例子可以进一步扩展,引入更多的设计模式——比如,Compositor Pattern(组合模式)。在扩展排序例子之前,我们先花一点时间,了解一下关系数据库的相关知识。关系数据库是现在应用最为广泛的一类数据库,其优点在于概念简单,模型简单,便于操作。从概念模型上来讲,关系数据库就是一堆二维数据表的集2011-08-29 14:19:57 · 134 阅读 · 0 评论 -
《编程机制探析》第十五章 递归
2011-08-29 14:30:45 · 104 阅读 · 0 评论 -
《编程机制探析》第五章 命令式编程
程模型核心概念,因此,本书通常会直接跳到最能够体现该语言编程模型的编程代码范例,而不会从头讲述某一种语言的讲法。有过编程经验的读者,阅读代码会感觉轻松一些。我尽量写得平实易懂,希望没有过编程经验的读者,也能够比较容易地理解。前面讲了,所谓计算机程序,其实就是一份计算机照着执行的工作流程表。那些工作流程表都是一条条的祈使命令语句组成的。比如,先做这个,再做那个。在这种条件下做这个,在那种条件下,做那个。等等。这种命令式的、顺序执行的编程模型,叫做命令式编程(Imperative Programming),2011-08-29 14:01:08 · 192 阅读 · 0 评论 -
《编程机制探析》第六章 面向对象
的天下。面向对象(Object Oriented)这个名词,可能是那帮计算机科学家炮制出来的最成功的名词了。尽管我绞尽脑汁,也不能为这个名词想出一个贴切的含义解释,但并不妨碍这个名词成为计算机编程中流行最广、上镜率最高的词汇。关于面向对象的书籍资料可谓是汗牛充栋,罄竹难书。各种关于面向对象的神话、传说、流言、谣言、妖言,那也是满天的飞。有过这方面体会的读者,一看到本章的标题,一定会鄙夷地撇撇嘴,道:“Yet another OOP bullshit.”(又是一个关于面向对象编程的屁话连篇。OOP2011-08-29 14:02:33 · 171 阅读 · 0 评论 -
《编程机制探析》第七章 设计模式
2011-08-29 14:18:07 · 171 阅读 · 0 评论 -
《编程机制探析》第九章 线程
2011-08-29 14:21:26 · 108 阅读 · 0 评论 -
《编程机制探析》第十章 线程同步模型
2011-08-29 14:22:43 · 117 阅读 · 0 评论 -
《编程机制探析》第十一章 Copy on Write
2011-08-29 14:24:24 · 133 阅读 · 0 评论 -
《编程机制探析》第十二章 Iterator Pattern
2011-08-29 14:25:34 · 134 阅读 · 0 评论 -
《编程机制探析》第十四章 关于方法表的那些事
对象和动态类型对象的内部机理——方法表(虚表)的内存结构以及实现机制。我们先从静态类型语言中常见的语法陷阱开始。这些语法陷阱能够帮助我们更深入地理解静态类型对象的方法表的结构和特征。让我们回到上一章开头的那段代码。那个Visitor有两个方法,visitA和visitB。其中visitA就表示访问A类型的数据元素,接受的参数也是A类型。visitB表示访问B类型的数据元素,接受的参数也是A类型。这种写法是我的偏好,也是我的建议。我希望读者能够接受我的这种建议:除非为了达到某种特殊目的,绝对不要在2011-08-29 14:28:39 · 92 阅读 · 0 评论 -
《编程机制探析》第四章 运行栈与内存寻址
进程可了不得,它们规定了CPU工作的总流程。CPU工作的时候,必须严格遵守操作系统进程定义的工作流程。为了满足人类用户的需求,现代的操作系统都是带有图形界面的多任务(多进程)系统。在计算机运行期间,内存里总是会跑着多个进程。这一点,我们可以在任务管理器已经看到了。在这种工作模式下,CPU不得不在内存中的多份工作流程(即进程)之间来回穿梭忙碌,每件事都是做了一会儿就放下,赶紧去做另一件事。这就有了一个问题。CPU在放下手头工作之前,必须先把手边的一摊子工作找个地方暂存起来,以便一会儿回来接着干。那么,2011-08-29 13:54:14 · 171 阅读 · 0 评论 -
《编程机制探析》第一章 写作初衷——若是当年早知道......
一个年老体衰的老拳击手陷入了人生的低谷,参加比赛之前,连补充体力的一块牛排都买不起。他的对手是一个正处于体力上升期、精力充沛的年轻拳击手。他凭借着丰富的经验与对手周旋,并抓住一闪即逝的机会,给了年轻的拳击手以沉重打击。但是,遗憾的是,他的体力不足,并没有给对手造成致命打击。对手最终重新稳住了脚跟,将他击倒在地。很多年过去了,但这篇小说给我的印象一直没有褪色,尤其是文中那一段关于老拳击手心理活动的描写:“当他坐在自己的一角打量对手的时候,他的脑子里涌现出一个想法。如果以他的老谋深算,再加上桑德尔那样的年轻原创 2011-08-29 13:37:59 · 232 阅读 · 0 评论 -
《编程机制探析》第二章 计算机语言
着孩子拼命奔逃,一只猫在后面紧追不舍。跑着跑着,老鼠母子俩被逼到了一个死角中,无处可逃,眼看就要命丧猫口。这时,老鼠妈妈临危不惧,直面大猫,狂吠几声:“汪!汪!汪!”那只猫吓了一跳,转身就跑。老鼠妈妈松了一口气,抓紧机会,对惊魂未定的孩子教育道:“看见没?学好一门外语是多么的重要啊!”计算机语言实则也是一门外语。掌握这门外语也非常的重要。掌握了计算机语言,就等于掌握了与计算机交流的渠道。人类发明了各种工具,作为自己身体的延伸。交通工具是脚的延伸,操作工具是手的延伸,而计算机,则是大脑原创 2011-08-29 13:41:20 · 234 阅读 · 0 评论 -
《编程机制探析》第十三章 动态类型
2011-08-29 14:29:51 · 138 阅读 · 0 评论