网易首页 > 网易科技 > 网易学院 > 编程开发系 > 正文

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

0
分享至

现在,有很多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。这些老式的语言起码能教会你,用不同的而且优雅的方式去思考你的程序。

相关推荐
热点推荐
明天重点关注的三个板块

明天重点关注的三个板块

金姐策股
2021-08-01 13:36:07
果然如此?美国操纵世卫证据确凿,布林肯拜访谭德赛给其下命令

果然如此?美国操纵世卫证据确凿,布林肯拜访谭德赛给其下命令

防务视野
2021-07-31 12:44:54
撕破脸!库兹马发文诅咒湖人得到威斯布鲁克:现在笑,以后哭!

撕破脸!库兹马发文诅咒湖人得到威斯布鲁克:现在笑,以后哭!

篮坛资讯播报
2021-08-01 06:32:24
刚刚,三件大事落地,明天,A股走势预测

刚刚,三件大事落地,明天,A股走势预测

周洪涛看盘
2021-08-01 11:56:17
这个太平洋岛国新总理:停掉中方港口项目,但……

这个太平洋岛国新总理:停掉中方港口项目,但……

环球时报评论
2021-07-31 20:51:41
睡觉时这个小习惯,会让甲状腺癌的风险增加一半

睡觉时这个小习惯,会让甲状腺癌的风险增加一半

医疗科普小百科
2021-08-01 20:15:28
赚到二三十亿,也救不了吴亦凡

赚到二三十亿,也救不了吴亦凡

AI财经社
2021-08-01 08:36:21
曾经的知名歌手,过气后参加比赛想翻红,被后辈淘汰当场发飙

曾经的知名歌手,过气后参加比赛想翻红,被后辈淘汰当场发飙

还是那个瓜和花
2021-07-26 21:56:03
中国田径最伟大的七位运动员:苏炳添第5 刘翔第2 榜首无悬念

中国田径最伟大的七位运动员:苏炳添第5 刘翔第2 榜首无悬念

体坛田径君
2021-02-24 14:48:09
反目了?马洪涛大骂散打:不拿你当大哥,你是个JB!散打喊话:我兄弟马上回来了,必将从回巅峰。辛巴妈妈反驳儿子,没有和辛爸分居住!

反目了?马洪涛大骂散打:不拿你当大哥,你是个JB!散打喊话:我兄弟马上回来了,必将从回巅峰。辛巴妈妈反驳儿子,没有和辛爸分居住!

网红搞笑趣事
2021-08-01 15:10:43
巩立姣曾身着AC米兰外套领奖

巩立姣曾身着AC米兰外套领奖

肆客足球App
2021-08-01 14:36:14
佟丽娅被造型“坑”了,开叉裙豁口高了点,白色打底也能看得见

佟丽娅被造型“坑”了,开叉裙豁口高了点,白色打底也能看得见

coco美人志
2021-07-29 13:23:38
中国铁路车站规模排行榜

中国铁路车站规模排行榜

江苏城市论坛
2021-08-01 04:52:56
2008年夺冠后,就流连酒桌的龙清泉,8年后为何还能再夺奥运冠军

2008年夺冠后,就流连酒桌的龙清泉,8年后为何还能再夺奥运冠军

张生全精彩历史
2021-07-31 08:54:14
什么样的穿搭才会显得有自己的个性?

什么样的穿搭才会显得有自己的个性?

潮人方法论
2021-08-01 18:55:43
东京奥运新增项目成日本金库,后半程有望狂揽金牌,实现30金梦想

东京奥运新增项目成日本金库,后半程有望狂揽金牌,实现30金梦想

闻舞视界
2021-08-01 00:05:23
23岁女子外阴癌前病变!曝光的罪魁祸首为所有女性敲响警钟

23岁女子外阴癌前病变!曝光的罪魁祸首为所有女性敲响警钟

DrX说
2021-07-30 17:26:10
郎平下课登上热搜!主动辞职说了7个字,名记爆猛料:朱婷=刘翔

郎平下课登上热搜!主动辞职说了7个字,名记爆猛料:朱婷=刘翔

贝塔说体育
2021-08-01 06:03:42
“洪水退去了,结果有意外收获...”哈哈哈哈哈哈哈简直天降横财啊!

“洪水退去了,结果有意外收获...”哈哈哈哈哈哈哈简直天降横财啊!

今天你笑了没
2021-07-31 04:41:17
惊现!南京上空不明亮点

惊现!南京上空不明亮点

要闻城
2021-08-01 04:33:00
2021-08-01 22:36:49

科技要闻

苹果隐私新政落地三个月 互联网广告收入不减反增?

头条要闻

苏炳添创造历史 人民日报:致敬中国速度

头条要闻

苏炳添创造历史 人民日报:致敬中国速度

体育要闻

奥运第6!1天2次破10秒!苏炳添就是神

娱乐要闻

网曝吴亦凡案或牵扯毒品

财经要闻

汽车要闻

最大续航528km 起亚EV6电动车发布动力信息

态度原创

旅游
家居
数码
教育
军事航空

旅游要闻

世界上奢侈的3座豪宅 一处在中国

家居要闻

阿玛尼定制海景豪宅价值1个亿 建25米无边泳池

数码要闻

不止骚扰女员工 暴雪丑闻闹大了:男员工办公室““击剑”

教育要闻

长沙:暂停一切线下教育教学活动及培训

军事要闻

美防长称不寻求对华军事冲突 ,俄专家道出真相

×