当前位置:天才代写 > tutorial > C语言/C++ 教程 > C语言已经死了 5个需要忘却它的来由

C语言已经死了 5个需要忘却它的来由

2017-11-03 08:00 星期五 所属: C语言/C++ 教程 浏览:400

此刻,有许多C/C++措施员老是自命特殊,看不起其他开拓人员。其实,或者别人更看不起他呢!

学生时代,我也曾醉心于C/C++,但时至今天,始终无法写出无懈可击的C++代码,所以我始终认为我不会C/C++。这些年,我一直在寻找编写C++代码的最佳模式。可是,诚恳说,我还没有见到过哪个称得上好手的C++措施员,也没有见到过写得Very good的C/C++代码。C/C++代码老是丑恶不堪,BUG丛生!

我用C语言编程已经高出20年了。我写过C语言的编译器、C语言的调试器、用C开拓的其他语言、游戏、客户端措施和处事器措施,你说吧!尚有什么是我没写过的。尚有我的书架上充斥着折了角的K&R和Steele的书。我太相识C语言了,可是,我讨厌他。十分讨厌!

当我读到一篇博客,题目是“为什么每个措施员都应该进修C语言?”时,我真是鸡皮疙瘩满地。假如你真的是个专业的措施员的话,你必定以为这是个天大的笑话,尽量作者的本意也许不是这样的。这篇辩驳的文章有点意思,可是照旧没有抓住本质。所以我展开了说一下。有以下5个原因来说明,为什么那些会C语言,而且利用C语言的措施员,此刻不单应该去用此外语言,并且应该健忘他们进修C语言进程中的那些烦人的对象。

1、内存分派

仅仅关于这一点我就能写整整一篇文章了,也许能写一本书,甚至尚有大概写出可以或许塞满图书馆技能书籍那块,那么多的内容。内存分派和存储单位分派的存在确确实实是个大贫苦。你要不就是分派太少的内存不足用,要不就是分派了太多内存挥霍掉。这里的问题就是:怎么把它初始化为零呢?照旧爽性就不初始化它。但最挠头的步调照旧释放内存。所有已有的东西包城市辅佐你确认,你是否已经释放了之前分派的每一位的内存,在释放完之后是否永远不利用它,而且会阻止你,永远不要释放它第两次。更严重的是,分派内存和释放内存在C语言中都是很慢的,很是慢。利用内存分派时,要思量的各类非凡环境,我真是连想都不肯意去想,只要问题(工具)的巨细符合,我更愿意利用栈空间可能事先分派的布局空间。假如这么做的话,我就有更值得烦恼的事了。话说返来,发现垃圾处理惩罚器那人真应该得诺贝尔奖。

2、多线程

我已往是喜欢C语言的,真的。直到我开始用C开拓并维护多线程的处事器。在为毗连相斗嘴的线程掩护数据方面,C语言没有为措施员提供那怕一点点的辅佐。你在利用单线程的日子里得到的每一个直觉、履历,用在多线程的时候都是错误的。至少JAVA有暗示同步的要害字和备有证明文件(可是是个很奇怪的文件)的影象体,但纵然是这样,除非你利用新的javax.concurrent,不然也只能在那些庞大的平行摆放的呆板们眼前瓦解。回到C语言上:在模仿出产的情况下,僵持一个礼拜在数据中心调试一个死锁(这事真的产生过)。而JAVA却只需要Ctrl+Break!天哪!!!

3、指针

指针太难以节制了,太阴险了;我甚至没有委婉一点的方法去形容它。我生掷中每年都有几个月被用来调试那些奇怪的指针问题。我已往经常尽力获取所有的诀窍,例如说难以领略的组成符、连系体和偏移量,以及重用最后两位做标志,尚有所有其他的诀窍。但我发明这么做基础不值得。其他语言的静态引用就可以办理了。

4、过早的优化

说到诀窍,你是否曾经挥霍脑细胞去研究毕竟*p++是不是比p[i]快?你是否曾经花时间去试着做点变革来取代乘法,可能去实验使轮回中的倒置运行更快的要领?还在为通报一个参数的速度和阻挡添加布局,而且通报它的速度一样而苦恼不已?停吧!算法是速度的要害,措施员的程度抉择了他会利用那些算法。知道这一点能让你的措施更好,更快一点而且让你的脑壳少扭几个筋。好吧,有一些例子也许可以这样做的……不,你就别那么做就行了!

5、测试

你最喜欢的C的单位测试的东西是哪个?嗯…一个也想不到?单位测试必然是一点也不重要,是吧?可能是太贫苦了,很难跟长进度,挥霍时间。你可以把这个时间用到越发有用的工作上,让它只占用事情时间的1%,那还较量符合。可能在数据中心,通过优化的没有标志的图形来调试这个仅仅由100个同时在线利用者引起的问题。

我原来应该继承再说一些原因的,可是5个此刻就足够了;说完这些,此刻感受好点了。C以前长短常棒的…那是在1984年的时候。直到本日,那些用C写的新代码都让我感想惊喜…假如你让我较量的话,我以为C++只是比C稍微好点。假如你想要学些老一点的语言,不妨实验Forth,Lis,可能APL。这些老式的语言起码能教会你,用差异的并且优雅的方法去思考你的措施。

作者简介

#p#分页标题#e#

Ed Burnette是一位有着富厚编程履历的措施员。他此刻致力于利用JAVA和C来开拓OLAP客户端和处事器。他业余时间喜欢研究Java、Eclipse和开源软件。他写了许多关于Eclipse的文章和书籍,别的他照旧EclipseZone.com的主编。

 

    关键字:

天才代写-代写联系方式