软件相关技术及其在国内的应用Word文档格式.docx
- 文档编号:21639554
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:27
- 大小:30.22KB
软件相关技术及其在国内的应用Word文档格式.docx
《软件相关技术及其在国内的应用Word文档格式.docx》由会员分享,可在线阅读,更多相关《软件相关技术及其在国内的应用Word文档格式.docx(27页珍藏版)》请在冰豆网上搜索。
技术主题:
1.C++
【现状】98年语言规范的确定标志着C++这个“新”语言的“诞生”,从这个角度来说,C++是一个年轻的语言,不过从演进历史和发展程度来看(C++于1979年4月诞生于贝尔实验室),C++已经相当成熟并在各个领域得到了广泛应用。
对C++发展感兴趣的读者可以去看看《TheDesignandEvolutionofC++》这本书,此书中BjarneStroustrup将C++从诞生以来整个设计思想与理念变化的过程做了详尽深入的讲述。
无疑,C++已经成为当今世界最流行的高级系统程序设计和面向对象的开发语言,其定位为一种能够如C语言般支持底层的复杂系统程序设计,而又不失C的效率,同时能支持针对大型应用程序开发的数据抽象和面向对象设计的程序设计语言。
事实上也只有C++语言才真正实现了同时对高低层次的合理支持。
也正由于这些出色的特性C++得到了广泛的使用,从嵌入式系统(如vxWorks)到超大型应用系统(如美国电信网络系统)的应用开发,C++的应用已经弥漫到IT行业的各个角落。
相对而言,国内企业级平台的C++应用整体水平相对较低,大多还停留在相对简单的小规模应用开发层次。
一方面由于国内IT业技术发展相对滞后,OOP、GP等新一代编程思想近两年来才得到普及(直到现在,据笔者所知不少高校的计算机程序设计专业教学还停留在掌握TurboC2.0编程阶段),老一代技术人员在OOP、OOD(面向对象设计)思想上比较淡漠。
另一方面,国内IT技术产业规模化应用不多,缺乏高质量、高产品化的应用系统,很多应用还停留在针对工程项目的Case实施阶段,产品投入少,持续性不强,难以做到成熟的产品化设计和开发,因此对于相对而言需要较长研发周期的C++而言其实际应用较少。
同时对于传统的大规模应用(如金融、电信核心业务领域),由于其原有基础架构多建立在面向过程的C语言体系,考虑到系统的延续性和改动维护成本(资金成本,时间成本,以及开发人员掌握基于C++的OOP、OOD的成本等)大多还处于比较保守的观望或者尝试性改良阶段。
再者,面临新一代语言如Java、C#的竞争,C++在基于数据访问、网络交互和分布式计算的企业级应用市场受到强有力的挑战,不少技术人员开始将注意力转移到这些新兴的程序设计语言之中。
在这样的情况下,国内优秀的C++程序员不多,优秀的企业级C++架构设计师更是屈指可数。
【发展】随着IT应用规模的膨胀和软件系统结构的发展,传统的面向过程的程序设计已经难以满足系统体系设计的需求,在传统应用中,大部分是基于流程的设计,如银行应用系统中的账号开户、取款、查询业务等,往往在一个代码单元(比如对应取款业务的一个Draw.c文件)独立完成从获得数据库连接、读取数据库记录、验证用户密码字段、判断存款状态字段、更新数据库记录、关闭数据库连接等一系列操作(这并不是笔者胡乱猜测,当前国内大多数银行的业务系统正是如此),大家可想而知对于银行的几千个交易而言,如此结构的开发与维护将是怎样的噩梦(即使我们可以采用建立通用类库和定义相应的Structure的方法进行结构调整,但是对于一个日趋庞大的系统而言,无疑帮助有限)。
面向对象的设计思想的出现则为解决这类问题提供了有力支持,通过使用对象的封装、继承,将系统划分为若干明晰的对象子体,系统业务功能通过对象子体之间的交互来具体实现,这样一来系统整体逻辑架构相当清晰,对象子体专注于各自独立实现,代码重叠减少而可重用性大大增加。
C++作为传统、成熟的面向对象的程序设计语言也已经得到广泛的应用。
目前国内企业级的C++应用可以说刚刚开始起步,发展较晚并且缺乏一个高水平的应用发展环境,同时面临着新一代语言如Java、C#的激烈竞争(这方面有很多争论,有的业者根据理论推理认为C++和Java、C#解决方案所面向的对象不同因此并不存在什么冲突,但就笔者个人的实际项目经历而言,在新产品研发选型中,C++和Java向来都是一个激烈争论的焦点,从小型的信息管理系统到大型的ERP系统、金融业务系统,C++都面临着可能被Java取而代之的压力。
另外从IBM、Sun、HP近年来的产品发展规划中,我们也可以明显看出国际大厂商在这方面已经向Java倾斜),因此C++在国内企业级领域的新产品研发应用中可能会面临比较尴尬的局面,其主要发展将集中在对原有基于C语言技术平台的应用升级以及一些对于实时运算要求较高的领域(如金融、电信核心系统,网络游戏服务器等)(当然这仅仅是笔者个人的观点。
)
2.Java
【现状】未来的计算机体系是基于Web的分布式计算,Java无疑是当前满足这一趋势的最佳语言,由于其本身的开放性体系以及其简洁的语法,国内Java技术应用得以蓬勃发展起来。
虽然整体水平并不是很高,但是相对C++在国内的发展和应用而言已经是非常大的进步,这从国内众多的个人或者社区性Java技术组织就可见一斑。
国内企业级应用中的关键技术和内容主要集中在:
数据访问、数据格式转换、逻辑控制、数据传输、数据表示等方面,而这些都是Java的优势所在,因而在实际应用实施中,Java/J2EE俨然已经成为不可替代的企业级应用解决方案。
【发展】作为一门正处于发展高峰期的程序设计语言,Java深刻地体现了“设计”的精髓,严谨清晰的结构使其具有良好的扩展能力和广阔的发展空间,简洁的语法提供了良好的可维护性,同时,通过降低程序员编码的难度使其能够将更多的精力专注于业务逻辑的设计与系统框架的构建。
在可以预见的未来3年内,Java将进一步巩固其在服务器端确立的战略优势并同时向嵌入式系统等应用中延伸。
目前,国内在Java应用方面已经有了良好的技术氛围和群众基础,涌现出不少优秀的Java技术研讨组织和基于Java技术的优秀作品,相信在未来的3年内可以形成规模化的Java应用。
个人认为,Java技术在国内将拥有非常广阔的前景。
一方面,基于J2EE框架的Java应用将成为大型商业应用的中流砥柱,另一方面在手机、信息家电、IC卡等嵌入式应用中J2ME也将扮演重要角色。
3..NET
【现状】作为Microsoft下一代技术平台,.NET无疑担负了Windows平台的未来,无论目前国内外各大论坛上关于.NET前途的争论结果如何,我们最终都不得不面对.NET这个在未来3到10年都要朝夕相伴的新技术。
由于出现时间不长,无论是在软件技术最发达的美国还是在我国,.NET还都处于最初的探索和尝试阶段,基于.NET的企业级应用可以说刚刚起步。
【发展】.NET本身并不是一个全新的框架,微软综合了诸多技术,推出了这个跨语言、跨平台的技术规范,它吸取了之前所有技术的精华,相信借助其本身的先进性和微软强大的市场能力,.NET将在不远的未来有所作为。
个人认为,在可预见的未来3年之内,ASP.NET将逐步取代目前的传统ASP技术,继承现有的WindowsServer应用,同时,由于Windows平台的普及性,.NET将在大多数中小型EndCustomer系统中得到广泛应用。
而随着PC硬件技术根据莫尔定律的推进以及软件技术本身的发展,WindowsServer在性能上将逐渐与低端小型机接近,从而在中小型企业应用中获得更大的市场份额。
在Grid式计算的下一代互联网技术中,相信.NET会扮演一个前端服务提供者的角色,即运行在高性能小、大型机上的Java应用提供通用的WebService接口,而由.NET平台提供面向客户接口的应用整合。
相关技术书籍推介
C++书籍中不少重量级著作已经在国内登陆,如TheC++ProgrammingLanguage,C++Primer等,但这些书籍仅仅只限于C++语言本身,如何利用C++的强大功能设计出一流的软件则是另外一回事,下面这两本书就是关于C++设计方面的经典书籍:
◎Large-ScaleC++SoftwareDesign(ChinaPub上有此书的外版定购)
如果只是单兵做战、写些小玩意儿,不必阅读此书。
除此之外,读后你必有大得!
这本书的内容不是呆坐在象牙塔里教授、学者们冥思苦想所能得到的,它来自第一线的工程师的经验总结。
◎ModernC++Design繁体版由台湾孟岩译(ChinaPub上有外版定购)
这本书介绍了一组可复用的设计“珍宝”,称为“泛型组件”(GenericComponents),同时还介绍了构造这些组件所使用的技术。
这些泛型组件能够在各种软件系统体系中向用户提供类似库的功能。
编码和实现的技术将重点置于那些传统上是属于设计阶段的任务和问题之上,而设计阶段的工作通常是在编码之前就完成了。
由于是高层次的组件,泛型组件使得我们有可能将复杂的软件体系以非常富有表现力简洁和易于维护的代码表达出来。
泛型程序设计、设计模式与C++这三个要素在这里被组合起来,达成在纵向和横向上的高度可复用性。
在横向上,使用一个很小的代码库就实现了一个可组合的数量不限的结构和行为集合。
在纵向上,这些组件的通用性使得它们能够被应用于广泛的应用程序中。
本书的主要读者对象是两类人。
第一类是有经验的C++程序员,他们希望掌握最新的库编写技术。
本书展示了新的、强有力的C++惯用法(idiom),其能力令人惊讶,有些甚至是人们从来就不敢想的。
第二类是那些忙碌的程序员,他们得完成工作,又不可能在学习上付出太大的代价。
他们可以略过那些最复杂的实现细节,将精力集中到对这个库用法的掌握上。
每一章都有介绍性的解释,以“QuickFacts”结束。
程序员们会发现在理解和使用组件方面,这些部份是非常有用的参考资料。
组件可以单独的去理解,同样可以很有力安全和出色地使用。
这本书不是一本模式技术书籍没有打算全面论述模式技术。
因为在这本书里,模式是从一个库编写者的实用主义观点来展现的,所以即使是对模式技术更感兴趣的读者也会发现这个观点很有新意。
◎RuminationsOnC++:
ADecadeofProgrammingInsightandExperience
《RuminationsOnC++》集中反映了C++的关键思想和编程技术,不仅告诉你如何编程,还告诉你为什么要这样编程。
这将是C++程序员的必读之作。
因为:
1.它包含了丰富的C++思想和技术,从详细的代码实例总结出程序设计的原则和方法。
2.它不仅教你如何遵循规则,还教你如何思考C++编程。
3.既包括面向对象编程也包括泛型编程。
并深入探究了STL这一近年来C++最重要的新成果的内在思想。
本书的作者在使用C++的时候,全世界的C++用户还寥寥无几。
他们对C++语言的发展有着突出的贡献。
个人将Java书籍分为三类,语言类(如Thinkinginjava)、平台及相关技术类(如InsideJVM,JavaManagementExtension)和设计类(如DesignPatternJavaCompanionAppliedJavaPatterns),而依个人见解,基于Java的设计是重中之重。
众所周知,Java语言本身以面向对象、结构简洁著称,其语言本身并没有太大的复杂性(这与C++形成了鲜明对比),因此,对于Java新手而言,语言教学之类的书籍只需要有一本入门教程、一本较全的参考手册即可(ThinkingInJava和JDKDocument就可以满足),而学习的重点,也是决定一个Java设计师的优劣所在,则是在于其对具体系统所设计的应用是否满足需求,而设计方面的功力需要相当的理论积累和实际实践并举的。
(1)平台及相关技术类
◎《InsideJVM》
要深入Java的运行机理,必然需要对JVM机制有所了解,Java号称PlatformIndependent,但JVM本身就是一个Platform,正如我们用MFC写Windows应用程序一样,只有了解了Windows的系统消息处理机制我们才能编写出强大的MFC应用。
◎《O'
relliyJavaManagementExtentsion》
JMXJavaManagementExtentsion是Java组件管理的扩展规范,也是当前主流J2EE应用服务器(Weblogic,Websphere,JBoss)的核心和基础。
(2)语言类
◎《TheElementsofJavaStyle》
7个人参与编写的140页的书,能不好吗?
☺
JavaSyntax告诉你如何编写机器可以理解的代码,而JavaStyle则告诉你如何编写他人可以轻松读懂的代码,事实证明,易读易维护的代码通常更加健壮,而Java作为面向大型工程应用的程序设计语言在这方面则显得尤其重要。
建议使用Java编程的人都来读读这本手册,不花太多的精力却能给你的工作带来极大的帮助,极具指导意义。
◎《BitterJava》
设计模式对软件开发来说很重要,这一点从它在技术中所占的数量就可见一斑。
不过,鉴于其在开发过程中的实用性,设计模式只解决了问题的一半。
反模式——描述“对产生绝对负面结果的问题的一种常用解决方案”——旨在通过向Java程序员展示如何避免常见的Java陷阱来解决问题的另一半。
《BitterJava》就是这样一本书,它告诉你不该做什么,从而帮助读者避免重蹈覆辙。
◎《JavaPitfalls》&
《MoreJavaPitfalls》
Java界中的EffectiveC++。
许多Java程序员通过几年的辛苦,不断的碰壁总结出一些零散的编程经验,当他们看到这两本书的时候可能会欣喜若狂,这两本书总结了Java程序设计中可能遇到的大多数问题。
不可不读的好书。
(3)设计类
◎《AppliedJavaPaterns》
GoF的DesignPattern是设计模式的开山之作,但由于其采用的是C++的描述方法,并且由于Java语言与C++的差异,java程序员阅读DesignPattern往往有一种陌生感,难以切入实处,而AppliedJavaPatterns则正是针对Java语言所撰写的设计模式书籍。
通过实际Java代码示例,让读者清晰的理解设计模式在Java中的实现并可以在实际工作实现设计模式的快餐化应用。
◎《ThinkinginPatternswithJava》
ThinkingInjava作者BruceEckel关于PatternsinJava的大作,但现在还处于0.6版本。
.NET推出时间不长,技术书籍的出版还处于黎明前的破晓阶段,暂时没有类似《TheC++ProgrammingLanguage》或者《ThinkinJava》之类学者必备的经典书籍。
此时来自微软的文档无疑是最具深入核心资质的学习资源。
笔者翻阅过多本国内外相关技术资料,感觉就入门而言最好不过MSTrainingBook,深入浅出,易于操作。
对于.NET,类似Java,笔者同样将其分为平台技术相关类、语言类以及设计类。
(1)平台技术相关类:
◎《InsideMicrosoft.NETILAssembler》(MSPress)
深入剖析了MSIL,CommonLanguageRuntime的内部运作机制,要了解.NET系统机制不可不读的机要大作。
◎《ProfessionalASP.NET》(Wrox)
Wrox号称ProgrammertoProgrammer,在.NET方面其出版的Professional系列书籍还是比较优秀的。
本书主要讲述如何使用服务器控件以及数据访问技术创建ASP.NETWeb应用;
开发、保护和配置WebService,以及其中的调试技术、性能、迁移性和互操作性等问题。
如果之前有过Web应用设计的经验,那么本书将会是一本非常好的针对ASP.NET的入门及开发手册。
◎《ASP.NETWebsiteProgramming:
problem–design–solution》(Wrox)
ASP.NET的进阶读物,建议在读完了ProfessionalASP.NET的基础之上进行研读。
◎《DebuggingASP.NET》
此书面向的读者是产品技术经理或者富有经验的高级技术人员,他们需要对产品的代码进行评审,并进行详尽的测试以确保产品的质量。
本书教授了大型.NET应用的调试策略和技巧,如如何制定代码编写规范以避免常见错误的大量涌现,如何通过.NET调试工具跟踪调试.NET应用,以及针对从传统ASP转移到ASP.NET过程中的一些告诫和建议等等。
(2)语言类:
◎《InsideC#Secondedition》&
《MicrosoftVisualC#.NET(CoreReference)》
来自微软出版社的.NET核心语言C#技术书籍,最具权威的语言教程。
◎《ThinkinginC#》
0.1预览版MindView
刚刚下载翻阅还未深入阅读,暂不评论,希望能保持Thinkingin…系列的一贯品质。
暂空缺。
二、Windows桌面应用领域
由于国内Windows平台的普及,大量基于Windows平台的桌面应用发展迅猛,同时国内也涌现了一批高水平的桌面应用研发力量。
从小型的工具型软件到大型的办公自动化软件,从多媒体播放、娱乐游戏软件到病毒防护等呈现出一片欣欣向荣的景象。
在国内桌面应用开发的正规军中,基于VisualC++平台的开发技术得以普遍应用,以下是几个例子:
金山词霸(可能是中国用户使用最多的软件了吧,开发工具:
VC++),WPSOffice(VC++)(上次与金山总裁雷军闲聊之时也谈到Windows开发工具的选择问题,在Win3.1平台吃过BorlandOWL的苦头之后,金山已经全面转向微软开发平台,不过好像现在也引入了Delphi,C++Builder这类开发工具),东方影都(VC++),超级解霸(VC++)。
对于一些小型的桌面应用开发,如共享软件开发领域,BorlandDelphi/VisualBasic等RAD开发平台则占领了很大的市场份额,代表如Foxmail(Delphi),超级兔子(VB),Windows优化大师(Delphi),网络伴侣(Delphi)等,当然,也有基于VC++的Netants,FlashGet等重量级作品。
鉴于国内桌面应用多集中于Windows领域,这里我们就仅仅对Windows平台的桌面应用开发平台进行探讨。
1.VC++/C++Builder
【现状】对于Windows应用开发而言,VC++似乎是不二之选,全面的SDK文档,丰富的开发资源,但由于VC++对于RAD开发支持不够,难以进行快速开发和部署,特别是对于GUI开发以及数据库开发的支持比较欠缺,因此对需要进行快速定制的桌面应用(如小型专用软件)而言开发维护成本过高(根据与Netants作者洪以容的交流得知,为了达到最好的效果和灵活性,他在Netants的设计中舍弃了陈旧的MFC框架,利用WindowsSDK完成了整个界面设计,可想而知其工作量相当可观),个人认为VC++更适合大中型软件公司桌面应用的产品化研发。
C++Builder作为C++语法与源于Delphi的VCL框架的结合,自然继承了两大主流桌面技术的先天优势,但从另一方面来看,这恰恰也造成了C++Builder尴尬的一面,由于DelphiVCL发展的历史原因,大部分VCL组件都由Delphi程序员用ObjectPascal编写,这些组件经过一定改编虽然可以用于C++Builder,但在兼容性以及程序联调等方面却遇到了一些令人头疼的问题,同时C++Builder为人诟病的编译速度以及CodeInsight速度也使得大部分C++程序员望而兴叹(目前的版本尽管使用了pre-Compiledheaders等技术进行相关性能调整,但相对VC++而言,其编译速度还是较慢,不过最新的C++Builder6经过笔者的使用感觉已经有了一定的提高,希望这个问题在新版本中能得到更好的解决)。
【发展】VC++从设计思路而言,是面向工程级的开发,作为一个成熟的应用开发平台,无疑VC++已经在桌面开发领域建立了无可替代的地位,其发展似乎不必多说,相信在未来三年内依然可以稳居桌面应用开发工具的首位。
上面虽然列出了C++Builder所存在的种种不足,但我们必须认识到“存在即合理”的含义,C++Builder的确满足了C++技术人员对RAD工具的强烈需求,随着Kylix3的推出,基于C++BuilderCLX编写的代码可以无痛苦地移植到Linux平台,这也为C++Builder应用注入了一针强心剂。
如果Borland可以在编译速度等方面做进一步改进,C++Builder将在C++RAD方面大有作为。
2.Delphi/VB
【现状】Delphi/VB无疑是快速开发的利器,在国内桌面应用中,Delphi/VB占据80%以上的份额。
Delphi在台湾、新加坡、香港等东南亚地区应用非常广泛,从桌面应用到中小型的企业级开发都可以看到Delphi的身影。
随着Delphi.NET、Kylix3的前后推出,Delphi/Kylix作为桌面应用开发工具发也展到了一个新的高峰,同时借助.NET的威力在服务端更进一步。
同时,VB在东亚,特别是在日本应用非常普遍。
相对Delphi而言,由于vb.NET的结构调整较大,其发展可能会暂时面临一个转型中的低迷阶段。
【发展】从技术角度而言,VB不能算是一个纯粹面向对象的程序设计语言,这方面它大大落后于BorlandDelphi、ObjectPascal
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 相关 技术 及其 国内 应用