西西河

主题:【原创】Delphi,亡羊补牢奈若何? -- 晨池

共:💬86 🌺84 新:
全看树展主题 · 分页
/ 6
下页 末页
家园 【原创】Delphi,亡羊补牢奈若何?

以前写的,今天偶尔翻出来,发上来看有多少Delphi同道中人

  Delphi有一个比较严重的问题是没有兼容性,旧版本下面的代码到新版本下面往往面目全非。有人解释说,这是因为VCL更新快,不停的引入新的技术所导致的——这个,是一个可以接受的解释。但是,如果有性能类似但是可以兼容的替代产品,比如VS,为什么还要用Delphi?

  不说把软件当产品卖的公司了,就是普通个人,难道不是以确保自己以前的代码还能用为前提才考虑升级的么?

  从大二开始用Delphi,我的所有Delphi代码都是用Delphi 6写的。Delphi 7出来以后,试了试,发现对自己的代码完全可以兼容,编译运行都一点问题没有,但是呢,似乎Delphi 7和Delphi 6也没什么区别?就是图标不一样而已。那我何苦要升级到7呢?反正都是盗版……于是继续用Delphi 6。

  与此同时,VS.net横空出世。多少新特性铺天盖地,不过最让我惊讶的是代码折叠功能:对于查看和组织代码而言实在是太方便了!就为了这个微不足道新特性,我才开始对C#感兴趣。这一感兴趣实在不得了,C#果然是Delphi他爹操刀的产物,语言之优美,使用之方便不输于Object Pascal。当即就打算从此改用C#,还认认真真的学了一段时间。可惜也就是认认真真的学了一段时间而已,写了几个控制台的程序,就又转回Delphi 6去了——不是说Delphi 6比Visual C#好,而是我的代码大量的都是Delphi 6的,没有点经济利益的驱动,干嘛用C#呢?虽然好用一些。

  不过没有代码折叠的功能,心里总是恨恨的。

  要说Borland还不想让它的忠实拥趸失望,Delphi 8接跟着VS.net冒出来了,所谓的紧跟着,大概也晚了挺长时间的,不过我没感觉到而已。Delphi 8界面漂亮了很多,最重要的,是有了代码折叠的功能。不用说,课间就跑去盗版城买了一张回来,课也不上就回去装上了。还没装上,就发现问题多多:

  首先是速度,速度!那真是对电脑和耐心的双重折磨。虽然我电脑很落后,但是Delphi 8显然已经不是电脑的问题了。真想不通,为什么这么慢的东西他们也敢发布?!

  其次是兼容性,又是兼容性!从6到7,没有太大的改进,兼容性也没问题,但是8,让我怎么说呢,基本上是完全不兼容。呼呼呼呼的冒编译错误。

  最后是习惯问题。原来Delph 6/7的设计窗口都是独立的,一打开就是好几个大小窗口冒出来,看起来凌乱了一些,但是拖拽得很方便;而Delphi8就变成了VS形式的了,全都在一个统一的窗口下,设计窗口也在一起,这样会方便设计——但是考虑到我那个小小的14寸球面显示器,想画个大点的窗口就麻烦多了。

  结果很悲惨,Delphi 8很快就废弃不用了,但是过了很久我才删除它,不是因为怀念,而是因为那玩意儿太慢了,要删除个老半天。

  又一次,回到Delphi 6。

  之后,VS2003出现,有时候我也用用VS2003。不能不承认,VS2003让微软已经完全超越了宝兰。

  大四时候,终于Delphi又给人以激动的机会:钻石归来,Delphi 2005!李维真是有大忽悠的潜质。Delphi 2005代号钻石,在李维那里少不了一番宣传,更重要的是,还免费提供试用版光盘。从来爱沾小便宜的我,就赶紧跑去CSDN注册了一个。

  不久,收到一张Delphi 2005的试用版光盘。那个激动啊,赶紧开始安装:咦,这感觉,咋就和当初安装Delphi 8一样呢?一样的慢,安装好了界面一样更漂亮,随便拉个程序过来,一样的呼呼呼呼冒编译错误,看看设计窗口,一样的是VS风格。更无法忍受的,2005多了个毛病是不稳定,界面的小窗口时大时小,运行速度时慢时快,偶尔还来个崩溃。虽然是试用版,可是我也试用过VS的试用版,当时是从武大搭公交跑到了关山才拿到那三张光盘(正版的!),又发现需要Win2K(当时我电脑是Win98),特地为这个买了根128M内存添上,费老大劲了。可是VS2001.net的试用版确实给我很多惊喜,就是从那里我开始琢磨着是不是要改投C#门下的。对比一下,都是试用版,Delphi 2005怎么就这么不争气呢?

  第三次,回到Delphi 6。

  三次出走Delphi 6,三次回来。第一次Delphi 7是因为没有对我重要的改进;其他两次就都是因为新的Delphi品质不过硬了,说来扼腕。

  毕业以后,就不再用Delphi,倒是C++/STL的面向对象让我大开眼界。MFC也接触了一点,怎么说吧,用过VCL的再用MFC?那是心里一万个瞧不上,MFC太落后了,远远不能和VCL比,可惜的是MFC再落后,也是一个事实上的工业标准了,而VCL,仿佛一个实验室中的先进产品,随着Delphi渐行渐远。幸运的是我在工作中用的最多的还是C++/STL,偶尔来一两个第三方控件库。平时自己写Windows界面的时候,虽然也用MFC,也是宁可自己写控件也不愿意用MFC的控件。

  说实话,我虽然很反感麦当劳肯德基这样的,但是就这我接触KFC都比MFC多。

  也不知道什么时候,偶尔看到一条新闻,Borland/Code Gear推出免费版的Turbo系列,就去下载Turbo Delphi 2006来安装上,速度还不错,比Delphi 6慢了一点点而已。然后要注册号的时候,我试着把从前注册Delphi 2005的账号拿来用,居然还能通过,都三年了还能用,谢谢宝兰啊~装好之后,想想Delphi 8和Delphi 2005的惨痛经历,就放在那里,没有碰。

  在VS2008面前,Delphi还有机会吗?在C#/C++/STL面前Object Pascal还有机会吗?

  之后,我喜欢的开发环境似乎有返璞归真的趋势,越来越欣赏Vim和make/gcc/gdb,连VS都少搭理,更何况Delphi?

  直到昨天,要把以前的Delphi代码拿出来用的时候,才想起来自己电脑上还有Turbo Delphi 2006这样一头平阳虎呢!于是牵出来,试着写个最简单的窗口程序,还挺好的。再试着打开以前的Delphi 6的代码,编译——嘿!居然只有两个错误!

  修正好了,竟然就编译通过了。运行起来,也毫发无爽。顺便敲两行代码,调出窗口,无论是速度上还是操作习惯上,都比Delphi 6好多了。虽然设计窗口依然是VS的风格,不过没关系,我早已能忍受这一点了,何况现在的工作,绝大部分都不是界面的问题了呢。

  想想看,今后还是改用Turbo Delphi 2006好了,出走Delphi 6,时隔七年,终于成功了。可惜此时,我主要用的,已不是Delphi了。

  兼容性的问题、速度、稳定性,固然都亡羊补牢解决了,可是七年时间已经过去。看看现在VS几乎一统天下,而Delphi只能随Code Gear改嫁他门。从九五年刚刚问世打的VB灰头土脸,更是直接摧灭了曾经辉煌的Power Builder的大部分市场。到今天的门前冷落,并购这样的大事都无人问津。Delphi确实是有着巨大进步的,我感觉最深刻的就是Delphi的VCL比Visual C++的MFC好用,而且更符合面向对象的思想。就我用过的版本,抛开技术问题不谈(超越了我的能力……)Delphi 6是把早自己一两年诞生的VC6/VB6按在地上打,VS.net又把早自己一两年诞生的Delphi 6/7按在地上打,可惜Delphi 8就不能把早自己一两年诞生的VS.net按在地上打,反而依旧被别人按在地上。之后的Delphi 2005也无力翻盘,等到Delphi 2006/2007终于又爬起来的时候才发现,不是因为自己能把对手干掉了,而是对手已经不屑于和自己打了,岂不悲哀?

  Delphi,奈若何?

元宝推荐:铁手,

本帖一共被 2 帖 引用 (帖内工具实现)
家园 我学语言的顺序是

Pascal、C++、VB、C#

Pascal教我写代码要优美

C++教我面向对象

VB告诉我原来可以拖放控件来设计界面

C# <-- 这个是吃饭的家伙。

家园 花。一开始折腾只是为了折叠,后来Vim和make/gcc

已是进入高手的行列了。

武林高手一般不需要什么兵器暗器,就内功一发动,对手的兵器暗器就掉落一地。

Vim和make/gcc/gdb,就像一双肉掌,却可抵挡千军万马。

家园 或者用java,可以以不变应万变。
家园 够用就行,何苦折腾自己?

虽说公司里做项目用什么工具什么语言身不由己,但有一条原则应该是很明确的,那就是够用就行。软件是用来服务和发挥作用的,不是为了欣赏其优美的。即使是老板,最好也能服从这一条,否则迟早有悔不及的时候。

家园 这还是中级水平吧

Vim和make/gcc/gdb,就像一双肉掌,却可抵挡千军万马。

心中还是有剑:)

家园 8年了,别提它了。

Delphi从来没有正式用过,不过Delphi的表亲倒是用过8年,它的表亲就是C++ Builder。

DELPHI(vcl)的思路和MFC截然不同,变个带GUI的小程序自然是很容易上手,比MFC容易多了,开发效率也高多了。不过俺写的代码以服务器和协议方面的居多,用BUILDER或者VS差别不大。不过代码复杂的话,带折叠功能的编辑器还是很好的。

这两天玩CHROME的代码把VS 2008搬了出来。虽然在文档上讲用VS 2005,但在VS 2008上基本没有问题。

贴一小段Chrome进程初始化的代码。

bool single_process =

parsed_command_line.HasSwitch(switches::kSingleProcess);

if (single_process)

RenderProcessHost::set_run_renderer_in_process(true);

bool icu_result = icu_util::Initialize();

CHECK(icu_result);

logging::OldFileDeletionState file_state =

logging::APPEND_TO_OLD_LOG_FILE;

if (process_type.empty()) {

file_state = logging::DELETE_OLD_LOG_FILE;

}

logging::InitChromeLogging(parsed_command_line, file_state);

#ifdef NDEBUG

if (parsed_command_line.HasSwitch(switches::kSilentDumpOnDCHECK) &&

parsed_command_line.HasSwitch(switches::kEnableDCHECK)) {

logging::SetLogAssertHandler(ChromeAssert);

}

#endif // NDEBUG

if (!process_type.empty()) {

// Initialize ResourceBundle which handles files loaded from external

// sources. The language should have been passed in to us from the

// browser process as a command line flag.

ResourceBundle::InitSharedInstance(std::wstring());

}

// Eviction of injected DLLs is done early enough that it is likely

// to only cover DLLs injected by means of appInit_dlls registry key.

if (do_dll_eviction)

EvictTroublesomeDlls();

startup_timer.Stop(); // End of Startup Time Measurement.

int rv;

if (process_type == switches::kRendererProcess) {

rv = RendererMain(parsed_command_line, show_command, target_services);

} else if (process_type == switches::kPluginProcess) {

rv = PluginMain(parsed_command_line, show_command, target_services);

} else if (process_type.empty()) {

int ole_result = OleInitialize(NULL);

DCHECK(ole_result == S_OK);

rv = BrowserMain(parsed_command_line, show_command, broker_services);

OleUninitialize();

}

家园 一点不同的意见

3-7的兼容性,我觉得还是可以的,

不兼容的原因,主要在第三方控件,包括他自带的控件

7比6好,6实际上是一个不稳定的版本,在访问ado时有严重的bug。

至于8之后

基本上,都属于垃圾了。堆砌豪华的界面,无视前一版本中存在的问题,玩概念的操作。

现在还在用d的人,绝大多都是在用7

家园 学会一门编程语言 就像交了一个女朋友

多情自古伤离别~~~

学会了一门编程语言 就像是交了一个女朋友。

情深深雨蒙蒙型的,如同 Delphi

有野蛮女友型的, 如同 ASM

有居家型的, 如同 C语言

有情人型的, 如果 C++

有梦中情人型的, 如同 Erlang

有丫环型的, 如同 Perl

有芙蓉姐姐型的, 如同 VisualC++MFC

关键词(Tags): #编程

本帖一共被 1 帖 引用 (帖内工具实现)
家园 Basic算什么?青梅竹马?
家园 和楼主的经历比较类似

从1995开始用Delphi,从1到6,用得比较多的是D1,D3和D6.自己做的程序里,派大用场的50%是Delphi做的(还有20%是VC,30%是ASP/ASP.NET等C/S应用),可以说Delphi影响了我技术生涯的大部分。

我目前工作中已经不编程了,以动嘴为主;不过有时心血来潮想做点小工具小游戏,还是想用Delphi6.就Win32的桌面程序来说,Delphi6已经是足够好。

家园 那么JAVA就是。。。

按摩小姐!!!大家没异议吧

哪里都有,还特便宜。。。JAVA是免费的啊

天,我居然。。。JAVA使用了5年。。。

家园 我的经历差远了……

95年……我那会还在发愁能不能上四中呢,万一上了十八中,将来考高中就麻烦啊

那会儿,我还是小屁孩呢。

葡萄干说到,D3-D7的兼容性还可以,我确实不知道。因为我是从6才开始用的,各位说话一个不注意,就把小子给折杀了~呵呵,拜各位老大一下。

家园 喂喂

照你这么说,从开始学习一下到后面靠这个吃饭,十几年算什么?

家园 还是按摩小姐用起来爽~~~
全看树展主题 · 分页
/ 6
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河