Python、Lua 和 Ruby

Python

1、站在解决问题的角度上看。python依靠自身越来越强大的库,让编程者能实现越来越多,越来越复杂的问题。lua本身则必须与其它的编译语言结合,才能解决问题。以C+++lua来举例。单独的C++,因为C++的复杂性,在其解决问题提供方便的同时,也给程序员带来了很大的麻烦,这些麻烦主要有两个方面:1,C++本身,特别是能用好C++,对程序员就来说就是一个很高的要求。2,在解决复杂问题时,C++程序结构的复杂性和逻辑实现的复杂性,给程序员对程序的改进和维护带来了很大的麻烦。而C++与Lua的结合,让C++可以只负责为lua提供各种基本的功能函数库,而Lua调用这些库来实现各种逻辑功能。这种分工可以让程序员将程序中的基本代码库和逻辑实现代码进行分离,使程序的效率和可维护有了很大的提高。所以,如果真的要站在解决问题的角度来对python和lua进行对比的话。实际上,是C++与python进行对比,而与lua无关。

2、python与C++对比,python与C++对比的优势就在于其所提供的基本库,大大的降低了程序复杂度与可维护性对程序员本身的要求。比如,同样的功能,如果是C++来做的话,可能其程序员必须具备三年的经验,如果是python来做,而python又有解决问题所需要的库的话,一个具有一年程序经验的程序员可能就能完成了。但是,同样的,如果是C++与Lua结合来解决问题的话,可能就只需要半个高级程序员和一个只有c语言一年经验的程序员就可以了。半个高级程序员负责提供lua的函数库,另一个程序员,只需要用这些代码库实现逻辑就行了。

综上所述,C+++lua的开发模式,和python源代码库开发+python脚本开发模式其实是一样的。但是站在程序员的角度上来说,C+++lua就更为简单一些,因为除去基本的lua解释代码外,C++可以为lua动态提供各种函数库。而python程序员则必须受制于python所提供的各种功能库。所以,如果解决一些具有普遍性和重复性的问题时,python是有优势的,因为有很多的代码可以不用重写,而C+++lua则必须重构。如果是解决一些非普遍的问题,如果python本身没有提供解决这些问题的库的话,python程序员,就必须走回C++的老路了,哈哈。

Python的优点:
1、Python比其它语言有更多扩展模块。
2、在网上可以找到很多Python教程。不仅如此,还有大量的英文书籍和资料。Python.org有很多为初学者准备的依主题组织的资料、教程和编程指南,此外还有很多链接和参考。
3、很多人都喜欢Python语言的语法,因为它清晰易读。
4、Python在支持库上大占优势,因为它有很多库,而且大部分都有完善的文档支持。
5、很多工具可以用于Python,但难以找到适用于Lua和Ruby的。

Python的不足:
1、现有的Python调试器诡异而且效率低下。在Macintosh(苹果计算机)和控制台下进行调试是一个梦魇。
2、Python难以与其它语言集成,它有太多的二进制DLL,而且Python带了巨大的标准发布包。
3、同样的,也有很多人不喜欢Python对空白符敏感的语法。
4、因为栈上的任何东西都是对象,所以Python有时候会慢得难以忍受。

Luain

Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

Lua号称性能最高的脚本,用在很多需要性能的地方,比如:游戏脚本,nginx,wireshark的脚本

Lua 在游戏编程领域被广泛运用

Lua的优点:
1、Lua在这三种语言中是运行时速度最快而且占内在最少的
2、集成Lua只会增加极少的内存占用率。
3、Lua的C API有着完备着文档和很好的例子,可以容易地通过C集成在软件里。

Lua的不足:
1、尽管Lua的文档已经增进不少,但仍然有所不足。三种语言中,Lua可能是文档最少的(API方面是个例外),因为代码中极少注释,这也增加了学习的难度。另外,对Lua的本质也没有什么介绍。
2、 Lua内建的功能很少,并没有对创建大型的复杂应用程序提供足够支持。
3、 Lua应该使用更好的垃圾收集机制,Lua现在的GC仍然使用非常简单而且传统的“标记和清除”方式。

Rudy

Ruby 是一种开源的面向对象程序设计的服务器端脚本语言

Ruby的优点:
1、Ruby有极好的高级调试器。
2、Ruby是最彻底的面向对象语言,对于OOP狂热者和惯于使用OOP范式的程序员,他们将会发现Ruby是最适合他们的语言。
3、 Ruby的语法极为简单,没有让人出乎意料规则,特别适合OOP行家的习惯。

Ruby的不足:
1、英文文档极度缺乏。
2、与其它语言相比,在游戏方面所作的工作和实例都少得多。