分享

说说动态语言

 guitarhua 2013-11-28

我跟好几个开发一线的朋友聊技术的发展,突出的一个感觉是大家都在关注动态语言。有的是使用多年,眼见发展态势不错,大有为自己的先见之明扬眉吐气之感,有的则是刚刚使用,仍处在兴奋不已的状态之中,当然也有仍然保持观望态度的,不过即使是最“保守”的,也能够对动态语言表现出尊重。这与两三年前相比,已经是很大的进步。记得两年前我与Python爱好者tangtao合作策划《程序员》的第一个“动态语言专题”的时候,内内外外都还有不少质疑的声音,用J2EE的挥舞着“企业级”的大棒质疑动态语言的“严肃性”,用ASP.NET则沉醉于拖拖拽拽的GUI构造方式,自以为开发效率老子天下第一,对于动态语言嗤之以鼻。当时我们感到,动态语言在中国的发展时机还不成熟,所以最后给专题起了一个很有些无奈的名字:《动态语言:隔岸观火》。两年之后的现在,是业界的朋友反过来批评我们的杂志和网站对于动态语言的关注过于薄弱,落后于工业实践。惭愧之余,我这个动态语言的一贯拥护者不禁喜从中来:想不到形势会发展得这样快!

从最近得到的印象来看,我大胆地预言,动态语言在中国的大流行,不会是太远的事情了。首先是在Web开发领域PHP的迅速推广,很快应该会在互联网产业(面向公众的Internet应用)中广泛使用动态语言。这是一大类应用,而且是最活跃、增长最迅速的领域。在这个领域中,动态语言与开源系统结合起来,已经取得了巨大的进展,而且肯定还会取得更大的成功。往下是企业应用,这是主战场,相对来说在这个领域传统力量还是相当强大。动态语言在企业应用领域的道路还很比较长,不过机会仍然很大。在往下是PC软件开发领域,在国外,动态语言正在沁入,不过这个领域基本饱和,不太受关注。国内的软件产品开发,规模小,类型单一,影响力更是可怜,不提也罢。总之,几年之内,动态语言一定会像野火一样蔓延开,势不可挡。

我这个看法不仅仅是对于形式发展的总结,也来自于对软件技术发展趋势的认识。节前在CSDN跟gigix和xjy做过一个视频访谈,就谈了这个问题。我们觉得,广泛采用动态语言是互联网和企业迅速变化的现实所决定的一个趋势。

现在的企业应用跟十年前的MIS可是大不一样了,需求不断变化,修改没完没了。而互联网应用呢?在变化的剧烈和频繁方面,与企业应用相比可谓有过之而无不及。这本质上是因为企业在迅速变化,消费者在迅速变化,人们的需求在迅速变化,世界在迅速变化。现在经验比较丰富的企业开发者越来越达成共识,即事先分析企业应用、对抗需求变更,几乎肯定是死路一条,不管你采用什么先进的软件工程方法、建模工具、UML语言,都无法根本解决问题。你所服务的对象自己都天天在变,你怎么可能事先量好人家的需求然后慢吞吞地去添砖加瓦呢?既然无法避免变化,不如适应变化。与其想办法预见变化,不如让自己有能力迅速随需应变,提高自己对变化的反应能力,降低变化带来的成本。

这已经是共识了,问题在于怎么随需应变。分歧就在这里了。今天做ASP.NET、J2EE开发的离不开XML,就是为了“随需应变”,在变更发生时用XML来重新配置系统。以J2EE为例,高水平的J2EE开发者把XML文件越写越复杂,最后根本就就是把XML当成领域语言来用。说白了,就是把J2EE往上扩展成一个面向领域的引擎,再用一层标准化的、薄博的XML来最后的编程,我称之为“强引擎,弱脚本”方案。这样做是有原因的,Java/C#好歹是个编译语言,变更修改重新部署的成本比较大,所以要配合XML使用。但结果怎么样?并不理想。首先系统设计难度还是很大,你还是要设计一个强劲的引擎,设计得不好就带不动XML脚本。而设计这个强劲的引擎还是挺难的,设计错了修改起来还是挺麻烦的,发布以后也难免还要花大力气维护的。这问题没解决多少。

其次,也是我个人最反感的,就是XML的滥用。XML那东西本质上是用来在程序之间进行数据交换用的,是给程序读写的,不是给人读写的。无论从哪个角度来看,XML对人的阅读和创作都是非常不友好的。结果为了配合J2EE,硬是赶鸭子上架,让XML充当DSL,逼程序员去学习读写XML这种非常没有趣味的“语言”,真是不人道。更有甚者,为了使用各种框架、面向各个领域,开发者还很可能要学会多种不同语义的XML方言,而且很多这样的XML方言根本就没有经过设计,是土法炮制出来的。两种截然不同的语言搅和在一个系统里已经够糟了,更糟的是多种土法炮制的XML方言土语一起搅和在系统里,结果搞得各种语义不同的XML就像癌细胞一样在程序里扩散,这样的系统只能用恶心来形容。

总之,这种“强引擎,弱脚本”的方式,我认为是没有前途的。

相反,动态语言解决问题的方式是提供相对小而灵活的引擎,强大的语言机制,极其庞大丰富的可复用模块。你基本上在动态语言的范畴之内搭建整个系统,脚本与核心对象浑然一体,解决问题直截了当,无须转弯抹角,无须看似精妙其实无奈的一大堆架构、模式。动态语言一般实现了数据和程序的统一,基本不需要XML,程序易于变化,任何一处均可随时修改。语言的动态性也赋予你模拟领域语言的便利条件。结果便是,适应变化的能力大大增强,变化成本大大降低。很多以前的不可能将成为可能。

所以我觉得,是变化的世界要求我们使用对变化友好的动态语言。这就是结论。

另外,从程序员的角度来说,使用动态语言编程要比使用传统的编译语言,尤其是编译型面向对象语言轻松自如的多,从而也有趣得多。没有那么多条条框框,没有那么多城府沟壑。比如C++/Java/C#都极力反对用异常作为正常情况下程序跳转的工具,所谓“只在异常情况下使用异常”,说来容易,做起来常大费周章。而Python/Ruby都纵容甚至鼓励你使用异常作为正常程序流控制手段。比如Python中for循环的终止,在内部就是通过引发StopIteration异常实现的。能随意用异常作为流程控制手段,真是能省下不少脑细胞。比如我们平常津津乐道的不少设计模式,在动态语言里根本就是多此一举,一切来得直截了当,根本不用如此拐弯抹角。再比如Ruby可以在一个class被定义并且在系统中已经被应用的情况下,在系统运行时随意修改这个类的定义,Python中只要略施小计也可以做到,这在传统OOP语言中根本不可能。而Ruby在其招牌项目Rails中表现出来的declarative language的能力,也是令人惊羡的。使用这些动态语言,要先解放思想,之后就会有挣脱束缚,放开手脚的感觉。对于程序员来说,这当然是很惬意的。

评论

  记录点滴 感悟如水 发表于2006-05-07 14:31:00  IP: 193.69.116.*
TrackBack来自《说说动态语言》:

转自<a href="http://blog.csdn.net/myan/archive/2006/05/05/708685.aspx" _fcksavedurl=""http://blog.csdn.net/myan/archive/2006/05/05/708685.aspx"" target="_blank">孟岩的Blog</a><br/><br/>  五一长假之前,我跟好几个开发一线的朋友聊技术的发展,突出的一个感觉是大家都在关注动态语言。有的是使用多年,眼见发展态势不错,大有为自己的先见之明扬眉吐气之感,有的则是刚刚使用,仍处在兴奋不已的状态之中,当然也有仍然保持观望态度的,不过即使是最“保守” 的,也能够对动态语言表现出尊重。这与 ...

   发表于2006-05-08 22:03:00  IP: 202.194.15.*
TrackBack来自《?????》:

http://blog.csdn.net/myan/archive/2006/05/05/708685.aspx????ü??????о?????е???????????ü?Уе????? ...

  陈大乾 发表于2006-05-05 11:38:00  IP: 210.77.11.*
python现在比较火的

  sunxiunan 发表于2006-05-05 11:24:00  IP: 221.201.27.*
来占沙发了,
Ruby现在火的一塌糊涂啊


by 孩子气*孙秀楠宝宝
http://www.

  gooden 发表于2006-05-05 17:09:00  IP: 58.23.92.*
严重同意一点,XML实在是好恶心。。。

  targa 发表于2006-05-05 21:18:00  IP: 219.242.115.*
偶是菜鸟,XML看着就头疼,学校也没开相关的课程,但是眼看着非常重要不得不自学。。。

  littlestone 发表于2006-05-06 00:48:00  IP: 222.212.77.*
个人觉得,近年动态语言在国内普及的可能性微乎其微,原因无他,技术基础总体太薄弱,没有足够的精力去实践

  mikeshi 发表于2006-05-05 21:59:00  IP: 61.173.244.*
两手抓,两手都要硬!!!不可只抓动态而放弃了传统编程语言

  语文 发表于2006-05-06 07:56:00  IP: 221.203.145.*
是"形势"而非"形式" 通篇多处错别字 太不严谨了吧

  myan 发表于2006-05-06 08:23:00  IP: 218.197.128.*
to 语文:
谢谢指出错误。我也发现了一些错字,但是不知为什么这两天csdn blog访问速度特别慢,更新不了。等到回北京再改吧。

  GUIer 发表于2006-05-06 10:16:00  IP: 221.197.22.*
拖拖拽拽的gui构造方式怎么了,掌握好尺度即可。鄙视那些自以为只用VI就能开发的人,SB一个。你怎么不每天钻木取火来做饭哪,多NB呀。

  myan 发表于2006-05-06 11:25:00  IP: 218.197.128.*
to GUIer:
你最好看清楚我说的是什么意思再发言。拖拖拽拽构造GUI有什么错?当然是程序界面构造方式的巨大进步,我什么时候反对过?我反对的是那些有了这种RAD开发工具就自以为开发效率天下第一的错误想法。

说脏话不是不可以,不过也要看清楚,“掌握好尺度即可”。

  d 发表于2006-05-06 13:14:00  IP: 200.118.2.*
动态语言确实灵活得多.

  墨子壳 发表于2006-05-06 14:49:00  IP: 210.76.108.*
呵,php也有了自己的动态框架 http://www./ php on trax 就像ruby on rails一样的设计,不知道发展如何...

  GUIer 发表于2006-05-06 15:55:00  IP: 221.197.22.*
SORRY, 是我看错了,抱歉。

  刘典 发表于2006-05-06 17:26:00  IP: 221.9.138.*
Python/Ruby这类动态语言的灵活性虽然对提高开发效率有一定帮助,但毕竟还是通用语言,抽象度很底。描述一个高层次问题仍然需要非常多的代码。领域专用语言总是在一个非常高的抽象层次上描述问题,代码量很少,比动态语言能更有效的提高软件开发效率和适应频繁的修改,即使是丑陋的xml语法,孟老师觉得呢^_^

  雪山老人 发表于2006-05-06 15:03:00  IP: 210.76.108.*
这是我翻译的文章:php下一代的五个框架: http:///mzk/index.php/1007/ArticleContent/317.html?mzk_style=green

在动态语言上php将有会很大的响应

  f4545 发表于2006-05-06 16:07:00  IP: 221.226.214.*
孟岩一日三变乎, 只晓绝对运动, 不知相对静止!

  myan 发表于2006-05-06 18:37:00  IP: 218.197.128.*
to 刘典:
DSL的确是发展方向,做领域应用的话无人能出其右。但是DSL需要有一个强大的、面向领域的语言引擎支持。因此,到了DSL的时代,DSL本身就不是关键了,反而它下面的引擎成了关键了。我批评J2EE+XML的关键就在于,用Java这样的语言去做面向领域的引擎,并不比直接去做应用本身容易多少。而动态语言这方面的表现就会好一些。而一旦使用动态语言去做引擎,也就没有必要用XML来做驱动脚本了。

现在谈DSL还有点早,说实话,主流动态语言里没有一个让我觉得特别理想的,他们都有不少毛病,真的发展起来之后,毛病都会暴露出来,引发动态语言的下一轮变革。所以在动态语言这个阶段也还会有很长的路要走。

  Merlin Ran 发表于2006-05-06 22:20:00  IP: 222.55.55.*
我见识过大唐做的一个电信计费系统,使用者可以用非常接近自然语言的方式描述优惠规则,没有编程经验的用户经过一定培训,也可以熟练掌握它。这里面最重要的因素是:语言本身是全中文化的。
我觉得像易语言这样的中文语言,充当DSL的角色时比较得心应手。但不是直接把它拿来就可以用,得针对应用领域做定制。

  wavelet 发表于2006-05-07 08:16:00  IP: 142.167.167.*
I don"t think ruby will go very far.Do you know why java was poplur?I disucssed with my friends ,we got a conclution .
one reason ,Of course ,is web ;howver,the reason was Y2k.Y2k gave the room that let j2ee go to enterprice application.
Ruby /rail missed the big opportunity.web2.0 could not provide enough support to RnR.

  嫣然一笑 发表于2006-05-07 01:28:00  IP: 222.169.24.*
其实,语言并没有好坏之分,用语言的人才有强弱之别:),每个国家的人都会说自己的语言是最美的。
语言的抽象性往往易用性成正比,而与运行速度和细节的可操作性成反比,这也是很正常的。
所以做什么事还得用配套的工具,我们不能拿着扳子修手表。
而买电脑的人的水平当然也不能去做电脑。即使你赚钱再多,再快。


  ddee 发表于2006-05-07 11:00:00  IP: 222.183.193.*
的确看久了xml会心烦

  ishou 发表于2006-05-07 13:55:00  IP: 202.156.163.*
myan: ”。。。说实话,主流动态语言里没有一个让我觉得特别理想的,他们都有不少毛病,真的发展起来之后,毛病都会暴露出来,引发动态语言的下一轮变革。所以在动态语言这个阶段也还会有很长的路要走。。。“
-----------------------
深有同感!

虽然动态语言有很多,姑且不看它们的功能如何,就其书写方式来看,不少让人难受,这些语言有个通病:关键字使用泛滥!好象是关键字使用越多,越能体现语言的功能越多似的!电脑语言与人们日常用语有着本质的区别!它实质上是非常注重逻辑表达的“语言”,类似数学中的表达方式, 数学表达式中的操作符(+-*/..)有常用关键字表达的吗?如果数学表达式基本上使用文字表达情况会怎样?大家应该明白结果会怎样:可读性差(不是有文字的地方就是可读性好,可读性不仅包括读懂、也包括快速理解内容),真正能写、读程序的人,没有必要反复告诉他”+“是 “加法”。另外,同样的事,用文字的表达往往
可以不止一种,学习的人要记住语言要求使用的是其中哪种不是很容易的事,关键字本身也不好记,Ruby怕程序员拼写错关键字,接受一些拼写错误的关键字,很可爱,不过这好象是在制造新的问题而不是根本解决问题。 作为解释性语言,很多错误只有在运行时才能发现,关键字的错误,往往是致命错误。 大量使用关键字的程序,尤其在没有很好程序格式下,看起来象盘散砂,也象一篇“四不象”的文章。

现在比较“火”的语言: Perl、PHP、Ruby等,看起来有一种莫名难受的感觉,好象是语言不成熟、也好象是该语言认为程序员不成熟、弱智?这些语言老是带着"婴孩脐带",大量使用 @ $ 等前缀符!Python中的前缀 self.也让人不好受。 self. 前缀可是 Python的一大特色!Python把 空白符/空行成为控制程序的一部分,很让人不可思议!比如:程序行前面多一个空白字符( " "),也会造成程序错误!岂有此理!非常可惜,该语言在许多方面相当不错啊!Ruby中太多怪异、难记的规则、关键字,虽然写出的程序可以比较简短,但是可读性不好。


myan: "...Ruby可以在一个class被定义并且在系统中已经被应用的情况下,在系统运行时随意修改这个类的定义..."
------------------

这样的动态,对Ruby的发展恐怕没有好处,现在Ruby的线程(thread)是语言级,差强人意,不支持多CPU环境(多CPU时代已经开始了!),过分这类动态,只会增加线程实现的难度, 削弱线程性能。

现在流行的这些动态语言(脚本语言基本上都是动态语言),确实是比较通用型的(也不确切,好象比较注重网络方面的应用),把它们直接用在工业应用中,并不合适,有待相关专业人士在C/C++接口上扩充专业功能模组。现在一般的大型软件,都会自带脚本语言,不过没有几个象样的,但是,不要小看它们,尽管它们不太象样,可对主体软件的帮助却很大,可以成千成万倍地提高主体软件的功能和灵活性!一个好的软件,不是拥有包罗万象的功能,而是要具有扩展包罗万象功能的潜能,靠什么?靠二次开发接口/语言,其中很重要的是提供脚本语言。每个大型软件都自带一个不一样的脚本语言,学习起来实在累!脚本语言不仅仅是让专业程序员掌握使用,更要让相关应用的专业人士能够掌握使用!因此不该太难学。在众多的大型应用软件中AutoCAD的二次开发的多元化环境是相

  ss 发表于2006-05-07 12:21:00  IP: 222.211.137.*
wavelet.有点NB哦,用英文,不过好象有错
XML不爽

  Lig 发表于2006-05-07 16:52:00  IP: 221.218.91.*
我支持部分观点,J2EE的确太不灵活,我们在强调软件工程的同时引入了软件研发复杂性,或者说是官僚性,使得开发效率下降若干数量级。但是如果过于强调“动态语言”,恐怕又回到“代码无法维护”的老问题上了。


  ishou 发表于2006-05-07 16:57:00  IP: 202.156.163.*
虽然 脚本语言只能在运行过程检查错误,不过,脚本语言一般都短小精悍,容易局部分离出来进行局部调试,比较容易查出、并修改错误。而编译型语言讲究程序的完整性,要局部分离调试不容易。

  ishou 发表于2006-05-07 17:04:00  IP: 202.156.163.*
To Lig: “代码无法维护”,是现在动态语言的一个弱点,但是不是动态语言固有的, 好的动态语言应该可以解决这个问题。

  ishou 发表于2006-05-07 17:09:00  IP: 202.156.163.*
To: TripleX,

高版本的javaScript语言的程序结构,确实不错,但是该语言支持的数据类型太少了。

  python 发表于2006-05-07 17:20:00  IP: 219.232.44.*
个人还是比较喜欢python的

  gandolf 发表于2006-05-07 15:01:00  IP: 67.170.88.*
I just want to point out that the only language that can be remorphed and adapted to any specific domain is LISP. The whole back-end of Orbiz.com was written in LISP.

One problem about dyanmic language is semantic check. Remember, one of the most important goals behind static type system is to help enforce run-time semantics. With runtime system like .Net, amazing semantic check can be done. There is a static check tool called prefast shipped embedded in Visual C++ 8.0 is available for C++. I don"t think you can do that to dynamic languages. Then what you have to do is to carefully handle the runtime error in your code.

PS: I really don"t understand why languages like Ruby is all of a sudden such a big deal, SQL has been a perfect DSL for almost 25 years, its success has not been superseded so far.

  TripleX 发表于2006-05-07 15:22:00  IP: 61.51.71.*
脚本语言的关键字也不太多 比如python就只有这些
and del for is raise
assert elif from lambda return
break else global not try
class except if or while
continue exec import pass yield
def finally in print
比c++少 因为python是动态类型的 所以没有int float这样的关键字
self不是python的关键字 它的文档是这么说的
Conventionally, the first argument of methods is often called self. This is nothing more than a convention: the name self has absolutely no special meaning to Python.
以后python perl什么的 都会基于parrot虚拟机 不知道还会不会象现在footprint这么小 很容易嵌入到别的东西里去 javascript也是
很不错的一个脚本语言 颇有一些游戏和应用软件用javascript做内置脚本引擎的

  ishou 发表于2006-05-07 17:47:00  IP: 202.156.163.*
下面是Perl 发明者 Larry Wall 的一个答问:

问:有什么功能是大家都需要而你又不会放到 Perl 6 里面去的?

答:
。。。。。。。
现在你肯定在想,大家要求最多的一定是除去 $、@ 和 % 符号,但是通常来说只有不理解 Perl 的人才会提出这样的要求,而且即使你满足了他们的要求,他们还是不会使用 Perl 的。理解 Perl 的人一般会倾向于喜欢这些符号。

----------------
什么逻辑?

  Lonelv 发表于2006-05-07 15:46:00  IP: 60.9.132.*
支持

  BLACK CAT 发表于2006-05-07 18:02:00  IP: 61.142.127.*
<simple-method short-description="getOneShortMessage" method-name="getOneShortMessage">
<log level="info" message="++${parameters.smsCommonMessageId}"/>
<entity-condition entity-name="SMSCommonMessage" list-name="cm">
<condition-expr field-name="smsCommonMessageId" operator="equals" value="${parameters.smsCommonMessageId}"/>
</entity-condition>
<first-from-list list-name="cm" entry-name="cm1"/>
<string-to-field string="${cm1.smsCommonMessageId}" field-name="smsCommonMessageId"/>
<string-to-field string="${cm1.smsCommonMessageBody}" field-name="smsCommonMessageBody"/>
<string-to-field string="${cm1.smsCommonMessageClassId}" field-name="smsCommonMessageClassId"/>
<field-to-request field-name="smsCommonMessageId"/>
<field-to-request field-name="smsCommonMessageBody"/>
<field-to-request field-name="smsCommonMessageClassId"/>
<string-to-field string="action" field-name="action"/>
<field-to-request field-name="action"/&

  ishou 发表于2006-05-07 16:34:00  IP: 202.156.163.*
1) 程序中大量/泛滥使用关键字,不仅仅是指使用大量不同的关键字,同样的关键字在不该使用关键字的地方频繁使用也是一种泛滥。

if not self.inGrab and self.curFunc: //Python
if (!inGrab && curFunc) //C/C++

哪个简洁易读?一目了然吧。 Python那行 十足象一句话, C/C++才象 表达式吧?

2) Python 中的self.确实不是关键字,而是类的成员函数的一个特殊参数,既然是参数,可以取别名,但是不管怎么改名,这个特殊参数好象必须存在!这个参数的存在,应该是Python内部实现机制的需要,Python把它转嫁 给程序员为其“搭桥”,程序员的心甘愿吗?这个self 有点象 C++中的 this, 如果C++中要求程序员必须为每个操作的成员 前缀 this->, 程序员肯定会 荤掉!甚至疯掉!

  Tony Bai 发表于2006-05-07 21:13:00  IP: 218.25.32.*
无论是动态语言还是xml,自己在工作中都接触较少,看过ruby,但是没有深入,观望中:)

  bluesen 发表于2006-05-07 21:15:00  IP: 219.133.233.*
To wangzx:
所谓XML可读性,当然是和动态语言相比的,比如流程结构,表达能力。

  caikanxp 发表于2006-05-07 23:18:00  IP: 221.234.214.*
这些个问题跟操作系统的开发关系不大吧?嘿嘿

  clamphammer 发表于2006-05-07 19:52:00  IP: 221.136.228.*
程序语言是未来软件开发的"二等公民", 对于程序员,需要的是快速解决问题的能力, 而对于经理,需要的是如何把复杂问题分解为可解决的子问题的能力,二者都需要的就是学习能力。我们的目标还是建造软件,而语言仅仅是其中的一个工具而已。

  jav 发表于2006-05-07 20:03:00  IP: 58.24.140.*
ishou 发表于2006-05-07 5:47 PM IP: 202.156.163.*
下面是Perl 发明者 Larry Wall 的一个答问:

问:有什么功能是大家都需要而你又不会放到 Perl 6 里面去的?

答:
。。。。。。。
现在你肯定在想,大家要求最多的一定是除去 $、@ 和 % 符号,但是通常来说只有不理解 Perl 的人才会提出这样的要求,而且即使你满足了他们的要求,他们还是不会使用 Perl 的。理解 Perl 的人一般会倾向于喜欢这些符号。

----------------
什么逻辑?
========================
我就是奇怪啊, 原来学Perl的时侯看那么多怪异的符号越看越烦, 本来可以简单表示的一句话, 它要弄成很复杂的一段符号, 看多了确实头疼.

  bluesen 发表于2006-05-07 20:16:00  IP: 219.133.233.*
孟岩写的不错,很有见地。尤其是对XML滥用的评述,深得我心。
自从XML像感冒一样地流行起来后,大部分程序员处于盲从状态,完全失去了对该技术适用范围的判断力。
联想到语音开发领域,所谓的VoiceXML我觉得也是个失败的设计,我的解决方案也是设计一种灵活优雅的动态语言,请各位指正:
http://www./koodoo/index.htm

  Mike 发表于2006-05-08 00:11:00  IP: 218.79.34.*
动态语言跟脚本语言有什么差别啊?比如Ruby和Javascript
孟老师能否解释一下?

  wangzx 发表于2006-05-07 20:31:00  IP: 219.136.232.*
==> 其次,也是我个人最反感的,就是XML的滥用。XML那东西本质上是用来在程序之间进行数据交换用的,是给程序读写的,不是给人读写的。无论从哪个角度来看,XML对人的阅读和创作都是非常不友好的。结果为了配合J2EE,硬是赶鸭子上架,让XML充当DSL,逼程序员去学习读写XML这种非常没有趣味的“语言”,真是不人道。

滥用固然是不正确的,任何东西都不应该滥用。但倘若说XML就是用来作为纯粹的数据交换用途,而认为不是作为面向程序员的可读语言的话,我认为理解就大大偏离了XML的初衷了。纯粹的数据交换,EDI或者别的二进制标准可能更可使一些:那个还需要这么庞大的一个语法解析器?

实际上,XML最大的价值就是程序员可读。不逼程序员来学习XML,那么,你就不断的学习不同的配置文件格式、不同的脚本语言吧。

  TripleX 发表于2006-05-08 04:00:00  IP: 61.51.142.*
说到perl里的$ % @符号 来源应该是shell perl最初就是给系统管理员提供一个比shell更强大的脚本工具 至于是不是优美 我觉得是各有所好的事情 就像python里的缩进 习惯了就好 我用python做过一个项目 不大 万把行代码 有一个经验就是从来没有因为缩进的问题导致bug 用一个支持python的编辑器 比如vim 缩进不出错是再自然不过的事情
对这些特性的指责让我想起一个故事 一群地球人移民到了别的行星上 有一天 其中一个人 感叹说 再咱们地球上 春天应该已经到了 作者在这里犯了一个"北半球主义"的错误 在南半球 现在应该是秋天 .....
我们也往往容易犯"c++主义"的错误 我想这也就是larry要表达的意思 理解 Perl 的人一般会倾向于喜欢这些符号。没错 不喜欢的人尝试别的口味好了 为什么要影响现在用的很好的用户的口味呢
我曾经尝试过VBA 感觉完全失败 看来自己不是适合VBA的口味的人 从此不再碰VBA 前几天帮美工写action script 发现for in 循环得到的不是对象本身而是下标 小吃了一惊 也就记住了 只要库设计得还可以 基本都能用的下去

  21 发表于2006-05-08 12:52:00  IP: 219.239.9.*
动态语言很火么?
不觉得.

倒是xml,怎么成滥用了???
再好好学学数据库吧!

  haitao 发表于2006-05-08 11:07:00  IP: 219.134.185.*
上方是待加载运行的Delphi Form的文件名
按"Load-Run-Form"就可以加载此Form运行,
并按其对应的PAS文件里的事件函数来响应对应的事件

左边是Form对应的PAS文件名和内容
可以随时修改PAS文件内容并保存
再按“Load-Run-Form”就可以按修改过后的PAS文件来运行了!

http://szhaitao./article/279872.html
界面设计、代码调试:可以完全借助于Delphi
从而一扫脚本程序的作界面、调试繁琐的弊端!

最新的演示程序下载:
http://www./index.php?rm=box_v2_download_shared_file&file_id=f_9504169

  鄙视小日本 发表于2006-05-08 08:52:00  IP: 218.17.77.*
就是恶死在IT业,也不学RUBY!那是小日本的东西!

  haitao 发表于2006-05-08 11:17:00  IP: 219.134.185.*
Delphi script 的演示界面:
http://fs8./0/768/szhaitao/share/200642102935607.GIF

  abc 发表于2006-05-08 14:24:00  IP: 58.24.231.*
java等语言特点是有严格规范的编写方法,便于工业级的软件生产操作,然而问题是随着这些语言所建立的软件系统变得越来越庞杂,各种花样繁多的架构和pattern每个都试图强调自己的通用性而不是易用性,结果是开发一个简单的应用也跟一个复杂应用一样基于一个复杂的架构(比如Struts,Swing,Hirbernate ...)和很多个pattern。结果是走向了另外一个极端,一个应用开发和测试的开发成本不是越来越小,而是越来越高。应该说新的语言和开发架构的确是对需求变化和开发架构的重新思考。

  刘典 发表于2006-05-08 11:30:00  IP: 218.27.69.*
"动态语言跟脚本语言有什么差别啊?比如Ruby和Javascript"

动态语言就是说类型和值邦定,Ruby javascript都是动态语言,他们定义变量的时候都不用指定类型,变量类型是他的值决定的。

至于脚本语言好像只要是只要从用户角度来看 不需要编译,写完就用的都可以算脚本语言。

  Mike 发表于2006-05-08 17:57:00  IP: 218.79.31.*
谢谢刘典的回复。

按你的解释,那Ruby在我看来就是脚本语言啊,至少是和脚本语言的技术实现是同一个层次的。“他们定义变量的时候都不用指定类型,变量类型是他的值决定的”,像这种特性,基本上就决定了Ruby(包括Javascript)是解释运行的吧!(这里不考虑某些特殊的类似JIT的二进制优化运行技术)

那也就是说Ruby的性能表现无出Javascript其右啊!和Java/.NET应该差一个层次,和C/C++差两个层次了。

现在Java6自带Javascript解释引擎了,可以说JEE6也有动态特性了啊!

所以说到底,就是现在硬件性能足够好,用Ruby、Javascipt这类的动态语言/脚本语言就可以快速实现企业开发,而性能差异表现不大。实际上,大部分网络应用,用Java开发的和用C开发的程序性能不会有什么差别。因为网络比起CPU慢很多,Java开发的线程和C开发的线程都在大部分时间处在Socket监听状态,程序本身的快慢几乎没影响了。

从这个意义上,我还是不打算学Ruby了,没必要。Javascript就是一个“历史悠久”的很好的东西。坚持用这个即可。JS有微软的支持(可以用来开发ASP,可以调用组件),有大量第三方解释器(包括Java6自带了),在客户端有成熟的应用(包括现在很火的AJAX)。语言习惯接近C/Java和PHP等脚本,无Perl的那些杂七杂八的符号,总之,推荐大家玩这个!

  kiol 发表于2006-05-08 12:26:00  IP: 218.249.220.*
希望那些批评动态语言的是真的用过动态语言。
ruby不是为拼写错误准备的别名,而是那确实是别名,比如
"abc".length和"abc".size。

ruby中的关键字也不多,很多看似关键字的语法,其实是函数调用

  5207 发表于2006-05-08 12:30:00  IP: 220.186.107.*
真是明堂多多!

  Mike 发表于2006-05-08 18:16:00  IP: 218.79.31.*
相信历史还是选择必然的。很多一时之宠现在都难以为继了,比如曾经叱咤风云的VB、Delphi。C、Fortran、COBOL现在还是宝刀不老(有些人说Fortran不行了那是他没在基础研究界混过)。

在此斗胆预言:Javascript将是下一个叱咤风云的动态语言!Ruby和Python可能只是过耳烟云,因为没有历史必然性:),Ruby和Python将作为动态语言的先烈,为Javascript的进一步成熟铺路而永远为人们所怀念 ^_^

Ruby和Python的粉丝千万别骂我啊,我是开玩笑的 ^_^

  Moody 发表于2006-05-08 18:56:00  IP: 131.188.28.*
更坚定了自己用JavaScript的决心了。当年js刚出来时,大家还都认为这个东西也就使小圈子(web)的方言,没想到女大十八变,忽然之间到处都开始用。不过主要集中面向用户交互的领域,macromedia,adobe,或者业余点的就是各种widget。现在更进一步出现了ajax。应该说生命力很是强盛,的确是值得好好掌握。但是最大问题是没有完整的对象,虽然可以new但是方法还是独立的,不能简单地把自己的方法作为ref传递出去,非常烦人

  刘典 发表于2006-05-08 19:49:00  IP: 218.27.69.*
to Mike

动态语言和 解释执行没有任何的关系。一个动态语言也可以是编译性的,反之亦然。而且很多看上去是解释执行的语言其实是编译后执行的,比如perl python,他们都是先被编译成字节码。不过是这个过程是对用户隐藏的,所以我才说“只要从用户角度来看 不需要编译”。

  onlyxuyang 发表于2006-05-08 20:01:00  IP: 221.232.153.*
脚本语言?Lua用过一段时间,Ajax还是和JS比较登对吧
我见识小,没看出来动态语言有什么好.
也许是大家长期在静态语言下工作,厌烦了编译器对类型不匹配的报错了吧.动态语言我感觉是一种责任的迁移,程序员认为自己可以担任类型检查的任务,就把类型检查的任务从编译器手中抢回来了.
A coin has two sides.语言无所谓好无所谓不好,取得类型的自由就失去编译器的保护,也许BUG在不只不觉发现的时候很难找到出错的地方.取得编译器的保护就无法保证在类型方面自由.
用一个说法类比很好,是形容面向对象的.不是说你用面向对象的语言写出来的就是面向对象的程序,不用面向对象的语言就写不出面向对象的程序.标准是一个"度",在相同的条件下,你可以使用面向对象的语言更容易写出结构良好,维护简单的面向对象程序.
动态语言和静态语言也是这样,各有各的领域,就想现在结构化程序和面向对象程序都有各自服务的领域一样.静态语言在各种模式的帮助下也可以模拟出动态语言的效果,只是比直接用动态语言写麻烦点.
动态和静态只是一个相对的概念,"动"态动在哪里?"静"态静在哪里?仅仅一个变量类型的绑定期就能带来2种类型的语言吗?明显是不可能的.
再说动态语言,我没有读过任何一个动态语言的源代码,但是我猜想动态语言的核心,迟绑定的特性是以牺牲了一部分效率来实现的吧?
唯一用过动态语言的地方就是在写的一个游戏中使用Lua,但是我不是因为它是动态语言而用它,而是因为它提供了方便的接口嵌入到我的程序中.
现在在看褒贬不一的ACE,感觉是很复杂,但是良好的设计和强大的可配置性真的让我无比惊讶一个库可以写的如此完美.不可否认ACE中某些类是有点耦合过紧,但是耦合是因为它们大部分机会都是合作成一个框架来运做的.ACE本来就是一个主要以框架为复用单位的库.自然不可以和那些以功能类为复用单位的库用相同的标准比较.
有人说ACE强暴,以框架为复用单位的库也只能这样了.
什么是框架,条条框框嘛,相当于一个脚手架,你要使用它自然得麻烦点遵循着脚手架的区域行进,但是它可以引导你做出好的建筑啊.基于类复用的可以比做提供的是用来做脚手架的竹子,虽然用起来方便,但是能不能做出好建筑主要得看你自己的修为了.
再来说说库....Java,.NET与C++比谁的库优秀自然是欺负人.
Java和.NET都有各自的虚拟机支撑,C++只有孤家寡人一个,库的等级自然没法比.但是STL我始终认为是一个非常优秀的库.
欢迎大家和我交流.

  onlyxuyang 发表于2006-05-09 00:05:00  IP: 221.232.153.*
是的话也是 C++为主,Script 为辅
其实我觉得XML也没什么不好的
XML的强大是没有争议的啊

  ishou 发表于2006-05-08 22:46:00  IP: 202.156.160.*
1)脚本语言程序,肯定是解释型语言程序。解释型语言的程序,即可能是以脚本程序方式运行,也可能不是以脚本方式运行,而是以伪编译、或半编译后的程序运行,这里所谓的编译,基本上是进行规范、优化处理(可能还有其它一些处理),与C/C++中的编译有本质差别。 打个比方,前者是在细胞级,而后者到了原子级。 因此前者“编译”后的运行效率会提高一些,但是仍然与C/C++的编译没有得比。 当然不同解释型语言的编译深入程度也有不同,Java、VB可能编译得比较深入, 有“编译”的Python大概没有那么深。

脚本语言基本上是动态语言。 楼主(myan)所说的动态语言,从其“变”的论述上看,大概是泛指 脚本语言吧?

2)---kiol:
“希望那些批评动态语言的是真的用过动态语言。
ruby不是为拼写错误准备的别名,而是那确实是别名,比如
"abc".length和"abc".size。 。。。”
--------------------------
我所说到的 " Ruby怕程序员拼写错关键字,接受一些拼写错误的关键字", 并不是我自己的意思,这话来自 Ruby 发明者Matz的一席话! length 与size 之间当然不是拼写之差!Matz担心的是一些程序员对一些关键字的拼写的个别字母容易用错,看来Matz真是个体贴入微的人啊!


3)上面说到的Perl设计者 Larry Wall 对有关 @%去除问题的答复,初看起来难以理解,细细想想,他的回答相当微妙。@$%大概是Perl的命根子,去除这些字符,Perl的核心架构也许必须重新改写,
改写后的Perl还是 Perl吗?也许仅仅是名字相同,本质上完全是两种语言了,就象 VB 与 VB.NET?

4) 上面说这些,只是出于对动态语言的兴趣,谈一些看法,凑个热闹!绝对没有反对大家使用这些语言的意思,也没有刻意去贬低这些语言,更无意去贬低使用这些语言的爱好者们。事实上迄今还没有真正理想的动态语言出现。


  ishou 发表于2006-05-08 22:50:00  IP: 202.156.160.*
1)脚本语言程序,肯定是解释型语言程序。解释型语言的程序,即可能是以脚本程序方式运行,也可能不是以脚本方式运行,而是以伪编译、或半编译后的程序运行,这里所谓的编译,基本上是进行规范、优化处理(可能还有其它一些处理),与C/C++中的编译有本质差别。 打个比方,前者是在细胞级,而后者到了原子级。 因此前者“编译”后的运行效率会提高一些,但是仍然与C/C++的编译没有得比。 当然不同解释型语言的编译深入程度也有不同,Java、VB可能编译得比较深入, 有“编译”的Python大概没有那么深。

脚本语言基本上是动态语言。 楼主(myan)所说的动态语言,从其“变”的论述上看,大概是泛指 脚本语言吧?

2)---kiol:
“希望那些批评动态语言的是真的用过动态语言。
ruby不是为拼写错误准备的别名,而是那确实是别名,比如
"abc".length和"abc".size。 。。。”
--------------------------
我所说到的 " Ruby怕程序员拼写错关键字,接受一些拼写错误的关键字", 并不是我自己的意思,这话来自 Ruby 发明者Matz的一席话! length 与size 之间当然不是拼写之差!Matz担心的是一些程序员对一些关键字的拼写的个别字母容易用错,看来Matz真是个体贴入微的人啊!


3)上面说到的Perl设计者 Larry Wall 对有关 @%去除问题的答复,初看起来难以理解,细细想想,他的回答相当微妙。@$%大概是Perl的命根子,去除这些字符,Perl的核心架构也许必须重新改写,
改写后的Perl还是 Perl吗?也许仅仅是名字相同,本质上完全是两种语言了,就象 VB 与 VB.NET?

4) 上面说这些,只是出于对动态语言的兴趣,谈一些看法,凑个热闹!绝对没有反对大家使用这些语言的意思,也没有刻意去贬低这些语言,更无意去贬低使用这些语言的爱好者们。事实上迄今还没有真正理想的动态语言出现。

  刘典 发表于2006-05-09 01:32:00  IP: 218.27.69.*
很多人对动态语言有偏见是因为没有正确的使用动态语言。好好研究一下emacs的结构,那应该是目前能看到的最正确的使用动态语言的例子之一。

  leizi 发表于2006-05-08 20:57:00  IP: 222.33.36.*
onlyxuyang 理解的动态语言有偏差,动态语言不只是一个变量类型晚绑定。事实上java,c#等静态语言也提供也一定的动态性,比如动态代理,反射等,只是没有动态语言的灵活。

  Lig 发表于2006-05-08 20:58:00  IP: 222.129.227.*
to onlyxuyang

C++并非孤家寡人,Java和.net未必就已经“拥有”一个好库了,至少Java的GUI库很烂,做够酷的Windows界面程序还得动用C/C++,.net的GDI+似乎也说不上“足够”,就GUI的库来说,MFC/ATL/WTL虽然是廉颇老矣,但未见得就会被什么东西取代。

再说其它库,我不认为Java和.net的库已经超越C++,C++无论在任何方面都有库实现Java和.net标准库的功能,C++的问题是没有标准化,因为C++委员会不愿意将一个并非最优的库强行标准化,但是Sun和Microsoft都可以这么做,尤其是Sun,现在谁还能相信Sun说的“一次写成,到处运行”。所以,不成熟的就不要标准化是正确的,否则这个技术迟早要为过于仓卒的标准化承受后果,为越来越难弄的兼容性伤脑筋,例如Java的gui,最后这将是Java心中的伤痛的

  myan 发表于2006-05-08 23:22:00  IP: 218.197.128.*
to Lig:
我部分同意你的看法,即相信C++在客户端开发方面也还有用武之地。但是我不认为这个用武之地主要是要做“够酷”的界面,我觉得动辄要做“够酷”的GUI的时代正在结束。那种到处都是按钮和context menu的风格已经过时了,简洁才是美。

但是,目前C++所构成的GUI基础库的成熟度是很多其他竞争者无法比拟的。你提到了MFC/ATL/WTL,这当然是很好的例子,但是这几个东西的主要缺点就是不具有可移植性。其实Qt, wxWidget这些C++的GUI库也是很好的选择,只不过文档资料不足。不过这些GUI库有另一个好处,就是可以很方便地用动态语言进行编程,比如wxPython已经非常成熟。而Qt自带了一个Qt Script,语法类似JavaScript,更不必提大名鼎鼎的XUL。我觉得这种Script & C++协作的方式可能是很好的思路。

  onlyxuyang 发表于2006-05-08 21:12:00  IP: 221.232.153.*
to leizi :
您好,你并没有认真读我的回复.虽然迟绑定不是动态语言唯一的特征,但是不可否认的是是它展示在众人眼前的与静态语言区别最大的地方.我没有说静态语言不可以迟绑定,请注意我说说的是:
动态语言和静态语言也是这样,各有各的领域,就想现在结构化程序和面向对象程序都有各自服务的领域一样.静态语言在各种模式的帮助下也可以模拟出动态语言的效果,只是比直接用动态语言写麻烦点.

静态语言本来就是为强类型设计的,动态语言是为弱类型设计的,可以说谁好谁坏?谁优秀点谁低劣点?我不这么认为.还是那句话,各自有各自的领域.

to Lig:
其实我觉得Java,.Net等等库提供的功能层与C++不一样.Java和.Net提供的库都是与各自所拥护的虚拟机绑定在一起的,而并不是与各自的语言绑定在一起的.而C++的库我认为是于C++语言绑定在一起的.

Java既然想通用性,GUI自然没那么容易解决,各个平台的界面实验的方便千差万别,差别大到已经不是区区一个虚拟机可以承受的了.ACE在这方面就比较聪明,根本就不和GUI沾边,专注于软件底层的通信机制,所以可以跨大部分平台.另外说到Java..比较郁闷的是Java似乎当初出来是为了嵌入式开发的吧?结果现在嵌入式开发上没看到多少身影,Web上倒是露了不小的脸,"东边不亮西边亮"........


  宁柯 发表于2006-05-09 08:36:00  IP: 219.137.38.*
我喜欢Python,用Python的Django框架作网站感觉好极了,我的网站 www.china-django.com 就是LAMP(Linux+Apache+MySQL+Python)制作的,欢迎大家光临!

  gfs 发表于2006-05-09 09:54:00  IP: 218.26.203.*
八十年代初有人用几百块钱去摆地摊,几年后成了大老板,可很多人当时不敢;九十年代初有人带了几千块钱杀进股市,几年后成了大富翁,可很多人当时不信。有人说“如果当初我也做,会比他们赚得更多!”不错,你的能力或许比他们强,本钱或许比他们多,经验也或许比他们丰富,可问题出在你当初没有做! 二十一世纪初开个网站就能赚钱,可很多人不去试。现在是互联网时代,加盟“Soho之家”开个自己的赚钱网站就能月收入上万元,你还要再犹豫,还想再错过吗? 一个新的赚钱商机已经到来,历史已经证明只要在别人不敢不信的时候能及时抓住新出现的商机,就一定能成功!快去看看http://haidongqing./

  sevencat 发表于2006-05-09 09:19:00  IP: 58.246.57.*
wxwidgets最好别用。有问题的。Qt好些。

  tan 发表于2006-05-09 13:43:00  IP: 221.172.81.*
ishou:

这样的动态,对Ruby的发展恐怕没有好处,现在Ruby的线程(thread)是语言级,差强人意,不支持多CPU环境(多CPU时代已经开始了!),过分这类动态,只会增加线程实现的难度, 削弱线程性能。
---------------------------------------------

Ruby很快出2.0版本,2.0的Ruby支持本地线程。


上面很多人都说现在没有理想的脚本语言,不知道你们心中理想的脚本语言是什么样的?最近一直在用Ruby,我个人觉得Ruby作为脚本语言已经很理想,有些缺点将会在2.0版上解决掉。再说Ruby在DSL方面也做得很好了,看看Rake吧,那是最好的证明。

  gooing 发表于2006-05-09 15:24:00  IP: 61.129.106.*
也太高估动态语言的发展了;
可以说,如果没有大公司联合吹捧,任它有多好也不会有多大发展

  qq5 发表于2006-05-09 16:58:00  IP: 61.163.2.*
<a href="http://www./0/001.asp">手机铃声</a>

  aaa 发表于2006-05-09 11:55:00  IP: 61.135.170.*
个人认为动态语言的长处还在应用上,对于其它的..........,当然你要说现在的国内开发都是应用型程序那我也无语了

  sevencat 发表于2006-05-09 17:08:00  IP: 58.246.57.*
也太高估动态语言的发展了;
可以说,如果没有大公司联合吹捧,任它有多好也不会有多大发展

//================================
说得真是太对了,很多事情背后都隐约有大公司的背景。(比如SOA)

  刘典 发表于2006-05-09 20:38:00  IP: 218.27.69.*
"""
也太高估动态语言的发展了;
可以说,如果没有大公司联合吹捧,任它有多好也不会有多大发展

//================================
说得真是太对了,很多事情背后都隐约有大公司的背景。(比如SOA)
"""
的确有很多所谓的技术是一些大公司为了自己的利益而背后支持的,但是动态语言不是,这个是必然的趋势,而且可以断言动态语言过后会是领域专用语言,这些技术的的合理使用的确可以大幅度提高软件开发效率。

  刘典 发表于2006-05-09 20:43:00  IP: 218.27.69.*
to 孟老师:
看看现在流行的很多所谓“新技术”垃圾收集、虚拟机、正则表达式、xml、脚本语言、领域专用语言。早在几十年前unix界就有很成熟的应用了,现在怎么又以新技术的姿态再次出现?难道计算机科学真的就是不断地重复?^_^

  myan 发表于2006-05-09 21:11:00  IP: 218.197.128.*
to 刘典:
同意你的看法。gooing的说法也是正确的,但是对于开源领域中的技术不适用,开源这个领域里的游戏规则不同,不能用老眼光看待。

另外,技术本来就是不断重复的,计算机科学核心内容和主要的创新性想法60/70年代就全部出现了,之后所做的只是工程化。有的时候觉得自己整天关注这些东西是可悲的,因为都不是新东西。

  onlyxuyang 发表于2006-05-09 23:00:00  IP: 221.232.153.*
工程化有什么不好,有好的想法,整理了,标准了,才可以有更广阔的视野继续发展啊.就象你的汽车挡风玻璃,没有工程化的技术就象是一张张五彩缤纷的彩纸贴在上面,那样汽车还可以正常行驶吗?工程化就是把这些彩纸规则化系统化,该放哪里放哪里,这样汽车才可以顺利前进啊.
楼上的回答不可以让我把你和一个有经验的开发者等同起来,因为不是新东西就不研究?这个理由真的很可笑.有多少新东西是在旧东西的研究上发展起来的?凭空出现的新东西存在吗?
myan老师既然作为一个攥稿人,我希望应该更加客观更加公正一点,不可以向娱乐记者靠拢,起码我觉得,计算机是一个严肃的东西.

  刘典 发表于2006-05-10 01:43:00  IP: 218.27.69.*
to onlyxuyang:

真实慷慨激昂阿,看来你是个计算机科学方面的高手了,说说你研究出哪些新东西了?说说现在的新东西比30年前新在哪里也可以。或者你所仰慕的工程化方面的成就。

  onlyxuyang 发表于2006-05-10 09:51:00  IP: 221.232.153.*
谢谢夸奖..我可不是什么高手,我只是觉得不可以一味求新.研究旧东西也没有什么不好的,在许多领域新的发现都是从旧东西的研究中得到的.旧东西中研究出来的新东西才是真正有生命力的,凭空出来的新东西没有根基,热的快冷的也快.所以我们不需要为自己研究的是旧东西而沮丧.而且旧东西现在我们还有很多没有研究好的呢,现在的东西没有比30年前新多少,但是不可否认的是更易于使用了.XML不就是一个很好的证明吗?要是你说XML不好我也没有话说,但是我觉得XML真的很不错.

  onlyxuyang 发表于2006-05-10 09:55:00  IP: 221.232.153.*
.....忽然想起来最近看了本<信息建模与关系数据库>...讲ORM(对象角色)建模....比较新...不知道算不算

  ideawu 发表于2006-05-10 11:14:00  IP: 222.26.216.*
我不喜欢VB/ASP的一个理由是,用它们写出来的不像程序,而是像不通顺的话,而且句子的文字形状也没有美感---个人感觉,大家包涵。我还是喜欢类C的语言。脚本语言不一定追求形式像自然语言(看起来像)就是人性化了。

  afeng 发表于2006-05-10 12:39:00  IP: 218.13.64.*
看过就算了,至少我现在用PHP维持着不错的生活。

  刘典 发表于2006-05-10 16:50:00  IP: 218.27.69.*
"我只是觉得不可以一味求新.研究旧东西也没有什么不好的"
我也同意这种浮躁心理不对,但是这根本和我说的是两回事。我是说好多本来都是很早以前的技术现在却以新技术的姿态从新出现,给人一种好像是新发明的技术的感觉,对此我感觉很奇怪。

<信息建模与关系数据库>扫了一眼目录。讲的是数据库理论和一点集合论的知识,都是很古老的知识了。其他的东西不过把前人的观点换个角度从新呈现出来。

  ishou 发表于2006-05-10 22:03:00  IP: 202.156.154.*
由于受电脑硬件的限制,早期脚本语言的设计是相当不容易的,明显的程序镶套调用都有可能造成 Out of memory!,显然,程序的结构不能有太多的灵活性。在当时情形下,有象BASIC语言就相当不错了。我们现在闲弃一些语言中的种种问题,相当程度上是历史造成的。我们应该勇于面对问题,并把脚本语言技术发扬光大!

  onlyxuyang 发表于2006-05-10 21:26:00  IP: 221.232.153.*
刘典兄这样就不对了哦~~~那本书是ORM的圣经,也许刘典兄没有涉及到数据库建模的领域吧....不过我刚才也扫了眼目录...果然很象是讲数据库理论的......
呵呵,这真的是本好书,我第一次看的时候因为书太精彩太急于知道后面的内容,所以习题都没来得及做,准备有时间看第2次的时候再补做.
个人认为ORM建模真是准确识别和获取一个企业的意图的好工具啊.................

  真搞不懂现代人 发表于2006-05-10 22:56:00  IP: 222.47.144.*
最近正在做一个网站也在考虑速度如何提高的问题。

  ishou 发表于2006-05-10 21:33:00  IP: 202.156.154.*
其实没有什么好奇怪的。

脚本语言确实不是新技术,有几十年历史了!同样的技术,但是在不同时期境遇有很大不同,早期的脚本语言,难有广泛用武之地,很大程度归因于 电脑硬件的限制:电脑内存、CPU运算速度等, 几十年后的今天,许多都发生翻天覆地的变化,许多不可能的事,都成为可能,脚本语言开始翻身,甚至以新姿态重现,也是顺理成章的事。


  刘典 发表于2006-05-11 01:18:00  IP: 218.27.69.*
to onlyxuyang :
那我有空看看^_^
"准确识别和获取一个企业的意图" 最好不要报有这样的想法。不然会让你很失望的。

  鍒樺吀 发表于2006-05-11 01:21:00  IP: 218.27.69.*
to 真搞不懂现代人
网站是IO密集型的系统,使用的语言快慢影响不大,除非你包含计算密集型的代码。

  Clark Nu 发表于2006-05-11 14:54:00  IP: 218.249.210.*
各有各的好处。
不过让人胆寒的一点是:当“好”的语言、模式、甚至架构越来越多,人就忙不过来了!!

  g 发表于2006-05-11 20:27:00  IP: 221.194.180.*
fg

  ishou 发表于2006-05-11 23:53:00  IP: 202.156.154.*
即使是属于“旧技术”的垃圾回收机制(GC),比如Java, C#,Ruby,等等,迄今仍然存在相当大的问题,甚至成为这些语言发展的瓶颈。其中Java、C# 以所谓绝对面向 对象 (class)著称,class 定义中的析构函数(方法)却因为 GC而彻底丧失意义,这样的class定义实在欠缺完整!感觉很不是滋味!

  wizzard 发表于2006-05-11 23:31:00  IP: 61.170.246.*
联系作者一直不好用啊???!!
http://spaces./piratematrix

  ishou 发表于2006-05-12 10:36:00  IP: 202.156.158.*
sevencat 说得对! 如果我们不悄于面对旧的东东,谈创新只是一种奢谈!

  sevencat 发表于2006-05-12 09:17:00  IP: 58.246.57.*
有点像哲学的味道,事物都是螺旋式上升的,新的东东大多源自于旧的东东,但却有很多不同点。记不得是谁的观点了。



  wizzard 发表于2006-05-13 17:44:00  IP: 61.171.82.*
再来试试?孟老师看到否?想要个你的电子邮件地址。。。


wizzard 发表于2006-05-11 11:31 PM IP: 61.170.246.*
联系作者一直不好用啊???!!
http://spaces./piratematrix

  reader 发表于2006-05-14 15:39:00  IP: 219.140.246.*
To:孟老师

2006年03期的程序员花了海量的篇幅来介绍《代码大全》,无论是互动网还是第二书店,甚至是我所在的新华书店和民营书店都是极力推荐这本书。但确没有看到您对这本书一些评价,想在这里听到您的一些宝贵建议。我想对我们会有帮助的。谢谢!
期待着您的回复!

  麦田守望者 发表于2006-05-15 08:45:00  IP: 61.49.0.*
有一点感触,“质疑动态语言的严肃性”。语言只是解决问题的手段,严肃不严肃关键要看使用语言的人。

  古月春秋 发表于2006-05-15 11:12:00  IP: 218.107.160.*
ishou 发表于2006-05-07 5:47 PM IP: 202.156.163.*
下面是Perl 发明者 Larry Wall 的一个答问:

问:有什么功能是大家都需要而你又不会放到 Perl 6 里面去的?

答:
。。。。。。。
现在你肯定在想,大家要求最多的一定是除去 $、@ 和 % 符号,但是通常来说只有不理解 Perl 的人才会提出这样的要求,而且即使你满足了他们的要求,他们还是不会使用 Perl 的。理解 Perl 的人一般会倾向于喜欢这些符号。

----------------
什么逻辑?
========================
我就是奇怪啊, 原来学Perl的时侯看那么多怪异的符号越看越烦, 本来可以简单表示的一句话, 它要弄成很复杂的一段符号, 看多了确实头疼.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Perl不需要声明int之类的数据类型,而里面最重要的三种数据类型(数据结构)就体现在$ @ %三个符号上了,去掉了Perl还剩下什么?

  wizzard 发表于2006-05-15 10:14:00  IP: 61.171.211.*
联系作者还是不好用。孟老师看到我的留言否?
eric@wizzardcms.com

  myan 发表于2006-05-15 14:35:00  IP: 218.247.0.*
to reader:
Code Complete 2是好书,这本书最早是我推荐给出版方的,我的态度当然是正面的 :-)

  liu 发表于2006-05-17 11:34:00  IP:
php已经流行n年了,2000年左右lamp就非常红了
现在可选择的方案太多了。

  BuilderChen 发表于2006-05-17 13:45:00  IP: 192.168.32.*
为什么有人会觉得动态语言好用?其实其本质是语言的语义抽象层次的高低的问题,而不是什么强弱类型的问题。象Python将数组,集合,字典这些加入了语言里,其实也就是稍微提高了语义的抽象层次,所以你用起来会觉得"很方便"。大多数人争论来争论去都没争到点子上。个人认为“元数据编程”才是语言发展的方向,象java的“Annotation”,象VS的“属性化编程”,还有上面刘典 兄、gandolf兄提及的DSL。
在下的blog也提及过这方面的东东,欢迎访问http://blog.csdn.net/BuilderChen/archive/2006/03/07/617971.aspx

  1000copy 发表于2006-05-25 23:15:00  IP: 222.210.92.*
>> BuilderChen
很有见地。

  ride 发表于2006-05-26 10:59:00  IP: 222.90.66.*
还没用过RUBY,PYTHON.
不过,我讨厌VB. 一直在用C++. 偶尔也用JAVA. 原因是VB内很多错误(尤其有一些低级的语法错误) 竟然只有运行到哪个位置才能发现.这样的话测试成本也太高了.严重影响软件质量. 而C++的最大好处( 正如Moden in c++所提倡的) 尽量把BUG在编译期发现.一时想不起来怎么用专业的术语描述. 这是我讨厌VB的最大原因.不知道现在流行的这些语言有没有这样的弊病? 看到许多大师们将C++和PYTHON 和起来用.也很想试一把,可惜一直没机会.

  ppwd 发表于2006-05-27 14:23:00  IP: 61.52.43.*
其实我觉得所有的编程语言都只是一个用来解决实际问题的工具,没有什么此起彼落,此兴彼衰的,看你用什么工具解决问题最合适就用哪种,每中语言都有其独特的方面。那天跟一个朋友聊天时还谈到,一般的程序员都应该掌握至少5门以上的程序设计语言,像C、C++、VC、VB、.Net、Java、Python、Perl、PHP、ASP、汇编。。。。。。
Ruby只是听过,还没用过,听说和Python的性质差不多。
只代表我个人的看法,因为我现在就是觉得的什么最容易解决某个问题就用哪个,就像前段时间为了程序在各个操作系统下的兼容性,最终选择了Python。

  大名 发表于2006-05-28 14:33:00  IP: 221.206.111.*
评论

  bigfanofcpp 发表于2006-06-01 17:33:00  IP: 218.97.244.*
我喜欢lua和python

  木野狐 发表于2006-07-22 00:14:00  IP: 222.64.26.*
我喜欢 python,非常有前途的语言。
C#,java 等纯 OO 的语言搞的一些框架是越来越庞大复杂了,用的很累。要理解一堆 xml.

说来奇怪,语言本身是严谨的 OO 程序,弄了半天 xml 里面要写大堆的东西动态插入,依赖注入什么的了,要不就是用反射来创建之类的,又没语法提示,出了错误调试起来累得要死。

我研究了 C# 的最新的 petshop 4,一堆废代码,看似灵活其实笨重无比。在国内要照这个样子开发个个软件公司都要倒闭了。

正应了孟岩的话:强引擎,弱脚本。
或者说是编译期解决了引擎问题,复杂的脚本和领域问题还是留到了运行期,结果跟动态的东西何异。

  personnel 发表于2006-09-26 08:25:00  IP: 60.162.73.*
何为动态语言......................

  ....................... 发表于2006-09-26 09:34:00  IP: 222.66.97.*
老孟挖了好大一个坑

  EJB3.0 发表于2006-09-26 13:06:00  IP: 222.84.6.*
谁就敢说轿车就一定比摩托车好啊....他们只不过是各有各的特点和优点而已罢了...在乡下坑坑洼洼的土路上看你的轿车能走多远.....不把你的底盘给卸下来看你能不能过去....



这个话题就是一个无义之争......

  dvaknheo 发表于2006-09-26 14:56:00  IP: 58.207.136.*
我们这个 J2EE 框架很强大——你一行代码都不需要写
(但是要写很庞大的配置文件)

  KevinLeiCN 发表于2006-09-26 15:58:00  IP: 219.239.34.*
下面是Perl 发明者 Larry Wall 的一个答问:

问:有什么功能是大家都需要而你又不会放到 Perl 6 里面去的?

答:
。。。。。。。
现在你肯定在想,大家要求最多的一定是除去 $、@ 和 % 符号,但是通常来说只有不理解 Perl 的人才会提出这样的要求,而且即使你满足了他们的要求,他们还是不会使用 Perl 的。理解 Perl 的人一般会倾向于喜欢这些符号。

----------------
什么逻辑?

------------------------

$foo = "a";
$a = "foo";

$$foo == "foo"
$$a == "a"

这就是$的强大之处.如果没了$,perl会因此而黯然失色.在评论PERL的$,@,%之前,最好能先了解清楚$,@,%到底都是干吗用的.

来自:http://blog.csdn.net/myan/archive/2006/05/05/708685.aspx

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多