一名C/C++程序员对C#和JAVA程序员的忠告

szwxj 2011-01-01 10:12:33
毋庸置疑,所有的程序员都不会不同意这样的观点:编写程序是一种逻辑非常严谨的工作。

我作为一名老C/C++程序员,早就已经养成了分配和释放内存一定要成对出现的习惯,比如:

void demo_func (void)

{

new xxxxClass;

xxxVar = malloc(size);

.....

free(xxxVar);

 delete xxxxClass ;

}

近期在阅读一名C#程序员编写的C代码时,简直可用惨不忍睹来形容,一段程序中需要使用一个变量,每次使用,都用Create创建对象的方法,但是根本没有释放,美其名曰说:习惯了,C#有垃圾回收器帮你做事。

如果垃圾回收器被这样来使用的话,那么真是无语了。

我想,C#和JAVA的垃圾回收器设计的理念应该不是为了让程序员这样来使用吧,而是为了使得内存的使用更有效率,为了弥补程序员在编写程序时没有显式释放内存的缺陷而设计的吧,但并不代表你就不需要显式地释放内存。

很多JAVA程序员编写的程序运行一段时间后就会越来越慢,是否就是这个原因呢,不得而知。

在此,我作为一名C/C++程序员,给所有的C#和JAVA程序员一个忠告,那就是尽可能不要依赖垃圾回收器来为你工作,而要相信自己,养成良好的逻辑思维习惯和编程习惯,这样,你的代码才能做到稳定、可靠、高效地运行,你自己的逻辑思维能力和逻辑判断能力也才能不断地提高。否则,你不可能成长为一名合格的,逻辑严密的,真正的程序员。

从另一个角度来看,C#和JAVA的垃圾回收器真的不是一个好东西,它的存在,破坏了程序的严谨性,有可能毁掉了没有学习过C语言的年轻一代的C#和JAVA程序员。

当然,程序语言本身没有错误,如何使用关键还看程序员自己,年轻的一代程序员,垃圾回收器,还是忘记这个工具的存在吧,你会变得越来越严谨。


...全文
1420 88 打赏 收藏 转发到动态 举报
写回复
用AI写文章
88 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanpangbuxueda 2012-07-25
  • 打赏
  • 举报
回复
你们搞没搞清楚啊,就在这乱喷,人家说的是c#程序员写的c代码好不。
s8975565 2011-01-17
  • 打赏
  • 举报
回复
顶3楼,我最讨厌拿效率说事的 c/c++程序员了。虽然不得不承认C/C++效率高,但是不要用你的一点点小聪明和数以万计的智慧结晶对比……根本就没有可比性!
wanghui2008se 2011-01-17
  • 打赏
  • 举报
回复
看了楼主对我帮助不大的忠告,但还是要谢谢
singlerock 2011-01-17
  • 打赏
  • 举报
回复
我看这贴早点被GC吧
billsquall 2011-01-17
  • 打赏
  • 举报
回复
有些人就是见不得别人比他方便,C++确实好,也确实比C#麻烦

谁说我们C#不释放啊?

我们有GC

我们可以using(new class){}这样用,不用考虑那么多

我们开发速度就是快,我们就是不用考虑那些不应该考虑的事情

嘲笑楼主
l576981437 2011-01-17
  • 打赏
  • 举报
回复
tony-src 2011-01-17
  • 打赏
  • 举报
回复
每种语言都有其优点和缺点,C++与C#并不一样;
所以,个人认为也没有什么可以相比的东西,更没有可以套用的东西;
如果有开发IDE的微软早就说明了;

再说,C#本身就是为了加速开发周期的,如何还和C++一样,对代码处理的细致性,那么它就不能加速软件的开发周期了;它也可能不会如此受人青睐;;;\

个人理解 ,,,
yucuihaimeng 2011-01-17
  • 打赏
  • 举报
回复
尊听前辈提醒。。。确实是这个样子的,其实如果没有学习C或者C++,直接学习C#的 最开始谁都不会想到.net内部已经实现垃圾回收的,这些底层的东西 ,很多都没来得及去学习,浮沙筑高台的人多了,早晚会出问题滴!
tianlinlin08 2011-01-17
  • 打赏
  • 举报
回复
来长长见识
alian_1126 2011-01-17
  • 打赏
  • 举报
回复
flashbrother 2011-01-17
  • 打赏
  • 举报
回复
好激烈!
「已注销」 2011-01-17
  • 打赏
  • 举报
回复
初学c#,对c++了解些,谢谢分享经验
p_zzf000 2011-01-17
  • 打赏
  • 举报
回复
各有各的优势啊,楼主不能一概而论的
heguo 2011-01-17
  • 打赏
  • 举报
回复
一名C#程序员对C,C++,JAVA程序员的忠告:
你玩你的,只要你自我感觉良好.
如果能用C#完成的工作,建议还是转过来玩C#吧。
邋遢的土豆 2011-01-15
  • 打赏
  • 举报
回复
额。。。。大哥这样可以比吗?
tangi188 2011-01-15
  • 打赏
  • 举报
回复
没办法沟通的,谁告诉你们Java有垃圾收集器但不能显示的释放呢?
Java都是被这样的程序员埋汰了,你们并没有领会楼主大哥的文章... ...
imissyouyw 2011-01-05
  • 打赏
  • 举报
回复
大哥,这能比吗??
zhubo006 2011-01-05
  • 打赏
  • 举报
回复
Laputa_Island 2011-01-04
  • 打赏
  • 举报
回复
新手千万不要被LZ误导. ...
Laputa_Island 2011-01-04
  • 打赏
  • 举报
回复
根本就没有手工释放单一内存的方法,你怎么释放?
围观LZ.. ...
加载更多回复(61)

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧