【VC++开源代码栏目提醒】:本文主要为网学会员提供“各种开发语言简介 - 技术总结”,希望对需要各种开发语言简介 - 技术总结网友有所帮助,学习一下!
各种编程语言介绍1. 开放源
代码的必要性在介绍编程语言之前,先说说开放源
代码的必要性。
现在,在软件生产领域存在巨大的智利浪费,大家把大量的精力用在编写别人已经实现的程序
代码上。
看看,文本编辑器有多少,看看 ftp 程序有多少,看看字处理程序有多少,这些程序虽然有差别,但主要的功能都是一样的。
要实现个性化的功能,在已有的软件基础上修改会节省多少时间呀!而每个程序各编一套,又浪费多少时间?如果,没有这些重复的工作量,世界上的程序员至少可以节省 80的工作量。
同时,开放源
代码也方便了大家的交流,阅读源
代码应该是最直接最有效的学习途径,尤其是比较专业的领域。
要开放源
代码,下面几点比较重要: 语言要流行。
语言的函数和类库统一。
语言的语法和编译器要统一。
编译器是否开放源
代码。
API 是否开放源
代码。
语言的可重用性、功能、友好性。
语言统一:如果大家都用一种编程语言,都用同样的函数,同样的类库,那么,大家的共同语言就会很多。
大家只要学会一种语言,一套函数,一套类库,就可以相互读懂源
代码,这样,学习量是最少的;但是语言统一根本是不可能的事,因为各种语言都有其特色,如果取了其中一个优点,通常就会牺牲另一个优点。
可是学习新的 API 浪费程序员大量的时间和精力,尤其是当这个 API 有大量和其他 API 重复的功能的时候。
要增加
代码的可重用性,要从下面几点着手:
代码的可读性。
如格式、是否接近英语语法和单词。
代码的表达能力,也就是简单性,能用最少的语句和单词实现同样的功能。
代码的结构性,如函数、模块、类。
语言功能的强大从下面几点来说: 是否拥有大量的库支持。
这是最重要的,要求编写任何功能的程序都有强大的库支持。
语法功能是否强大,比如是否有出错处理。
是否有指针。
语言的友好性: 语言包的大小,语言包越小,学习越简单。
语言是否有友好的编辑调试环境。
语言的可视化和集成编程环境。
2. 简介各种程序语言注∶在程序语言前划有☆号者,表示它有重大影响,但不代表它优良。
2.1 适合编写商业程序、对效能有所要求。
编写商业程序的程序语言,最基本的要求就是不是直译的,令使用者不能看到源码;第二就是有良好的性能、语法,适合编写大程序而效率不会过慢。
2.1.1 ☆C/C自从 C 发明了以后,它就取代了汇编语言在操作系统编程的领导地位。
从性能上说,除了汇编语言,C 语言是最接近机器的语言。
各种操作系统的编程接口的默认语言都是 C 语言。
因此,用 C 语言编程,可以最大限度发挥操作系统的能力。
同时,由于绝大部分的商品软件都是 C 或与 C 兼容的 C实现的,都有 C编程接口,可以说,没有 C 不能实现的功能。
C是 C 语言的加强版,C增加了面向对象和其他有用的功能,但它的效能并没有大减,编程更方便轻松;而 C亦支援大部分 C 的程序,令 C和 C变得近乎不可分割,大部分的 C 编译器也支援 C。
假如要在学 C 或学 C选择,学 C是明智的选择。
在 Unix-like 的操作系统中,C 具有很好的开放源
代码的条件,它有统一的编译器 gcc,有强大但比较难掌握的编程环境 emacs, 有统一的 API:posix 和 Linux接口。
并且大部分编译器和 API 是开放源
代码的。
在 Unix-like 上编写图形界面程序,有两个选择 KDE 和 Gnome∶KDE 更成熟,但它使用了不是
开源的Qt 函数库;Gnome 支持多语言和面向对象的程序间的协同,有它的 GUI 工具GTK。
在 Windows 环境中,现在通常使用
VC,但有一个缺点,Windows 的升级换代太快,从 dos 环境到 Windows31 ,从 Windows31 到 Windows95,到Windows2000,到.NET。
API 常常变换,这样,在 Windows 上的程序
代码的寿命会比较短。
并且
vC 的编译器和 API 太复杂,难于掌握,并非开放源
代码的工具。
其他选择有从 Unix-like 系统移植过来的 djgpp、mingw。
由于 C/C具有现代语言的大量特征,现在常常代替 Pascal 作为教学的编程语言。
实际上,如果不深入学习,C 也是一种很简单的语言。
不学 Basic,直接学 C 完全没有问题。
和其他语言相比,虽然 C 和 C都已经定下了其标准,但编译器、函数库、操作系统 API 五花八门,有些又未必全面支援最新的标准,造成学习的难度大、统一性差的问题。
2.1.2 ☆Visual Basic简称 VBVB 是快速的界面生成语言,是快速的数据库程序开发语言。
vba 是 vb 的应用版,嵌入在 MS office 中。
编写 MS office 上的程序很好用。
缺点是只能在Windows 平台运作。
2.1.3 Delphi/Kylix和 vb 一样是快速开发环境, 但性能更好,功能更强大,亦可以用于 Linux 平台。
语法建基于 Pascal,是面向对象的程序语言。
2.1.4 ☆Java相对 C,Java 作为现代语言,具有非常丰富的语法特征,如模块和类,不像 C随操作系统和编译器的不同有极大差异,Java 是一个公司的产品,具有唯一的API,因此,Java 程序员没有语言隔阂。
有人认为 Java 根本是一个平台,并非真正的跨平台。
相对跨平台的语言来说,Java 具有最好的图形界面编程 API。
Java 所有的 API都是类库,相对 C 的函数来说,是非常大的进步。
Java 具有现代语言几乎所有的特征。
Java 最大的缺点,是它被一所公司控制着。
2.1.5 AdaAda 语言和 C/C是一种编译语言, 他们最后编译出的执行文件的机器码都很小。
因此现在众多的语言只有 C/C能够与 Ada 相提并论。
和 C/C相比,Ada 的特点是可靠、可移植。
他的可靠是通过比其他语言都强大的类型,每种类型还都可以象数据库字段一样进行强类型、范围的检查。
以此来保证在编译中就发现错误。
它有强大的标准化组织,严格认证 Ada 编译器的标准。
有多线程能力。
适于编写实时程序。
但和 C/C相比太复杂、罗嗦,因此注定不能流行。
2.2 Scripting Language如果不在乎商业机密,应用目标也不是太苛刻的话,编写大型跨平台程序的最佳就是脚本语言。
有些脚本语言具有全面的库的支持,有和 C 语言的方便的交互能力。
他们和 Java 相比,编程效率更高。
同时因为没有编译,程序更方便修改。
因为他们的库都是 C 实现的,也比 Java 有更高性能。
同时,他们都是
开源的,都是对商业应用友好的,也是简单的、方便定制的。
也是不满意 Java 的不可控制的越来越庞大的库的又一个选择。
2.2.1 Basic现在最着名的 Basic 版本是 vb,Basic 是简单的初级语言。
Basic 的丑陋在于参数还是默认传地址。
太危险。
2.2.2 ☆PerlPerl 的最大特点是有强大的字符串模式匹配,是最好的文本文件的读取和生成语言,亦是 Unix 系统管理者的好帮手,因为它吸收了 awk、sed、grep 等工具的功能。
Perl 具有很大的自由性,象英语一样有很大的随意性,在 Perl 里基本上无 Type Error 这回事,它的”Type”就是纯量和串行。
Perl 有一个强大的数据库接口和其他各种接口。
Perl 有大量的程序库(CPAN)。
因为 Perl 较早出现,某些功能是后期加上去,显得不协调,例如它的面向对象功能就被视为不是真正的面向对象。
Perl 有个着名的缺点是难读懂,维护困难,被认为不适合编写大程序,只适合一千行以下的程序,也有个著名的优点是简练。
2.2.3 Python首先, Python 是和 Basic 一样面向初学者的语言,和英语一样容易懂。
Python有和 Perl 类似的简单性,但没有模式匹配。
Python 有和 Lisp 相似的地方,它有将字符串作为程序执行的 eval 函数,可以对一个对象的所有数据进行保存,可以把函数作为参数传给另一个函数。
Python 具有非常好的扩充性,Python程序可以和 C 程序,以及 Java 程序很好地结合。
2.2.4 TclTcl 具有最简单的语法,最好的和其他程序交互的能力,有编写图形界面程序的Tk。
基本上已经没有个人用户学习 Tcl 语言,但是中国一些大型的嵌入式软件公司至今一直使用该语言进行软件测试工作,而且 Tcl 的工具包 Tk 也是很多Scripting Language 的 GUI 工具。
2.2.5 RubyRuby 是吸取了所有语言精华的语言。
Ruby 虽然是纯面向对象语言,但可以”扮成”程序式的程序语言;它的文件主要都是日文和英文。
Ruby 有: Perl 的正则表达式 Python 的语言的简单性可读性、最容易的扩展能力,强大的可移植性。
PHP 的嵌入功能和多种客户端 smalltalk 的纯面向对象语法和单继承 Lisp 的无穷嵌套的语法,也就是函数式的语法。
用“块”来实现更快捷的数据结构的处理。
不知道是不是 sCheme 的宏功能。
用块能更清楚的实现 Python 的表处理功能。
Java 和 Ada 的线程编程 Java 的安全编程不得不承认 Ruby 确实是个精彩的语言,它完全学会了 Lisp 的所有编程都是函数的思想,smalltalk 的所有东西都是对象的思想,Perl 的一个目的多种手段的方法,Python 的简单化的“最少惊喜”的原则,Java 的多线程和安全控制的功能,Tcl 的容易扩展的功能,PHP 的嵌入功能和强大客户端的功能,最方便的shell 命令的调用。
2.2.6 LuaLua 是一个小巧强大的脚本语言。
第一眼看到 Lua 的介绍,感觉它象 Tcl 的替代品,因为它的主要目的是作为脚本语言。
但接下来就看到它不是象 Tcl 那样是命令行式的函数语言,它和其它语言一样有语句结构。
它实现和 C 程序互动的方式和 Python 类似,具有和 Python 一样的和 C 结合的能力。
并且 Lua 全部是用 ansi C 实现的,可以实现完全的跨平台。
然后,看到 Lua 的一个显着的特点就是具有对象数据库功能,可以实现变量的永恒存储。
这个特点让人首先联想到 fish,fish 的最重要的特点也是语言内含一个对象数据库,不过 fish 有 outline 的可视界面,和数据库浏览能力。
但 fish不是
开源的,因此,如果需要一个非内存的变量存储空间可以选择 Lua。
这种对象数据库都是不但能存储数据,也能存储操作数据的函数。
实际 Python 也具有一个将整个内存存储在一个磁盘文件的功能,另外,还有 zope 的 zodb 可以实现专业的永恒变量功能。
另外,sCheme 天然具有永恒存储能力,它只要把表变量输出到一个文件中就可以了。
因为 sCheme 是不分数据和程序的,因此可以实现将程序和数据同样存储在文件中。
Lua 和 Python 相比规模比较小,因为它是和 C 紧密结合的,可以完全使用各种 C 库,就不需要有自己的库。
Lua 给人的印象是小规模的 Python。
Lua 也是动态数据类型,也有内存管理功能。
只是 Python 自带强大的库,而 Lua 只携带一个小型的库,具有字符串和数学计算能力,同时 Lua 标准携带一个对象数据库。
另外,可以把 C 库随时编译到 Lua 中。
Lua 引以自豪的是它的速度很快。
Lua 的语法比较简单,它把数组、字典、结构等复杂的数据结构都统一为表。
另外,Lua 具有正则表达式功能。
2.3 网页编写∶客户端程序2.3.1 JavaScript编写动态网页的最佳工具,可以造到很多效果,亦是 Mozilla 扩充套件的语言。
2.3.2 VBScriptVBScript 是 vb 的脚本语言,可以产生服务器端和客户端的动态网页。
客户端的动态网页暂时只有 IE 系列浏览器支援,所以 VBScript 兼容性很低,不及JavaScript。
2.4 服务器端程序2.4.1 PHPPHP 是专门写网页程序的语言,它的语法和 Perl 极之接近。
PHP 可以嵌入HTML,更容易编写服务器端程序。
PHP 天然和 web 服务器以及 mysql 数据库相结合。
PHP 可以动态生成图像。
我一直认为 PHP 是一个垃圾,因为它只是实现了脚本语言得嵌入,却单独实现一种语言、实现大量得函数库,浪费了大量得开发人员得宝贵时间来重复其他脚本已经实现了得功能,也浪费了 PHP 开发人员得大量学习时间,还要单独学一种只能存在于 web 服务器得语言,浪费了 Perl、Python 得已有得使用经验。
相似得还有 pike, 一种 C 得脚本语言,没什么新东西,还不如仍然用 C 编译器。
但我最近看书才了解 PHP 独特的开发目标。
PHP 为什么不直接用 Perl 作脚本语言。
是因为 Perl 是一种 Unix 语言,带有Unix 传统的字符神秘高深,让人难于学习。
而编动态网页得人不见得会用 Perl这种 Unix 工具,他们可能只有 HTML 知识。
PHP 就简化了 Perl 得语言,变成了一种简单友好得语言,免去了人们学习 Perl 得困难。
PHP 为什么不选 Python 作脚本。
因为 Python 是一种面向对象的语言,大量得功能都要涉及面向对象概念,而 web 应用只是简单得实现客户机逻辑和显示功能。
没必要涉及面向对象得复杂概念。
函数是最简单,最容易理解得,因此,PHP 倾向于所有得功能都用函数来解决,而不是用对象来解决。
这有点象 C 和C之争。
应该承认,函数在实现简单功能得时候是最有利得工具,它得语句量最少。
PHP 定位于以 HTML 为用户界面,充当各种服务器得客户端,实现得是传统得客户端编程得任务。
它有 pop、smtp、ftp、多种数据库等各种服务器得客户端得函数,也有图片、pdf 生成,XML 处理等这种必要得功能。
这些都是其他脚本比不上 PHP 得地方。
其他专门写网页程序的语言有 ASP、JSP 和 CGI,但它们都不及 PHP 强大。
2.4.2 Java、.NET、Zope在商业开发中流行的是 Java 和.NET,其实 zope 也是选择之一,zope 的特点就是全部
开源,层次少,简单。
并且集成一个内容管理器和众多的附加产品。
附加产品多是
开源软件必然的优势。
zope 之前的一些缺点在 zope3 中将得到解决。
另外,zope 的组件架构和 Cmf 开发架构,并不必 Java 的组件开发环境差多少(我没接触很多 Java,只是评感觉说,其他人可以有不同意见)。
PHP 虽然看起来不适合大程序开发,但在 PHP 平台上已经有了很多大规模的程序,比如 puke。
tiki。
另外,web 服务器已经被很多程序缺省支持,用很多语言都能编写出独立的 web服务器程序。
2.5 其他2.5.1 LispLisp 的语法非常简单统一,只有简单的函数和参数的语句结构。
Lisp 用上极多括号,不太方便。
Lisp 数据和程序的界限模糊。
Lisp 可以深度嵌套。
2.5.2 prologprolog 是由 R. Kowalsk 首次提出,全称是 Programming in Logic。
1972年诞生世界上第一个 Prolog 系统。
它基于逻辑程序设计,能自动实现模式匹配和回溯,且适合于并行处理。
PROLOG 以一阶谓词演算为基础。
由于采用了合一、置换、回溯和匹配等机制来搜索解答,所以用户不必要编写求解搜索程序,只要把待解决的问题输入计算机系统就可以了。
PROLOG 的功能还不如 LISP强,但它具有较好的发展前景,曾被用作第五代计算机开发研究的核心语言。
2.5.3 .NET支持多种语言的统一的 API 类库,可以编写 webform 程序, 即所有的逻辑都在服务器端,传到客户端的是标准的 HTML3.0,可以被各种浏览器支持。
各程序组件间通过 soap 交换消息。
2.6 其他编程概念2.6.1 Turing-complete programming: Brainfuck: Brainfuck,是一种极小化的计算机语言,它是由 Urban Müller在 1993 年创建的。
这种语言有时被称为 brainfck 或 brainf,在一些严肃的场合也被称为 BF。
Müller 的目标是建立一种简单的、可以用最小的编译器来实现的、 符合 Turing complete 思想的编程语言。
这种语言由八种状态构成,为 Amiga 机器编写的编译器第二版只有 240 个字节大小! 就象它的名字所暗示的,brainfuck 程序很难读懂。
尽管如此,brainfuck 图灵机一样可以完成任何计算任务。
虽然 brainfuck 的计算方式如此与众不同,但它确实能够正确运行。
2.6.2 ☆Functional Programming: Haskell: Haskell,是一门纯正的函数式程序设计语言。
特式是利用很简单的叙述就可以完成 Linked List、矩阵等数据结构。
Clean: Concurrent Clean,简称 Clean,是纯函数式程序设计语言,它和Haskell 有很多相似之处。
Clean 是用 C 写成的。
Clean 程序很容易跨平台,在大部分情况下,要转移到另一个平台只需在那里重新编译一次即可,不用改动原始码。
2.6.3 平行处理: Fortran : Fortran,是由 Formula Translate 两个字所组合而成,意思是公式翻译,因此该计算机语言是为理工方面之计算所发展出来。
1957 年发展出第一套 Fortran 语言, 而后 1977 年改进成为较具结构化特性之语言,称为 Fortran77。
1991 年则加入对象导向的观念与提供指针,并同时加强数组的功能,大幅改进旧版 Fortran 的型式,称为 Fortran 90。
3. 多脚本语言的大统一及疑问现在各种脚本语言太多了,有必要进行整合,parrot 是一个好的想法。
.NET 也是好的想法。
它为各种脚本提供了一个统一的虚机,为各种脚本语言提供了基于“类”的相互调用,为各种脚本提供了统一的类库。
现在各种脚本语言只是提供了对 C 语言的交互性,这种交互也是费劲的和效果不好的。
比如 Python、Perl、Ruby 等都提供了对 C 的交互功能。
脚本语言之间的交流障碍重重。
而类似.NET 的东西,提供了非常容易的各种脚本的相互利用的途径,避免了很多的
代码的重复编写。
这种标准平台的力量是很大的,这种标准平台为什么没有在
开源领域首先出现呢?众多的脚本正是
开源的特点和优势,为什么这种问题要微软来解决呢?前面有人提出了类似的问题,在 Linux中为什么至今没有好用的类似 ODBC 的东西呢?可能这种整合只有商业公司有能力实现吧。
我的理解是,如果有创新思想的人都拿他的想法去卖钱了,因此,在
开源中只剩下了模仿的人。
kde 是模仿 Windows,koffice 是模仿 office,Linux 是模仿Unix,gcc、bash 等也全都是模仿,以及 gstep 等,还有 freedos、atheos等也是模仿,wxWindows、SDL 也是模仿。
我想知道
开源社区有没有自己的创新?我所知道的创新是 zope,但 zope 最初也是商业产品,后来才
开源的。
Perl 是创新,Python 是创新,但还有什么呢?是不是
开源领域只有 haCk,没有 Creator?4..NET 平台4.1. .NET 所实现的 Java 的功能可控
代码、跨平台的虚机和伪码、免费赠送命令行编译器、纯面向对象语言、对XML 和 XML web serviCes 的支持和 jsp 对应的 asp.NET、网页上的程序、一套统一的中间件环境。
Asp.NET 跟 Jsp 不是同一个层次上的 web 技术, Asp.NET 使用完善的事件响应机制,WinForms 类似的 WebForm 技术, 只有 JSF 跟 Asp.NET 有可比性。
4.2. .NET 实现的 Java 功能免费的集成开发环境 多厂家支持跨平台的成熟度。
免费的 IDE develop ASP.NET 的有 MS 的 WebMatrix 而免费
开源的 CLR 实现, MS 自己的 XP, 有FreeBSD,Mac OS 下的 实现(原理演示不能进行商业应用), Novell 下的Mono 项目, 已经发布了 Beta1 版本, 2004-6-30 将会发布 Release1; 还 在有 GNU 的一个.NET 实现!!4.3. .NET 实现的 Java 不具备的功能多语言支持、强大的集成开发环境。
在 Windows 上媲美本机程序的速度。
对COM 的支持,对 vs 的继承 对 widows form 、web form、服务器端程序的图形直观编程。
4.4. 相对 vs6 的改进统一了集成开发环境,使 C程序也具有了 vb 的友好性。
5. 几种语言的点评5.1. XML 各种技术介绍 XML:XML 是统一格式的结构化数据的文本文件。
基于 XML 的程序,数据结构是开放的,方便不同程序处理同一种文件,这样,程序之间可以达到高水平的协作。
XML 现在成为了各行各业统一数据格式的基础。
XML 发展出了完善的语法,它用 DTD 或 sCheme 来界定 XML 的标记语言。
用 uri 来唯一确定一个 XML 格式。
Css 或 XLT 来转换 XML 格式, 用 xlink 和 xpointer 等来建立 XML 的链接,用 xpath 来定位 XML 中的数据。
XHTML:是严格符合 XML 格式的 HTML。
RDF:基于 XML 的元数据描述语言。
方便交换结构化数据。
方便交换知识。
RDF 是用主语、谓语、宾语来描述知识的。
SVG:XML 格式的矢量图形格式。
SMILE:XML 格式的各种多媒体在时间线上的协同。
Xmath:XML 格式的公式描述语言。
XML-RPC 和 Soap:以 http 协议和 XML 格式来进行网络程序之间的消息通讯。
XUL:NetScape 的 mazilla 使用的程序界面语言,基于 XML 格式,比 HTML 强大的多的描述图形界面的 XML 语言。
它用 Css 来换肤,用 DTD 来实现多语言界面,用 JavasCript 来实现程序逻辑,以此编写跨平台的可方便定制界面的程序,现在这个程序 API 功能已经很强大了,整个 mazilla 程序就是基于 XUL 的。
XAML:MS 在 LongHorn 平台的最新编程语言, 将统一 Windows 与 Web 编程,直接使用。
LongHorn 下的浏览器进行执行,跟 XUL 有类比性。
5.2 最先进的 XML 格式图形界面程序开发工具-XUL大家知道 NetScape 程序,一个仅次于 IE 的浏览器,也有很多人知道 Mozilla,NetScape 的开放源
代码版本。
但很多人只是使用 Mozilla,不知道 Mozilla 另一个重要得功能--程序开发。
NetScape 开放源
代码后三年 Mozilla 的 1.0 在版还没有问世,很多人讥笑他的超慢得开发速度,实际上,Mozilla 酝酿出了一个超酷的新产品,可以看作是软件开发工具发展得另一个里程碑。
现在基于浏览器得三层开发结构非常流行,微软的.NET 的思路就是基于这个结构的。
另外,不考虑服务器结构,就是基于网页的 JavaScript 小程序也对人很有吸引力,这些产品得思路都是以 HTML 为用户界面,但开发人员常常苦恼于HTML 太简陋。
而 Mozilla 的 XUL 解决了这个问题。
XUL 是对 HTML 的扩展,完全兼容于 HTML,XUL 基于 XML 格式对 HTML 进行了扩展,实现了完整、强大得图形用户界面设计功能。
可以设计出复杂得图形界面程序。
实际上 mazilla 整个就是由 XUL 设计.
上一篇:
CodeBlocks简易教程
下一篇:
科研管理杂志简介