说C更接近底层...

alphax 2002-11-12 04:10:46
说C更接近底层,我经常听说,但是我一直不知道C哪些方面比Pascal更接近底层,也一直不太相信,
另外就是速度的比较,我一直以为Pascal调用比C调用效率高,而且Pascal string操作速度也高于C的 char*,为什么大家都说C的效率高于Pascal呢

请有这方面理解的朋友给我解释一下,一定给分
...全文
199 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnsuyong 2002-11-14
  • 打赏
  • 举报
回复
楼主:
找点时间,学点VC,你就会清清楚楚明明白白真真切切:
VC中有许多特性是Delphi不能支持的;
Delphi中有许多优势是VC远不能及的;
Microsoft的VC工程师开发数据库应用得心应手,尽管这方面Delphi有绝对优势;
Borland的Delphi工程师开发硬件驱动轻而易举,尽管这方面VC有绝对优势。
C比不上ASM更接近底层吧;Object Pascal中却可以直接内嵌汇编语言代码。

至于“而Pascal是设计用来教学的,一直没有在工业界有像C那样的成功的大规模应用,案例少一些。这就是差别了。”,俺以为此言差已,可能发此言者连Inprise、VCL、RAD是什么都还不清楚(俺们乡下人说话实在,请发此言者多包涵)。
alphax 2002-11-14
  • 打赏
  • 举报
回复
算了,结帖吧
coolmyf 2002-11-14
  • 打赏
  • 举报
回复
"而Pascal是设计用来教学的"我就觉得这话早已经不是事实了,可是很多人还是用
它评价pascal!很显然没有与时俱进嘛!:)
coolmyf 2002-11-14
  • 打赏
  • 举报
回复
同意westfly!
alphax 2002-11-13
  • 打赏
  • 举报
回复
pascal是有ISO标准的
alphax 2002-11-13
  • 打赏
  • 举报
回复
我就是想听听更了解其机理的同行们讲解讲解,我不想搞了pascal那么久什么都不清楚
我相信一定有人了解
qingfenge 2002-11-13
  • 打赏
  • 举报
回复
Nirklause Wirth设计Pascal的目标是清晰展现程序设计中的数据结构和算法,以及在各种计算机中得以实现,这是它成为教学语言的原因。我以为,而D.M.Rchie在设计C语言时是为了改写UNIX,因此它适合作系统描述,那么它一定要接近硬件,否则为什么不用BASIC写系统呢!?至于谁的效率高,速度快应该是各有长短吧。至于细节,我想应该由Pascal,c的专家们来谈,他们比我们更了解其机理
wengj 2002-11-13
  • 打赏
  • 举报
回复
pascal,stdcall,register(__fastcall),cdecl,safecall调用约定都与C++和Pascal的有关效率的讨论无关!!!

同样地实现一个功能,C和Pascal的效率几乎是没有区别的。

同样地写一个大型MIS软件,用Delphi比用VC的开发速度快n倍。按照普通的程序员的水平来进行编码,Delphi使用VCL,VC使用MFC,那么VC的效率要比Delphi高,如果二者同时使用典型的C时期的swith case (Delphi中使用Case of)进行消息循环的话,二者的开发周期和效率差不多。

所以Pascal和C在效率上并没有多大的差别!
而开发出来的程序效率上的差别就在于系统设计,程序编码和使用了何中库(VCL, MFC, SDK)
所以在开发一个新的项目时,需要进行全面的考虑,并不是需要把软件做到最好,因为那是永远不可能的。
hfycl 2002-11-13
  • 打赏
  • 举报
回复
UP一下
westfly 2002-11-12
  • 打赏
  • 举报
回复
我觉得C的流行应该是由历史原因造成的,
上世纪七八十年代的程序员喜欢一些细节上的技巧,
C的出现无疑满足这种欲望,
毕竟写 "a = (b>c)?d:e;" 比写"if b > c then a := d else a := e"要方便得多;
但时至今日,
对大系统而言,
代码的清晰性与可读性才是更重要的,
c在这方面似乎不如pascal。
至于效率,
"C++"及"Inc(C)"编译成汇编码后都是"inc eax",
我不觉得认为有什么特别的差异(不考虑编译器的因素),
其实真正决定效率的还是程序员的好坏;
另外由于pascal在国际上没有标准化,
所以borland对pascal似乎更感兴趣,
一直在企图将它变成一门清晰简洁高效的开发语言。
(我想cbc的编译速度慢应该是因为c++语法的复杂性,而非大家指责的采用pascal语法的vcl的缘故,vc的编译速度同样也慢)
所谓“而Pascal是设计用来教学的"应该是谭浩强在80年代初写的pascal教程里的话吧,不知为什么到现在还有人拿来引用。
alphax 2002-11-12
  • 打赏
  • 举报
回复
你说Pascal不支持C得很多重要特性,我觉得唯独就是宏支持
和inline函数(Object pascal)
alphax 2002-11-12
  • 打赏
  • 举报
回复
之所以有那么多系统用C来编写,我想,一个是因为它可移植性高,其次,历史悠久,推得广。
至于,C调用效率比Pascal调用高,我实在不太了解,但是我听说过好像Windows有一个函数,好像是winmain,是遵循Pascal调用约定的,不知道为什么。
其次,string和char*不能用作它们效率的比较,因为Pascal有PChar,C++也有String类

你说Pascal不支持C得很多重要特性,我觉得唯独就是宏支持和inline函数
alang_xy 2002-11-12
  • 打赏
  • 举报
回复
unix是用C写的。Linux是用C写的。OpenGL库是用C写的。Window是用C写的。。。。大系统都是C写的。

我认为最主要的原因是因为C的调用方式很接近汇编,效率很高,Pascal不支持许多很重要的C特性,在强度上差一些;而Pascal是设计用来教学的,一直没有在工业界有像C那样的成功的大规模应用,案例少一些。这就是差别了。

Pascal string的性能不一定会好过char*,因为C的char*是指针,直接指向内存中的一个地址,而pascal string类似一个记录类型(相当于C中的结构类型),在使用时要作边界检察、指针偏移、内存分配等等很多工作,效率上绝对比C的char*来的慢。
一般人用string,只不过是它好用罢了,不是快。要好用,STL库中的string类一样好用,但一样的效率比不上char*。
char*的不好的地方在于它的安全性不好。什么都是有代价的,效率高了,使用起来就不是那么方便,对程序员的要求也就高了。
lzf913 2002-11-12
  • 打赏
  • 举报
回复
我也想知道,帮你UP一下吧

16,742

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧