为什么要AOP- -| 回首页 | 2004年索引 | - -幼儿园教育

学习CLISP一天- -

                                      

因为想更多地了解Jess,花了一天时间学习CLISP。简单说,LISP是个不那么容易懂的语言——至少对于我来说。最主要的原因是它的概念是“functional programming”,从Jess的角度来说,它是rule-based的。再加上语法不习惯,感觉不是件很爽的事情。但是,看着CLISP程序,对“规则”、“规则引擎”的概念却理解得很快,这可能就是传说中语言的魔力。
 
如果真是希望得到一个便于定制的核心业务逻辑,描述这个规则的肯定不能用LISP系的语言。问了两位浙大的高材生(其中一位是学数学出身的),都没玩过LISP,可见在我们的应用域Jess基本上是一个没希望的东东。

- 作者: gigix 2004年06月3日, 星期四 17:47

Trackback

你可以使用这个链接引用该篇日志 http://publishblog.blogdriver.com/blog/tb.b?diaryID=183479

博客手拉手

回复

- 评论人:匿名

Mon Jan 02 19:32:40 CST 2006  作者Blog

计算机程序的构造和解释:
Structure and interpretation of Computer Programms. http://mitpress.mit.edu/sicp/full-text/book/book.html
计算机科学的圣经之一...美欧正经学校计算机系的必用教材

- 评论人:fans1

Thu Dec 30 09:37:44 CST 2004  作者Blog

emacs下有elisp

- 评论人:taowen

Fri Jun 04 16:57:01 CST 2004 

哈哈,被大家发现了。闪

- 评论人:wintereagle

Fri Jun 04 13:40:59 CST 2004 

说实话,AOP就是一种MetaProgramming,而Lisp就是MetaProgramming的老祖宗。

- 评论人:leeseon

Fri Jun 04 13:17:50 CST 2004  作者Blog

不过我还是觉得LISP,不仅仅是源代码的形式上的不同,有一些东西更本质一些,而且LISP也够酷的,居然活了这么长时间,只比FORTRAN活的短一些。

AOP之父在他97年关于AOP的论文中的,那个解释横切的例子就是用LISP来解释的,看了半天,事后想想也觉得,好象用LISP更说得深入一些,用其它语言就不那么容易了。

- 评论人:babysloth

Fri Jun 04 11:39:21 CST 2004 

taowen你现在很像当年的透明呀,先一棒子打死再说。lisp这些“出奇伟大的事情”的事情还是不少的。跟语法没有太多的关系,思维角度不同。

- 评论人:wintereagle

Fri Jun 04 09:48:07 CST 2004 

感觉没什么东西非用functional的语言不可的,以前也了解过lisp和haskell,感觉没有什么出奇伟大的事情。语法上的便利很容易被大家的不熟悉抵消掉。
----------------------------------------------------------------
一群考古学家在讨论一个秦朝的瓦罐,旁边一个农妇冲他们说这个瓦罐破了不能盛水要来干嘛。
这只是一个比方,不要对号入座。我的意思是说站在不同立场上的人,是不能进行沟通的。函数语言是与过程话的语言截然相不同的思考方式。其实在我们普通的编程里面有很多函数语言的影子,最简单的就是regex,最复杂的就是设计模式。只是我们从来不需要去对这些东西刨根问底,现成的拿来就用罢了,当你深入其中的时候你自然会发现函数语言的价值。

- 评论人:wintereagle

Fri Jun 04 09:38:33 CST 2004 

相对于人来说,functional language恰恰是最接近人类思维方式,以及数学地描述形式。functional language,的关键点就在于模式匹配。什么是模式匹配?这个话题可就深奥了。最好去看<公理集合论导引>和<递归论>,这些东西满有趣的。说个最简单的例子吧,自然数集的定义就是一个模式匹配。1,2,3,4...这些最常用的数字是怎么定义出来的?它是这么说的:
-一个自然数是一个集合,记为X;
- 如果集合X是一个自然数,那么它的后继集合X union {X},记为X+,也是一个自然数;
- 空集{},记为0,是一个自然数;
- 所有自然数都是这样产生的。 
如果我们做些例子就能看清楚:
0 = {}
1 = 0+ = 0 union {0} = {0} = {{}}
2 = 1+ = 1 union {1} = {0, 1} = {{}, {{}}}
3 = 2+ = 2 union {2} = {0, 1, 2} = {{}, {{}}, {{}, {{}}}}
4 = 3+ = 3 union {3} = {0, 1, 2, 3} = {{}, {{}}, {{}, {{}}}, {{}, {{}}, {{}, {{}}}}}
...
这就是模式匹配,所有functional language的精髓所在。


- 评论人:dreamhead

Fri Jun 04 08:57:36 CST 2004  作者邮箱  作者Blog

我没有用过LISP,但通过各种渠道了解的信息来看,LISP代表的是另一种思维方式,同C完全不同的一种思维方式。正如taowen所说,没什么东西非用functional的语言不可的,但学习LISP应该可以获得另一种收获,一种可以借鉴到我们日常工作中的收获。不是有人常说“边界效应”吗,显然学习LISP对于C一族的人来说,可以获益更多。

- 评论人:charon

Fri Jun 04 07:55:44 CST 2004 

其实python,groovy中或多或少都有一点函数语言的影子。
另外,Lisp的debug和错误能力并不会弱于其他语言,至于IDE,不是没有,而是国内用得少而很少传播。
现在AI的人很少学LISP,反而Prolog是首选。
autocad中倒有一个visual lisp。

- 评论人:simontang

Fri Jun 04 01:46:17 CST 2004 

Lisp主要是研究AI的人用的,数学系的人可不会去用这个家伙。

- 评论人:simontang

Fri Jun 04 01:46:07 CST 2004 

Lisp主要是研究AI的人用的,数学系的人可不会去用这个家伙。

- 评论人:taowen

Thu Jun 03 22:26:54 CST 2004 

功能都达到的情况下,无非就是源代码的表现形式不同。如果论执行的效率,我想functional的语言情况并不是非常理想。而debug,错误处理,IDE支持等各个方面,functional的支持还是很不行的。

- 评论人:charon

Thu Jun 03 20:51:02 CST 2004 

另外,语言之间确实没有什么不可替代的。不过,函数式语言得到的不仅仅是语法上的便利。

- 评论人:匿名

Thu Jun 03 20:49:15 CST 2004 

在国外lisp的一个变种scheme是计算机系的一门入门课。有一本书"计算机程序的构造和解释(裘宗燕译)"。
这是一本很有意思的书。

- 评论人:taowen

Thu Jun 03 18:17:15 CST 2004 

感觉没什么东西非用functional的语言不可的,以前也了解过lisp和haskell,感觉没有什么出奇伟大的事情。语法上的便利很容易被大家的不熟悉抵消掉。

评论内容: