`
erylee
  • 浏览: 108123 次
社区版块
存档分类
最新评论

C语言已经死了,5个需要忘却的理由?! 叶江出品!

阅读更多
我一直认为CSDN是中国软件领域傻逼文章最多的地方,但这篇文章的傻逼程度还是超出了我们的想象...

http://news.csdn.net/n/20070104/100312.html

虽然,我认为讨论语言的优劣是最无聊的事情,但这种误导开发者的傻逼文章,实在让人无法忍受。计算机内存模型没有根本变化的前提下,任何时候说C死掉,都有点过早。 无论任何语言,做了如何的封装,最终程序操作的还是堆栈,C仍然是最锐利、高效的操作堆栈的语言。

文章中的傻逼语录:

1. 发明垃圾处理器那人真应该得诺贝尔奖。
2. 分配内存和释放内存在C语言中都是很慢的,非常慢。
3. 指针太难以控制了,太阴险了;我甚至没有委婉一点的方式去形容它。
4. 除非你使用新的javax.concurrent,否则也只能在那些巨大的平行摆放的机器们面前崩溃。

.............






分享到:
评论
32 楼 Jewyi 2007-01-24  
最讨厌说什么什么语言死了的文章,一点技术含量都没有
31 楼 itfkn 2007-01-16  
晕乎乎,C学的不好,还是喜欢java,虽然也很菜...
30 楼 asd 2007-01-08  
汗一个先。一直以为这篇文章在javaeye能够引起一些共鸣,他得出的结论是不对的,至少目前没有看出来c死在哪里,但是他的证据却看不出来哪里错了。
垃圾收集,没有指针...这5个特征不就是java,.net异于c/c++的地方,也曾经是这两种更新的开发语言/框架的宣传点,如果不是因为c/c++在某些领域有这些不足,java/.net也不会这么做。

ps:里面有些词句的翻译有偏差,我想大家总会根据中文去猜测英文原文吧。
ps2:
引用
现在,有很多C/C++程序员总是自命不凡,看不起其他开发人员。其实,或许别人更看不起他呢!
29 楼 Arath 2007-01-08  
这个传说也听说过
对于一些老的或者天才的程序员,他们的代码中有太多的小技巧,要全部看懂实在是很难难.
最简单的C中很多程序都喜欢使用数组来关联一些数据和算法,当你看到十多张这样的表构筑一个算法的时候基本回晕掉,搞不清楚在做什么.
28 楼 runes 2007-01-08  
十万行也罢,五万行也罢,只是单纯的一个简单的数量描述,

代码的维护问题其实很大程度上也和程序的逻辑复杂度有关的。

我在这里之所以说五万行,只是一个最基本的量化,因为,上了5万行的c程序一般就不是hello world级的了,

可维护性问题就变得的很重要了。

如果碰到一个运行的很好,但是写的很烂,像面条一样绕在一起,有时真的想完全重写,

但是项目一般又都时间不允许,只能啃那一陀一陀的代码,试着消化了再改,感觉比吃了苍蝇都难受,

扩展起来真是头疼啊!

好了,不扯了,最近听忙,但愿有重构过C程序的朋友,共享一下。



 

27 楼 jackhu 2007-01-07  
抛出异常的爱 写道
daoger 写道
文章的作者是个疯子!

鉴定完毕!


我不同意你的言论,但我会维护你说话的权力。。。

每个挑战权威的人如果不是疯子那么一定会成为一代宗师。。。。(比如牛顿。。。)

不能以挑战权威来作为评定疯子的标准。。。。

科学就是怀疑一切。。。包括自己。。。


非常赞同你的观点
26 楼 MyJavaRoad 2007-01-07  
Arath 写道
runes 写道
Arath 写道
好像是没有太多的幽默感
好吧,不幽默的说
C没有想象中的那么可怕,如果写程序的人规划的好,想用OO的方法?没问题照样能给你写出来,也不累.
至于说指针,本来就是双刃剑,用好的话真的很舒服


请试维护一个 5万行以上的 c语言的开源软件的代码以后再 发表意见。

自己写,当然好处理,关键是 有多少项目是完全从头写的,又有多少 是在 已有的代码上写的。

又有多少已有的c代码是清晰容易维护的,如果一个c语言的项目,经过3次以上人员更替,等到第四个人维护的时候,
痛苦就来了。


呵呵,真是山头上说话--只管喊那,5W行代码算什么呢?
我还改过别人一个程序,一个函数2W行.
不过你这里明显岔开,我的前提很确定要规划的好,规划的不好的代码就是累点.


好久没有留言了,上来看看帐户还能不能用,哈哈。

有点寒2W行的一个函数,兄弟你这是再瞎策呢,还是真的这么不幸.hehe
25 楼 lixigua 2007-01-06  
看贴的时候最好仔细看原贴,在批评的人的眼中总是会有意无意的过滤某些他不想看见的,而加强他打算批评的元素。
实际上,该文只是一偏抱怨贴。抱怨了C的不方便。从培养程序思维的角度来看,C语言绝对不是一个合适的语言,可看看我们的大学都在使用他作为入门语言。这是我在该文读到的一个信息,当然也是由于我向来有这个态度所以才会读到这个信息----还是应了我前面那句话,每个都会过滤或加强某些自己认同的观点。
文章几个观点并没有错阿。内存分配慢, 比起“栈空间或者事先分配的结构空间”当然慢了。内存管理很容易吗?不容易!
多线程,指针很方便调试,使用吗?当然不容易。
该文让人反感大约只是因为标题,而内容其实还不错,我这样认为。
24 楼 Godlikeme 2007-01-06  
jigsaw 写道
也不知道是你运气差还是我运气好,我感觉我接手过的c项目都很好维护

这些项目规模都不超过100万行,但也不少于10万

涉及到的领域主要是L3,L4,L7的协议分析,内核模块,或者firewall hook等

有些项目已经持续开发了5年





协议多是大量的数据处理,拆包,组包,指令控制,这些是c的强项,也不大会出什么问题。

引用的文章,写的挺有意思的。原文作者发发牢骚,感觉被人引用拿来做枪使了,呵呵。
23 楼 jigsaw 2007-01-06  
也不知道是你运气差还是我运气好,我感觉我接手过的c项目都很好维护

这些项目规模都不超过100万行,但也不少于10万

涉及到的领域主要是L3,L4,L7的协议分析,内核模块,或者firewall hook等

有些项目已经持续开发了5年



22 楼 runes 2007-01-05  
Arath 写道
runes 写道
Arath 写道
好像是没有太多的幽默感
好吧,不幽默的说
C没有想象中的那么可怕,如果写程序的人规划的好,想用OO的方法?没问题照样能给你写出来,也不累.
至于说指针,本来就是双刃剑,用好的话真的很舒服


请试维护一个 5万行以上的 c语言的开源软件的代码以后再 发表意见。

自己写,当然好处理,关键是 有多少项目是完全从头写的,又有多少 是在 已有的代码上写的。

又有多少已有的c代码是清晰容易维护的,如果一个c语言的项目,经过3次以上人员更替,等到第四个人维护的时候,
痛苦就来了。


呵呵,真是山头上说话--只管喊那,5W行代码算什么呢?
我还改过别人一个程序,一个函数2W行.
不过你这里明显岔开,我的前提很确定要规划的好,规划的不好的代码就是累点.


一个函数2W行,5W行小case,那这么说,仁兄真令在下佩服啊!

谈不上岔开,讨论的是c语言开发,开发YOU多少基于已有的代码,无论当初规划的如何牛B,

渐渐的都会腐烂,都会臭掉,哪怕从头到尾都是一个人,也是如此,除非你能很easy的重构c代码。

如果有重构C程序的好方法,不妨sharing一下,这比说自己如何如何easy的 玩的转 c语言有意义的多,你说呢?

当然,如果仁兄有一次行规划好的能力,那么就更值得 sharing了,让那些所谓的敏捷方法见鬼吧,瀑布模型万岁!
21 楼 Arath 2007-01-05  
runes 写道
Arath 写道
好像是没有太多的幽默感
好吧,不幽默的说
C没有想象中的那么可怕,如果写程序的人规划的好,想用OO的方法?没问题照样能给你写出来,也不累.
至于说指针,本来就是双刃剑,用好的话真的很舒服


请试维护一个 5万行以上的 c语言的开源软件的代码以后再 发表意见。

自己写,当然好处理,关键是 有多少项目是完全从头写的,又有多少 是在 已有的代码上写的。

又有多少已有的c代码是清晰容易维护的,如果一个c语言的项目,经过3次以上人员更替,等到第四个人维护的时候,
痛苦就来了。


呵呵,真是山头上说话--只管喊那,5W行代码算什么呢?
我还改过别人一个程序,一个函数2W行.
不过你这里明显岔开,我的前提很确定要规划的好,规划的不好的代码就是累点.
20 楼 runes 2007-01-05  
Arath 写道
好像是没有太多的幽默感
好吧,不幽默的说
C没有想象中的那么可怕,如果写程序的人规划的好,想用OO的方法?没问题照样能给你写出来,也不累.
至于说指针,本来就是双刃剑,用好的话真的很舒服


请试维护一个 5万行以上的 c语言的开源软件的代码以后再 发表意见。

自己写,当然好处理,关键是 有多少项目是完全从头写的,又有多少 是在 已有的代码上写的。

又有多少已有的c代码是清晰容易维护的,如果一个c语言的项目,经过3次以上人员更替,等到第四个人维护的时候,
痛苦就来了。
19 楼 hyf 2007-01-05  
xio 写道
我并不熟悉C,不过我认同那篇文章,文中讲的并没有错。
而楼主似乎有些断章取义的嫌疑。
还有那些csdn中评论的人,似乎除了谩骂,没有别的东西。我怀疑他们是不是真的读懂了。


我感兴趣啊, 你读懂了什么?
18 楼 Arath 2007-01-05  
好像是没有太多的幽默感
好吧,不幽默的说
C没有想象中的那么可怕,如果写程序的人规划的好,想用OO的方法?没问题照样能给你写出来,也不累.
至于说指针,本来就是双刃剑,用好的话真的很舒服
17 楼 runes 2007-01-05  
giscat 写道
好崇拜搞C的人,
和仪器硬件打交道,
超有神秘感,超有成就感,
那才是真正的工程师


当你面对 7 8层指针的时候
当你面对 指针函数套指针函数的hook的时候
当你面对 一个个末名的coredump的时候
当你面对 头文件 套 头文件 typedef 套typedef的时候
.......

嘿嘿,你可能就不那么羡慕了。

别告诉我,改如何如何如之何用c能写出不但OO而且时用点high order函数指针不但清晰而且酷酷的代码。

实践一下,维护一个 10 万行的 c 代码看看......
16 楼 giscat 2007-01-05  
好崇拜搞C的人,
和仪器硬件打交道,
超有神秘感,超有成就感,
那才是真正的工程师
15 楼 xio 2007-01-05  
我并不熟悉C,不过我认同那篇文章,文中讲的并没有错。
而楼主似乎有些断章取义的嫌疑。
还有那些csdn中评论的人,似乎除了谩骂,没有别的东西。我怀疑他们是不是真的读懂了。
14 楼 Arath 2007-01-05  
楼上的说得没错,呵呵
13 楼 yuxie 2007-01-05  
难道你们都没有幽默感?

相关推荐

    Java swing + socket + mysql 五子棋网络对战游戏FiveChess.zip

    五子棋游戏想必大家都非常熟悉,游戏规则十分简单。游戏开始后,玩家在游戏设置中选择人机对战,则系统执黑棋,玩家自己执白棋。双方轮流下一棋,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    纯C语言实现的控制台有禁手五子棋(带AI)Five-to-five-Renju.zip

    五子棋游戏想必大家都非常熟悉,游戏规则十分简单。游戏开始后,玩家在游戏设置中选择人机对战,则系统执黑棋,玩家自己执白棋。双方轮流下一棋,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    setuptools-57.1.0.tar.gz

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    setuptools-59.1.1.tar.gz

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    空载损耗计算软件.zip

    空载损耗计算软件

    贪吃蛇.cpp

    贪吃蛇.cpp

    Gobang Game programmed by C(五子棋游戏)Gobang.zip

    五子棋游戏想必大家都非常熟悉,游戏规则十分简单。游戏开始后,玩家在游戏设置中选择人机对战,则系统执黑棋,玩家自己执白棋。双方轮流下一棋,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    单片机C语言Proteus仿真实例用DS1302与数码管设计的可调电子表

    单片机C语言Proteus仿真实例用DS1302与数码管设计的可调电子表提取方式是百度网盘分享地址

    二叉树的遍历hahahha

    二叉树的遍历hahahha

    setuptools-3.8.1.zip

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    基于linux开发C语言编程五子棋小游戏inset.zip

    五子棋游戏想必大家都非常熟悉,游戏规则十分简单。游戏开始后,玩家在游戏设置中选择人机对战,则系统执黑棋,玩家自己执白棋。双方轮流下一棋,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    Linux下,C语言实现五子棋程序Linux-Wuziqi.zip

    五子棋游戏想必大家都非常熟悉,游戏规则十分简单。游戏开始后,玩家在游戏设置中选择人机对战,则系统执黑棋,玩家自己执白棋。双方轮流下一棋,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    飞机大战pygame_demo.zip

    五子棋游戏想必大家都非常熟悉,游戏规则十分简单。游戏开始后,玩家在游戏设置中选择人机对战,则系统执黑棋,玩家自己执白棋。双方轮流下一棋,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    K210SD卡掉电存储的人脸识别

    K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210SD卡掉电存储的人脸识别K210

    setuptools-47.3.2.zip

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    复制粘贴功能,简单实用

    复制粘贴功能,简单实用,非常好用

    绝缘子缺陷数据集,输电线路巡检

    绝缘子缺陷数据集,总共四类,分别为绝缘子,绝缘子破损,绝缘子闪络,防震锤,总共1688张图片

    Python源码-泰坦尼克之灾.py

    Python源码-泰坦尼克之灾

    setuptools-46.1.2.zip

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    2023-04-06-项目笔记 - 第一百三十一阶段 - 4.4.2.129全局变量的作用域-129 -2024.05.12

    2023-04-06-项目笔记-第一百三十一阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.129全局变量的作用域_129 - 2024-05-12

Global site tag (gtag.js) - Google Analytics