2017
10-22
10-22
由浅入深学习 Lisp 宏之实战篇
在上一篇文章中,介绍了宏(macro)的本质:在编译时期运行的函数。宏相对于普通函数,还有如下两条特点:宏的参数不会求值(eval),是symbol字面量宏的返回值是code(在运行期执行),不是一般的数据。这两条特点也决定了是需要用普通函数还是宏来解决问题,这里面也蕴含着codeasdata的思想,也被称为同像性(homoiconicity,来自希腊语单词homo,意为与符号含义表示相同)。同像性使得在Li...
继续阅读 >
有一位美丽的公主,被关押在一个城堡中最高的塔上,一条凶恶的巨龙看守着她,需要有一位勇士营救她…下面是各种语言如何想办法将公主从巨龙手中营救出来的。Java–赶到那里,找到巨龙,开发出一套由多个功能层组成的恶龙歼灭框架,写几篇关于这种框架的文章…但巨龙并没有被消灭掉。.NET–赶到哪里,看到了Java程序员的做法,完全拷贝过来,试图去杀掉巨龙,但巨龙把他吃掉了。C-赶到那里,对巨龙不屑一顾,举起剑,砍...
我研究过很多编程语言;我经常的好奇于在面对这些不同的语法时,编程过程会有哪些不同,一种不同的语法会让你更富有表达性或编码速度的更快吗?我并不知道,我知道的只是在使用不同的语言时你都敲击了哪些键盘上的键。这也许是那些不知道该学习使用哪种编程语言的人会感兴趣的事。据我的认识,键盘使用分布越广的语言通常是设计的很糟糕的语言。你也许会争辩说,程序中变量名的取法会影响统计的结果。可是,大部分编程语言都有自...
Ada语言是辆坦克。一辆笨重丑陋但绝不会在路上抛锚的坦克。如果你告诉别人你开的是坦克,人们可能会笑弯腰,但事实上,如果上战场,你愿意开一辆跑车在阵地上跑吗?汇编语言只是一台发动机;你需要自己用它造出这部车,而且在跑起来时你还需要手工给它供给汽油,但是,如果你能足够用心,它能跑的像一个飞向天际的火箭。Basic是一辆简单的车,你可以把它当成短距离的交通工具,比如去附近的超市购物。它曾经在驾车新手中风靡...