关键词不能为空

当前您在: 主页 > 英语 >

对目前主流开发技术的分析和总结

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-03-03 12:41
tags:

-

2021年3月3日发(作者:手肘)


对目前主流开发技术的分析和总结



一、引言




我为什么要写这篇文章





首先,


我要限定我文章的范围,


我讨论的问题局限于桌面应用


开发领域和企业应用开发领域,所以我 的结论并不适用于整个软件开发界,比如我说


C



言已经退出历史舞台,这对于写嵌入式系统的人和编写操作系统内核的人来说显然是错了。

< p>


我写这篇文章的目的主要是:



*


简单的介绍并评价当前主流技术







*


比较当前的主流技术





*


预计技术的演变



如果你想做程序员或者已经是个程序员,你可能会面对这些困惑:


< p>
*


学什么语言呢?


Delphi

< br>、


C++



VB



Java



C#

< p>


PHP



Python ?


*


选择什么开发工具呢?


Del phi



VC



C++Builder



JBuilder?




当你已经入了门,有了一定的基础 之后(可能已经通晓了几种语言)


,你会面临进一步


的困惑:< /p>






*MFC



VCL


之间是什么关系?






*J2EE


到底是什么?

< p>
.Net


到底是什么?两者


有什么本质的区别,我 应该学习哪一个呢?






*COM


那么复杂,为什么很多地方 都用


到它?我必须学习它吗?





如果是作为一个软件公司,如果不是那么大,如果你的公司< /p>


还没有一个真正的技术上的灵魂人物,


那么你也会面临同样的困惑 。


技术问题纷繁复杂,



你不知所从, 而且真正的精通每一项技术都需要巨大的时间和人力的投入




你怎么办?选择哪种技术作为公司的主流技术呢?选择的方向是否正确是个关乎你的公 司


的生死存亡的问题。你面临着这些困惑吗?如果是,那么请让我试着为你拨云见日。< /p>





我的故事






在我上大学之前,我从没见过计算机。大学的时候,正是


Dos



FoxBASE

< br>的年代,也


正是计算机软件开发世界几件伟大的事情发上的时候:


(Windows



3.1



Borland



C++3.1



Visua Basi c1.0


的推出也是伟大的事情,但那时候我还不知道计算机为何物

)Widnows



95



出,并开始应用;


Visual


< p>
Basic5.0


推出,开发工具中第一次出现了成熟的、被广泛应用的< /p>


Auto



Code



Completion


技术 ;


Java


推出;


ASP


技术开始盛行


,Windows


< br>DNA


技术被理解


和接受;标准


C++


诞生


;Visual



C++6.0


推出;


J2EE

< br>规范推出。





成为一个程序员对我而


言并不顺利,


因为我不是科班 出身。


我入门的程序语言是


FoxBASE


这让我一直对


FoxBASE


有 种特殊的感情,我也正是通过


VisualFoxPro3.0


转写


Windows


程序的,



如果没有它,我也许就不会成为一个程序员了。后来,在大学期间接触到了

< br>InterDEV


,那


是个写


A SP


程序的开发工具,


还有


Java< /p>



也是那时候接触的,


当时有点盲目崇拜 的意思


(我


想我喜欢


Java


的一个原因可



能是刚开始学

< br>C


的时候很受挫折)


。毕业之后,我就是凭借着


自己写的一个


ASP


网站找到了自己的第一份工 作——说来惭愧,我从来也没有成为一个


C


程序员。

< p>




我真正的熟悉< /p>


Java


是在我翻译了一本


Java


数据结构的书和写了一套完整的


GIS


系统 之


后(说起此事,


我要感谢一下我的公司,

但因为这些故事与本文的主题无关,所以这里就不


多说了)



再后来,


我自己学习了标




C++



COM


技术。


有点像履历表了是吗?提到这些,


我 只是希望作为读者的你能够了解一下我的知识体系,


从而能够知道我大概要讲些什么;< /p>



时也希望你能够原谅我可能犯的错误——我在这里说的话,并不 一定就是最后



的结论,虽然“共同探讨”

< br>这个词几乎是粗制滥造的书的作者专用语了,


但我在这里引用它

< br>是真诚的,


我愿意看到你的反馈。


要涉及的话题在开始文 章的正题之前,


我先大概地介绍这


篇文章将会涉及到哪些知识。 如果你是初学者



,希望你不要被吓倒,这虽然是一篇技术文< /p>


章,但我不会过多的讨论技术细节,


如果你不懂我说的这些东西,


也没关系,我本来就希望


通过我的文章帮助你做出一个选择,< /p>


不再走很多人已经走过的弯路,


你这要记住结论就可以

< p>
了,随着你知识的增长,以后你会渐渐明白;如果你已经通晓了这些技术或其中的大部分,


那么我相信读了这篇文章你会有一些另外的收获。



主流的程序设计语言:



C++



Delphi(ObjectPascal)



Java



C#


桌面应用程序框架:


MFC



VCL



QT


JavaAWTSWING



.Net


企业应用程序框架:


WindowsDNA



ASP



COM



COM+




J2 EE



.NetFramework


开发工具:


VisualBasic



Delphi



VisualC++



C++Builder



Visua lC#



二、正文





现在让我们开始我的正文吧。


首先,


我来完成这篇文章的第一个目标:


介 绍并评价当前


主流技术。我指的今天的主流技术是:






*


程序设计语言:


C++Delphi


(本来 应该是


ObjectPascal


,但为了简单,我就语言和工


具混为一谈吧)


JavaC#(


虽然他 刚刚推出,但因为微软为之倾注了大量心血,一定会成为一


种重要



的开发语言


)





*


桌面应用程序框架


:MFCVCL





*


企业应用程序框架


:





*CO M


技术:


我单独提出这项技术,


是因为 它无法简单的被视为语言、


桌面应用程序


框架或企业应用程序框 架,它与这些都有关系。





2.1



程序设计语言





2.1.1



C++


语言的演进





最初要从二进制代码和汇编说起,


但那太遥远了。


我们就从面向过程的语言说起吧


(包



BasicCFortranPascal



。这种面向过程的高级语言终于把计算机带入了寻常的应用领域。


其中的


C


语言因为它的简单和灵活造就 了


Unix



Windows


这样的伟大的软件。





面向对象的语言是计算机语言的一个合乎逻辑的进化,


因为在没有过多的影响效率、



单性的前提下 提供了一种更好的组织数据的方法,


可使程序更容易理解,


更容 易管理——这


一点可能会引出不同意见,但事实胜于雄辩,


C ++


终于让


C


语言的领地越来越小,当 今还


活着的计算机语言或多或少的都具备面向对象的特征,所以这一点并不会引起太多困 惑。


C++


的成功很大程度要归因于


C



C++


成为它今天的样子是合乎逻辑 的产物。因为在面向



过程的时代,


C


几乎已经统一天下了。今天著名的语言象


JavaC#


都从


C


借鉴了很多东西,

C#


本来的意思就是


C++++



其实


C++


曾经很有理由统一面向对象 程序设计语言的天下来着,


但可惜的是,


C++


太复杂了




即使是一个熟练 的程序员,


要你很清楚的解释一些问题你也会


很头痛。举几个还 不是那么复杂的例子来说:




< /p>



=


的重载



成员转换函数



拷贝构造函数



转化构造函数之间有什么区别和联系呢?





定义一个类成员函数


private:virtualvoidMemFun()=0;


是什么意 义呢?





int(*(*x(int))[4])(double);


是什么意思?

< p>




还有其他的特征 ,比如说可以用来制造一种新语言的


typedef


和宏(虽然 宏不是


C++



一部分,但它与


C++


的关系实在太密切了)


,让你一不小心 就摔跤的内存问题(只要


new



de lete


就可以了吗?有没



有考虑一 个对象存放在容器中的情况?)??诸如此类,


C++


是如


此的复杂以至于要学会它就需要很长的时间,


而且你会发现即使你用


C++


已经好几年了,



还会发现经常有新东西可学。


你想解决一个应用领域的问题——比如说从数据 库里面查询数


据、


更改数据那样的问题,


可是你却需要首先为


C++


头痛一阵子才可以,


是的,


你精通


C++



你可以很容易的回答我的问题,


可是你有没有想过你付出了多大的代 价呢?我不是想过分的


谴责


C++


,我 本人喜欢


C++


,我甚至建议一个认真的开发普通的应用系统的 程序员也去学


习一下


C++



C++


中的一些特性,比如说指针运算



模板


STL


几乎让人爱不释手,宏可以用


几个字符代替很多代码,对系统级的程序员来说



C++


的地位是不可替代的,


J ava


的虚拟


机就是


C++

< p>
写的。


C++


还将继续存在而且有旺盛的生命力。





2.1.2



Java



C#




Java



C#


相对于


C++

< br>的不同最大的有两点:第一点是他们运行在一个虚拟环境之中,


第二点是语法简单 。对于开发人员而言,在语法和语言机制的角度可以把


Java



C#


视为同


一种语言。


C#


更多的是个政治的



产 物而不是技术产物。如果不是


Sun


为难微软的话,我想


微软不会费尽心力推出一个和


Java


差不多 的


C++++


,记得


Visual



J++


吗,记得


WFC


吗?


看看那些东西就会知道微软为


Java


曾经倾注了多少心血



。而 且从更广泛的角度来说,两者


也是非常相似的——


C#



Java


面对的是同样的问题,面向应用领域 的问题:事务处理、远


程访问、


Webservice



Web


页面发布、图形界面。那么在这一段中 ,我暂且用


Jav a


这个名


字指代< /p>


Java



C#


两种语言——尽管两者在细节上确实有区别。


Java


是适合解 决应用领域的


问题的语言。最大的原因


Java


对于使用者来说非常简单。想想你学会并且能够使用


Java

< br>需


要多长时间,学会并



且能够 使用


C++


要多长时间。由于


Java


很大程度上屏蔽了内存管理问


题,


而且 没有那么多为了微小的性能提升定义的特殊的内容


(比如说,



Java


里面没有


virtual


这个关键字


,Java


也不允许你直接在栈 上



创建对象,


Java


明确的区分


bool


和整型变量)

< br>,他


让你尽量一致的方式操作所有的东西,


除了基本数据 类型,


所有的东西都是对象,


你必须通


过引用来操作他们;除了这些之外,


Java


还提供了丰富的类 库帮助你解决



应用问题——因


为它是 面向应用的语言,它为你提供了多线程标准、


JDBC


标准、< /p>


GUI


标准,而这些标准在


C++


中是不存在的,


因为


C++

< br>并不是直接面向解决应用问题的用户,


有人试图在


C++


中加入


这些内容,但并不


< p>
成功,因为


C++


本身太复杂了,用这种复杂的语 言来实现这种复杂的应


用程序框架本身就是一件艰难的事情,稍后我们会提到这种尝试— —


COM


技术。渐渐的,


人们不会再用


C++


开发应用领域的软件,象


MFC QTC OM


这一类的东西最终也将退出历


史舞台。

< p>


2.1.3



Delphi




Delphi


是从用


C++


开 发应用系统转向用


Java


开发应用系统的一个中间产物。它比


C++


简单,


简单的几乎象

< p>
Java


一样,


因为它的简单,

< br>定义和使用丰富的类库成为可能,


而且


Delphi


也这么做了,结果



就是

< br>VCL


和其他的组件库。而另一方面,它又比运行于虚拟环境的

< br>Java


效率要高一些,


这样在简单性和效率的平衡之中 ,


Delphi


找到了自己的生存空间。


而且预计


在未来的一段时间之内,这个生存空间将仍然是存在



的。可以明显的看出,微软放弃了这


个领域,他专注于两方面: 系统语言


C++


和未来的


Java(< /p>


其实是


.Net)


。也许这对于


Borland


来说,是一件很幸运的事情。如果我能够给


Borland


提一些建议的话,那就是不要把


De lphi


弄得越来越复杂,如果那样,就是把自己的用户赶到了


C++



Java


的领地。在虚拟机没 有


最终占领所有的应用程序开发领域之前,


Delphi



Delphi


的用户仍然会生存得很好。< /p>





2.2


桌面应用程序框架





目前真正成功的桌面应用程序框架 只有两个,一个是


MFC


,一个是


VC L


,还有一些其


他的,


但事实上并未进 入应用领域。


遗憾的是我对两个桌面应用程序框架都不精通。


但 这不


妨碍我对他做出正确的评价。





2.2.1MFC




MFC


(还有曾经的


OWL


)是


SDK


编程的正常 演化的结果,就象是


C++



C


的演化结


果一样。


MFC

本身是一件了不起但不那么成功的作品,而且它过时了。这就是我的结论。


MFC< /p>


凝聚了很多天才的智慧——当然,


OWL



VCL


也一样,侯捷的《深入浅出


M FC


》把


这些智慧摆在了我们的面前。


但是这件东西用起来估计不会有人觉得很舒服,


如果你一直在



Java



VB


或者


Delphi


,再回过头来用


M FC


,不舒服的感觉会更加强烈。我不能够解释


MFC


为什么没有能够最终发展成和


VCL


一样简单好 用的桌面程序框架,


也许是微软没精力


或者没动力,总之


MFC


就是那个样子了,而且也不会再有发展,它已经被抛弃了。我有 时


候想,


也许基于


C++

< p>
这种复杂的语言开发


MFC


这样的东西本身就是错 误的——可以开发这


样的一个框架,


但不应当要求使用它的人熟 悉了整个框架之后才能够使用这个系统,


但很显


然,如果你不了 解


MFC


的内部机制,是不太可能把它用好的,我



不能解释清楚为什么会出


现这种现象。





2.2.2VCL




相比之下


VCL


要成功的得多。我相信很多使用


VCL

< br>的人可能没有像


MFC


的用户研究


MFC


那样费劲的研究过


VCL


的内 部机制。


但这不妨碍他们开发出好用好看的应用程序,



就足够了,还有什么好说的呢?


VCL




你提供了一种简单一致的机制,让你可以写出复杂


的应用程序。在李维的


Borland


故事那篇文章中 曾经说过,在


Borland



C++



3.1


推出之后


Borland


就有人提出开发类似


C++



Builder


一类



的软件,后来竟未成行。是啊,如果


C++



Builder


是在那个时候出现的,


今天的软 件开发领域将会是怎么样的世界呢?真的不能想象。


也许再过一段时间,


这些都将不再重要。


因为新生的语言如


Java



C#


都提供了类似于


VCL


的桌面应用程序框架。


那个时候,

加上


Java



C#


本身的简单性,


如果他们的速度有足够块,



Delphi


这种语言也要消失了,还有什么好争论的呢?只是对于今 天的桌面程序开发人员


来说,


VCL


确 实



是最好的选择。





2.3



企业应用程序框架





2.3.1



Windows



DNA




Windows



DNA


的起源无从探究了。随着


.Net


的推出,事实上< /p>


Windows



DNA


将成为


历史的陈迹。


Windows

< br>


DNA


虽然是几乎所有的企业应用程序开发人员都知道 的一个名词,


但我相信


Windows



DNA


事实上应用的最广泛的是


ASP


而不是


COM+


。真正的


COM


开发


有多少人真正的掌握了呢,


更不要提


COM+(


我有必要解释一下:

< p>
COM+



COM


的执行 环境,


它提供了一系列如事务处理、


安全等基础服务,


让应用程序开发人员尽量少在基础架构设计


上花精力

)


——当然我这里指的


COM


开发 不是指


VB


下的


COM


开发,


所以要这么说,


是因


为 我觉得如果不能理解用


C++


进行


CO M


开发,


也就不能真正的理解


COM< /p>


技术。



如果以一


种技术没有被广泛理解和应用作为失败的标志,那么


Windows

< br>


DNA


实际上是失败了,但


这 不是它本身的错,而是基于


C++



C OM


技术的失败造成的。多层应用、系统开发角色分


离的概念依 然没有过时。





2.3.2



J2EE




J2EE


是第一套成功的企业应用程序开发框架。因为它把事务处理、远程访问、安全这


些概念带 入了寻常百姓家。


这种成功我认为要归因于


Java

< p>
的简单性。


Java


的简单,

对于


J2EE


容器供应商来说一样重要。开



发一个基于


Java


的应用 服务器要比基于


C++


的更容易。而且


由于


Java


的简单性,应用系统开发者出错的机会也会少一些 ,不会像


C++


的开发者那样受


到那么 多挫折。开发基于


Java


的企业应用系统的周期会更短,这恐 怕是不容争辩的事实。


不论如何,是


J2EE

< br>让事务处理、远程访问、安全这些原来几乎都是用在金融系统中的概念


也被一般的 企业用户使用并从中获得利益。



2.3.3



.NET




.Net


有什么好说的呢?其实,它不过是微软的


J2EE


。事务处理、 安全、远程访问,这


些概念在


.Net


中都找得到。更有力的说明是,微软也利用了


.Net


实现了一 个


PetStore


。所


以,


.Net



J2E E


几乎是可以完全对等的。


但微软确实是一家值得尊敬的公司——我指从技


术上,象


Web



form< /p>


这种东西,我相信很多


Web


应用开发者 都梦想过甚至自己实现过,但


Sun


却一直无动于衷,而且似乎


Borland


也没



有为此作过太多努力,好像有过类似的东西,

-


-


-


-


-


-


-


-



本文更新与2021-03-03 12:41,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/699977.html

对目前主流开发技术的分析和总结的相关文章