首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
编程语言
> 详细
编程语言汇总
时间:
2018-08-04 12:36:37
阅读:
144
评论:
0
收藏:
0
[点我收藏+]
标签:
pdf
用户
eval
避免
current
内容管理
微软
强类型
prolog
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(
简称
VB)
VB
是快速的界面生成语言,是快速的数据库程序开发语言。
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 Ada
Ada
语言和
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
☆
Perl
Perl
的最大特点是有强大的字符串模式匹配,是最好的文本文件的读取和生成语言,亦是
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 Tcl
Tcl
具有最简单的语法,最好的和其他程序交互的能力,有编写图形界面程序的
Tk
。基本上已经没有个人用户学习
Tcl
语言,但是中国一些大型的嵌入式软件公司至今一直使用该语言进行软件测试工作,而且
Tcl
的工具包
Tk
也是很多
Scripting Language
的
GUI
工具。
2.2.5 Ruby
Ruby
是吸取了所有语言精华的语言。
Ruby
虽然是纯面向对象语言,但可以
”
扮成
”
程序式的程序语言;它的文件主要都是日文和英文。
Ruby
有:
* Perl
的正则表达式
* Python
的语言的简单性可读性、最容易的扩展能力,强大的可移植性。
* PHP
的嵌入功能和多种客户端
* smalltalk
的纯面向对象语法和单继承
* Lisp
的无穷嵌套的语法,也就是函数式的语法。
*
用
“
块
”
来实现更快捷的数据结构的处理。不知道是不是
sCheme
的宏功能。用块能更清楚的实现
Python
的表处理功能。
* Java
和
Ada
的线程编程
* Java
的安全编程
不得不承认
Ruby
确实是个精彩的语言,它完全学会了
Lisp
的所有编程都是函数的思想,
smalltalk
的所有东西都是对象的思想,
Perl
的一个目的多种手段的方法,
Python
的简单化的
“
最少惊喜
”
的原则,
Java
的多线程和安全控制的功能,
Tcl
的容易扩展的功能,
PHP
的嵌入功能和强大客户端的功能,最方便的
shell
命令的调用。
2.2.6 Lua
Lua
是一个小巧强大的脚本语言。第一眼看到
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 VBScript
VBScript
是
vb
的脚本语言,可以产生服务器端和客户端的动态网页。客户端的动态网页暂时只有
IE
系列浏览器支援,所以
VBScript
兼容性很低,不及
JavaScript
。
2.4
服务器端程序
2.4.1 PHP
PHP
是专门写网页程序的语言,它的语法和
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 Lisp
Lisp
的语法非常简单统一,只有简单的函数和参数的语句结构。
Lisp
用上极多括号,不太方便。
Lisp
数据和程序的界限模糊。
Lisp
可以深度嵌套。
2.5.2 prolog
prolog
是由
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
年创建的。这种语言有时被称为
brainf*ck
或
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
年改进成为较具结构化特性之语言,称为
Fortran 77
。
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
设计的。
XUL
用
Css
来控制界面风格、用
DTD
来替代字符串,方便的实现本地化,用
JavasCript
来对用户界面的操作作出反应,提供基本的逻辑编程,
JavaScript
通过对象文档接口
DOM
来动态控制用户界面。同时
JavasCript
通过调用
Mozilla
提供的丰富的底层
API
来实现强大的功能。
Mozilla
提供了功能强大的
API
可以进行文件操作、网络操作、图形操作等各种操作,并且这种
API
是完全跨平台的。最后,
Mozilla
用
RDF
格式来存储独立于界面的数据。
总结:
XUL
由于兼容
HTML
,提供了最强大的用户界面的定制,
DTD
提供了最方便的本地化。
XUL
、
JavasCript
、
RDF
提供了显示、逻辑、数据的分离。
Mozilla
的底层
API
提供了跨平台的强大编程能力。希望大家都来关心
Mozilla
。
5.3.
最接近人类语言的编程语言-
REBOL
REBOL
的详细资料见
www.REBOL.org
。这里谈一下我的印象。
REBOL
的缺点是明显的。它是一个商业公司的产品。它只是象
Java
一样免费使用。但不开放源代码。并且它的数据库连接的函数库是收费的。但它的优点也十分明显,如果因为不是开放源代码软件而不能放心使用,也可以欣赏和借鉴它的种种特点,并且了解了
REBOL
肯定还会忍不住使用它。
首先
REBOL
是一个
Lisp
语言的替代品,它能实现
Lisp
的所有能力。他具有
Lisp
语言的数据和程序同等处理的特
点,也有语句和表达式的统一。但大大打破了
Lisp
的局限。它允许中缀运算符的形式,没有满眼的括号,和一般编程语言的表达方法完全一样。同时具有丰富的库,有完全的图形界面库,完全的网络库。因为是一个公司的产品,也保证了库的统一。
REBOL
自称为网络编程语言,它的网络编程能力很强,一般一个语句就可以下载一个文件,或下载一个网页,或接受一个邮件。
REBOL
一个神奇的特点是它的图形界面设计,它的界面编程非常简单,完全不用语句和函数,而是和
HTML
一样只要表达核心内容就行了。这得益于
REBOL
的
“
方言
”
能力。
REBOL
内置了
“
方言
”
能力。就是象
yacc
一样的语言解析能力。可以随时扩展
“
子语言
”
REBOL
内置了几十种数据类型,用它编程,语句肯定是最精炼的。
REBOL
可以实现
Java
一样的网络下载程序运行的能力,也有砂箱功能。它比
Java
更进一步,有自己的桌面,在桌面上可以任意启动各个
REBOL
程序,它的桌面象
HTML
一样有丰富的表达形式和超链接。链接到有
REBOL
功能的网站上就可以象浏览网页一样使用各种程序。由于
REBOL
语言比
Java
要简练的多,同时是不用编译的脚本语言,它的程序文件非常小,更适合网络传输。因为
REBOL
有这样神奇的功能,它自称
internet
操作系统。因为
REBOL
是脚本语言,因此它天然是跨平台的。它有很多操作系统的实现。
还有一个特点,
REBOL
语言自身只是一个几百
k
的可执行文件,因此
REBOL
程序的发布是非常简单的。
5.4.
我为什么选择了
Python
首先声明,我编程只编应用程序,就是代替自己工作的小程序。如果编写系统程序总会用到
C
或
Java
的。
我喜欢脚本语言,脚本语言不用编译就可以运行,非常便于修改,而编程序是一种经常性的活动,程序编完后总在不断的修改中,没必要搞的很隆重,还要编译。另外,脚本程序每个使用的人都可以随手拿来修改,不会出现还要去找源代码的情况。因此,
C/C++
和
Java
就被排除了。
我喜欢简单的语言,不喜欢为了编写简单的程序而去学习大量复杂的规定,需要大量的学习才会的语言不是好语言,是把人当机器看。
C/C++
和
Java
都有严格但啰嗦的语法,有永远学不完的函数、类、库。让人看到就头大。而
Perl
有各种怪里怪气的速记符号,程序常常让人头晕。简单的含义除了容易学,还要功能丰富,常用到的东西要早就准备好,不用每个人都去写同样的数据结构程序等。
Python
有丰富的数据类型,有完备的面向对象的结构,有规则表达式等各种方便编程的模块。这个逻辑就是程序做的多,人做的就少,如果程序做的少,就要人做的多。这就是界面友好的问题。容易上手,功能丰富是程序设计的很重要的目标,
Windows
就是靠这个流行的。而
Python
也很好的体现了这点。而
Perl
象
Unix
的
emaCs
之类其它工具一样,功能强大,但太难学,太难懂。是比较违背人性的。
关于性能。现在
Cpu
已经很强大了。除了很大的程序和系统程序,没必要关心性能。
关于功能。如果不是编写系统程序和贴近系统的程序,没必要使用操作系统特别提供的功能。
C
是可以干任何事情,但它编程效率低,复杂。
至于我为什么不用
vb
,因为
vb
太庞大了。我没必要实现一个小功能启动这么庞大的程序。太夸张。另外,
vb
没有类继承,虽然是应用编程,但如果要编稍微大的程序,总会用到类继承的。
Python
得强大得扩展能力使对
Python
得学习不会浪费。
Python
经过简单得处理能使用各种得
C
和
C++
库,也可以被
C
和
C++
调用。
Python
可以直接使用
Java
得类,也可以直接被
Java
调用。这样,对
Python
、
Java
、
C
得学习和使用经验都不会被浪费,还能相互补充。
Python
可以提高
Java
和
C
得编程效率,
Java
和
C
可以补充
Python
功能上得不足。
Python
还可以和
Tcl
直接交互,这种功能是内置得。期待
Python
能简单的调用
Perl
和
PHP
得功能。能使用
Lisp
和
prolog
更好。
5.5.
最具有现代感的
Lisp
解释器
DrScheme
Lisp
是一个古老的计算机编程语言,给人的印象是速度慢,输入输出能力弱,没有图形界面,自身携带的库太少,很多功能不能实现。这一切在
DrScheme
手中改变了。
DrScheme
具有大量的现代语言具有的功能,比如作为嵌入脚本的能力,图形界面的编程能力,面向对象的能力,组件编程能力,正则表达式能力,
XML
能力,作为
web
服务器和客户端来输入输出能力及其它网络能力,产生独立可执行文件的能力。一个集成的编辑调试环境。不过它的程序执行速度还是稍慢。
当然,它具有所有
Scheme
的优点,语法的宏定义能力,命名空间能力,数据和程序不分的能力,堆栈式内存管理,无穷嵌套,用
“
表
”
来表现所有语句和数据的简单方式,也天然带有程序环境的永恒存在能力。这些特点好像正在最新出现的编程语言中出现。好像目前的编程语言的发展趋势是从
C
语言的方式向具有更多
Lisp
特点的方向发展。就像
Windows
逐渐具有了越来越多的
Unix
早已实现的功能。才知道
Lisp
的编程环境已经这么好了。
5.6. eiffel
语言印象
印象深的是它是全开发周期的语言,并且是在开发周期可回溯的。它的
ContraCt
和
Ada
类似。
eiffel
是和
C++
类似的编译的面向对象语言,不过更简单,能够多继承。
eiffel
是
C
语言的面向对象编程的代替物。
5.7. mozart oz
语言
oz
介绍它是面向对象的、能够逻辑编程的、并发分布的语言。我对
oz
印象最深的是它的多线程能力。一个简单的
Case
语句,就可以启动多个线程。另外,它也是一个
prolog
的代替物,可以编写分布并发的人工智能程序。
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
嵌到应用程序中
,
我觉得很诱人。
7
.文学编程和
CWEB
介绍
CWEB
是
tex
的作者创立的一种编程语言。
tex
是主流的文档打印标准和文档生成工具。
tex
及相关的
metafont
就是用
Cweb
编写的软件,同时
tex
体现了
Cweb
的编程特点。
CWEB
的编程思想叫
“
文学编程
”
。实际应该叫
“
文章编程
”
,因为和文学关系不大,反而和学术着作类似。主要思想就是:编程应该象写学术着作那样,有整体构思,以部、章、节、子节、子子节那样逐级丰富。这实际和我们说的
“
自顶向下
”
的编程方法类似。但
“
自顶向下
”
只是一种软件工程的方式,它是以编写文档的方式实现的,没有和编程语言结合起来。
CWEB
用我的说法是用编程语言实现了
“
自顶向下
”
。
CWEB
的实现方式是
“
宏替换
”
,就是逐级用更具体的内容来代替较概括较简略的内容。我们使用的编程工具
“maker”
实际就是一种宏替换工具(我没用过
maker
,只是听说)。
zope
的
TAL
语言是一种替换工具,但不是宏替换工具,因为它的内容不是可执行的,如果内容是可执行的,那么它也可以叫宏替换。
编程语言汇总
标签:
pdf
用户
eval
避免
current
内容管理
微软
强类型
prolog
原文地址:http://blog.51cto.com/13717297/2154403
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
Spring Cloud 从入门到精通(一)Nacos 服务中心初探
2021-07-29
基础的排序算法
2021-07-29
SpringBoot|常用配置介绍
2021-07-29
关于 .NET 与 JAVA 在 JIT 编译上的一些差异
2021-07-29
C语言常用函数-toupper()将字符转换为大写英文字母函数
2021-07-29
《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)
2021-07-28
4-1 YAML配置文件 注入 JavaBean中
2021-07-28
【python】 用来将对象持久化的 pickle 模块
2021-07-28
马拉车算法
2021-07-28
用Python进行冒泡排序
2021-07-28
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!