借eclipse Europa发布的时候瞎扯一下

明天就要考《当代世界经济与政治》——我们最后的一门“两课”科目,不过今天我还是泡了一会网。反正相信自己能过,没事。

今天在BlogJava上看到消息,eclipse Europa昨天发布了,已经可以下载了。我第一时间下载了一个Java EE版试用了一番。eclipse Europa是一次大的Release,包含了很多优秀的开源项目。刚刚研究了半天,下载了几个插件,SpringIDE,Subclipse还有与数据库有关的几个插件,方便以后的开发用。旧的eclipse已经被我删除了,新的eclipse肯定会非常“带劲”的。新特性有很多,等我慢慢发掘吧。

eclipse是一个重量级的IDE,是个不折不扣的大家伙!刚刚我看任务管理器中的内存占用,发现高达208M!我的内存才512M,看来为了使用这个IDE,升级内存还是有必要的。这不禁让我想到了和这个形成强烈对比的一个软件——Notepad++。Notepad++相信很多人都听说过,是一个开源的文本编辑器,用纯C++和STL以及Win32 API开发而成,功能很强大,经过配置,可以充当很多语言的开发工具。当然,她的功能还是非常有限的,但是就是给人一种不错的感觉——简单,直接,快速。通过使用Notepad++内置的两个插件——NppExec和QuickText,用户可以方便地进行程序的开发。这段时间我就一直在使用它做小程序。eclipse都很长时间没有打开过了。过一段时间我准备好好研究一下如何在Notepad++中配置使用Ant,JUnit还有SVN,这样就真正可以使用它来开发程序了,相当于一个不错的IDE了。

刚刚说过了,Notepad++是用纯C++和Win32 API写成的,效率很高。我下载过一份代码看了看,虽然没有彻底研究,但是大体的运行过程和消息处理我还是看明白了。看这份代码是一种享受,里面全是巧妙的设计。比如说消息处理就给我留下了深刻印象。

这不禁让我想说说我心目中最好的两种语言C++和Java。

从Notepad++里获得的是一种我在使用Java写程序时体会不到的感觉——强烈的控制感。在C++中,几乎一切都应该由程序员自己来完成,因而程序员的发挥余地比较大。只要程序员功力足够强,完全可以写出非常巧妙并且高效的代码。Java不一样,Java就是面向对象。因此你必须用OO的思想来写程序,也只能OO;而在C++中,你可以忽略OO,用纯面向过程的方式写程序,或者使用模板来写泛型程序——一切都看你怎么选择。就拿刚刚说过的事件处理为例,用C++写Win32程序不可避免的一个问题就是事件处理。Windows的消息模型是过程化的——在消息循环中获取消息,分发消息,调用消息处理过程。消息处理过程根据获得的参数判断事件类型,然后用switch/case来处理事件。所以经常可以看到Windows C程序中一个包含了大段大段switch/case的消息处理函数。然而在C++中这种处理方式和对象模型有冲突,因为理想的事件处理方式应该是将事件处理程序放到控件类的成员函数中。MFC用宏和消息映射来处理这个问题,与VC++的各个Wizard结合起来效果不错;Qt在其底层实现了著名的signal/slot机制,所以消息处理自然也使用了这个机制;Notepad++并没有采取什么特别手段来处理这个问题,仍然用一个函数来处理事件,但是作者巧妙的将对象的指针作为消息参数来创建窗口,这样在消息处理函数中他就能得到这个指针,并调用对应的成员函数来实现消息分发。这样做,效率和灵活性都得到了保证。具体的细节我还没有研究透,但是这种手段让我为之一震。这,就是C++的威力;这,也是程序员的威力。

而Java也有Java的可爱之处。Java就是OO,所以Java的可爱之处就在于优秀的OO设计。不止一次我都从Java库和框架中感受到了这一点:Java IO库,Swing的MVC模型,Spring的IoC和AOP(严格来说AOP已经超越了OO的界限了)等等都是这样的例子。Java目前在企业开发领域最为强大,而企业程序就是要灵活,要能应付得了经常会发生变化的业务需求,而设计在这个过程中就显得格外重要。最近在InfoQ上看到过一篇文章《Dynamic Routing Using Spring2.0》,讲的就是如何使用Spring的AOP来处理企业程序中的事件处理的。其中使用了很多设计模式,如Command等。我想Java的威力在这些场合才是最强大的。而在桌面领域,Java还是比不上C++甚至.NET,因为效率实在太低了,而且占用内存太过恐怖。最近我想写一个文档管理程序,使用数据库来管理我收集的很多txt格式文章,本来想用Swing加上db4o来做,但是还没开始做界面我就不想继续了——就算我完美地实现了这个程序,我也肯定不愿意使用的。内存占用如果太恐怖,速度太慢,就等于给一个软件判了死刑——至少对我来说是这样。

就我而言,我更喜欢C++的那种方式,因为一切都在我的控制之中——控制得不好,只能说明自己水平不高,还有继续提升的余地,会激励自己学习下去。而在Java中却没有这种感觉,程序的性能永远受JRE限制。模式等等使用到一定的程度就是非常呆板的走老路了,比如Struts,Spring,Hibernate(SSH)三者结合开发企业应用已经成为一种潮流了,使用这种架构本来就是在走老路,在开发科研立项的那个C2C项目时我就有这种感觉——一点创意都没有,做的都是相同的工作,没有趣味。不过虽然我更喜欢C++,但是我将来还是准备走Java路线,以Java作为我的专业发展方向,作为混饭工具。C++是我的兴趣——兴趣是不能作为混饭工具的。以后我会把C++作为业余爱好学习下去,天天尝试各种库,写写游戏,写写小软件(坚决抵制MFC),不亦乐乎!

这些差不多是我这几年程序历程的一点点总结吧,能写出这些,说明我的水平还不是太差。我对自己有信心。

明天要考试了,现在宿舍却一点考试气氛都没有——我们真成“老油条”了…… 酷   流汗   赞   大笑  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值