都说Anders Hejlsberg是Delphi语言的作者,前一阵仔细读了VCL源码,惊叹于它的巧夺天工,未免对编译器的作者有些不服气,觉得首功不是他。今天仔细想了想,还是觉得不服不行。以下是我的理解:
 
1. Delphi编译器把高级语言Pascal的代码翻译成了CPU可以理解的汇编指令,相当于人类的精子与卵子结合了,已经怀胎了,从而孕育了一个生命。具有高级生命的一切特征,但仍是一个胚胎。
2. Delphi编译器通过这种形式function GetBkMode(hDC: HDC): Integer; stdcall;,即可以任意调用Windows的API,就使得Pascal语言与操作系统联系起来了,即小孩从母亲肚子里呱呱坠地了。
3. Delphi编译器,确切的说是连接器,把程序员的所有成果集合成一个exe文件,即获得了Windows的一个入口,即孩子的母亲承认他是自己的孩子,也就相当程度上获得了母亲的呵护,从此可以成长了,而不是一个没人疼没人爱、随时都会饿死的小孩。此时已经可以用纯API进行Windows编程了,但能力不强并且繁琐,相当于8岁的小孩。
4. Delphi编译器,使得Pascal语言自练神功,即扩展成Object Pascal,不仅仅提供了OO的特征,更提供了PME的先进特征,还有其它细节,比如inherite的特殊作用,方法指针,内嵌汇编,消息处理,动态方法,类之类,Interface等等不计其数。相当于这个小孩从8岁开始,到了上学的年纪了,开始表现出神童的许多特征和能力,一直苦读到16岁,可以说已经是声名远播、前途不可限量了。
5. 这个小孩不仅自练神功,而且还练了一些旁门武功,比如COM,BPL,资源文件的处理等等(旁门武功我接触不多,在此无法细述),都是多快好省,而且还练成了。
6. Delphi编译器提供了如此之多的功能,居然还编译速度飞快,相当于这个小孩读书速度飞快,并且过目不忘。不仅仅是慢工出细活,效率也很重要,毕竟人生的生命有限。

----------------- 到这时候还与VCL没有什么任何关系,而小孩却已经成长到16岁了,不得不说Anders就是Delphi语言之父 ---------------

----------------- 有了生命,有名门母亲照料,还练成九阳神功 ---------------
 
7. Delphi语言这个小孩此时已经长大到16岁了,天资过人, 但毕竟还没有创出一番大事业(因为Pascal语言的语法规则毕竟不多,虽然背后编译器所作的工作十分复杂)。此时他遇到了一位贵人,这位贵人就是Chuck Jazdzewski,他因材施教,充分利用Delphi语言自身的一切优势(这点很重要),重新把Windows整理了一遍(包括所有WINAPI和Message,还有Form当作容器),那就是VCL框架源代码,并把它无私地传授给了小孩,顺便还给了他一件相当顺手的兵器,那就是IDE。不仅如此,这个兵器上还有许多构思巧妙的开关,即OpenAPI,只要开发者有心,自己就可以可无限扩展兵器的功能。
8. VCL不仅仅提供给Delphi语言自身强大的windows编程能力,而且还赋予它相当强大的组织能力,即单独的Delphi控件的开发能力。从此以后,无论世上阿猫阿狗,还是其它的绝世高手,都可转投Delphi门下,来者不拒,而且过程相当简单,蟹兵虾将之多举世第一,善于利用的话,可轻易成事(做出软件产品)。
----------------- 此时Delphi语言有20岁了,一出道,就轰动世界,仅仅面向开发工具这样一个小众市场,一度年销售额居然达到5亿美元,贵人很重要 -------------------
----------------- 练成乾坤大挪移(普通人可是要练30年啊),还顺手捞了一件兵器,相当于屠龙刀 ---------------
----------------- 相当于继续向少林武当或其它高手学习,包容兼蓄,而且练的很快 ------------------
 
9. 更奇特的是,在VCL基础上,提供了无比强大的数据库功能,白痴都可以做出像模像样的数据产品来,压得专业提供数据库能力的PB一点脾气没有。有了这样强大的专业能力,却又丝毫也不损失Delphi提供的其它各方面强大能力。开发者时间宝贵、生命宝贵啊,如此一来谁还会把资源投到PB上,从此一度也颇为耀眼的PB彻底出局。搞笑的是,Delphi还提供了多种不同的Web解决方案,虽然有些旁门左道的味道,却也不失为一种解决问题的方案,其中我最喜欢的Unigui,真的很不错,编出来的程序可以是双版的(同一程序可提供Web服务功能和桌面软件的功能),而且还可以照样应用JavaScript和CSS的功能(如果你会的话)。
----------------- Delphi语言岁神功已成,仍广开言路,多拜码头,专业能力与各种旁门左道的解决方案同时提供,使得Delphi用户有了更多的保障 ------------------
----------------- 虽然贵为武林数一数二的高手,仍狠练某一门剑法,以至于仅仅比剑(DB)就把专业剑法高手给比了下去,刀虽然也练的很厉害但仍有不足,单独比刀(Web)却仍比不过专业刀客 ------------------
 
10. Delphi如此成功,自然也得帮一下同门师兄BCB,借给它VCL吧,虽然都是Pascal源代码,不仅如此,所有Delphi控件也都可被BCB所使用,虽然实际上有些不伦不类,但在外人看起来,功能也是很强大的。累了,以后再继续写吧。
----------------- 相当于把倚天剑送给了周芷若,但九阳神功没法送给她 ------------------

Delphi语言获得生命的原因和过程的更多相关文章

  1. Delphi 的 FireDAC 连接管理与配置过程

    Delphi 的 FireDAC 连接管理与配置过程: 使用 FireDAC 技术连接 数据库,主要是使用  TFDConnection ,其中有一参数是选择  ConnectionDefFile. ...

  2. 浅尝Spring注解开发_Bean生命周期及执行过程

    Spring注解开发 浅尝Spring注解开发,基于Spring 4.3.12 包含Bean生命周期.自定义初始化方法.Debug BeanPostProcessor执行过程及在Spring底层中的应 ...

  3. Delphi 语言

    自1995年Borland公司发布Delphi 1.0以来,Delphi受到很多开发者的亲睐,到1999年发布Delphi5,Delphi以其开发快捷.控件丰富.易于上手等优势吸引了众多的开发者,用户 ...

  4. JVM生命周期与运行过程

    1. Java虚拟机的生命周期 Java虚拟机的生命周期 一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序.程序开始执行时他才运行,程序结束时他就停止.你在同一台机器上运行三个程序,就会 ...

  5. c语言编译预处理和条件编译执行过程的理解

    在C语言的程序中可包括各种以符号#开头的编译指令,这些指令称为预处理命令.预处理命令属于C语言编译器,而不是C语言的组成部分.通过预处理命令可扩展C语言程序设计的环境. 一.预处理的工作方式 1.1. ...

  6. Servlet学习(一)——Servlet的生命周期、执行过程、配置

    1.什么是Servlet Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求.响应给浏览器的动态资源.但servlet的实质就是java代码,通过jav ...

  7. 07.Delphi接口的生命周期

    在Delphi的接口中,是不需要释放的,调用完之后,接口的生命周期就结束了,如下面的例子 unit mtReaper; interface type // 定义一个接口 IBase = interfa ...

  8. C语言代码区错误以及编译过程

    C语言代码区错误 欲想了解C语言代码段会有如何错误,我们必须首先了解编译器是如何把C语言文本信息编译成为可以执行的机器码的. 背景介绍 测试使用的C语言代码 导入标准库,定义宏变量,定义结构体,重命名 ...

  9. 整理ViewController的生命周期和加载过程

    按照执行顺序排列 - initWithCoder:通过nib文件初始化时触发 - awakeFromNib:nib文件被加载的时候,会发送一个awakeFromNib的消息到nib文件中的每个对象 p ...

随机推荐

  1. How to enables AX email functionality without Outlook

    /***************************************************************** (C) Copyright DENTSPLY Internatio ...

  2. Python计算斗牛游戏的概率

    Python计算斗牛游戏的概率 过年回家,都会约上亲朋好友聚聚会,会上经常会打麻将,斗地主,斗牛.在这些游戏中,斗牛是最受欢迎的,因为可以很多人一起玩,而且没有技术含量,都是看运气(专业术语是概率). ...

  3. JS模板Handlebars的使用和有效组织

      应用背景 我们在做项目时,为了使页面模块高度复用,使用页面模板是必须的,我想大家通常可能会新建MVC的项目,然后在页面中使用Razor引擎,新建Helper模板类,前后台代码的混写,简洁高效,一切 ...

  4. Reactor模式

    对象行为类的设计模式,对同步事件分拣和派发.别名Dispatcher(分发器) Reactor模式是处理并发I/O比较常见的一种模式,用于同步I/O,中心思想是将所有要处理的I/O事件注册到一个中心I ...

  5. 从零开始学ios开发(十二):Table Views(上)

    这次学习的控件非常重要且非常强大,是ios应用中使用率非常高的一个控件,可以说几乎每个app都会使用到它,它就是功能异常强大的Table Views.可以打开你的iphone中的phone.Messa ...

  6. ListIterator-迭代器

    Iterable(lang)-->Iterator(util)-->ListIterator(util) method: 1.void add(E o) 2.boolean hasNext ...

  7. phpcms v9后台登陆验证码无法显示,怎么取消验证码

    phpcms v9后台登陆验证码无法显示论坛里关于这个问题貌似一直没有解决,查看源代码后发现,关键一点是获取验证码的图片与全局变量SITE_URL相关,也就是网站的目录, 所以只要修改cache/co ...

  8. Awesome (and Free) Data Science Books[转]

    Post Date: September 3, 2014By: Stephanie Miller Marty Rose, Data Scientist in the Acxiom Product an ...

  9. 一次失败的面试——IBM电话面试

    前几天接到IBM的电话面试了,虽然被PASS了,还是发个博记录一下吧.这大概是我第一次比较正式的面试了,虽然只是通过电话,但是还是暴露出了自己的很多问题,总结下,前事不忘,后事之师嘛.:) 一号上午接 ...

  10. CSS去除Chrome浏览器的控件默认样式

    html的input输入框在Chrome浏览器里是有默认样式的,当它获得焦点时,即使你没有为它设置:focus时的样式,Chrome浏览器还是会给它加上蓝色的边框,今天百度找到有个方法可以去除该默认样 ...