$ U* w( t8 D! f/ | 2、 VC。如果说到Windows下的可视化开发工具现在大家接触得最多的就是VC,VB,DELPHI,BCB。其实我觉得VC并不能完全算是一个可视化工具,这表现在VC中编写代码还是占了开发工作的大部分时间。而其他的可视化工具中都在界面设计中耗费了大量的开发时间。我一直使用VC的原因就是因为我能够一直将注意力集中在软件功能开发上而不是界面设计上。我认为这样能够在开发的过程中更加自由和有更多的控制权。而且这种情况下产生的代码维护性更强。 2 ~$ L% Z, O; @. x( n! f ' b/ c" Y S8 { 3、 delphi。数据库支持是delphi的强项。这主要体现在delphi与bde的无缝集成,以及delphi提供的那一大堆现成的数据库操作控件。这是vc望尘莫及的。目前delphi支持bde、ado、interbase三种数据库访问方式。所有的方式都能拖拉到应用程序中实现可视化操作。正是因为delphi对数据库类的包装,使得用户操作数据库不像在visual c++中必须从开始到最后都要干预。明显地提高了开发速度。在delphi中使用webbroker控件还能很方便地构造出基于数据库的web页面,通过html管理web数据库。 H) K, k J+ P; S
. r- L" X5 E, ?' ^$ [. j2 J 4、 perl。我喜欢perl的理由是与我从事的工作有关,我想使用SNMP网管工具查出每天的带宽使用情况。当然可以写一个C程序直接同路由器交谈取得所需信息。但我并不喜欢C的malloc()和free(),它让我着实不安。好在perl有一个SNMP接口??桓龃笤?0行代码的perl脚本可以同路由器对话,并且能将精力放在功能实现上,而不是编程的细节上。 1 i1 h: Z3 A$ f' h4 V' z& @/ Z6 r# R" g, K* @4 Z0 e
5、 python。大家可能对这个名词比较陌生,它是一种面向像的脚本语言。它具有动态类型,支持多继承,用户定义类型,高级动态类型和类。为什么我这么喜欢python?有几个原因。首选,它的语法清晰而简单,我的python程序比其它的语言更易读懂。其次,我发现自己更倾向于面向对像方式编程,而向对像的编程比旧的传统方式似乎更贴切一些,再加上python是从头至脚面向对像的,长的程序易于开发和维护。0 ^# |3 d2 X! B' M) V
& s% u, D2 [0 v, P0 w 6、 Tomcat。之所以要选择它,主要是因为原因是因为它是免费的,不像MS的软件动则几千RMB,像我们这样的学习者哪里承受得了! 免费并不代表质量低下,据测试表明,Tomcat在JSP服务器方面的稳定性优于websphere。它的开发非常方便,集成了很多优秀的性能,它的源码公开,你可以仔细地研究它运行机制。1 x3 u$ I$ {6 b+ h! b! @
) M7 a9 z2 z" Z) v. V8 N
7、 ASP。简单易学。Basic有谁不会?很少会有人举手,所以有人在说这个开发基础是最广的。而且MS有一向做的非常好的联机手册,本地化语言的帮助,同时非常快的出现教学书籍,这样会大大方便开发人员的学习和对技术的深入研究。安装使用方便。装好一个Windows 2000,只要你安装了IIS哪么ASP就可以使用了,从没有什么需要你花心思去配置的。 $ S1 s2 A) r' G- c2 x# o" s+ J3 A3 Y0 C: m
8、 PHP。PHP是一个什么原因出现的呢?它是一个技术人员希望能用一个快速的方面来完成他自己的个人主页中的一个小应用。而在他一发不可收时出现了php,它使一个人能在多种操作系统下迅速的完成一个轻型的Web应用。所以在短短的几年里,php迅速的升级了它的版本,同时在GNU的世界里找到了一个青梅竹马的伙伴----Apache。个人认为php是自由软件在web应用平台上一个决胜的工具,如果没有php的出现,还会有许多人认为自由软件就代表了对开发人员的高技术要求、难记的代码、复杂的工具.....php使一个会使用basic的人员在极短的时间里快迅学习并完成用户需要的应用。 1 W6 f1 v" C# W( [1 O. M( E 7 V* Q3 \. y5 n0 V' I 9、 PB。现在究竟是什么阻碍了Web应用和3-tier的大批出现呢?仍然是工具。一般说来,完成这些任务需要使用多种工具,在开发时需要在多个工具之间切换,由此造成了开发效率的低下和开发难度的提高。而PB8/PJ4很好地解决了这些问题。所有这些任务,都可以在同一个开发环境中完成,开发人员能非常快速地编写基于数据库的业务逻辑Component以及调用这些Component的Web-Client或PB-Client。尤其是Sybase把2-tier中的王牌Datawindow扩展到了HTML领域,使得数据库驱动的动态页面实现起来非常容易。 3 P; _, S5 N9 `5 H1 t. q2 D 5 w* T/ ?. ]* K+ h9 Z. l- m 10、.NET。.NET框架和C#扩展了Windows的功能,C#和Visual Studio .NET的结合使得创建和配置Web服务几乎可以自动进行。并且,和传统的ASP应用程序相比,ASP.NET应用程在性能、稳定性以及可扩展性方面都有了实质性的提高。 * P# t8 J2 S8 v3 z/ h
+ Q- k8 l( Z# D3 s- b/ p5 q ) D% W+ w; L3 U1 L: X. l1 q2 e8 Q8 |JAVA开发工具大比拼 / t/ K9 L" _2 d) W8 i+ M, n4 @; ?, u2 q/ l
VisualAge for Java。对于现代的程序员,开发工具起着越来越重要的作用。尤其在java领域,各种工具和厂商之间的关系十分复杂,用户之间对开发工具的争论是一个永恒的话题。+ u3 j8 L+ q3 B1 Y3 x0 K
% f+ g. `4 `* y8 x/ D& p% I 在新闻组和BBS上常常看到有人问什么开发工具最好,经常就会有人对新手说,就用 JDK 和notepad (ultraedit,editplus,...);也有许多有C,C++经验的人上来就找Visual J++;还有许多人对Borland JBuilder情有独钟,加上一些通用的集成开发环境比如Visual Slick Edit,一些基于java的比较小的开发环境,比如Kawa,JCreator,IntelliJ...更不用提UNIX环境下那些狂热的EMACS,VI的爱好者了... " J" S- O& n% J% A; b* E' u ! d! g4 p* `! X8 y4 W3 U 然而我最喜欢的还是VisualAgeJava,有的人喜欢用JDK和文本编辑器,是因为喜欢感觉到真正的代码,知道“背后发生的事情”,对他们而言,可视化编程工具生成的代码绝对是垃圾,不利于自己的修改和维护。但是他们并不是排斥工具,要不然,也不会把notepad换成ultraedit,editplus,乃至更强大的工具,远远不是一个文本编辑器那么简单。0 R0 }# g* c4 u4 E+ O1 P% M, Q% c
# @/ V" g1 r" ]: Q! o 至于使用Visual J++,Borland JBuilder,也很明显,界面和习惯都很熟悉,很快就知道怎么回事,可以上手。但是其实Java世界有它自己的特点。 3 n- P6 M( O- |' Z( `1 f* }7 ~! s) z `4 ~
最初的Java IDE大概是Symantec公司的Visual Cafe,由于其编译器速度很快,尤其出现的最早,很快占领了大部分的市场份额,现在虽然已经大不如前,但还是有其特点的,尤其是国际化支持方面比较突出。1 k4 w# C0 n9 T F8 v, [* X. e
3 V- w2 E( F' I, f+ ]% w 此后就是IDE领域的老牌公司Borland的JBuilder,早期的还比较粗糙,但是随着版本的不断更新,集成了许多类库和组件,以及Borland一向的良好声誉,成为当前最普遍的IDE之一。 + ^- [' L; o8 U2 o. P2 q) N( R2 f) v, y* }
Microsoft的VisualStudio在C++领域是绝对的老大,在Java领域却不能有同样的风光,其实从微软公司的战略角度,这点是很明显的。从较早的Visual J++ 1.0到比较稳定的1.1,以及号称专门从Borland挖来的Delphi总设计师亲自设计的Visual J++ 6.0,它始终处于一个尴尬的位置。后来更因为被Sun起诉,被迫最终修改。7 k$ H8 m; P# C' r5 k9 Z# u
o: h7 N( h9 ] 不可能从Microsoft得到Java的开发工具,这是很明显的。 ' A% P; J) K: S7 I, i+ Q* i7 O, U4 ~% M; H
有的人第一次用VisualAgeJava,可能会不太习惯:怎么界面这么土?(VisualAgeJava的版本更新很少带来界面上的变化,没有其他软件花哨,其实可以说是优点。不过,Eclipse or WSWB的界面可就完全不同了,不仅很漂亮,而且有很精心的设计,而不是照搬习惯的方式)怎么没有我熟悉的菜单结构?... # f8 x9 r4 l9 g( D! M/ y: O, `8 D( [% H4 F; R
VisualAgeJava有很多独特的地方,需要一个熟悉和适应过程。 1 b/ T6 L5 f) n& [* e ; M- k7 v1 F2 d# i. m& A- K VAJ用自己的二进制格式文件(资源库)作为基本的存储模型。 % D( T& Y2 h' Q% z 6 A# }- }" x% U6 K4 D9 C 对于开发者而言,完全不用考虑文件和路径的所有问题。所面对的直接就是package,class,method......,同时在显示上也是以类、方法等单元作为对象,只显示选中的元素(直到近期的版本才出现了full class view),这非常符合面向对象的概念,帮助开发者用面向对象的概念和模型来考虑问题。 0 g4 Y" C1 `& t0 N W( P! F" f3 _, |0 i% e; ]; r# d4 N8 R
当然,有人可以说,不接触文件,不搞清楚文件,路径,包的关系,就没有了解Java中这部分真正的内部机制。但是,即使是已经充分了解的有经验的程序员,也难免在这个问题上犯错误或者耗费不少时间和精力(因为牵涉的因素很多),对于初学者,这一点就更重要了。& R# B" R! B- Q4 q+ F0 M1 v9 d0 ^
$ j" _" C& Y: ~7 C# U9 r {- ~) Z
内置的版本控制。正是因为使用了资源库,在VAJ里面版本控制的功能十分强大。每一次存盘的状态都被保存,可以很容易地回溯和比较。任何时候想冻结代码的状态时,可以将一个版本版本化。这样将使特定版本成为只读的,并可以命名。编程时完全可以放心保存和修改,对于开发周期内的一些特殊点可以方便地留下快照。1 `/ S* d( e4 D7 y, _$ [2 j
6 J: [& }. s7 s% V
增量编译。在VisualAgeJava中没有显式的编译过程,每次存盘的同时就进行了增量编译,有问题立刻标出。这不仅节省了编译的时间,省去了一个步骤,也强迫开发者每一阶段都要保证正确,这种step by step,在正确代码基础上继续工作的增量式开发是一个很好的习惯,比上来就写很长一段程序,编译运行,然后再慢慢地调试和寻找错误,要高效得多。最好的调试方法就是避免错误。 / K4 v& t7 O% f+ r7 H+ L C2 t- c" B/ }( f' B9 U, z
调试器。VisualAgeJava用的是IBM的Java虚拟机,使它具有独特的hot-link功能,可以把修改后的代码编译后连接到正在运行的程序中。甚至有人说,他就在debugger里面编写程序,程序一直在运行,而不用像有的人那样,必须写大段大段的System.out.println来观测程序运行状态。 $ g+ Y S) j$ Q+ n v5 g ! e2 K0 D5 v9 P+ a6 a: z$ D# g6 H6 q& M
Windows开发工具大比拼 & H/ @' i4 T( c6 N& c2 T8 ? 7 s# S7 N. p. \7 ` 技术的进步在很多时候是此消彼长的。当初borland的turbo c和borland c++几乎是c/c++程序员唯一的选择。微软的quick c(现在还有人知道这个产品吗?)和microsoft c/c++从来也没有成为过主流。但borland c++又流行了多少年呢?不久就被新崛起的microsoft visual c/c++压下去了。于是inprise(原borland)拣起了当年turbo pascal和borland pascal的辉煌(事实上borland的成名作就是第一个pascal编译器),全力推出了delphi。delphi当初推出时被称为vb杀手,但vb现在仍然活得挺好。毕竟微软是靠basic起家的嘛,vb不是那么容易被打败的。inprise想了想不和vb争了,使用delphi的ide和vcl配上c++语言,推出了c++builder,又向visual c++的市场发起了夹攻。c++builder似乎是个不错的折衷选择了?再仔细想想!c++builder的优点delphi都有,但delphi的优点c++builder未必有。比如c++builder的编译速度比vc还慢,哪能和delphi比?而且因为vcl是object pascal写的,c++语言和vcl磨合得并不好。c++builder的bug比delphi还多,甚至sample代码中还有错。vcl的部分功能不能使用,要靠嵌入pascal代码访问。c++builder可用的第三方控件远没有delphi多。 - W) {2 y2 N8 X# ` `2 F, ~% \3 D6 W) T4 h
唉,真是金无足赤。microsoft和inprise,谁会笑在最后呢?! h# `; P4 n; w$ g
( |. E2 Q0 j+ I0 r
1)哪门语言更容易入门? 0 t5 o9 v* T! N9 S# r% m; ^
% D0 X7 l( P e1 i4 ]
学习一种语言需要投入大量的时间和精力。开发程序的开发成本是值得考虑的现实。一个熟练的delphi程序员和一个熟练的vc程序员工作效率是一样的。但是,成为熟练的程序员必须很快掌握一门语言的技巧。不幸的是,目前熟练的visual c++程序员是十里挑一。相对而言,delphi更适合初学者。 ( V+ ?, Z$ j- D! {2 T5 m" ]& q# H& F+ u ^7 C
2)哪门语言有更多可继承的代码? 0 S% F) x; g9 ~ $ ~3 o- W v7 V" J9 J, u' W 语言代码的可重用性是加快开发效率明显方面,从早期的过程、函数到现在的组件技术都是朝这个目标在奋斗。这两种语言对代码重用的理解是不一样的,delphi主要通过vcl控件来实现代码重用,visual c++实现起来就比较复杂。 / ]. K4 P- J8 I3 [6 x9 k0 K0 ]) b6 F/ a. l$ h$ z% g
3)语言自身的本性。8 @/ u. v' n$ d, D
" Q. ^/ S" Z9 c, c
就技术(主要指应用框架)来说,delphi目前领先于visual c++。但稳定性和健壮性的不足又让我对inprise“想说爱你不容易”。而vc尽管发展到今日已十分完善,但mfc框架已是明日黄花了。如果不使用mfc,目前又没有合适的替代品。 & n% X1 n" D& n 1 N% N9 ^4 R( W 根据你的需要和实际情况做选择吧。实际上visual c++和delphi也不是单单竞争关系。它们在许多领域并不重叠,甚至是互补的。到底怎样取舍,要根据你的项目特性决定。如果你开发系统底层的东西,需要极好的兼容性和稳定性,选visual c++吧。你可以只调用windows的各种api,不用mfc。如果你写传统的windows桌面应用程序,visual c++的mfc框架是“正统”的选择;如果界面部分占这个应用程序代码比例较大的话,或者delphi中有相关功能的控件的话,delphi是事半功倍的选择。如果你为企业开发数据库、信息管理系统等高层应用(“高层”是相对于“低层/底层”而言的,不是说技术高级或低级。)而且有比较紧的期限限制,选delphi比较好。如果你熟悉的语言是object pascal,又不打算学复杂的c++,那么delphi几乎是唯一的选择。传统的观点是:delphi适合编写internet/intranet、表格制图、数据库操作、高级用户界面等等。visual c++适合编写设备驱动、com服务程序、科学计算、控制台(console)程序、wince的应用和一些小的工具等等。应用范围的不同要求好的程序员精通这两门语言。$ B: A9 w7 A9 N3 H. m7 K
& |0 m9 G: M9 L q
4)语言的前景和可扩充性。 9 C; e% c' r& C" G, e, R0 ]! S/ Z' j& t- Q$ r! c; b( D3 _& `
delphi是inprise的旗舰产品之一,前景应当还是比较乐观的,而且inprise已经在向linux进军了,而微软还迟迟没有动作。遗憾的是,inprise公司delphi的创始人已经跳槽到微软去主持visual j++项目了。但愿对inprise冲击不会太大。 % g/ g7 \: y' h % T6 z# J6 d$ G7 d# W 微软的visual c++的前景又怎样呢?visual studio 7.0就要推出了。这一版本将加强网络开发的特性。看来微软虽然被判解体,开发实力可是一点没打折扣。 5 z- z0 {! M+ m: z- w9 l 6 w8 W0 R) U, a9 B9 w0 M1 K 另外,虽说mfc已稍显落后,但不是说它不值得学。事实上,不学mfc就等于没学vc。利用mfc框架开发程序仍然是目前开发桌面应用的主流模式,而且还会保持相当长的时间。微软公司ceo史蒂夫·巴尔默(steve ballmer)曾说,.net流行还得等2~3年。那么,mfc至少还有2~3年的生命空间。在技术日新月异的it界,2~3年实在是很长一段时间了。好好把握吧。即使你不使用mfc框架,花点时间看一下mfc的封装机制对你熟悉c++的oop机制和windows底层功能也是很有好处的。而vcl的源代码是object pascal的,对c/c++程序员就没有这个“额外”的作用了。