编程语言分类及入门
代码:
Author: Felix Huang
Date: 20031002
Rev. 1.0
编程的语言按照编程思想可以分成几类:
=================
分类介绍
1. Register Machine 类
-------------
C/C++
-------------
C 语言是基于 Register 的图灵机的实现,一般来说,目前流行
的语言都是这一类。这种语言相当传统,思想比较接近计算机,
其中又以 C 为最,最初 Ken Thompson 设计 C 出来就是为了实现
Unix 的。因此有人称 C 作``中级语言''。事实上 C-like 语言的长处
就在于跟计算机的思想接近,因此执行效率高。缺点在于入门困难,
毕竟人脑可不是由 0 跟 1 组成的(不由另我想起 Donald Knuth 的名
言:Rewriting the Bible in 0's and 1's)。
在1980年代以前,一般的*作系统都是由机器的汇编码甚至机器码写
成,所以移植十分困难。最明显的例子是 RMS 曾经工作过的 ITS 系统
(全称是 Incompatible Time Sharing System,MIT 的 AI 实验室搞出来的
古怪名字),在 PDP-7 上的系统无法移植到 PDP-10 与 PDP-11 上,结果
被 AI lab 放弃使用。于是有鉴于此,AT&T 的 Ken 设计 Unix 的时候,
为了方便移植起见,就首先搞出来一个 C ,于是自此之后 Unix 大行
其道,几乎所有机器都可以运行 Unix ,只要重新编译一下就可以了。
C 的特点在于与系统联系紧密,语法松散。所以不是初学者的好选择。
C 的国际标准为 ISO C,目前的版本是 ISO C99,上一版是 C90。ANSI C
是国际标准化组织 ISO 接受 C 标准前的名字,ANSI 表示此乃美国标准。
C++ 是 AT&T 的 Bjarne Stroupe 设计的。设计 C++ 的目的是把面向对象
思想加到 C 中,使在抽象模型的时候更容易,也更方便大规模的代码
重用与代码管理。事实上,C++ 的代码效率略低于 C。但长处也是极其
明显的,C++ 代码的开发周期会明显短于 C,特别在大项目上。
C++ 的国际标准是 ISO C++,目前版本是 ISO C++ 98.
目前常见的 C/C++ 的编译器有:
Visual C++ Compiler MS 出品 Win32(贵)
Borland C++ Compiler Borland 出品 Win32(有免费版本下载)
Intel C++ Compiler Intel 出品,专为 Intel CPU 服务,Win32/Linux
(Linux下有免费非商业版授权)
GNU Compilers Collection 中的 C 编译器(gcc)
win32/linux/bsd/…… 免费,自由软件
Linux 下还有一个超小型的 C 编译器 Tiny CC,可以把 C 源文件以脚本
形式运行。
------------
Perl
------------
Larry Wall 的作品。此人非常强悍,写 Perl 出来只是为了解决建网站的
时候要写 CGI。他在 Perl 之前的作品是 patch 。ESR 对 patch 的评价非
常高,认为 patch 促成了被 Linux 开发模式所验证的高度分布的现代化
的开发模式。
Perl 是一门凌乱的语言,语法没有很具体的规则。如果你一个月没看过
perl 的代码,甚至会连自己的东西都看不懂。但事实上, perl 的效率
相当高,web 上大部分的应用,都是用 perl 写成的,包括 yahoo。入门
的 programmer 最好不要学,应该等你对 c 都有一定熟悉之后,才开始学习
perl。
linux 及其它 unix 类的*作系统下一般都会自带 perl。windows 的用户
可以到 www.activestate.com 下载 ActivePerl。
-----------------------------------
Pascal/Object Pascal/Delphi
-----------------------------------
Pascal 是一门语法相当严谨的语言,搞竞赛的同学一般都是先接触到它。
它的长处在于严谨的语法与类型检查,弱点是与平台相关的硬件控制、
指针的支持比较弱。这些方面 Borland 公司在开发 Delphi 的时候加以
改进,加入了对对象的支持、对指针的改进。然而 Pascal 并没有一个统
一的标准,所以不同编译器之间互不兼容的情况相当严重。但这并不能
阻止 pascal 成为一种好的入门语言。
pascal 的编译器有数种。目前常见的是 borland 的 delphi,gnu pascal
compiler 以及 free pascal。后两者是自由软件。
2. OO 类
-----------------
Smalltalk
-----------------
面向对象语言的鼻祖。其 OO 的程度比 Java 更彻底,也更适合作为 OO
的入门语言。其语法相当接近英语的自然语言,消息体系更为合理,
对理解 OO 有帮助。
编译器可到 www.gnu.org/software/smalltalk 下载。上面还有一份不错的
入门教程。
-------------
Java
-------------
笔者对 Java 的了解不多。Java 是一种完全面向对象的编程语言,其特点
为跨平台,应用广泛。
Java 编译器及库可以在 java.sun.com 下载。
--------------
Python
--------------
Python 是一门运行效率跟 Perl 可以比较的语言,而且 Python 揉合了 OO
与部分 Functional Programming 的优点,在最近发展得相当迅速。
Python 编译器可以在 www.python.org 下载。
3. Functional Programming
这类语言一般是基于 Church 的 Lambda 演算理论,有志学习数学与计算
的同学不可不学。
-------------
Lisp
-------------
最经典的 FP 语言,厉害之处在于定义了一种数据结构(表)与七个基本操
作就可以表示所有程序的运行结构了。能力无限强的一种语言。Emacs 之
所以如此强大,其原因是,Emacs 实际上是一个 Lisp 解释器,它的界面、
功能全部是由 Emacs Lisp 的子程序提供的,扩展相当容易。
解释器有几种,包括 gnu common lisp, clisp 与 cmucl. 前者可在 sf.net
找到,后两者可在 cons.org 找到。
---------------
Haskell
---------------
相当专业的一种语言,不搞数学不需要看。 www.haskell.org
=================
入门建议
=================
初学编程,应该从语法严谨的语言入手。因此 pascal 是一个不错的选择。
应该以 pascal 为基础去了解各种数据结构与算法,并掌握一定的数学基
础。当对数据结构与算法有一定熟悉后,便可以学习其它一系列的语言。
如果是想学习 OO 的话,推荐学习的是 java,但同时应该看 smalltalk 的
东西,因为 smalltalk 对 OO 的理解非常有帮助。而且 smalltalk 本身并
不困难,很容易就可以理解。
进一步学习,应该对带来不同编程思想的语言都有一定了解。上面提到
的语言都是不同编程思想中的皎皎者,对它们不一定要精通,但最好有
一定了解。
当遇到任何一门语言,你都可以快速应用的时候,你就成为真正的高手了。
代码:
Author: Felix Huang
Date: 20031002
Rev. 1.0
编程的语言按照编程思想可以分成几类:
=================
分类介绍
1. Register Machine 类
-------------
C/C++
-------------
C 语言是基于 Register 的图灵机的实现,一般来说,目前流行
的语言都是这一类。这种语言相当传统,思想比较接近计算机,
其中又以 C 为最,最初 Ken Thompson 设计 C 出来就是为了实现
Unix 的。因此有人称 C 作``中级语言''。事实上 C-like 语言的长处
就在于跟计算机的思想接近,因此执行效率高。缺点在于入门困难,
毕竟人脑可不是由 0 跟 1 组成的(不由另我想起 Donald Knuth 的名
言:Rewriting the Bible in 0's and 1's)。
在1980年代以前,一般的*作系统都是由机器的汇编码甚至机器码写
成,所以移植十分困难。最明显的例子是 RMS 曾经工作过的 ITS 系统
(全称是 Incompatible Time Sharing System,MIT 的 AI 实验室搞出来的
古怪名字),在 PDP-7 上的系统无法移植到 PDP-10 与 PDP-11 上,结果
被 AI lab 放弃使用。于是有鉴于此,AT&T 的 Ken 设计 Unix 的时候,
为了方便移植起见,就首先搞出来一个 C ,于是自此之后 Unix 大行
其道,几乎所有机器都可以运行 Unix ,只要重新编译一下就可以了。
C 的特点在于与系统联系紧密,语法松散。所以不是初学者的好选择。
C 的国际标准为 ISO C,目前的版本是 ISO C99,上一版是 C90。ANSI C
是国际标准化组织 ISO 接受 C 标准前的名字,ANSI 表示此乃美国标准。
C++ 是 AT&T 的 Bjarne Stroupe 设计的。设计 C++ 的目的是把面向对象
思想加到 C 中,使在抽象模型的时候更容易,也更方便大规模的代码
重用与代码管理。事实上,C++ 的代码效率略低于 C。但长处也是极其
明显的,C++ 代码的开发周期会明显短于 C,特别在大项目上。
C++ 的国际标准是 ISO C++,目前版本是 ISO C++ 98.
目前常见的 C/C++ 的编译器有:
Visual C++ Compiler MS 出品 Win32(贵)
Borland C++ Compiler Borland 出品 Win32(有免费版本下载)
Intel C++ Compiler Intel 出品,专为 Intel CPU 服务,Win32/Linux
(Linux下有免费非商业版授权)
GNU Compilers Collection 中的 C 编译器(gcc)
win32/linux/bsd/…… 免费,自由软件
Linux 下还有一个超小型的 C 编译器 Tiny CC,可以把 C 源文件以脚本
形式运行。
------------
Perl
------------
Larry Wall 的作品。此人非常强悍,写 Perl 出来只是为了解决建网站的
时候要写 CGI。他在 Perl 之前的作品是 patch 。ESR 对 patch 的评价非
常高,认为 patch 促成了被 Linux 开发模式所验证的高度分布的现代化
的开发模式。
Perl 是一门凌乱的语言,语法没有很具体的规则。如果你一个月没看过
perl 的代码,甚至会连自己的东西都看不懂。但事实上, perl 的效率
相当高,web 上大部分的应用,都是用 perl 写成的,包括 yahoo。入门
的 programmer 最好不要学,应该等你对 c 都有一定熟悉之后,才开始学习
perl。
linux 及其它 unix 类的*作系统下一般都会自带 perl。windows 的用户
可以到 www.activestate.com 下载 ActivePerl。
-----------------------------------
Pascal/Object Pascal/Delphi
-----------------------------------
Pascal 是一门语法相当严谨的语言,搞竞赛的同学一般都是先接触到它。
它的长处在于严谨的语法与类型检查,弱点是与平台相关的硬件控制、
指针的支持比较弱。这些方面 Borland 公司在开发 Delphi 的时候加以
改进,加入了对对象的支持、对指针的改进。然而 Pascal 并没有一个统
一的标准,所以不同编译器之间互不兼容的情况相当严重。但这并不能
阻止 pascal 成为一种好的入门语言。
pascal 的编译器有数种。目前常见的是 borland 的 delphi,gnu pascal
compiler 以及 free pascal。后两者是自由软件。
2. OO 类
-----------------
Smalltalk
-----------------
面向对象语言的鼻祖。其 OO 的程度比 Java 更彻底,也更适合作为 OO
的入门语言。其语法相当接近英语的自然语言,消息体系更为合理,
对理解 OO 有帮助。
编译器可到 www.gnu.org/software/smalltalk 下载。上面还有一份不错的
入门教程。
-------------
Java
-------------
笔者对 Java 的了解不多。Java 是一种完全面向对象的编程语言,其特点
为跨平台,应用广泛。
Java 编译器及库可以在 java.sun.com 下载。
--------------
Python
--------------
Python 是一门运行效率跟 Perl 可以比较的语言,而且 Python 揉合了 OO
与部分 Functional Programming 的优点,在最近发展得相当迅速。
Python 编译器可以在 www.python.org 下载。
3. Functional Programming
这类语言一般是基于 Church 的 Lambda 演算理论,有志学习数学与计算
的同学不可不学。
-------------
Lisp
-------------
最经典的 FP 语言,厉害之处在于定义了一种数据结构(表)与七个基本操
作就可以表示所有程序的运行结构了。能力无限强的一种语言。Emacs 之
所以如此强大,其原因是,Emacs 实际上是一个 Lisp 解释器,它的界面、
功能全部是由 Emacs Lisp 的子程序提供的,扩展相当容易。
解释器有几种,包括 gnu common lisp, clisp 与 cmucl. 前者可在 sf.net
找到,后两者可在 cons.org 找到。
---------------
Haskell
---------------
相当专业的一种语言,不搞数学不需要看。 www.haskell.org
=================
入门建议
=================
初学编程,应该从语法严谨的语言入手。因此 pascal 是一个不错的选择。
应该以 pascal 为基础去了解各种数据结构与算法,并掌握一定的数学基
础。当对数据结构与算法有一定熟悉后,便可以学习其它一系列的语言。
如果是想学习 OO 的话,推荐学习的是 java,但同时应该看 smalltalk 的
东西,因为 smalltalk 对 OO 的理解非常有帮助。而且 smalltalk 本身并
不困难,很容易就可以理解。
进一步学习,应该对带来不同编程思想的语言都有一定了解。上面提到
的语言都是不同编程思想中的皎皎者,对它们不一定要精通,但最好有
一定了解。
当遇到任何一门语言,你都可以快速应用的时候,你就成为真正的高手了。