论坛首页 编程语言技术论坛

MF高度评价DHH和RMH宣称J2EE将死

浏览 32972 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-07-12  
macro没有利用任何反射能力,和类型也没有关系

Lisp macro(我只知道Common Lisp)的macro主要是开放编译器内部的结构,把词法分析、语法分析和语义分析和执行中间割裂(不过S-Expression非常简单,基本上没有语法),Lisp的S-expression只管形式正确,而Lisp Form才管语义,用户编写的macro扩展的过程是把s-expression翻译成Lisp Form,经过Lisp的编译,然后才被执行。也就是说同一个macro针对不同的数据可能产生不同的Lisp Form(或者说不同的Lisp代码),执行效率也非常高。这是我讲的对同一个类的同一个方法,第一次执行,我们用Ruby的instance_eval动态根据不同对象生成它自己的singleton method的过程,第2次执行就类似于已经“编译”了。

虽然和你讲的东西都有关系,但我表达的主题不再这些东西上。这并不是动态语言的特性,也不是函数型语言的特性,也不是反射的问题。虽然都有关系。



我不太喜欢看到评论的时候把Ruby/PhP/Python这样列一遍,他们是不同的,只浮在这个层次,那讨论没有任何意义

另外:http://wiki.rubytao.com/RubyTAO/page/show/RubyBlock+vs+LispMacro
0 请登录后投票
   发表时间:2006-07-12  
about Ruby DSL. 来这里吧

http://forum.iteye.com/viewtopic.php?t=21273
0 请登录后投票
   发表时间:2006-07-12  
我对空头讨论不是很感兴趣

当年为了看设计模式去买Smalltalk Best Practice patterns,为了学习Smalltalk Best Practice patterns,我看了两本smalltalk的书。这一年多来为了学习Ruby我重新看了一本smalltalk的书,用翻译软件看了Ruby Hacking Guide,并且根据Ruby 1.8自己写了很多Ruby源代码方面的体会,一直跟踪着YARV的发展。

另外我从头到尾把OnLisp和Practical Common Lisp的例子仔仔细细都做了一遍,Paul Graham 的文章全部仔细阅读了好几遍,并且一直在关注Lisp这个社团。

我相信自己对Smalltalk和Lisp都有一定的了解。而对JavaScript,Python和C#我根本不了解,所以我没办法讨论。

Lisp是一种伟大的语言,但我对目前的Lisp社团很失望。最大的失望是他们更多关心别的语言多于对Lisp的讨论,经常的论调是什么东西在Lisp里面n年前都已经有了。在我看来是没有信心的表现。

而在Ruby社团,完全是不同的景象,大家最关心、讨论得最多的就是Ruby。就拿我自己来说,我在学习Ruby,我只关心Ruby可以作到什么样子,Ruby可以从别的那里借鉴到什么。对于别人讨论Ruby只不过是什么什么,我不敢兴趣,我相信自己的感觉,并且关心别的语言可以做什么还不如更多地关心Ruby本身。
0 请登录后投票
   发表时间:2006-07-12  
potian 写道
我对空头讨论不是很感兴趣

当年为了看设计模式去买Smalltalk Best Practice patterns,为了学习Smalltalk Best Practice patterns,我看了两本smalltalk的书。这一年多来为了学习Ruby我重新看了一本smalltalk的书,用翻译软件看了Ruby Hacking Guide,并且根据Ruby 1.8自己写了很多Ruby源代码方面的体会,一直跟踪着YARV的发展。

另外我从头到尾把OnLisp和Practical Common Lisp的例子仔仔细细都做了一遍,Paul Graham 的文章全部仔细阅读了好几遍,并且一直在关注Lisp这个社团。

我相信自己对Smalltalk和Lisp都有一定的了解。而对JavaScript,Python和C#我根本不了解,所以我没办法讨论。

Lisp是一种伟大的语言,但我对目前的Lisp社团很失望。最大的失望是他们更多关心别的语言多于对Lisp的讨论,经常的论调是什么东西在Lisp里面n年前都已经有了。在我看来是没有信心的表现。

而在Ruby社团,完全是不同的景象,大家最关心、讨论得最多的就是Ruby。就拿我自己来说,我在学习Ruby,我只关心Ruby可以作到什么样子,Ruby可以从别的那里借鉴到什么。对于别人讨论Ruby只不过是什么什么,我不敢兴趣,我相信自己的感觉,并且关心别的语言可以做什么还不如更多地关心Ruby本身。


那个帖子是为了potian划演讲场的。
讨论Ruby,我还了解不多,还不够资格讨论。smalltalk也是。
potian每提出一个名词,我就要去查半天。那些只是资料的整理。

回到这个帖子。
Robbin把RoR rocks,和Java将死放在一起。
不由得令人联想。Java将死主要是因为本身的僵化原因,还是因为Ruby这样的新型武器崛起。
我写的内容,基本上围绕Java是否有挽救的希望。倒不是因为对Java有很深的感情。Java的很多语法令人恼火。ajoo发过很多抱怨的帖子,估计体会更深。
而是一种对其他语言的不信任案:另一种语言又能好到哪里去?

同时还是希望有这样一种语言,能有这样的跨度。
正如当年的c对汇编,对cobol, C++ 对 c, java 对 c++

ruby, python, php5, c#列在一起,是因为我几次想实现多语言上的系统移植 (我一直比较喜欢MS的多语言无缝继承概念),大致观察了它们的特性。
只是我比较愚钝,几次尝试之后,并没有看出来太多的吸引力。也主要是因为时间和功夫没有花到,没有真正理解到里面的精髓。

既然这个帖子引出了potian的玉,砖总得继续抛下去。总要靠尽自己熟悉的东西说两句。
不过,有关Ruby深入的东西,我还没有资格讨论,只是保持关注、发问、资料查询补充。
0 请登录后投票
   发表时间:2006-07-12  
可能你误解了,我只是看了太多玩Lisp的人类似的言论,一时吐了些想法而已,看起来倒象是吹牛加打击你了,不好意思
0 请登录后投票
   发表时间:2006-07-12  
:D

没关系。本来这个帖子就有一半是Ruby的。
我发的提到Ruby的内容就有骗贴之嫌。因为我还没有深入了解Ruby。
不过,确实希望你能把Smalltalk, Ruby DSL之类的继续下来。
骗贴也是为Robbin的帖子骗的。:D

那个什么smalltalk receive, method execute。我搜索了一下,没找到什么明白的信息。毕竟一点都没有接触过。
0 请登录后投票
   发表时间:2006-07-12  
Robbin发新闻帖的水平越来越高,呵呵

不过这两个新闻联系在一起确实不能不让人产生某些联想
0 请登录后投票
   发表时间:2006-07-12  
这两个新闻放在一起自然有用意的。

MF对DHH的表扬主要体现在对于框架应该如何正确定位上,而RMH批评的恰恰就是Java框架的定位问题。rails和Java正好是一个问题的正反两方面的例证。

点睛之句是:
Martin Folwer 写道
Perhaps it reflects my Unix background, which thrives on many tools that do one thing well, rather than a complex tool that tries to do many different things.


这个观点其实非常值得玩味,不光是编程语言,其实这个世界上的很多事情都是这样的,就拿JavaEye来说,也是一样,偏执的追求仅仅做好一件事情,而不是样样都想做好。其实就是Google,也是坚持把搜索这件事情做到了最好,所以它很成功。

再举个例子来说,Hibernate其实已经越来越复杂了,Hibernate3.2支持的对象映射关系和种类实在花样繁多,绝大多数连我都没有掌握,但是实际项目中,这些复杂的映射被用到的情况少之又少,就算用到,也有办法绕过。

回想Hibernate2.0和现在3.2比较,就会发现Hibernate在走一条大而全的路线,企图囊括越来越多的功能,但是同时对它的抱怨也是与日俱增。为什么不像DHH那样偏执的坚持框架的简洁性,只追求做好单一的事情呢?

所以从某种程度上来说,rails的成功不是语言的成功,而是坚持了正确的做事情的方式。
0 请登录后投票
   发表时间:2006-07-12  
(奇怪,这么耸人听闻的标题,竟然没有引来一片哗然。本以为应该有很多java铁杆fans跳出来的。)

抬一下杠。我怎么觉得。
Rails is one tool that tries to do at leat 3 things : template, controller, OR model, and test script, database migration, web service, web test, DSL, etc.

相反,java 的很多framework就是做一件事情。
做OR的做OR,作IoC container的做IoC,作template的做template,做mvc 的做mvc。DSL Business Rule就做DSL Business Rule。
组合起来做一件事情 -- web开发。many tools that do one thing well


Just kidding。话嘛,怎么说都行。

还是回头专注于fact 。
将死的java 还是有一个阵地可以退守,大型电子商务网站。
另外,大型金融中间件还有不少 C++ Corba。Java把JTS做好,去挤这块吧。
0 请登录后投票
   发表时间:2006-07-12  
我现在担心Ruby的编程远远比Java复杂的多,对某些人可能是发挥创造力的利器,而对另外人可能意味着灾难

用Java大家都一样,但是用Ruby,程序员之间的差距可能就很容易体现出来了,这里的问题有正反两面

譬如,曾经最成功的电子商务网站是Paul Graham用Lisp搞的Yahoo Store,但据说最近要被换成一种项目经理都可以掌控的语言,免得被一些天才的程序员搞死

http://www.paulgraham.com/avg.html

的文章也值得一读

-----
当然,Ruby从语法上已经作了很多的努力让代码更加可读和可维护,更加自然

但是DSL的使用者和创造者可能有非常大的差别
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics