程序开发:目前主流开发技术的分析和总结

程序开发:目前主流开发技术的分析和总结,第1张

程序开发:目前主流开发技术的分析和总结,第2张

主流编程语言:C++,Delphi(ObjectPascal),Java,C#

桌面应用框架:MFC,VCL,QT,JavaAWTSWING,。网

企业应用框架:WindowsDNA(ASP,COM,COM+),J2EE,。框架

开发工具:VisualBasic,Delphi,VisualC++,C++Builder,VisualC#

*编程语言:C++Delphi(本来应该是ObjectPascal,但为了简单起见,我把语言和工具混为一谈)JavaC#(虽然刚刚推出,但肯定会成为重要的开发语言,因为微软对它倾注了大量的心血)

*桌面应用程序框架:MFCVCL

*企业应用框架:WindowsDNAJ2EE.Net

*COM技术:我单独提出这项技术,是因为不能简单地把它看成一种语言、桌面应用框架或企业应用框架。跟这些都有关系。

2.1编程语言

2 . 1 . 1 c++语言的演变

一开始应该从二进制代码和汇编开始,但是那太远了。先说面向过程的语言(包括BasicCFortranPascal)。这种面向过程的高级语言终于把计算机带入了普通的应用领域。其中,C语言因其简单灵活,创造了Unix、Windows等伟大的软件。

面向对象语言是计算机语言的逻辑进化,因为它提供了一种更好的方式来组织数据,而不会对效率和简单性产生太大影响,可以使程序更容易理解和管理——这可能会导致不同的观点,但事实胜于雄辩。C++最终让C语言的版图越来越小,而当今活着的计算机语言或多或少都有面向对象的特点,所以这不会造成。C++的成功很大程度上归功于C,C++成为今天的样子是一个逻辑产物。因为在面向过程的时代,C几乎已经一统天下了。如今像JavaC#这样的语言大量借鉴了C,C原本是C++++的意思。实际上,C++曾经有一个很好的理由来统一面向对象编程语言的世界,但遗憾的是,C++太复杂了。即使是熟练的程序员,如果要把一些问题解释清楚,也会很头疼。举几个不那么复杂的例子:

重载的成员转换函数copy构造函数和for =的转换构造函数有什么区别和联系?

定义一个类成员函数private:virtualvoidMemFun()= 0;意义何在?

int(*(* x(int))[4])(double);你什么意思?

还有其他一些特性,比如typedef和宏可以用来做一门新的语言(虽然宏不是C++的一部分,但是和C++关系太密切了),还有让你一不小心摔跤的内存问题(是新的,删除没事吧?有没有考虑过一个对象存放在容器里的情况?)…等等,C++太复杂了,要花很长时间才能学会,而且你会发现,即使你已经用了好几年C++了,你也会经常发现新的东西要学。你想解决一个应用领域的问题——比如从数据库中查询和更改数据,但是你需要先担心一段时间C++的问题。是的,你精通C++,你可以轻松回答我的问题,但是你有没有想过你付出了多少?我不想过分谴责C++。我自己喜欢C++。我甚至建议,一个开发普通应用系统的正经程序员,应该学习C++的一些特性。比如STL这种指针操作模板,几乎让人爱不释手。宏可以用几个字符代替许多代码。对于系统级程序员来说,C++的地位是不可替代的。Java的虚拟机是用C++写的。C++会继续存在,有强大的生命力。

2.1.2 Java和C#

与C++相比,Java #与c++的区别在于两个方面:第一是它们运行在虚拟环境中,第二是语法简单。对于开发者来说,Java和C#在语法和语言机制上可以看作是同一种语言。# C更多的是政治的产物,而不是技术。如果孙没有为难微软,我想微软也不会费尽心思想出一个类似Java的C++++。还记得Visual J++和WFC吗?看看那些东西,你就知道微软对Java投入了多少心血。而且从更广阔的角度来看,两者非常相似——c#和Java面临着同样的问题,面向应用领域:事务处理、远程访问、Webservice、网页发布和图形界面。所以在这一段,我暂时用Java这个名字来指代Java和c#——虽然这两种语言在细节上确实有所不同。Java是一种适合解决应用领域问题的语言。Java之所以对用户来说很简单。想一想你需要多长时间学会并能够使用Java,需要多长时间学会并能够使用C++。因为Java很大程度上屏蔽了内存管理问题,也没有那么多为了微小的性能提升而定义的特殊内容(比如Java里没有虚拟关键字,Java也不允许你直接在栈上创建对象。Java明确区分了bool和整型变量),它允许你尽可能用相同的方式操作一切。除了基本的数据类型,一切都是对象,你必须通过引用来操纵它们;除了这些,Java还提供了丰富的类库来帮助你解决应用问题——因为它是一种面向应用的语言,它为你提供了多线程标准、JDBC标准和GUI标准,这些都是C++所不具备的,因为C++并不是直接面向解决应用问题的用户。有人尝试把这些内容加入到C++中,但是没有成功,因为C++本身太复杂了。随着这种情结的逐渐产生,人们将不再使用C++来开发应用领域的软件,像MFCQTCOM这样的东西终将退出历史舞台。

德尔福

Delphi是用C++开发应用系统到用Java开发应用系统的中间产品。和C++相比,几乎和Java一样简单。因为它的简单,可以定义和使用丰富的类库,Delphi也这样做了,产生了VCL和其他组件库。另一方面比Java在虚拟环境下运行效率更高,所以Delphi在简洁和效率的平衡中找到了自己的生存空间空。而且预计未来这个生存空室还会存在。显然,微软已经放弃了这个领域,专注于两个方面:系统语言C++和未来的Java(实际上。网)。也许这对Borland来说是一件非常幸运的事情。如果我能给Borland一些建议,那就是不要让Delphi越来越复杂。在这种情况下,您将把您的用户带到C++或Java的领域。在虚拟机最终占领所有应用开发领域之前,Delphi和Delphi用户还是会过得很好的。

2.2桌面应用程序框架

目前真正成功的桌面应用框架只有两个,一个是MFC,一个是VCL,还有其他一些,但实际上他们并没有进入应用领域。遗憾的是,这两种桌面应用框架我都不精通。但这并不妨碍我对他做出正确的评价。

2 . 2 . 1光纤通道

MFC(和OWL)是SDK编程正常进化的结果,就像C++是C进化的结果一样。MFC本身就是一个很棒但不那么成功的作品,而且已经过时了。这是我的结论。MFC体现了很多天才的智慧——当然,猫头鹰和VCL是一样的。侯杰的《MFC in a Simple Way》把这些智慧摆在了我们面前。不过用这个东西估计没人会觉得很舒服。如果你一直在用Java,VB或者Delphi,回来用MFC,那种不舒服的感觉会更强烈。我无法解释为什么MFC不能最终发展成像VCL一样简单易用的桌面程序框架。可能微软没有精力,也没有动力。简而言之,MFC就是那样,不会有进一步的发展。它已经被遗弃了。有时候我会想,也许基于C++这种复杂的语言去开发MFC之类的东西是不对的——这样的框架是可以开发出来的,但是不应该要求使用它的人熟悉整个框架才能使用系统。但显然,如果不了解MFC的内部机制,是不太可能用好的。我无法解释为什么会这样。

2.2.2VCL

相比之下,VCL要成功得多。我相信很多使用VCL的人可能没有像MFC用户那样努力研究VCL的内部机制。但这并不妨碍他们开发出好看的应用,这就足够了。还有什么好说的?VCL为你编写复杂的应用程序提供了一个简单且一致的机制。在李伟的《Borland物语》中,说的是Borland C++ 3.1推出后,Borland有人提出要开发类似C++ Builder的软件,但没有实现。是的,如果当时出现了C++ Builder,今天的软件开发领域会是一个怎样的世界?我真的无法想象。也许过一段时间,这些都不重要了。因为Java和C#等新语言提供了类似VCL的桌面应用框架。当时以Java和C#本身的简单性,如果足够快,连Delphi这种语言都会消失。有什么好争论的?只是对于今天的桌面开发者来说,VCL的确是不二之选。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 程序开发:目前主流开发技术的分析和总结

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情