1.1 编程语言的发展简史
本小节是一些编程语言的简单介绍,你如果不感兴趣,可以略过不看。
先说程序是什么?程序就是指令序列的有序集合。指令即代码,可以是数字,也可以是文字,文字最终要转换成数字。也就是说,程序是许多数字串,当然,也可以合并成一个很长很长的数字串。
程序的作用是什么?程序能够做事,做你想叫它做的事。换一种说法,程序的功能是完成它的使命。它的使命由编写程序的人来决定,或者由编写程序的程序来决定。
编写程序就是写文章,写能够转换成很长很长数字串的文章,给计算机看。
最初的计算机编程语言是一长串二进制代码。所谓的二进制就是只有1和0,所以第一代的计算机编程语言就象下面的许多1和0。
1001101001010011
0100011101111110
1010101000010100
11110100001010001
……
这是给计算机看的,你看不懂,我也看不懂,程序员自己下次再看的时候,也是搞不清。但是,这是最基本的。直到现在,计算机的中央处理器(CPU)还是只认1和0组成的二进制代码。
第二代的计算机编程语言叫汇编语言,就象这样:
LD x,37H
MOV a,x
……
程序员之间能够很容易地交流,但是这样的语言编写效率很低,而且不同的CPU有不同的指令集,根本无法重复使用。
第三代的计算机编程语言称之为高级语言。容易编写,容易阅读,容易交流,而且可以与CPU、操作系统无关。从1958年的LISP和1957年的FORTRAN开始到现在,我们接触到的编程语言几乎都是第三代语言。其中又有两大类。一类叫函数式语言,如:LISP,Haskell。一类叫命令式语言,如:FORTRAN,Pascal,C++,Java。
第四代的计算机编程语言,你只要告诉它你要什么,无须告诉它怎么做,它就能把答案给你。上个世纪八十年代末发展起来的数据库查询语言(SQL)就是一个例子。第四代的编程语言还在起步阶段,智能化程度还有待于加强。SQL是当今最为强大的数据检索机制之一;SQL并不能完成一个过程语言所能完成的所有任务。
需要说明的是,面向对象的编程语言并不是第四代语言。面向对象是一种认识事物的方式、理念,你可以面向对象地编程(OOP),也可以面向对象地设计(OOD)。面向对象的编程语言是过程语言的自然延续,同属于第三代命令式语言。
大家平常所说的编程语言是指第三代的计算机编程语言。有的语言是解释执行,如Python,Ruby,交互性很好;有的语言是编译执行,如Pascal, C,速度较快。 有的语言是本地执行,如C,C++;有的语言是虚拟机执行,如Java, C#。有的语言是动态语言,如JavaScript,Ruby;有的语言是静态语言,如C++,Java。
1.2 编程其实很容易
一门语言包含三个方面:语义,语法和语用。汉语,英语是如此,计算机编程语言也是如此。
从语义方面来看,人类语言的单词量非常大,要以万计,常用单词也有几千;计算机编程语言的基本单词只有几十个,我们称之为关键字。
学习一门计算机编程语言只要搞清楚这几十个关键字的意思、用法,就大致及格了,六十分到手了。如果要灵活应用一门计算机编程语言,就必须在反复使用的过程中去不断加强理解,不断加深体会。如果碰上好的教材,遇到好的老师,那么入门拿到六十分是很容易的。要想拿到八十分、九十分,就看各人修行了,所谓拳不离手,曲不离口。多多练习,“无它,但手熟尔”。
Ruby是一种动态语言,语法简单,就象当年的BASIC一样,非常容易上手,适合初学者。对于编程高手来说,Ruby里有许多深奥之处,等待你去发掘。
1.3 Ruby的由来
松本行弘(Matz)是日本一家开源软件公司的程序员,有15年的编程经验。在工作中,他希望有一种比 Perl 强大,比 Python 更面向对象的语言。从1993年2月,他开始设计一个全新的自己的语言,1994年12月发布了第一个 alpha 版本,并且将这种新语言定名为Ruby(红宝石)。发展到现在,最新版本是Ruby 1.8.5(2006-8-25)。
1.4 Ruby的特性
计算机编程语言的发展总是与飞速变化的世界息息相关的,Ruby是为了适应变化、提高和完善编程艺术而出现的。
● 完全开源
● 多平台 Ruby可以运行在 Linux, UNIX, Windows, MS-DOS, BeOS①,OS/2②…
● 多线程 线程就是指能在一个程序中处理若干控制流的功能。与 OS 提供的进程不同的是,线程可以共享内存空间。
● 完全面向对象
● 不需要内存管理 具有垃圾回收(Garbage Collect,GC)功能,能自动回收不再使用的对象。
● 解释执行 其程序无需编译即可轻松执行。
● 功能强大的字符串操作/正则表达式
● 具有异常处理功能
● 可以直接访问OS Ruby可以使用(UNIX的)绝大部分的系统调用。单独使用Ruby也可以进行系统编程。
● 动态类型语言 Ruby的变量没有类型,因此不必为类型匹配而烦恼。
● 动态语言 程序运行中,可以新加入属性,行为,也可以重写方法。
● 支持操作符重写
● 支持无限精度的数字 例如计算400的阶乘也轻而易举。
● 丰富的库函数
● 用模块进行混合插入(Mix-in) Ruby舍弃了多重继承,但拥有混合插入功能。使用模块来超越类的界限来共享数据和方法等。
● 语法简单 它是脚本语言,没有指针,学习曲线比较低。.
……
Ruby 吸取了 perl 的正则表达式, python 的简单性可读性,smalltalk 的纯面向对象语法和单继承,LISP 的无穷嵌套的语法,Java的线程…
① BeOS是win98同时代的操作系统,性能优于win98。可惜开发BeOS的公司现在已经不存在了,最后版本好像是BeOS5.0 。
② OS/2是IBM的PC机操作系统,与win3.1同时代。
完整阅读,请看我写的 Ruby语言中文教程all in one