|
楼主 |
发表于 2014-12-26 11:59:08
|
显示全部楼层
6. 各种语言的选择和语言之间的关系
* 如果编写对性能要求苛刻,或和操作系统结合紧密的程序,必然选择C。
* 如果编写到处可用的程序,选Java。
* 如果编写大程序,可能的话尽量用脚本语言如Python、Ruby,不行了再用Java和C。因为脚本语言带来了生产力。
* 编写文本的处理程序用Perl或Ruby。
* 编写知识的处理程序用prolog。
* 编写最灵活,最模糊的程序用Lisp。
* 编写office程序用vba。
* 编写服务器端程序,PHP、(采用自己熟悉的语言来写,例如Perl、Python、Ruby)CGI、ASP、(熟悉Java就用)JSP都是选择。
* 编写数据库程序用vb或delphi。
* 如果要追求性能和程序的能力,要完全发挥操作系统的能力,使用C/C++语言是合适的。在Windows环境下用VC,在Unix-like环境下用gcc。
* 如果不是追求和操作系统完美结合,而只是性能,又要追求跨平台性,那么仍然选择C,但可以选择跨平台的库,如qt、gtk、fox、wxWindows。如果要编写游戏也有跨平台选择:SDL。
* 如果不满意C领域标准的不统一,不满意C的容易出错,不满意C的面向对象特征不彻底。
* 如果不在乎跨平台,Windows平台可以选择C#,maC平台可以选择CoCo。如果需要跨平台,可以选择Java。
* 如果需要跨平台,又要广泛的支持的话,选择Java。
* 在Unix-like下,最方便的工具语言是Perl,它有强大的社区和代码库的支持。
* 如果只作为简单应用的工具语言,Python和Ruby是更好的选择,他们的跨平台移植性好,应用也比较广泛。其中Python更适合入门和交流,长期使用也不错。Ruby是对Python不满意的另一个选择,它提供了很多额外的功能。
* 如果要选择一个程序的嵌入语言,原来有Lisp、Basic和Java,现在还可以选择Python和Ruby。
* 如果在要求动态解释执行语言,而又不想学其他语言的话,C程序员的选择是pike,Java程序员的选择是beanshell。
* 在Java平台,又想用脚本语言的话,可以用Python。
* 最正统的基于文档的语言或叫动态页面语言是JavaScript。
* 最专门的服务器端语言是PHP,当然也有很多其他选择。
* XML语言以XUL为最着名,dtml也算一个,你自己也可以用XML作为自己特殊用途的语言。比如jedit就用XML作为一种模式定制语言。XML语言是一种比较先进的趋势,比现有的语言在特殊领域更高效。
* 要找容易实现的语言,Lisp和Tcl是选择。Lisp的数据和程序融为一体的能力和自由是其他语言都没有的。现在出现了一个Lisp的现代化的变种:REBOL。
* 如果有基于事实的编程的需要的话,prolog和Clips是必然。
6.1 一般是使用什么软件,就用什么软件的语言
就拿我用的软件举例:
使用excel,就用vba编程。
使用autoCad就用autoLisp编程
使用zope就用Python编程
如果使用gimp就用Python或sCheme编程
使用gnome office就用Python或Basic编程
使用blender就用Python编程
6.2 然后看处理什么样类型的数据
如果处理文件的操作就用shell语言。比如bash
如果处理文本文件,就用Perl或awk,如果喜欢Perl的风格,又象编大程序,就要用Ruby
如果处理数据库,简单的用sed。否则用sql。
如果是对象数据库,可以使用Python+ZODB、或Lua、fish
如果一般的数据库不能满足要求,需要做专家系统,就用prolog
如果处理结构化文本,如XML,就用xslt。
处理HTML,客户端用JavasCript,服务器端用PHP
如果处理类似语言分析的文本,就用yacc
如果处理出来的结果是打印文档或屏幕文档,就用tex
如果是图像、动画或其它二进制的文件,一般用C语言。
如果处理的问题和操作系统底层打交道,用C语言
6.3 从语言特点来说
如果极端要求运行中的多线程的并发和分布,可以考虑oz语言。
如果极端重视文档,希望把程序的文档写出来了,程序也几乎就完成了,那么用Cweb
复杂的程序,在编写之前需要做uml的文档。
如果要编写规模较大的程序或打算只学一种编程语言,就要用Python
如果编写程序来处理复杂的数据结构和算法,就用Lisp和sCheme (喜欢Lisp的风格,并希望更简单,用REBOL)
如果想最简单的实现一个语言来作为嵌入语言,就用Tcl,如果Tcl有局限,就用Lua
6.4 C语言的改进
C语言是最普及的语言,但C语言有一些缺点,因此,就产生了很多改进C的语言。
因为C不能编写大程序,就产生了C++;因为C++还有指针等缺点,就产生了Java;
如果不喜欢C++的各种缺点,又想使用一个编译型语言,就选择eiffel。C语言的一个缺点是标准库规模小,不能解决所有的问题,就产生了大量不兼容的库,导致了很多不可移植的程序。如果想要一个和C用样级别的可移植的编程语言,就选择Ada。Ada的图形用户界面库和各种和操作系统相关的库都是标准化的,可以选择不同卖家的解决方案。是军队要求的标准编程语言。如果不喜欢C语言的繁琐,希望常做的事编程能够简单,那么可以用Python。完成同样的工作,Python代码行数是C的几分之一。
C风格的脚本化语言是JavasCript,pike
6.5 关于图形用户界面的选择
* 最简单的图形界面接口是tk,可以在各种平台上可用
* 如果有更高的要求使用gtk。gtk移植性差些。
* 一个以移植性为目标的开源C库是wxwindow
* 如果希望简单的编程,要求不很高,可以用XUL
* 跨平台的图形用户结构是Java的awt和swing。如果不跨平台,还有ibm的Java解决方案。
* 如果对商业编程语言不排斥,可以用qt,因为qt的程序,如果商业使用是要付费的。
* 如果要编写全屏的文本界面程序,emaCs是最权威的。我们可以回忆,turbo C的编程环境和图形用户界面一样友好。它就是全屏的文本用户界面。
* 如果编写office家族类似的程序,在openoffice上也是可以考虑的选择。gtk也可以。
6.6.Ruby和Python的比较
6.6.1. Python和Ruby的相同点
* 都强调语法简单,都具有更一般的表达方式。Python是缩进,Ruby是类Basic的表达。都大量减少了符号。
* 都是动态数据类型。都是有丰富的数据结构。
* 都具有C语言扩展能力,都具有可移植性,比Perl的可移植性更好。也都可以作为嵌入语言。
* 都是面向对象的语言,都可以作为大项目的开发工具。
* 都有丰富的库支持。
* 也有最宽松的版权许可,除了一些工具属于GNU世界。
* 都有Lisp特色的eval函数,也都能把函数作为参数。
* 也有图形界面的Ruby的专门编辑器。
* 都获得了广泛的C库的支持。如qt、gtk、tk、SDL、FOX等,Ruby计划实现SWIG接口。
* 都有完善的文档。
6.6.2. 和Python相比Ruby的优点
* 具有正则表达式和嵌入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等。
6.6.3. 和Python相比Ruby的不足
* 最大的不足正是因为Ruby的强大所引起的。它没有Python的简单性好。比较复杂的面向对象语法、“块”语法的引入、正则表达式的引入、一些简写标记都增加了语言的复杂性。
* Python的缩进表达方式比Ruby的Basic的表达方式更让人悦目,Ruby程序的满眼的end让人不舒服。当然,Ruby认为end的方式比Python更先进。
* Ruby还没有Python的“自省”的能力,没有从程序文件中生成文档的能力。
* Ruby支持不及Python广。国际化支持在Ruby的计划中。这是因为Ruby的历史比Python要短造成的。
6.6.4. Python和Ruby的语言的选择
从简单的就是好的来说,选Python是没错的。Python适合寻找简单语言的人,这很可能造成Python更流行,因此也有更多的支持。但如果要追求更强大的语法功能,对编程语言感兴趣,想了解各种编程概念的人,则Ruby是好的选择。Ruby和Python都想取代Perl,解决Perl的缺点--面向对象不足,但Python用是方法是混合面向对象和程序式的程序语言,Ruby是允许自己这个面向对象语言扮成程序式的程序语言,方向很不同。
6.7 discuss
各种语言的选择和语言之间的关系:
如果处理结构化文本,如XML,就用xslt。 XML本身也算吧. 处理HTML,客户端用JavasCript,服务器端用PHP PHP不是唯一。如果处理出来的结果是打印文档或屏幕文档,就用tex超强。如果是图像、动画或其它二进制的文件,一般用C语言。 如果处理的问题和操作系统底层打交道,用C语言,我会在C/C++里面选C++。如果极端要求运行中的多线程的并发和分布,可以考虑oz语言。20年以后的语言。如果编写程序来处理复杂的数据结构和算法,就用Lisp和sCheme Lisp也是让人喜欢。
如果要编写全屏的文本界面程序,emaCs是最权威的。我们可以回忆,turbo C的编程环境和图形用户界面一样友好。它就是全屏的文本用户界面。 哈,EmaCs。
也许,语言是用来超越的.许多应用就需要不同语言混合. 把Python嵌到应用程序中,我觉得很诱人。
|
|