找回密码
 注册
搜索
热搜: 超星 读书 找书
查看: 1050|回复: 0

左轻候和周爱民对delphi8发表的见解业内新闻

[复制链接]
发表于 2004-2-22 00:00:00 | 显示全部楼层 |阅读模式
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#编译的代码)也不能用到。因此,至少目前
                  看来,它们是很安全的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|网上读书园地

GMT+8, 2024-12-23 06:08 , Processed in 0.078643 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表