本书是Matz在《日经Linux》上连载的各期内容的合集,虽然内容有些部分重复,但是内容还是很丰富的,主题也比较鲜明,与国内的某些合集甩开太远。
通书下来,个人觉得最精华的还是第2章:编程语言的过去、现在和未来。Matz通过简单回顾编程语言的过去,着重分析现在和未来的发展。主要分为以下几类:DSL,meta-programming,内存管理,异常处理,闭包。
DSL,即特定领域语言,将几乎只有程序员的编程语言进化成符合具体领域业务的特定语言,而且该语言与自然语言类似,方便非编程人员也可用其进行编程,可以解决开发人员对业务透视程度不够,业务人员无能力进行编码的矛盾。回想还在前东家码程序时,由于是游戏工作室,经常出现小工具方便策划实现自己的想法,这几乎是与DSL方向不谋而合。做为攻城师,如何把自己从代码中解放出来,如何让非编程人员方便的进行编程工作也是一种能力啊。
元编程,即可以自己写程序的程序。身为苦逼码农,还记得需求一日一变的痛若吗?还记得数据库迁移时,代码大动的尴尬吗?请用元编程利器,让你一劳永逸,面对千变万化,不动任何代码就是完善支持。善哉,这才是程序员的理想生活。当然,元编程并不是所有语言都支持,当然上古语言Lisp可以说是其始祖,但是便于理解,还是举个Ruby的例子,如下:
require 'builder'
builder = Builder::XmlMarkup.new
xml = builder.person { |b|
b.name("Jay")
b.phone("123-123321")
}
#=> <person><name>Jay</name><phone>123-123321</phone></person>
代码中对person, name, phone标签是用方法调用实现的,但这些方法并不是Builder库所定义的。因为XML中的标签是任意定义的,不可能在Builder库中事先全部准备好所有方法,所以这就是元编程的力量。若要增加home标签,无须动Builder库的任何代码,只需直接调用home方法即可。完美生活啊。
内存管理。说到这个,不得不提业务说c/c++是如何难用,很大一部分是由于要开发者进行内存管理。虽然现代c++语言经过一定的封装可以做到不用自己进行内存管理,但是曾经坑害多少无知码农的阴影是不会这么轻易散去。所以,垃圾回收,将内存管理从程序员手上释放出来是巨大的福利。
异常处理。C代码中对各种异常返回值的判断,往往在程序中占有很大的比例,如下:
int main()
{
FILE* f = open("/path/to/file");
if (f == NULL) {
puts("file open failed");
} else {
puts("file open succeeded");
}
f.close();
return 0;
}
当然,这里只是举个简单的例子,现实情况比这个糟糕太多。写一个并不复杂的业务,假设只需要10行代码,但是对异常情况的判断并且处理,往往占据了大量的代码量,也许从开始的10行渐渐臃肿到了100行。这不仅对编码人员造成了大量的工作量,而且对维护人员进行代码学习也是一种负担。若采用异常机制,很容量让编码人员只关注重要的逻辑,而不用一头淹没在异常处理代码中。上文的例子,同样实现一个Ruby版本:
begin
open("path/to/file", "r") do |f|
puts"file open succeed"
end
rescue
puts"file open failed"
end
闭包,含有“包含”的意思。如其名称,闭包就是将数据包含在函数内,与面向对象正好相反,面向对象是将数据的行为包含在数据内。对于闭包,我目前还没有体会到其带来的好处,当然是巨大的好处,值得做为编程语言未来发展的方法的好处,所以就先搁着,等到感受到其巨大力量再来补上。
注:文件代码格式较撮,影响您的阅读,请见谅。
过去,现在与未来
《代码的未来》热门书评
-
听语言大师谈编程语言
17有用 0无用 黄亿华 2013-06-15
这本书其实是连载《松本行弘:技术的剖析》的合集,与其《代码的未来》,我觉得原名更符合这本书的内容。刚开始看到书,翻开目录,发现这是什么啊,整个一个流行技术的合集,从摩尔定律讲到DSL,从C10K讲到nosql。但是仔细看下来,收获很大,有些地方又茅塞顿开的感觉。一般的技术类书籍或者文章,都是讲&qu...
-
不是神作也不是臭作
11有用 0无用 冰霜新星睡觉 2013-12-03
我是慕名买下这本书的。读完感觉是有价值, 但是不喜欢。这本书本来就是将杂志上的连载收集起来出的一个合集。因为是杂志文章,普及性比较多,文章写得很松散很随意,浅出但不深入。 而且54万字超过一半是无意义的杂谈或卖萌式的评论。我不知道是因为日本人本来就习惯了这样卖萌的语气, 还是翻译故意要加入些有趣的元...
-
图灵访谈之三十八:专访松本行弘
9有用 0无用 石微宣绿松石 2013-07-05
周:松本先生今年出版了新书《代码的未来》,这本书的中文版正在由我进行翻译,预计明年会在中国出版。您的上一本书《松本行弘的程序世界》在中国受到了读者的好评,这次的新书和前作相比有哪些不同,又有哪些看点呢?Matz:《松本行弘的程序世界》一共涉及了14个话题,每个话题都是浅尝辄止,内容比较广泛但不是很深...
-
读书体验
5有用 1无用 Soledad 2013-05-14
对Matz大神的这本书还是蛮期待的 现在书以到手 刚读完前3章 书和我预想的也差不多 比起前一本程序世界来说好很多 程序世界里口水太多还重复 关于DSL那部分觉得很好 把外部DSL 和 内部DSL 还有DSL的优势定义都介绍...
-
内容风格沿袭松本行宏传统
3有用 0无用 言次 2013-06-30
这是本人入手的第二本松本著作,由《松本行宏的程序世界》引入门,每一本著作都在我的面前展露过大师的思想光芒。松本行宏的写作习惯是在技术的文章中穿插传递矛盾性和针对冲突的论述 —— 一门技术为何会是这样子,而不是另一个样子?相较于其他将要介绍一门技术的书籍在开篇时对主体的极致夸赞,松本的著作站在一个更冷...