一、引言 1
我为什么要写这篇文章 1
我的故事 2
要涉及的话题 3
二、正文 3
2.1 程序设计语言 3
2.2 桌面应用程序框架 5
2.3企业应用程序框架 6
2.4 COM技术 7
结论 9
闲话 10
给入门程序员的建议 10
印度的软件业 11
附录 11
对主流技术的分析和总结
myemail: bjhua@etang.com
一、引言
我为什么要写这篇文章
首先,我要限定我文章的范围,我讨论的问题局限于桌面应用开发领域和企业应用开发领域,所以我的结论并不适用于整个软件开发界,比如我说C语言已经退出历史舞台,这对于写嵌入式系统的人和编写操作系统内核的人来说显然是错了。
我写这篇文章的目的主要是:
* 简单的介绍并评价当前主流技术
* 比较当前的主流技术
* 预计技术的演变
如果你想做程序员或者已经是个程序员,你可能会面对这些困惑:
* 学什么语言呢?Delphi、C++、VB、Java、C#、PHP、Python?
* 选择什么开发工具呢?Delphi、VC、C++Builder、JBuilder?
当你已经入了门,有了一定的基础之后(可能已经通晓了几种语言),你会面临进一步的困惑:
* MFC和VCL之间是什么关系?
* J2EE到底是什么?.Net到底是什么?两者有什么本质的区别,我应该学习哪一个呢?
* COM那么复杂,为什么很多地方都用到它?我必须学习它吗?
如果是作为一个软件公司,如果不是那么大,如果你的公司还没有一个真正的技术上的灵魂人物,那么你也会面临同样的困惑。技术问题纷繁复杂,让你不知所从,而且真正的精通每一项技术都需要巨大的时间和人力的投入,你怎么办?选择哪种技术作为公司的主流技术呢?选择的方向是否正确是个关乎你的公司的生死存亡的问题。
你面临着这些困惑吗?如果是,那么请让我试着为你拨云见日。
我的故事
在我上大学之前,我从没见过计算机。大学的时候,正是Dos和FoxBASE的年代,也正是计算机软件开发世界几件伟大的事情发上的时候:(Windows3.1、Borland C++ 3.1、Visual Basic 1.0 的推出也是伟大的事情,但那时候我还不知道计算机为何物)Widnows95推出,并开始应用;Visual Basic 5.0推出,开发工具中第一次出现了成熟的、被广泛应用的Auto Code Completion技术;Java推出;ASP技术开始盛行,Windows DNA技术被理解和接受;标准C++诞生;Visual C++6.0 推出;J2EE规范推出。
成为一个程序员对我而言并不顺利,因为我不是科班出身。我入门的程序语言是FoxBASE,这让我一直对FoxBASE有种特殊的感情,我也正是通过Visual FoxPro3.0转写Windows程序的,如果没有它,我也许就不会成为一个程序员了。后来,在大学期间接触到了InterDEV,那是个写ASP程序的开发工具,还有Java,也是那时候接触的,当时有点盲目崇拜的意思(我想我喜欢Java的一个原因可能是刚开始学C的时候很受挫折)。毕业之后,我就是凭借着自己写的一个ASP网站找到了自己的第一份工作——说来惭愧,我从来也没有成为一个C程序员。我真正的熟悉Java是在我翻译了一本Java数据结构的书和写了一套完整的GIS系统之后(说起此事,我要感谢一下我的公司,但因为这些故事与本文的主题无关,所以这里就不多说了)。再后来,我自己学习了标准C++和COM技术。
有点像履历表了是吗?提到这些,我只是希望作为读者的你能够了解一下我的知识体系,从而能够知道我大概要讲些什么;同时也希望你能够原谅我可能犯的错误——我在这里说的话,并不一定就是最后的结论,虽然“共同探讨”这个词几乎是粗制滥造的书的作者专用语了,但我在这里引用它是真诚的,我愿意看到你的反馈。
要涉及的话题
在开始文章的正题之前,我先大概地介绍这篇文章将会涉及到哪些知识。如果你是初学者,希望你不要被吓倒,这虽然是一篇技术文章,但我不会过多的讨论技术细节,如果你不懂我说的这些东西,也没关系,我本来就希望通过我的文章帮助你做出一个选择,不再走很多人已经走过的弯路,你这要记住结论就可以了,随着你知识的增长,以后你会渐渐明白;如果你已经通晓了这些技术或其中的大部分,那么我相信读了这篇文章你会有一些另外的收获。
主流的程序设计语言: C++、Delphi(Object Pascal)、Java、C#
桌面应用程序框架:MFC、VCL、QT、Java AWT/SWING、.Net
企业应用程序框架:Windows DNA(ASP、COM、COM+)、J2EE、.Net Framework
开发工具:Visual Basic、Delphi、Visual C++、C++ Builder 、Visual C#
二、正文
好了,现在让我们开始我的正文吧。
首先,我来完成这篇文章的第一个目标:介绍并评价当前主流技术。我指的今天的主流技术是:
* 程序设计语言:C++/Delphi(本来应该是Object Pascal,但为了简单,我就语言和工具混为一谈吧)/Java/C#(虽然他刚刚推出,但因为微软为之倾注了大量心血,一定会成为一种重要的开发语言)
* 桌面应用程序框架:MFC/VCL
* 企业应用程序框架:Windows DNA/J2EE/.Net
* COM技术:我单独提出这项技术,是因为它无法简单的被视为语言、桌面应用程序框架或企业应用程序框架,它与这些都有关系。
2.1 程序设计语言
2.1.1 C++
语言的演进最初要从二进制代码和汇编说起,但那太遥远了。我们就从面向过程的语言说起吧(包括Basic/C/Fortran/Pascal)。这种面向过程的高级语言终于把计算机带入了寻常的应用领域。其中的C语言因为它的简单和灵活造就了Unix和Windows这样的伟大的软件。面向对象的语言是计算机语言的一个合乎逻辑的进化,因为在没有过多的影响效率、简单性的前提下提供了一种更好的组织数据的方法,可以程序更容易理解,更容易管理——这一点可能会引出不同意见,但事实胜于雄辩,C