|
borland动态
左轻侯大侠所说:
Delphi既是一种工具,也是一种语言。从Delphi 7开始,Borland就正式提出了
Delphi Language的说法。
你在Delphi 7中打开help,就能找到Delphi Language Guide:
Delphi is a high-level, compiled, strongly typed language that
supports
structured and object-oriented design. Based on Object Pascal,
its benefits include easy-to-read code, quick compilation, and
the use
of multiple unit files for modular programming.
Delphi作为一种语言,与具体的平台无关。其实现在绝大多数的语言都与平台无关。
大家对产品命名的质疑,让我觉得很奇怪。并没有任何理由要求产品必须在名称中
说明所支持的平台。Borland C++有for DOS的版本,也有for Windows的版本,不会
分别起两个不同的名字。Delphi 1是for Win16的,Delphi 2是for Win32的,Borland
并没有将Delphi 2命名为Delphi 32(虽然确实考虑过这个名称)。微软将.NET下的
VB称为VB.NET,这是微软的风格,并不表示其他人也必须追随这种风格。支持.NET的
语言有很多种,但你有没有听说过Python.NET和Perl.NET这样的正式名称?
是的,Delphi 8没有正式发布以前,Borland也曾经使用Delphi.NET这个名字。按照
计划,Delphi 8应该包括Delphi for .NET和Delphi for Win32。但后来计划进行了调整,
Delphi 8仅仅包括Delphi.NET,Win32平台下的开发工作仍然由Delphi 7来完成。
这就是为什么要同时维护两个版本的Delphi的原因。
准确地说,Delphi 8的全称是Delphi 8 for Microsoft .NET Framework。
将Delphi 8和C#进行类比是不合适的。C#是Anders发明的一种全新的语言,跟VB
和VC没有任何关系。而Delphi 8只是Delphi在.NET平台上的移植,基于同一种语言
(虽然进行了一些扩展),有什么理由不叫它Delphi呢?
Octane是Delphi 8的开发代号,这跟正式产品的名称是两回事,就象Windows XP的
开发代号是Whistler一样。微软下一代操作系统的开发代号是Longhorn,你不会指望
正式产品名称也会是这个。
Microsoft的VB和VC在转向.NET以后,都在语法上做了极大的修改。从VB转向VB.NET,
几乎等于学习一门新的语言。原来的VB和VC代码不可能直接在.NET平台下编译。相比之下,
Delphi提供了一种解决方案,可以将Delphi 7及以前版本的代码导入到Delphi 8中
重新编译,生成纯正的.NET代码。当然,不一定是百分之百的自动,但对于一般的
应用,绝大部分工作可以由工具完成。在以往Delphi语言中积累的经验,大多数
可以在Delphi 8中继续保留。
在Win32平台下的主流开发工具中,Delphi是唯一一个提供这种平滑过渡的。这也是
Delphi为什么在名称上保持沿续性的原因之一。
C#Builder的IDE好像是用Delphi7.1开发的
我已经说过,Delphi 7.1是明年的计划。C#Builder在今年年中就已经完成,怎么可能
用Delphi 7.1开发?而且C#Builder的IDE明显是.NET的风格,怎么可能用基于Win32
的Delphi 7.1来实现?
取消了指针是我所不喜欢的
不知道你从哪里得到这个消息。指针在Delphi 8中活得好好的。
Win32的Delphi升级到Delphi7.9999以后怎么办?
不会存在这种问题。微软已经公开宣布不会再更新Win32,从下一代操作系统开始,
将全面转向.NET。新的API都将以.NET的形式发布。因此Delphi 7不会有太多的升级了。
c# builder的eco实在算不上成熟
ECO并不只是建模,它是建立在UML、OR Mapping、Dataware等技术之上的对MDA
(Model Driven Architecture,模型驱动架构)标准的完整实现,如果我没有搞错的话,
是业界第一个、也是至今唯一一个对MDA的实现,因此还没有什么竞争对手可以进行比较。
国内有很多大企业,包括用友,对ECO极为关注。明年将是Borland全线产品的MDA年,
也很可能是编程界的MDA年。
我呼吁大家尽快学习UML和MDA的知识,在未来几年内,对MDA的掌握将是对一个程序员的
基本要求。不管是否使用Borland的产品,这些知识都是必要的。
************************************
一下是周爱民大侠的高见:
首先,左左大人的回贴也让我明白了一些以前不知道的东西,例如
- Win32 及相关的API系统是不会再发展的了。这是M$公开声明的事。
- Delphi for Win32不会再得到更多的支持,真正的Delphi 8 for Win32
是不会再有的。可能存在的是Delphi 7.x的终极产品线。
但是,就我所知,指针在Delphi .NET(抱歉,我还是习惯这样称呼)中并不是“活得
好好的”。指针的确是消亡了。大家可以觉得难过或者痛苦,但是,并不等于没有指
针就写不了程序。——Java不就活得好好的吗?
从内核的角度上来讲,.NET平台已经不是(纯粹意义上的)编译型的系统了。这以前让
我极其惊讶。但是,一旦把.NET Framework与它的对手JAVA放在一起来考虑就能明白:
解释型的系统并不是“不稳定”或者“不快速”的代名词。——尽管JAVA的确速度慢,
但是.NET可以有更高的速度性能,况且M$还有在平台一级集成CLR的优势。再加上.NET
是为两年后的软/硬件环境准备的,所以速度也不再是主要问题。
大多数情况下,我很不愿意拿Delphi 32与Delphi .NET来比较。这实在是不同的两个东
西。Borland提供的“平滑过渡”让很多人看不到事实的真象,但开发人员真的必须
意识到:来到.NET Framework,语言本身就只是工具,真正的内核不再是Delphi RTL,
而是.NET Framework中的CLR。
在CLR中没有指针,也没有地址,因此也不可能在Delphi .NET中实现真正意义上的指针。
如果你要开一个内存Buffer,那么,就定义成一个动态数组,然后SetLength()。典型的
示例是这样:
var
Hash: array of Int16;
// ...
SetLength(Hash, 4096);
在Delphi中的地址计算可以从@Hash[0]开始,而在Delphi .NET,则必须使用数组下标
来逐一存取了,并不存在一个PInt16指针能指向@Hash[0]。
Delphi 8中还有一部分与非托管代码交互的代码,这些代码被称为“非安全代码”(在
C#中,非安全代码有更广泛的含义)。在非安全代码块(例如非安全过程)中,是可以使
用象pChar一类的类型的。但这一部分代码.NET访问不到,Delphi .NET的代码也访问不
到,它主要是留给InterOp接口,用来访问Win32 DLL/COM Object的。
由于InterOp是在CLR一级实现的,所以Delphi .NET中的用户代码并不会直接使用到PChar
这样的指针。同样,其它.NET程序(例如用C#编译的代码)也不能用到。因此,至少目前
看来,它们是很安全的。 |
|