Pascal语言的介绍以及在Ubuntu下安装配置free-pascal的方法。
Pascal是一种计算机通用的高级程序设计语言,而且是第一个结构化编程语言,由瑞士Niklaus Wirth教授于六十年代末设计并创立。Pascal的取名是为了纪念十七世纪法国著名哲学家和数学家Blaise Pascal。Wirth还是另外几个编程语言的主设计师和发明者——Algol W、Euler、Modula、Modula-2、Oberon等,他还有一句在计算机领域人尽皆知的名言:“算法+数据结构=程序”(Algorithm+Data Structures=Programs),这个公式对计算机科学的影响程度足以和物理学中爱因斯坦的(E=mc^2)相媲美。
尽管Pascal语言从诞生到现在已经经历了将近半个世纪,但凭借着自身严格的结构化形式、丰富完备的数据类型、运行效率高、查错能力强的特点,Pascal语言在现在依然具有较高的流行度,IOI(国际奥林匹克信息学竞赛)把Pascal语言作为三种程序设计语言之一,NOI(全国奥林匹克信息学竞赛)把Pascal语言和c语言、c++语言作为竞赛使用程序设计语言,在大学中Pascal语言也常常被用作学习数据结构与算法的教学语言。在TIOBE排行榜的前二十名榜单上,Pascal语言和Pascal语言分支之一的Delphi语言依然名列其中:
Pascal是一门编程语言,而Turbo Pascal、Free Pascal等则是这门语言的编译系统.。这两者的关系就好比C++和VC、GCC的关系。Pascal编译系统的编年史如下:
出版年代 | 版本名称 | 主要特色 |
1983 | Turbo Pascal 1.0 | |
Turbo Pascal 2.0 | ||
Turbo-87 Pascal | 提高实数运算速度并扩大值域 | |
1985 | Turbo Pascal 3.0 | 增加图形功能 |
Turbo BCD Pascal | 特别适合应用于商业 | |
1987 | Turbo Pascal 4.0 | 提供集成开发环境(IDE),引入单元概念 |
1988 | Turbo Pascal 5.0 | 增加调试功能 |
1989 | Turbo Pascal 5.5 | 支持面向对象的程序设计(OPP) |
1990 | Turbo Pascal 6.0 | 提供面向对象的应用框架和库(Turbo Vision) |
1992 | Turbo Pascal 7.0 | 面向对象的应用系统、更完善的IDE |
Turbo Vision 2.0 | ||
1993 | Borland Pascal 7.0 开发 | Object Windows库(For Windows) 提供对OLE多媒体应用开发的支持 |
1995 | Delphi (Object Pascal) | |
Visual Pascal | ||
Free Pascal | ||
2011 | lazarus 0.9.31 | 图形应用程序编辑 |
在DOS时期,Turbo Pascal(包括同个体系的Borland Pascal)曾经独领风骚,但由于Turbo Pascal是DOS下的16位编程工具,随着Windows和内存的增大,Turbo Pascal已经无法适应时代的需求,其地位逐渐被Delphi和Free Pascal取代。其中,Free Pascal是由一个国际组织开发的32/64位Pascal编程工具,属于自由软件,可用于各种操作系统。根据编译选项的不同,它可以使用Turbo Pascal兼容语法、Delphi 语法或者其它语法进行编写程序。由于它拥有32/64位的编译器,而且一直在更新发展中,因此它的功能比Turbo Pascal更加强大,拥有许多现代程序设计的特征。全国信息学奥林匹克竞赛决赛(NOI)和国际信息学奥林匹克竞赛(IOI)已经指定Free Pascal为比赛使用的Pascal编程工具。
虽然Free Pascal尽量设计得和Turbo Pascal接近,但是由于以下的两个原因,两者之间还是有一些区别的:
关于Turbo Pascal和Free Pascal在语言特性上的具体区别,别的地方已经列举得很详细,这里不做赘述,有需要请参见。
由于信息学奥林匹克竞赛普遍采用Linux系统作为系统平台,因此这里主要讲Ubuntu下的Free Pascal安装配置方法。如果你没有装好Ubuntu,可以选择安装专门为竞赛提供的NOI Linux系统,里面已经安装配置好Free Pascal。
1 | $ tar -tvf fpc-2.6.0.i386-linux.tar |
注意把上面的"2.6.0"改成实际的文件名上的版本号。
1 | $ cd fpc-2.6.0.i386-linux sudo sh install.sh |
1 | $ cd /usr/share/doc/fpc-2.6.0/examples/text fpc hello.pp ./hello |
如果找不到这个例子,可以手动创建一个hello.pp文件并输入以下的内容:
1 | program hello; begin writeln('Hello world'); end. |
之后再使用上面的fpc命令编译这个文件,如果编译运行后成功输出“Hello world”,说明编译器已经安装成功。
编译器装好之后,还得考虑使用什么集成开发环境(IDE)。这里介绍三种IDE,一种是官方自带的IDE,一种是专门为NOI开发的GUIDE,最后一种是Emacs的pascal-mode。
如果安装Free Pascal时选择安装IDE,则安装完后,打开终端并敲入“fp”命令将会进入Free Pascal自带的IDE。但我在安装完成后第一次运行时提示“缺少libtinfo.so.5”错误信息,解决方法是手动为它创建一个链接:
1 | $ ln s /lib/libncurses.so.5 /usr/lib/libtinfo.so.5 |
再次敲入“fp”命令,进入IDE,如图1所示。
为了方便键盘操作,可以点击终端菜单栏上的【查看】->【显示菜单栏】选项,取消菜单栏,如果需要菜单栏时可以在终端窗口中点击右键,重新勾选“显示菜单栏"。
按“Alt+F”键或者“File”菜单,选择“new”可以新建一个pas文件,在这里可以敲入代码,如图2所示。
个人认为这个编辑器设计得很简单易用,符合KISS原则。具体的使用方法交给读者去尝试,这里不花篇幅去一一介绍。值得一提的是,这个IDE也支持多窗口和窗口大小调整的操作,如果窗口布局错乱,可以删除fp同一目录下的fp.dsk文件,回复默认的窗口布局。
如果离不开GUI界面,可以使用GUIDE。GUIDE(GAIT Universal IDE)是由北航GAIT研究组开发的、专门为NOI选手设计的轻型集成开发环境。GUIDE具有跨平台、操作简单、支持C/C++/Pascal三种语言和单文件编译调试等优点。这个编辑器的界面如图3所示。看起来是不是很亲切呢?
安装GUIDE的方法也非常简单,首先到http://gait.buaa.edu.cn/~zjb/下载GUIDE的安装包,注意选择Ubuntu版本。目前最新的版本是1.02,即GUIDE-1.0.2-ubuntu。
下载完成后,cd进去安装。
1 | $ sudo sh install.sh |
完成后,打开一个终端敲入 “GUIDE” 命令,即可启动GUIDE。
作为一个Emacser,最关心的当然就是Emacs对Pascal的支持情况。Emacs为Pascal提供了一个pascal-mode环境,它包含以下一些特性:
另外,还可以修改几个变量来定制pascal-mode的风格:
要让Emacs在打开*.pas文件后自动开启pascal-mode,可以在.emacs中添加以下内容:
1 | (add-to-list 'auto-mode-alist '("\\.pas\\'" . pascal-mode)) |
要修改pascal-mode下的默认编译方式为fpc,可以继续添加下面的代码:
1 | (add-hook 'pascal-mode-hook |