脚本语言比较

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yaoyao44/article/details/84211367
[b]随要大家觉得语言之间的比较恰似没有什么意义,但介于对自己好奇心的满足,我还是在网上找了些线索来比较自己喜欢的一些语言,同时也贡献给大家作为参考。[/b]


[size=large][b]一、Python编程语言:[/b][/size]


[size=medium][b]一)优点:[/b][/size]


1、比较成熟,通用,工具库多,资源丰富,文档等支持强大,几乎能做任何事,如:
网络,图形界面,桌面程序,服务器,图形处理,算法等。
2、相比之下性能好,负载力强。
3、简单易学,文法简洁,其使用空白缩进代替花括号或END使代码看起来很干净,易读易懂因此易维护。
4、基于尽量使用一种方法完成一件事,越简单越好的哲学。这种哲学适合大型项目,因为让其他人看着易懂,
好维护,不至于过多灵活繁杂的语法使自己玩的爽了,别人看得傻了。
这与RUBY的用许多种方法完成一件事的哲学正相反。GROOVY感觉在两者之间。
5、得到业界承认
a) Mac机,还有大多数Linux,或者流行Linux中绝大多数都默认安装Python,
这意味着不管你是哪国人在哪里,想用哪台Linux机子,想用Python就可以用,
省时顺手;要用Ruby Groovy还得另外安装。
b) 有巨头支持。如:Google 互联网老大,公司内部中Python是官方的第三语言,
有内部员工说他们是能用Python就用Python, 实在不行才用C++;
Youtube 大部分是用 Python写的;
著名Linux发行版Ubuntu的发行公司的官方语言,也是其创始人的首选语言;
c)其他还有Redhat Linux, 美国宇航局,金融系统如纽约股票交易所,摩根大通,
电影动画制作如Disney,Pixar和DreamWorks,星球大战的特效公司ILM等一系列著名大型机构中使用。
桌面程序如流行程序BT客户端等。
6、语法灵活亦相对严谨 除了动态性外,类也是开放的(但是底层内置的不是),
可以动态增加删改类及其属性函数等。

7、如果你掌握了Python,想在Java里应用它,你可以采用Jython。
Jython是采用Java语言实现的Python。这样,你只 要按照Python的语法,
就可以调用Java的各种类库,快速的编写出基于Java的程序。也就是通过Jython,
编写Java程序。这样就可以更为 快速的实现Java的功能。Python在面向对象方面和Java是相通的。



[size=medium][b]二)缺点:[/b][/size]

1. 运行效率低下

目前为止,Python编程语言可以说是所有主流脚本语言中速度最慢的。
这与其脚本引擎的设计思路有关。如果你的应用对于速度有着较高的要求,
就要考虑Python是否能满足需要。不过这一点可以通过使用C编写关键模块,然后由Python调用的方式加以部分解决。

2. 多线程支持欠佳

Python编程语言支持多线程,但是其运行效率也不高。

3. 独特的语法

这也许不应该被称为局限,但是它用缩进来区分语句关系的方式还是给很多初学者带来了困惑。
即便是很有经验的Python程序员,也可能陷入陷阱当中。最常见的况是tab和空格的混用会导致错误,
而这是用肉眼无法分别的。

4. 无类型

作为一种动态语言,随时随地创建和使用变量是Python给我们带来的巨大的便利。
但是它也会使得程序不严谨,某些错误只有在运行中才可能出现。
所以,使用Python编程的时候,要对类型做到心里有数。这也使得Python的IDE工具无法提供便利的自动完成等功能。

[size=medium][b]三)Python最大的悲哀就是:[/b][/size]


现在很多项目经理,大多不去了解Python,
导致其默默无闻!好在现在众多的web巨头开始关注,但愿Python可以发挥自己的优点!

[size=medium][b]四)使用场合:[/b][/size]

查阅的结果似乎对于这两种语言的评价都很好,在网络开发上的性能都很好。都很适用于快速的应用程序开发,
开发的效率很高。

跨平台开发:
Python 以中立方式支持不同的一系列平台,如果用户使用的系统包含不同的平台,
使用 Python 开发应用程序则再好不过;它这种适应性也可以为系统预留使用其它工具的可能。
对于频繁更换平台用户,Python 是个理想的选择。

为最终用户提供软件服务时,Python 也是个备选方案,可以避免同时用不同应用软件编程的时间和费用。
互联网程序设计
Python 带有的标准模块可以对网络插槽进行初级和协议级别的通讯,
比如,如果要从 POP 服务器上读取电子邮件,Python 随带的库模块可以做到。
另外, Python 还支持 XML、HTML和 CGI 库文件,所以利用它可以解析用户输入的需求,
并通过网络服务器产生最佳质量的成果。
程序员还可为拥有 Python 内置解释器的 Apache、Unix 和 Windows 网络服务器编译模块。
基于 CGI 程序的功效,可以很方便地执行 Python 语句而不用单独装载。



[size=large][b]二、Ruby编程语言:[/b][/size]

[size=medium][b]一)优点:[/b][/size]

1) 语法是更纯正的面向对象语言,许多功能让从Java/C++世界过来的人耳目一新;
因为它借鉴了包括Python, Smalltalk, Lisp等在内的一些其它优秀语言的优点。
一切都是Object,如避免Python的类似len("name"),而采用 "name”.length,
还有提供类内部参数数据的保护等;提供的更多语法, 比如它有python没有的块与闭包;
它有更易懂简练句法,如用' < ' 来表示类继承,用?来表示返回是否的函数。
2) 灵活的魔幻语法,如模块的混入,块,开放式的类定义,加上已有的动态性使其变得极其灵活;
各种繁多的著名设计模式在它手中好象都失去了意义,Java做梦都想达到的灵活性在RUBY手中轻而易举,
Spring AOP相比也失去了光泽,设计大师们的法则与多年经验也好象都不再适用。
3) 相比Python提供了End作为程序块的截止符,这是Rubyist们自认为的一大进步,也是与Python的一个重要区别。
4) 杀手级框架,Ruby on Rails,及还有些其它杀手级框架正在一一跃出。
5)有跑在JVM的JRuby和微软的IronRuby


[size=medium][b]二)缺点:[/b][/size]


1)灵活可能有负面影响 开放的类(尤其是底层的)在大型程序中可能会造成混乱,
不易懂不易维护,类可能会不知道谁在哪个角落就能够改动(不过有了IDE的支持这种情况可能可以解决);
语法方法的灵活可能使代码不规范,一个人喜欢写魔幻代码的有可能使后来人看不懂,
其用多种方法实现一个目的的哲学好象是在鼓励代码的多样灵活性,这在大型项目中会加大维护难度。
这可能也是为何目前尚未有大型企业界使用Ruby的原因。针对这一情况已经有人提议对修改底层的类加以限制。
2)性能相对不强 原有的Ruby速度慢,稳定性相对差些,据说是原有的GC写的不强。
不过随着新的更好的一系列Ruby解析器的出现与硬件的快速发展与价格降低,此性能问题应该能够在不远的未来解决。
据Java Eye的Robbin讲,即使有此性能问题,扩充硬件或设置系统也多可解决问题。
3)对线程支持不强,Ruby 2.0据说要加强
4)好象尚未支持多核,不过未来可能解决,道理同2)
5)对End的意见 不少人认为Ruby的End过多,显得不好看。代码在写很多层时尤其如此,
这样使查找相应的起始位置增加难度。有人建议其创始人Mats提供End的替代字符,他有此意,
但是好象没有他看的上的,如果谁不喜欢End的,找个自认为不错的字符发给总部吧,要趁早,否则以后越来越难改。
综述:Ruby是令人兴奋的,学习Ruby可以加深程序员对面向对象,及计算机语言的理解,从这一点上说,
Python更只象个工具,Ruby灵活却又很有深度,值得一学。Ruby的主要缺点是其GC及性能,
近年来已经涌现一系列新的解析器号称能解决GC问题;有关性能看看Java的历史可知,
当时Java的速度被评为比C++差得太远,可是几年后性能随着硬件的发展而大大加强,
所以Ruby的性能应该在未来不会是大问题。 ruby目前最主要的应用也是其杀手锏Rails框架具备快速开发网站的特点,
一个或几个人就能快速开发一个网站,能节省很多人力时间,较适合创业型小公司,
负荷量不是非常大的中型公司,或大型机构的内部网站。 对Python的空格缩进,非面向对象语法,
self, "__xxx__", 跛脚的lambda难以忍受的可以尝试一下ruby ;



[size=large][b]三、Groovy编程语言:[/b][/size]

[size=medium][b]一)优点:[/b][/size]

1)初看起来Groovy好象是Ruby on Java,它几乎继承了ruby所有的优秀语法,
也添加了少量Python的东西。Ruby中引以为傲的一切是对象,Groovy也可以作到,
如 3.times { ...}, 块传递,动态改变类,增删类函数等。它借鉴了大量Ruby优秀的语法,
保留了C/C++/Java程序员熟悉的花括号,没有用Ruby无所不在的"End”。也支持开放的类,
此外还支持将修改的类在一定范围内使用以减少负面影响。对Ruby的一些生僻的字符进行了改进,
使得更加友好易懂,如块中的 | x | 换成了 x→;
2)被Thoughtwork(就是写重构那本书的Martin Fowler所在公司)经理称为 “Java 2.0” ,
可以“无缝”结合Java 代码,你可以在Groovy文件中写Java代码,用Java库。
Groovy象是个轻量级的动态版Java,而且加大扩展了许多易用的句法,以前曾想过的一些"Java 要是这么写多好啊"
竟然在Groovy中实现了: 如去掉了多余的分号,三引号使得多行的文本变量整洁好看,
砍掉了没多大用的getter setter等。
3 )可以使用所有Java的库,因为Groovy"就是Java”。
相比Ruby爱好者在一个一个辛苦编写各种库的时候,Groovy已经是站在Java 的车头上向前冲了。
4)支持多核CPU,未来的硬件是多核CPU的世界,谁不支持多核可能不是淘汰就落后。由于跑在JVM上,
Groovy再次领先于Python和Ruby;有人说,也有Jython 和Jruby 啊,但是从与Java的结合性及调用Java代码或库来说,
Groovy无疑是极佳的结合,Jruby或Jython相比下显得并不很自然。
5)性能不错 Groovy不再是一个玩具或试用品,一个已经使用Groovy的公司其正式发布的产品中有超过十万行Groovy代码。
其性能相比Python我不清楚,但有测试说Grail性能不亚于,
甚至更强于Ruby on Rails.由于Groovy跑在JVM上,性能应该不会太差。

[b][size=medium]二)缺点:[/size][/b]

1)Groovy就是Java, 目前只有JVM的实现,只能跑在有JVM的机子上。做桌面程序有着Java相同的弱点,
不适合做小巧的Window GUI程序。
2) Groovy不适合作手机或嵌入程序。 综述:Groovy较适用于需要调用已有的Java库,
或者项目中想利用已有Java人力与资源的情况。如果以使用Java为主的公司不十分愿意换一个新语言,
Groovy和Grails是ruby和rails的一种可考虑的替代选择


[size=medium][b]四、因为Python与Ruby各项参数比较接近,所以他们两个可能是最为较近的语言了,我就拉出来特意比较一下啊![/b][/size]

[size=medium][b]一)python和ruby的相同点:[/b][/size]
都强调语法简单,都具有更一般的表达方式。python是缩进,ruby是类basic的表达。都大量减少了符号。
都是动态数据类型。都是有丰富的数据结构。
都具有c语言扩展能力,都具有可移植性,比perl的可移植性更好。也都可以作为嵌入语言。
都是面向对象的语言,都可以作为大项目的开发工具。
都有丰富的库支持。
也有最宽松的版权许可,除了一些工具属于GNU世界。
都有lisp特色的eval函数,也都能把函数作为参数。
也有图形界面的ruby的专门编辑器。
都获得了广泛的c库的支持。如qt、gtk、tk、SDL、FOX等,ruby计划实现SWIG接口(已实现)。
都有完善的文档。


[size=medium][b]二)和python相比ruby的优点:[/b][/size]
具有正则表达式和嵌入html的功能。
python也有正则表达式,但没有ruby的应用方便和广泛。python的嵌入html项目才刚起步。
ruby 还有apache的mod模块。ruby本身也实现和很多unix工具,如racc,doctools。比python更亲近linux。
比python功能更完整的面向对象的语法。
ruby的整个库都是具有类继承的结构。
他的基本的数据类型和运算符都是可以重载的。
ruby主要的功能都是通过对象的方法调用来实现的,而不是函数。python也在向这方面发展,但没有ruby做的彻底。
ruby的类是更规范的单继承,还有接口等概念的实现。
python可以实现在列表内的条件语句、循环语句,而ruby用“块”的方式来实现这个功能,比python的更灵活,更具有通用性。
ruby具有类似lisp的彻底的函数方式的条件语句、循环语句等。语句的表达能力更强。
附带一些unix工具,如racc等。

[size=medium][b]三)和python相比ruby的不足:[/b][/size]
最大的不足正是因为ruby的强大所引起的。它没有python的简单性好。
比较复杂的面向对象语法、“块”语法的引入、正则表达式的引入、一些简写标记都增加了语言的复杂性。
python的缩进表达方式比ruby的basic的表达方式更让人悦目,ruby程序的满眼的end让人不舒服。
当然,ruby认为end的方式比python更先进。
ruby还没有python的“自省”的能力,没有从程序文件中生成文档的能力。
ruby没有国际化的支持。国际化支持在ruby的计划中。这是因为ruby的历史比python要短造成的。
ruby没有类似jython的东西(JRuby有了)。

[size=medium][b]四)python和ruby的语言的选择:[/b][/size]

从简单的就是好的来说,选python是没错的。python适合寻找简单语言的人,这很可能造成python更流行,
因此也有更多的支持。但如果要追求更强大的语法功能,则ruby是好的选择。
因为ruby和python的哲学有很多相似的地方,先从python入手,尽量用python,如果 python的能力不足了,
可以在找ruby。


[size=large][b]五、总结:[/b][/size]
1、往往好的性能优秀的框架,语言等,并不一定等于他是最终的胜利者!
2、原则语言要根据自己从事的业务,自己的知识结构,兴趣爱好等因素而定!
3、无论哪种语言能存活到现在,其实都有它的用武之地,我们要学就要把这门语言学精,
这才是正道,在一个领域你才能得到刚好的发展!
展开阅读全文

这里的脚本语言种类比较单调嘛

12-19

由于魔兽世界的流行,让很多人了解了Lua .rnrn我看到国外游戏开发网很多人在用 angelscript. 所以,来介绍一下。rnrnC++程序员可以去了解下它。 很好很方便。 rnrn完全开源免费rn语法和C++差不多,几乎不花时间就能入门rn一行语句实现脚本与C++函数共享,数据共享。 扩展性很强。rn源代码开放,跨平台,不能独立开发(只是用来嵌入C++或delphi等)。rn模块化,引入一个新模块像这样: #include"youfilename", 就和C++一样哦。rn调试很方便,能单步执行,用C++控制脚本单步执行真好玩rn支持coroutine, 类似多线程。rn面向对象,有类。 支持接口。 像java中那样。rn没有单独的开发环境, 貌似没有必要, 语法就是C++的。rn内容不多,只有语言本身,没有多少外扩模块。所以不能单独开发。rn但扩展性好,自己扩展封装模块,可以做到像python中那样方便访问。rn贴点代码:rn const char *script = rn "class ThreadArg \n"rn " \n"rn " int count; \n"rn " string str; \n"rn "; \n"rn "void main() \n"rn " \n"rn " for(;;) \n"rn " \n"rn " int count = 10; \n"rn " ThreadArg a; \n"rn " a.count = 3; \n"rn " a.str = \" B\"; \n"rn " CreateCoRoutine(\"thread2\", any(@a)); \n"rn " while( count-- > 0 ) \n"rn " \n"rn " Print(\"A :\" + count + \"\\n\"); \n"rn " Yield(); \n"rn " \n"rn " \n"rn " \n"rn "void thread2(any &in arg) \n"rn " \n"rn " ThreadArg @a; \n"rn " arg.retrieve(@a); \n"rn " int count = a.count; \n"rn " string str = a.str; \n"rn " while( count-- > 0 ) \n"rn " \n"rn " Print(str + \":\" + count + \"\\n\"); \n"rn " Yield(); \n"rn " \n"rn " \n";rn//////////////////////////////////////////////////////////rnconst char *script 是C++里的一个字符串, 用脚本引擎一解释就能运行: engine->ExecuteString(0, script)。rn字符串的内容就是脚本啊。 乍一看还以为是C++代码呢。rnrn感兴趣的到这看看: http://www.angelcode.com/rn 论坛

没有更多推荐了,返回首页