入门PASCAL语言,很想知道它与其他语言的区别。
C 和 Pascal 曾经不太像,但是越来越像。
现代 C 语言借鉴了很多 Pascal 的概念:
例如,古老的 C 语言的类型检查很弱,没有函数原型。但今天的 C/C++ 语言支持函数原型(而且不提倡用旧的函数风格),类型检查机制几乎和 Pascal 一样严格。古老的 C 语言曾经只能靠指针存取外界的变量,很不安全,但今天 C/C++ 的引用参数则是相当类型安全的。而引用参数和 Pascal 的 var 参数如出一辙。
另外,Pascal 语言本身也经过了巨大的发展,Borland 功不可没。
今天人们用的 Pascal 几乎就是 Turbo Pascal 或 Delphi 的 Object Pascal。N.Wirth 时代的
program Name(input, output);
const a = 1;
type t = packed array of char;
var i: integer;
begin
writeln('这是一个古董Pascal程序');
end.
还有几个人认识?一个软件就是一个 program begin end,不能分模块,岂不要疯掉?
现代 Pascal 语言也借鉴了许多 C 语言的概念,如缺省参数值、无变量变体记录:
type
TPoint = record
case integer of
0: ( x, y: extended );
1: ( radius, angle: extended );
end;
case 部分不是 case type: integer of 而是 case integer of,实际上跟 C 语言的 union 一样了。
至于借鉴的数据类型(如 smallint, longint, 无类型指针 Pointer,类型参数)和强制类型转换机制,就更不用提了。
今天 Pascal 的文件处理,也有点模仿 C 语言,跟以前是天壤之别,谁还记得 Old Pascal 的 get/put 操作?
说这么多相似,其实也衬托了当年的不相似。语言的发展趋同,不同的( {} 与 begin..end )往往都是鸡毛蒜皮。
今天还有的比较重要的区别:
1. Pascal 支持子程序嵌套,C 否。因为 C 的设计目标之一就是与机器语言的结构直接对应。
2. Pascal 子程序分过程/函数,C 只有函数。
3. Pascal 类型更严格,如 char, boolean 都是特殊的枚举类型,而枚举与整型不是一回事,必须用 Ord() 转换。
而 C 的 char、enum 都被当作整型。
4. C 支持可变参数 void f(int x, ...),Pascal 没有。
5. C/C++ 的模块机制是头文件的文件包含+*.obj文件的连接,文件包含属于文本操作,编译速度很慢。而 Pascal 是 unit 的连接,二进制操作,编译速度飞快(对开发大型软件还是很重要的)
6. C 语言的结构/数组的初始化只用给出数值,而且元素个数可以比定义的少;而Pascal必须明确指出分量名称,个数严格对应:
var Point: TPoint = ( x: 100, y: 200 );
7. C 的标志符大小写敏感,Pascal 否。
8. C 编译预处理功能比 Pascal 的强大,实践中也很重要(它弥补了 C 编译器的许多不足)。
9. 很容易被忽视也很重要的一条:两者的表达式不同。
9.1. C/C++ 的表达式被赋予了太多的使命,连赋值语句本身也是表达式,a = b 同时返回 a,因此可以写 a = b = c; 而 Pascal 对赋值号被严格当作一个规定好的操作:赋值,别无其它,你不能写 a := b := c。
9.2. C/C++ 的表达式的类型严格取决于源操作数: char a = 100, b = 200; 则 a+b 的结果类型仍然是 char,当然就会溢出。Pascal 会“体贴”地替你扩展成足够大的数据类型:
var a, b: smallint; c:longint;
a := 32768;
b := 32768;
c := a + b; //结果是 65536,在 C 语言中则肯定是 0
归根结蒂,C 贴近机器,骨子里把操作数当作“二进制”处理(这有时是优点,尤其是跟硬件打交道时);Pascal 贴近数学,尽量以数学的视角看待数值。
10. 至于 C 的 for 循环如何强大,Pascal 的 for 循环如何循规蹈矩,这些都不是太重要。
========================================================
我认为最大的区别在于c中的函数内部不允许定义其他函数
但是pascal的过程 函数中允许存在
另外赋值 c用=pascal用:=
还有就是c用{}表示作用域 但是pascal用begin end
关于for循环c可以随意给条件中的变量进行增加和减少如
int i;
for(i=0;i<100;i+=2)
{
}
但是pascal中每次只能增加1(不知道这一点是不是正确,可能跟vb搞在一起了 你就参考一下吧)
=========================================================
从oop来说他们还有些区别。
1. pascal不支持多重继承,只能由单一的父亲,而c++允许多父亲。
如果大家用果BC提供的TV编程,那么一定看过TV的源代码,你会发现他和delphi的vcl多么类似,但是他毕竟是c++写的,采用了很多多重继承,delphi后来重新写了她。
从oop的未来发展来看,并不提倡多重继承,java类似pascal也不支持这样操作,这从根本上降低了类的复杂度和可读性。
2.pascal原来没有重载、多态这些该概念,现在的borland把pascal完善的已经脱胎换骨了。
3.pascal至今仍没有c++的友元。他所谓能做到的只是可以访问同一个unit的其他类的私有变量。现在的编程中,大家应该尽量避免使用友元了。
4.pascal的所有类都是TObject的子孙,实际你什么都不写
aaa= class();
end;
仍然等效与
aaa= class(TObject);
end;
这样所有的类指针都能用TObject来转换,而且他在TObject里面已经做到了一些基本的类的初始化、析构和操作符重载。这是c++的不及。
5. 所有的pascal 必须显式声明构造函数,即使你里面什么也不写。而c++可以没有。
6. pascal所有的类都是在堆中申请,统一管理,各个类的互相操作都在堆里面进行。
而c++却可以在堆、栈和数据区里面存在,这样各个不同区域的类相互访问,成了c++需要解决的一个复杂问题。
7. 基于上面的原因。
比如一个类 TDemo,
再C++ 里面可以写成
TDemo *demo= new TDemo();
TDemo demo; // 直接创建实体
但是在pascal里面就必须写成
Demo: TDemo;
Demo:= TDemo.Create();
8.还有个问题,就是字符串。
现在可以说pascal的字符串操作性比c++要强大。
他可以直接的+,而c++却不行,这得主要原因是c++太接近底层操作了。
9.还是字符串
pascal的字符串 分为长字符串和短字符串,他们的开始string[0],这个[0]里面实际保存的是字符串的长度,长字符串是4个字节,表示4G长度的字符串,短的1个字节,最多长度255,而不像c++是结为\0表示结束。
pascal这样的好处很多,比如你想得到一个字符串的长度,c++需要扫描整个字符串,直到遇到\0才能统计出来大小,而pascal直接读[0]就行了,这个效率你可以从编译后产生的汇编代码来看。
还有一个好处就是对于多字节字符串支持,比如unicode,由于是16bit的,里面会出现很多\0,这就与c++的字符窜的结束符号冲突,c++为了解决不得不变成\0\0来表示结束。而pascal却不用任何变化。
10......还有好多,我一时想不起来了
还是直接学C++吧。PASCAL语言有很多让人心烦的地方,比如begin....end,很白,在C里直接用{}就行了。PASCAL和DELPHI(这是PASCAL的进化体),总体走的就是欧美的路子(如果你细心观察,在各种方面都能发现这一点),没有国际化风范。而且DELPHI的出品公司BORLAND经营理念和策略比较糟糕,都被收购了,沦为一个附属产品,境地可想而知。虽然非正式化的产品有很多用它编写的,但正式化企业产品都是VC,VB(多用于工程方面)编写的,这是我对几个行业领域内的专业产品的观察结论。
我高中的时候为了参加信息学奥赛才学的pascal,可惜没拿到什么成绩。总的来说,pascal是一种高级编程语言,是第一个结构化的编程语言,Pascal语言可以被方便地用于描述各种算法与数据结构,尤其是对于程序设计的初学者,Pascal语言有益于培养良好的程序设计风格和习惯。IOI(国际奥林匹克信息学竞赛)把Pascal语言作为三种程序设计语言之一,NOI(全国奥林匹克信息学竞赛)把Pascal语言定为唯一提倡的程序设计语言,在大学中Pascal语言也常常被用作学习数据结构与算法的教学语言。所以呢,如果为了参赛或者初步了解计算机语言,你可以线学习pascal,方便学习数据结构和算法(这个很重要!!!)。传统PASCAL的标准库中缺乏对网络编程的支持,并且仅通过自带的graph单元难以实现较好的图形界面(GUI),这些缺点大多需要嵌入汇编语言代码才能得到解决,缺乏与机器语言的接口。另一方面,作为一个面向过程的编程语言,和90年代兴起的面向对象的语言相比,不利于大型软件的开发。因此,pascal很难用于大型编程,商业用途小,教学还可以。所以,如果你以后打算从事计算机软件编程相关专业,从长远来看,以后也要开始学习c,或者c++,然后逐步转到java,安卓,asp等等。
我现在大四,真心给你的忠告,如果是初中或者高中,可以深入学习一下,然后再逐步转到别的,如果大学或者以上,那就算了。学习编程比较枯燥,加油哦!!!
编程入门:Pascal语言简介
1968年瑞士的N.WIRTH教授设计完成了Pascal语言,1971年正式发表。1975年,国际标准化组织(ISO)对Pascal语言进行了修改,从而形成了标准Pascal语言。与以往的编程语言相比,Pascal语言是一门结构化的语言,它具有丰富的数据类型和控制结构,简明易懂,所以特别适合于教学。Pascal语言还是一种自编译的语言,这就...
帕斯克(Pascal)-一门流行的编程语言
帕斯卡(Pascal)是一门流行的编程语言,由于其简洁、易学、易用的特点,被广泛应用于计算机科学、工程学、数学、物理学等领域。1.帕斯卡的起源 帕斯卡是由尼古拉斯·维尔特(NiklausWirth)于1968年发明的。维尔特是瑞士苏黎世联邦理工学院的教授,他发明帕斯卡的初衷是为了教授编程课程。帕斯卡最初的版本是为...
Pascal 语言介绍
总的来说,Pascal语言以其优雅的结构、高效性、易读性以及在教育和竞赛中的广泛应用,为程序员们提供了一种强大的工具,尤其对于初学者来说,它不仅是一门语言,更是一种编程哲学的体现。然而,这只是Pascal魅力的一部分,更多的精彩等待着你去探索和发掘。
第一个结构化程序设计语言是
第一个结构化程序设计语言是PASCAL。作为一门软件编程语言,基于ALGOL的Pascal语言是最早出现的结构化编程语言,具有丰富的数据类型和简洁灵活的操作语句。由瑞士苏黎世联邦工业大学的Niklaus Wirth(尼古拉斯·沃斯)教授于六十年代末设计并创立,并在1971年正式以数学家Pascal(帕斯卡)的名字为之命名,由此被...
Pascal是什么?
Pascal是一门编程语言,而TurboPascal\/FreePascal是Pascal程序的编译系统. 用Pascal编辑的程序能在TurboPascal\/FreePascal中运行 Pascal只是一门语言,而TurboPascal\/FreePascal是编译器 这两个是不能比较的 你可以把两个语言放在一起比较,或者两个编译器放在一起比较 而一切编译器都是基于语言的,因此不会有某个编译器...
pascal是什么?
Pascal是一种计算机通用的高级程序设计语言。它由瑞士Niklaus Wirth教授于六十年代末设计并创立。以法国数学家命名的Pascal语言现已成为使用最广泛的基于DOS的语言之一,其主要特点有:严格的结构化形式;丰富完备的数据类型;运行效率高;查错能力强。正因为上述特点,Pascal语言可以被方便地用于描述各种算法与...
C语言和Pascal语言的区别,要详细。
不过pascal和borland公司已经一起没落了,这个语言十几年前很火,现在已经没多大价值了,不过教育部可能还把他当成一种重要语言,学学就行,会另一种语言也很重要,你不可能只靠一种语言编一辈子程,不过C永远是王道,如今主流编程语言,比如C#(微软),C++,objC(苹果公司),java,都是类似C语法的语言...
pascal跟C语言有什么区别? 先学pascal再学C有必要吗?
pascal是一门非常严谨的结构化程序设计语言,一般来说计算机软件专业的教学结构化编程标准课程,但属于比较老旧而实用程度较低。C也是一门结构化程序设计语言,相比PASCAL它是更加灵活而且实用。C更加流行,它是程序员操控方便的更加接近接口和设备语言,优点是高效,简洁。现在面向对象编和JAVA,C++,C#之类的...
想学编程应该去学什么语言?
可以先学 Pascal。 Pascal 是一门很好的教学语言。然后对过程式编程有些了解以后可以学习数据结构,C 和 C++。 然后可以学一下 Java 或 C#。 当然我的建议只是帮助你能够了解过程式和面向对象的编程。至于要进入IT业,方向和门类很多,所以学什么更好不能一概而论。如果希望能够进入计算机系,拿一...
高级程序设计语言有哪些
高级程序设计语言有:Fortran、Pascal、Cobol、C、C、Basic、Ada、Java、C#、Lisp、Haskell、ML、Scheme、Prolog、Smalltalk等等。高级程序设计语言的分类:命令式语言。这种语言的语义基础是模拟“数据存储\/数据操作”的图灵机可计算模型,十分符合现代计算机体系结构的自然实现方式。其中产生操作的主要途径是依赖...
愚支贝复: 一般初学者学的是Visual Basic(VB),如果硬要学pascal(我就是这样的),往往会学的云里雾里(我也是这样),如果自学必定会有难度,你可以买本《pascal基础语言算法》之类的书来学,慢慢琢磨,但这样毕竟难度很大,所以最好去上课! 不过也可以去贴吧问问题,或者也可以去问问身边的大牛,还可以去tyvj之类的网站上去刷题,这样进步会很快.实际上语言是互通的,学会一门语言之后学下一门语言会很轻松,所以推荐先学Visual Basic或海龟,再学pascal,再学java,c,c++之类的语言,这样比较顺!祝你早日学会编程!QQ:570646177
辰溪县15876861433: 我想学习编程,但是什么都不懂 - ?
愚支贝复: 我认为可以先学习一下pascal,这个语言比较严谨,适合初学者.pascal它被称为教学语言,结构严谨,不像C语言那么灵活,易于理解和学习. 然后可以继续学习C语言,这个语言比较灵活.有了pascal的基础,在进行C语言编程就不会因为C...
辰溪县15876861433: PASCAL与C,C++和JAVA不都是面向对象的程序设计语言吗?它们之间有什么不同?C#和JAVA在关于网络方面有什么 - ?
愚支贝复: 是一个争论不休的话题,不同人总会有不同的见解.传统的说法是从Pascal开始,而较为新点的是C开始,这几年以来,也有提出直接从C++或者C#/Java开始学起. 首先,我先来介绍一下各种编程语言的来源、特点. Pascal语言: Pascal是一...
辰溪县15876861433: Pascal 语言是什么 - ?
愚支贝复: Pascal语言概述与预备知识 1 关于Turbo PascalPascal是一种计算机通用的高级程序设计语言.它由瑞士Niklaus Wirth教授于六十年代末设计并创立.以法国数学家命名的Pascal语言现已成为使用最广泛的基于DOS的语言之一,其主要特点有...
辰溪县15876861433: 我是一个初学者,不懂电脑上的那些PASCAl语言、c、c++、java等语言有哪些区别,为什么很少有人用PASCAl了 - ?
愚支贝复: 用Pascal的人也不少,比用Matlab的还多呢 Pascal用在数学计算上的比较多,还有应用上一般使用一个Pascal的扩展,就是Delphi.现在依然有很多人在用,讲Delphi的书很多.以前很多讲数据结构的书还是用Pascal的 只是现在很多人都赶流行,所以你身边的人就会C、C++、Java多一些.但实际上还是有很多人使用Pascal,而且Pascal也是数学竞赛的编程语言.初学者学习是为了了解计算机程序,所以学Pascal或者C语言比较简单易学.
辰溪县15876861433: Pascal语言是什么 - ?
愚支贝复: Pascal是一种计算机通用的高级程序设计语言.Pascal的取名是为了纪念十七世纪法国著名哲学家和数学家Blaise Pascal.它由瑞士Niklaus Wirth教授于六十年代末设计并创立.Pascal语言语法严谨,层次分明,程序易写,具有很强的可读性,是第一个结构化的编程语言.
辰溪县15876861433: Pascal区别和C语言的区别 - ?
愚支贝复: 差别不小,尤其语法不同程度比较高,不过大致意思是相同,一时半会没法给你说,不过作为初中生编程应该也不复杂,可不只是include begin end这点区别,一时半会没法给你说,你最好看看书,这俩语法差别很大,常用的for if while 包括很...
辰溪县15876861433: pascal是怎样的语言,我初学,请指教 - ?
愚支贝复: PASCAL语言也是一种算法语言,它是瑞士苏黎世联邦工业大学的N.沃思(Niklaus Wirth)教授于1968年设计完成的,1971年正式发表.1975年,对PASCAL语言进行了修改,作为"标准PASCAL语言". PASCAL语言是在ALGOL 60的基础...
辰溪县15876861433: Pascal语言和C语言的异同点以及编写的难易程度??
愚支贝复: Pascal语言简单,语法严谨,容易上手,是初学者学习,学校教学用的语言,功能也很强大. c是高效的的程序语言,语法相对要难点,不是严格,所以初学者不熟悉很容易出错.难度大于前者.
辰溪县15876861433: 我想知道Pascal和C和C++这三种语言的各自缺点和优点? - ?
愚支贝复: pascal比较古董,但是结构化和可读性很强,初学者适宜.目前流行的delphi也是pascal的一个ide.编译器主要有turbo pascal,free pascal等,是全国信息学竞赛推荐的语言.C是现在为止最经典的高级语言,现在用途也还很广,编写不太大的程序时还经常用到.c的编译器编出的程序比pascal运行快一点.C++就是C再加上面向对象(类的概念),代表着最先进的编程思想,由其编写的程序具有高速、高性能的特点 学习的话任选其一即可,因为到一定程度后三种语言变通是很简单的.语言本身是没有优劣的,就像各国语言一样.