过去,现在与未来_代码的未来书评-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > 代码的未来 > 过去,现在与未来
Jay 代码的未来 的书评 发表时间:2014-08-09 12:08:08

过去,现在与未来

    本书是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

    闭包,含有“包含”的意思。如其名称,闭包就是将数据包含在函数内,与面向对象正好相反,面向对象是将数据的行为包含在数据内。对于闭包,我目前还没有体会到其带来的好处,当然是巨大的好处,值得做为编程语言未来发展的方法的好处,所以就先搁着,等到感受到其巨大力量再来补上。


注:文件代码格式较撮,影响您的阅读,请见谅。

展开全文
有用 1 无用 0

您对该书评有什么想说的?

发 表

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读