[讨论]从一个作业看Java、C#和C++

TonyAmanda 2005-02-26 01:44:17
发现CSDN里讨论各种语言特点的帖子实在是好多,不过大多都是在抽象层面上的,本人也经常跟在后面mark一下,不过这次的图形学大作业倒是让我看到了各种语言各自发挥所长(我是大三的计算机系学生),大家全部做出了不错的成果。
按理说图形学这东西是对效率非常讲究的,所以主流语言当然是C++,不过也有近半数的同学是用Java和C#做的(其它工具老师不让用-__-b)。我自己是用C++的。不怕笑话,此前对C++一知半解,对MFC可以说几乎一窍不通,所以在开发过程的前半个月里几乎都在狂学各种各样的C++书籍,包括《C++ Primer》、《Effective C++》、《深入浅出MFC》、《C++ Standard Library》、《C++重构》……终于也算从一个连容器也不会用的菜鸟到了会写一个简单MFC程序的家伙了。不过此时看看那些用C#、Java的同学已经一个个都把雏形搭建起来,更有牛人已经能够用伪光照做出即时三维编辑视图了,只能叹强一个字(那些早就会用C++的超级牛人略去不谈)。
这个时候深深体会到过去用Java时候的便利,还有Java那无需管理内存的爽快,最受触动的是有个小组用Java作出来的东东竟然速度非常快(估计是读过《Effective Java》的牛人,一点也米有看到Java的劣势),而且他们的结构非常不错,设计模式运用也很到家,作出来的界面很有气势,是灰色调的,白色网格一铺,上面放上几个三维圆锥,酷就一个字(Eclipse的界面开发工具Visual Editor就是强!)!最主要是老师规定不能使用Java3D包(用C++的也不能用OpenGL、DX包),他们是一根一根线画出来的~~~
不过说道开发速度最快还是要数用C#的,拿着VS.NET,横竖拖拖几个Form几个PictureBox,简简单单把Graphics对象拎出来g.DrawLine……爽啊~~(C++虽然也能用GDI+,但是效率实在不敢恭维啊,最后不得不放弃)。才两个星期不到偶就看到同寝的同学已经把一个优美的贝塞尔曲线展现在屏幕上,让我们这些用多边形建模的人黯然神伤,太NB了~~。不过,这个时候偶说让把视角转了一转,立刻发觉屏幕一闪闪,Oh, My God,他们用的是Invalidate()刷新PictureBox,怪不得要闪……问他们为什么不用内存设备上下文,他们说:“那个是什么?”&#)(*()@)*……被.NET宠坏的小孩……
看完了Java和.NET的牛人们,我们小组也不甘落后啊~~C++就C++吧,一边骂着真TNND地难学,一边骂MFC真TMMD无里头(其实是自己菜……),突然间非常怀念以前做ASP时用VB的简单直接, 做JSP时对MVC支持的优雅清晰(相信这里大多数前辈们都是爽过structs和J2EE的吧),PHP就不提了,特讨厌那语法,变量还带$,我不贪钱(PHP的前辈们表扔我鸡蛋哦:),玩笑)。啊哟啊哟,再怀念就要挂了,赶快开始工作吧。
经常听到Java的支持者们说C++内存管理困难,初学我也特不习惯,不过事情终有解决之道!把Java的内存管理机制融入C++不就好了吗?(我向来认为冤家宜解不宜结^_^)主要还是使用了Java中经常用的多例模式和代理模式,加上用Java时已经习惯了的多态(我们的类多达1XX个,有滥用多态之嫌- -b),用一个Manager类管理一个抽象类的所有单例子类(用hash表存储,可以通过字符串获得对象指针,可以随意扩充哦),用一个Container类代理vector的各种迭代、添加、删除操作,哦,还用一个Builder类来管理各种几何体生成器,貌似这个是工厂模式……嗯,这样一来几乎再也没有发生过内存泄漏了。C++的STL库本身就是效率的代名词,是泛型思维的典范,现在这样加上面向对象的包装,就兼有两者优势了(貌似看到臭鸡蛋飞过来了,承认承认,这些包装都是初级的)。可以说如果以前没有学过Java,肯定不会有这样的思维方式。
瓦瓦,这时有一个严重的事情发生了,C#的同学们的界面已经那么漂亮了啊,看到DataGrid里的格子还能做成树状,立刻无语(难道不是DataGrid?@_@)~~羡慕ing,Java的同学同样也不差啊,重载个JTable,数据响应即时搞定,再换个UI风格,金属质感立刻显现!C++作界面- -b,第一次,以前只会做对话框,现在突然要搞什么Doc-View模式,傻眼了,做了半天就是那么个傻样子,搞资源都搞了半天,不会吧,导入一个真彩工具栏位图都不行?这个时候不禁感慨,用Java做Win32 App的时候虽然也这样不爽过,但远比现在舒服多了,再想想做小作业时候用C#的流畅感,背景颜色随意换,图标用Fireworks改好一导,立刻界面好PP……神呐,救救我吧……。最后好在有个Xtreme Toolkit救命,10行代码做出个Office2003风格界面,Cool~~~
在界面开发方面,我个人认为C#最舒服,虽然能力上不及Java和VC++,但是效率和门槛肯定是最低的,像我们这种非专业界面开发人士无须对那玩意儿懂得太多吧^^。

哎呀哎呀,说了那么多也不知道说了什么东西,反而把大脑搞得昏昏沉沉了,大家有鸡蛋就尽情扔吧,实在太累,呼呼去了,有时间来会发布SP1的。
...全文
151 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
tainblue 2005-03-04
要学JAVA就要从头开始学!
回复
InnocentBoy 2005-02-26
什么学校的?你们的图形学学的还挺认真的。
回复
willytiger 2005-02-26
恩,我也有同感;.net隐藏了我们程序员应该知道的一些原理;它入手快,但会造成对.net的强大依赖,程序员的路会越来越来窄;我现在有一年的项目经验,但和一些程序员比较起来,我对一些原理的理解就不深刻.现在有一个机会可以让我做JAVA,我听感兴趣,而且公司明知到我的java 不熟还愿意给我3000,我感觉不错了.兄弟们怎么看呢?
回复
jFresH_MaN 2005-02-26
一直有人把.net和java做比较,但是那样的文章我向来是不看的
但是楼主从自己的实际经验谈这个问题真的很不错,受益非浅哦
:)
回复
jFresH_MaN 2005-02-26
楼主真是有前途啊,对一个问题会想这么多这么深刻。
我和你一样,但是水平却赶不上你咯。。
其实.net真的是门肯很低,而且vs.net这个工具很强,如果不深入地学习,虽然能应付一般的项目需要,但是肯定会把人做傻的。
C++的强项还是在地层和效率,MFC的前台还是很强的,但是我觉得可以考虑用delphi做前台。
java虽然有垃圾回收机制,但是效率不敢恭维。但是java的开发效率还是不错的,我觉得如果用IDE熟练并不比vs.net差。而且java类库和.net framework又象是一个老妈生的。所以我觉得在你这个项目里面java绝不输给C#
回复
dlxu 2005-02-26
在校生有这个水平也很难得了
回复
vssivl 2005-02-26
不错,不错,楼主有感触,文笔也好,不过没有结论...,有点遗憾...
回复
tantj 2005-02-26
写的不错,不过我始终对JAVA情有独钟
回复
相关推荐
发帖
非技术区
创建于2007-09-28

2.3w+

社区成员

Java 非技术区
申请成为版主
帖子事件
创建了帖子
2005-02-26 01:44
社区公告
暂无公告