Delphi是用Pascal还是C编写的?(50分)

  • 主题发起人 shenzhou
  • 开始时间
S

shenzhou

Unregistered / Unconfirmed
GUEST, unregistred user!
如果是Pasal,那么我对Delplhi的能力毫不怀疑.如果是C,Delphi就不那么
让人可信了.
 
D

dwwang

Unregistered / Unconfirmed
GUEST, unregistred user!
可以相信,Delphi几乎是用"自己"写成的.
 
D

daiji

Unregistered / Unconfirmed
GUEST, unregistred user!
您完全可以相信,Delphi本身就是由基于PASCAL的自己开发的,其能力是有目共睹的
 

沈前卫

Unregistered / Unconfirmed
GUEST, unregistred user!
我认为是用Object Pascal+OWL的Pascal库共同编写出来的!
 
D

delphi

Unregistered / Unconfirmed
GUEST, unregistred user!
我记得前些日子,哪位朋友曾经贴了一个
程序上来,就是用Delphi写的IDE,和D3
的还是很象的。
老兄可以找找以前的记录。 :)
 
K

Kiven

Unregistered / Unconfirmed
GUEST, unregistred user!
VCL库完全是用Object Pascal加一点嵌入式汇编写的。这没什么奇怪,也用不着用C来写。难道你会认为Inprise用C写了DELPHI然后再将整个VCL翻译成Object Pascal?
 
3

3h

Unregistered / Unconfirmed
GUEST, unregistred user!
不论从1。0还是到4,都是用DELPHI自己写了,只不过更具稳定性等就是了。
 

曹晓钢

Unregistered / Unconfirmed
GUEST, unregistred user!
Borland的传统,每一个语言的IDE环境都是用自己写.
从Turbo Pascal开始就这样.不过C++ Builder好像和Delphi有关系.
 
S

SeaSky

Unregistered / Unconfirmed
GUEST, unregistred user!
我在网上下载了一个软件, Handel 0.58
位于 <A HREF="http://myhome.netsgo.com/wyb330">
http://myhome.netsgo.com/wyb330</A>
作者用Delphi 编写了一个Delphi的运行开发环境,
很有意思.

 
P

pegasus

Unregistered / Unconfirmed
GUEST, unregistred user!
嘻嘻, 代码编译连接器部分肯定和Borland C++, 以及C++ Builder共用了代码
我是在Delhpi 2.0的文档中发现的.
 
P

pegasus

Unregistered / Unconfirmed
GUEST, unregistred user!
嘻嘻, 代码编译连接器部分肯定和Borland C++, 以及C++ Builder共用了代码
我是在Delhpi 2.0的文档中发现的. 当然这部分代码是用C/C++写的. 其实用什
么代码写的有什么关系? 理论上Delphi应该能够完成C/C++所完成的事情. 但是
她们确实各有所长, 何必一定要求都用Delphi开发C/C++擅长的系统及软件呢?
(呵呵, 我以前确实用Borland Pascal 7.0开发过扩展VB功能的DLL, 比同样功
能的C实现的DLL的文件长度要小了许多, :)
 
C

CJ

Unregistered / Unconfirmed
GUEST, unregistred user!
我记得在某些资料上看过,DELPHI第一版的开发人员只有6位, 之后我们的盖瓷大哥
大光其火,把他的VB开发队伍训斥了一顿!在第一版中有他没有真正摆脱OWL,但是,在
32位版本中,他做的很好,完全摆脱了OWL.当然DELPHI是用OBJECT PASCAL写的(
BORLAND 的官方言论),当然我觉得会有一些嵌入试的汇编,我有一个笑话,很能说明
问题,希望大家喜欢!

《计算机世界》号外(四月一日)
Unix,C的创建者的忏悔
翻译整理:pigprince
在前不久举行的一次关于计算机产业的发布会上,Ken Thompson,Dennis Ritchie 和Brian Kernighan承认了由他们创建的Unix操作系统和C语言是来源于20年前的一个精心炮制的愚人节游戏! Thompson是在不久以前在UnixWorld软件开发论坛上说的这番话:
“在1969年,AT&amp;T刚刚完成一个和GE还有Honeywell公司合作的项目--Multics,那时候我和Brian 也刚刚接触一个由瑞士ETH实验室的Nicklaus教授创建的PASCAL语言的一个早期版本,我们当时就对它的简洁朴素和强大留下了深刻的印象。Denis正好读完了《Bored of the Rings》这本书,它实际上是《Lord of the Rings》三部曲的一个拙劣的模仿,只不过是为了玩,我们决定对Multics和PASCAL也进行一番模仿。我和Dennis负责操作环境,模仿Multics来重新设计一个新系统,设计的宗旨是尽可能的使系统显得神秘而复杂,让使用者不断地感到受挫,又重新起了一个名,叫作UNIX。然后Dennis和Brian对一个叫作‘A语言’的东西开展了一番工作,它实际上是对PASCAL语言的一个扭曲。当我们发现竟然有人尝试用A语言开发真正的程序,我们马上在A语言中又增加了一些更加含义模糊的东西,并把它升级为B语言,之后是BCPL,直到最后的C语言。在我们得到了以下的语法表达之后我们停止了,
for(;P("/n"),R=;P("|"))for(e=C;e=;P("_"+(*u++/8)%2))P("| "+(*u/4)%2);
现代的程序员们竟然会试着使用允许这样的声明的语言,这简直超乎我们的想象。我们当时真的是想把这些东西卖给苏联,好让他们的计算机科学水平倒退20年。你想像一下在AT&amp;T和其它的美国公司开始试着使用Unix和C时我们的惊异。这使他们用了20年,只不过用在了使用建立在60年代的一个拙劣的技术模仿的基础上的专门技术和一些应用。但是我们对Unix和C程序员坚韧不拔的精神也留下了深刻的印象,我和Brian还有Dennis则在这么多年里一直在Apple机上使用PASCAL语言,我们对这种混乱的结果感到了深深的负罪感,混乱和那些滥程序就是起源于在当时我们愚蠢的恶作剧!”
一些主要的Unix和C的厂商和用户,包括AT&amp;T、Microsoft、Hewlett-Packard、GTE、 NCR和DEC等等这一次拒绝对此发表见解,有一家PACAL和C语言开发工具的业界领先厂商(产品包括流行的Turbo Pascal,Turbo C和Turbo C++等) 声明说他们实际上已经在多年以前就有一些察觉,并宣布今后将继续增强他们的PASCAL产品,并立刻暂停他们在C产品上的远期投入;一个IBM公司发言人则对这件事大笑不止,以至于不得不推迟了一个关乎RS-6000的命运的新闻发布会;而ETH学院的教授, PASCAL,Modula 2和Oberon结构语言的创建者Wirth教授只是说P. T. Barnum是正确的。
和这个事件相关的大抵可信的资料来源说明,不久将有一个相似的招供可能来自于William Gates,是关于MS-DOS和Windows操作环境,还有就是IBM的发言人开始否认虚拟机(VM)也是一个恶作剧式的拙劣的玩意儿。
还有微软WIN98代码的一个笑话:转贴

M$绝密文档--Windows 98源代码

/*
TOP SECRET Microsoft(c) Code
Project: Chicago(tm)
Projected release-date: MAY 1998
$History$
*/
#include "win31.h"
#include "win95.h"
#include "evenmore.h"
#include "oldstuff.h"
#include "billrulz.h"
#define INSTALL = HARD
char make_prog_look_big[1600000];
void main()
{
while(!CRASHED)
{
display_copyright_message();
display_bill_rules_message();
do
_nothing_loop();
if (first_time_installation)
{
make_50_megabyte_swapfile();
do
_nothing_loop();
totally_screw_up_HPFS_file_system();
search_and_destroy_the_rest_of_OS/2();
hang_system();
}
write_something(anything);
display_copyright_message();
do
_nothing_loop();
do
_some_stuff();
if (still_not_crashed)
{
display_copyright_message();
do
_nothing_loop();
basically_run_windows_3.1();
do
_nothing_loop();
do
_nothing_loop();
}
}
if (detect_cache())
disable_cache();
if (fast_cpu())
{
set_wait_states(lots);
set_mouse(speed, very_slow);
set_mouse(action, jumpy);
set_mouse(reaction, sometimes);
}
/* printf("Welcome to Windows 3.11");
*/
/* printf("Welcome to Windows 95");
*/
printf("Welcome to Windows 98");
if (system_ok())
crash(to_dos_prompt);
else
system_memory = open("a:/swp0001.swp" O_CREATE);
while(something)
{
sleep(5);
get_user_input();
sleep(5);
act_on_user_input();
sleep(5);
}
create_general_protection_fault();
}

如果你看了前十行还没笑起来,只能说您要么不是一个Windows程序员,要么就是M$的支持者,或者是没有幽默感...
还有一个过于这个笑话的笑话:
我把这个文档MAIL给了我的一个同学,这位老哥把它调入到C++Builder中进行编译,还ICQ问我怎么通不过??
 
Q

qianjh

Unregistered / Unconfirmed
GUEST, unregistred user!
在delphi/source/vcl/有DELPHI的IDE中的
vcl控件的源代码。你可以查看、修改这些
源代码,并将修改后的控件加入DELPHI的IDE中。
这些代码形成的新控件与原来IDE中的相应控件
是一样的。这已经可以说明DELPHI是主要由
OBJECT PASCAL进行构建的了。
 
B

bird

Unregistered / Unconfirmed
GUEST, unregistred user!
当然是用pascal开发的
你看看 delphi/source 下的那些文件就知道了
 
A

aimingoo

Unregistered / Unconfirmed
GUEST, unregistred user!
关于这个问题,这个解释也许要合理一些:
Delphi本身是分成三个部分的:
1. Delphi IDE &amp;
CL;
(CL = VCL + none VCL)
2. Delphi compile. (DCC/DCC32.EXE)
3. Delphi Tools;
(DataBase Desktop and other)
首先,IDE部分100%是用Delphi自身写出来的。因为全部的VCL源码中
就可以看出这点。
其次,Compile DCC32.exe是用Borland C++写出来的。我用两个文件
格式分析软件得到这个答案。(分析报告附后)
最后,关于Delphi的一些工具,则有可能是个大杂烩。但基本上是
BC和Delphi这两种东东。
必须声明的是,Delphi/TPascal本身的编写中,采用了大量的汇编代
码。有些是在.pas中嵌入,也有些是直接的.asm程序。例如作为系统
底层的system单元(不可见,但你可以在Unit定义中加入,证明它存
在),就是用TASM写成的。不信你可以看/Delphi3/source/rtl目录。
另外,编译器本身是什么写成的并不重要。我并不指望Borland用汇
编来写DCC32.EXE,这样出错的机率远大于用C语言。Borland本身是
在编译器的编译速度上处于领先地位的公司,我们应该允许他使用
一种成型的编译器来实现它的“编译语法”和“语法规则”,只要
新的编译器的速度理想。要知道,对我们来说,什么是重要的呢?
不是编译器本身,那只是一个语法查错的工具和一个编译对照表的
处理工具,我们关心的是代码体本身。那么,这个问题就容易解释
了,你看delphi3/source/rtl就明白了:连system单元都是TASM和
TPascal写的,你还有什么不满意的呢?
==========================================
分析报告:报告一,使用软件WComp
==========================================
BRCC32.EXE Borland C++ [Overlays] [Windows NT]
BRC32.EXE Borland C++ [Overlays] [Windows NT] [Tlink 5.00]
MAKE.EXE Borland C++ [Overlays] [Windows NT] [Tlink 5.00]
TDUMP.EXE Borland C++ [Overlays] [Windows NT] [Tlink 5.00]
TREGSVR.EXE Assembler [Overlays] [Windows NT]
CONVERT.EXE Assembler [Overlays] [Windows NT]
TLIBIMP.EXE ? C [Overlays] [Windows NT]
DBEXPLOR.EXE ? C [Overlays] [Windows NT]
PCE.EXE ? C [Overlays] [Windows NT]
DELPHI32.EXE ? C [Overlays] [Windows NT]
DCC32.EXE Borland C++ [Overlays] [Windows NT] [Tlink 5.00]
SIGNCODE.EXE ? C [Overlays] [Windows NT]
CABARC.EXE ? C [Overlays] [Windows NT]
SCKTSRVR.EXE ? C [Overlays] [Windows NT]
SQLMON.EXE ? C [Overlays] [Windows NT]
IMAGEDIT.EXE ? C [Overlays] [Windows NT]
WS32.EXE Borland C++ [Overlays] [Windows NT]
/////注:由于本软件太老,对Delphi写的程序会报告"? C",但指定
为"Borland C++"的则是绝不会错了。报告"NT"是指为32位应用程序。

==========================================
分析报告:报告二,使用软件FA
==========================================
File Name: BRC32.EXE
Processed: Compiled by Borland C++ 1994 (for .EXE files)
File Name: MAKE.EXE
Processed: Compiled by Borland C++ 1994 (for .EXE files)
File Name: TDUMP.EXE
Processed: Compiled by Borland C++ 1994 (for .EXE files)
File Name: dcc32.exe
Processed: Compiled by Borland C++ 1994 (for .EXE files)
File Name: signcode.exe
Processed: Compiled by MS C for Windows 19?? (for .DLL only)
File Name: cabarc.exe
Processed: Compiled by MS C for Windows 19?? (for .DLL only)
/////注:本软件更老,对Delphi写的程序直接报告“未知”。除上
述外,本软件对其它程序报告亦为未知。但这能证明编译器DCC32是
BC写的。

不知shenzhou兄对这个答案可否满意?
另,CJ兄的笑话也还有一类人不笑,
就是不用C写程序的人。(^-^,我不会写,但可以读C源码)
 
C

CJ

Unregistered / Unconfirmed
GUEST, unregistred user!
我也不用C写程序!不过我一看就笑!不要小看了DELPHI大虾们!
 
顶部