以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Web挖掘技术 』   (http://bbs.xml.org.cn/list.asp?boardid=69)
----  谈Web Mining研究者掌握动态脚本语言的必要性  (http://bbs.xml.org.cn/dispbbs.asp?boardid=69&rootid=&id=44325)


--  作者:xuqy
--  发布时间:3/23/2007 5:57:00 PM

--  谈Web Mining研究者掌握动态脚本语言的必要性
自己平时很喜欢在闲暇时学习一些新的计算机语言,它使我对计算机的
兴趣不至于在书写各种申报材料和论文中完全泯灭。特别是在我把工作平台转向
Linux后,学习各种开源语言更成为自己掌握在Linux下工作的一种必然选择,除了
C/C++、JAVA、C#这些主流开发语言外,我尤其对Perl、Python和Ruby这样的动态
脚本语言情有独衷,这里特别谈谈自己在学习它们的过程中的一些体会。
         第一次接触Perl语言是自己在作Web
Mining研究时从CMU大学的著名网页
数据集Web-KB开始的,它的代码里有一些Perl语言脚本,往往几行代码就能完成
JAVA这样的开发语言几十行代码才能完成的任务。显然它比Bash这样的Linux中的
shell脚本功能要强大得多。由于第一次读到Perl语言书写的代码,感觉真的像天
书一样难懂,特别是那些到处可见的$、@、%等奇怪的符号。为了完全弄懂
Web-KB的这些代码,我下决心开始学习Perl,结果没想到从此一发不可收拾,很快
就成为Perl铁定的忠实拥户。下面是我总结的几点它最突出的优点:
   1。实用:
它像编码世界里的"瑞士军刀",很多常用的处理方式特别作了很大
的简化,让你用最少的代码量完成最多的功能。在JAVA语言里你需要首先声明各种
变量,在程序执行前需要进行编译,在PERL语言里这些都去掉了,这大大简化了程
序开发人员的开发效率。在JAVA程序里即使你只是打印一行"Hello
World"也要先
定义一个类,再定义一个static void
main函数作为程序调用的入口,在PERL程序
中这些全都不必了;再比如从网上下载网页在JAVA语言里至少要写上几行的代码,
在Perl里只用一句就可以: use LWP::Simple; $html =
get('http://www.sina.com.cn');
由于经常需要引入package,所以选择use而不
是JAVA里的import,因为它比后者少敲三个键。由于编程时90%的情况是处理文
本,它就把正则表达式作为语言的内置功能而不像JAVA那样首先需要import
re;
在所有动态脚本语言中它也是运行速度最快的。

2。第三方类库有集中的CPAN网站及其镜像站点统一管理:
这是另一个让JAVA
语言开发者嫉妒的优势,浏览一下网页http://search.cpan.org/吧,它把十年来
所有开源的第三方软件包分门别类地集中存储,如果你愿意,也可以把自己开发的
觉的有价值的软件包与全世界共享。JAVA虽然有Jarkata这样的第三方类库,但绝
大多数还是需要我们自己去寻找。

3。它是最像自然语言的计算机语言,不要忘记它的作者以前曾经是一个语言学
家,如果你牢记这一点,那学习Perl语言便容易得多。我认为Perl语言也是目前我
学到的所有语言中最具创新性的语言(它直接影响
了Ruby),深深影响了以后各
种新的语言的设计。

4。它是完全开源的语言,它的作者是计算机历史上大名鼎鼎的Larry
Wall,他
发明了patch命令和一个新闻组阅读器,但更主要的是他发明了Perl和CGI动态网页
技术,他对Web的迅猛发展有直接的影响力。如果你想学习一门很多年后依然保持
生命力的语言,那最保险的办法就是学习一门开源的语言,因为如果你去学习
Delphi这样的商业语言,等到Borland公司一旦在商业市场上份额下降,那这种语
言可能就完全风光不再。现在最热门的语言JAVA是Sun公司的宠儿,虽然Sun公司总
裁声称在今年年底会完全公开JAVA源码,但显然这门语言的发展完全掌握在商业的
运营模式中。

Perl语言当然有它的缺点:不像Python和Ruby一样易学;面向对象功能不是一
开始就设计而是后来添加的;代码可读性较差,过于灵活。Larry
Wall在2000年每
年一度的开源大会上宣称开发新一代perl语言(即Perl
6)的计划正式发始启动,
它将摆脱现在向下兼容的包袱,从内核上对语言进行重新设计,采纳当下各门语言
的精华同时保留它最根本的特性。这是让无数perl爱好者兴奋到整夜难眠的事情,
现在开发Perl6还没有实现,这中间台湾的唐宗汉(现变性后改为唐凤)起了力挽
狂澜的作用,是我们华人在开源领域最骄傲的人物。(见
http://www.linuxeden.com/doc/21782.html)

我认为学习像perl这样的脚本语言对计算机专业的研究者来说尤其适合,因
为它可以大大加快开发原型或验证算法的过程,特别是它对文本处理的支持至今是
无与伦比的。以我个人经验来说,作Web
Mining研究有一个很漂亮的想法很容易,
但想得到实验数据的支持必须经过大量的Coding,它占用整个过程99%以上的时间
(只关心发论文不在意伪造数据的除外)。如果用C++或JAVA语言来实现,你要花
大量的时间用在Debug上面,但用Perl这样的快速开发语言,只花费十分之一的精
力就能将其搞定,它免去了声明和编译(包括make过程),同时由于有很多现成的
第三方软件包可以使用(在cpan里很容易找到Naive Bayes,
Support Vector
Machine这些机器学习工具),它的功能却一点也不逊色。特别的,由于它的代码
量只有前者的几分甚至十几分之一,debug也相对容易得多。
另外,使用perl语言
最好结合Unix/Linux系统(虽然它在跨平台特性上一点不比JAVA差),这更能发挥
它应有的作用。事实上在Linux系统下Perl是必备的工具(很多系统管理命令甚至
带窗口的程序都是用它编写的,比如synaptic),你甚至无须去安装它。

Python是另一个非常好的选择,它的好处是代码可读性好,对面向对象支持得
非常好,非常易学(一个下午的时间可以学会80%场合用到的20%命令),另外与
C/C++和Java的互相调用也作得非常出色(所以它是一种更好的glue
language),
还有一个Perl语言没有的交互式编译器,它类似于以前苹果机上的Basic,你可以
无须编写程序而直接在终端一行行边输入程序边看到结果,所以非常有利于快速开
发。它的作者现在为Google工作,据说Google很多的代码都是用Python书写的。
Python的名字来自国外非常流行的一个黑色幽默电影,放假时中央电影频道还专门
介绍过它(下次我再次学习它时会先那部电影看一遍,找找感觉),开源世界的一
大特色就是这种无比轻松的幽默而不是像微软产品包含的那种浓浓的商业气息。
   Ruby现在由于Ruby on
Rails的流行而成为亲的上升之星,有人甚至预言它是未
来的JAVA,它从Perl语言和Ada语言吸取了很多东西,自己打算有空闲时间的时候
好好学习它。它的发明人是个日本人,有些中国程序员便排斥这门优秀的语言,我
当然对此不会在意的。据说敏捷开发之父非常推崇这种语言,因为它是比JAVA还要
纯的面向对象语言,像字符串和数学这些都作为对象处理,可以直接调用各种方
法。可以想见,它也是速度最慢的动态脚本语言。但很多情况下这一点并不重要。


--  作者:liuag
--  发布时间:7/27/2007 5:32:00 PM

--  
我也是用PERL进行模型和想法的验证,实现起来很快
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
8,232.422ms