24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 1417  |  回复: 20
当前主题已经存档。

yalefield

金虫 (文坛精英)

老汉一枚

[交流] 【分享】恐怖的C++语言 [转载]

作者:酷壳

Linus曾经(2007年9月)在新闻组gmane.comp.version-control.git里和一个微软的工程师(Dmitry Kakurin)争执过用C还是用C++,当时的那个微软的工程师主要是在做Git的Windows版,但他却发现Git的源码居然是C语言写的,而不是C++,于是他(Dmitry Kakurin)在Linux社区里发贴表示对Linux的不满,语言很直接:

Pure C as opposed to C++. No idea why. Please don’t talk about portability, it’s BS. (纯C写的,而不是C++,不知道为什么,请别告诉我是为了移植性,这完全是胡扯。)

Linux之父Linus Torvalds马上跟贴,在贴子中,Linus言辞很直接,直接表明C++是一个很恐怖的语言,他在贴子中说:

*YOU* are full of bullshit. C++ is a horrible language. It’s made more horrible by the fact that a lot of substandard programmers use it. (你才是完全在胡扯。C++是一门很恐怖的语言,而比它更恐怖的是很多不合格的程序员在使用着它

Linus的这个观点我是比较同意的,我个人也在几年前的《STL String类的写时才拷贝》以及以后的一些文章中表达过C++的确并不是一个很成熟的语言,这种观点一直都围绕着我。这是因为它的学习成本实在是太高了,编译器和类背着你做了很多你不知道的事,而且,C++非常容易地出错和发生很多意想不到的问题。

当然,这篇文章并不是要继续声讨C++,也不是回顾以前的某个事件。我们这里只谈技术。昨天,我在网上看到一个邪恶的C++的示例,在这里给大家share一下,让大家看看C++这种编程语言的恐怖和邪恶的一面。下面的这个例子,比那个“#define  private  public”还更加邪恶。

请看下面这段代码,你能告诉我它会输出什么吗?(注意main函数中高亮的那一行)

[code]
01 #include   
02 #include   
03   
04 typedef int UINT4;  
05 using namespace std;  
06 class Hack  
07 {  
08 };  
09   
10 Hack& operator< (Hack &a , Hack &b)  
11 {  
12     std::cerr << "小于操作符\n";  
13     return a;  
14 }  
15   
16 Hack& operator> (Hack &a, Hack &b)  
17 {  
18     std::cerr <<  "大于操作符\n";  
19     return a;  
20 }  
21   
22 int main(int argc, char ** argv)  
23 {  
24     Hack vector;  
25     Hack UINT4;  
26     Hack foo;  
27   
28     vector foo;  
29   
30 return(0);  
31 }

是的,上面这段代码如果只看main函数中的那句“vector foo”,你会觉得很眼熟,然而,事情并非那么简单,我们可以看到vector, UINT4和foo都是Hack类的实例,这就是邪恶的开始,那两个尖括号< >则成了两个运算符,大于和小于,这两个运算符却又被重载了。其实,真正的语句是:

1 vector.operator<(UNIT4).operator>(foo);

所以,所有的一切都符合我们的C++的规范和语法,自然程序也能被顺利编译通过(至少,在我的G++上是没有问题的)。而整个程序的运行结果自然是:

1 $ ./horror  
2 小于操作符  
3 大于操作符

是的,如果你通晓C++的一切的一切,你自然不会对这段程序感到惊奇。这样的事情在C/C++的世界中并不少见,要搞乱C/C++的代码并不是一件难事,花样多得数不胜数,只要看看《6个变态的C语言Hello World程序》(http://coolshell.cn/?p=914)你就知道了,而且,还有一个简单的教程《如何加密/混乱C源代码》(http://coolshell.cn/?p=933)告诉你一些简单的做法。

那么,如果你有一天在读程序中看到“vector foo”,你会觉得那只是一个幻觉吗?
http://coolshell.cn/?p=1724
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zxe841015

铜虫 (小有名气)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
jjdg(金币+1,VIP+0):欢迎新虫! 12-5 19:30
O(∩_∩)O~现在还没资格评论   学习了
2楼2009-12-05 12:59:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

木叶清风

木虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
nono2009(金币+1,VIP+0):谢谢交流! 12-5 14:13
看过这一个,要是真要说错的话那就不要编程了,每门语言都是有弱点的,你非要用她的弱点强行构造出容易出错的东西来批判她,那你就别编程了
www.cvdelver.com
3楼2009-12-05 13:47:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

baobiao007

木虫 (职业作家)

中国特色

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
波不动(金币+1,VIP+0):谢谢交流! 12-5 19:26
这类话题确实只有高高手才能体会得到,我们小菜就无所谓了。
我同意叔本华的观点,人们投身艺术和科学领域的强烈愿望之一就是逃离痛苦、残酷和枯燥无味的现实生活,逃离自己飘忽不定的七情六欲的桎梏。--爱因斯坦
4楼2009-12-05 15:28:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

aristolee

铁杆木虫 (著名写手)

快乐家族之抿嘴笑:)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
波不动(金币+1,VIP+0):呵呵,谢谢交流经验。 12-5 19:27
程序本来就比较恐怖,当年我还没有了解computer是什么东东就直接学C++了,上了半个学期什么都不会,除了算法,很难理解那一段段代码和一个黑洞洞的框框:dnd就是DOS啦~),那时候真的是如腾云驾雾般啊,惶惶而不得终日,后来还是去机房恶补了computer基础的开关机,打开界面等等,又学习了C语言,才稍稍入门了,哈哈,这门课程就结束了,期末考试竟拿了90多分,应试教育啊
君子慎独!朝日载升,薨薨伊氓。于室有绩,于野有耕。于途有商,于边有征。天生斯民,相养以宁。嗟我何为?踽踽无营。初孰与我,今孰主我?我将往问,安所处我?
5楼2009-12-05 16:53:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

至尊木虫 (文坛精英)

会冒泡之超级潜水员

文献杰出贡献

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
波不动(金币+1,VIP+0):感谢交流! 12-5 19:34
为了应付考试把它学了,到现在还不知道到底有什么用,有点悲哀
6楼2009-12-05 19:28:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wucap

金虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
jjdg(金币+1,VIP+0):感谢参与! 12-23 00:29
有意思,下来看一下。。
7楼2009-12-05 21:47:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

nebulaly

木虫 (著名写手)


波不动(金币+1,VIP+0):欢迎新虫交流! 12-5 22:56
纯属抬杠贴

某些人可能认为,穿孔纸带才是最纯洁的工具
8楼2009-12-05 22:52:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangen994

荣誉版主 (著名写手)

将军


小木虫(金币+0.5):给个红包,谢谢回帖交流
我还真没有看懂,呵呵!
9楼2009-12-05 23:01:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yalefield

金虫 (文坛精英)

老汉一枚


波不动(金币+1,VIP+0):鼓励交流!层面不同,问题不同! 12-5 23:36
引用回帖:
Originally posted by nebulaly at 2009-12-5 22:52:
纯属抬杠贴
某些人可能认为,穿孔纸带才是最纯洁的工具

在生物医学工程领域,目前正在研究植入芯片。
运行在这种芯片上的程序,呵呵,内存?有吗?
10楼2009-12-05 23:12:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 yalefield 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 300求调剂,材料科学英一数二 +8 leaflight 2026-03-24 8/400 2026-03-29 01:31 by fmesaito
[考研] 348求调剂 +3 小懒虫不懒了 2026-03-28 3/150 2026-03-29 00:39 by 544594351
[考研] 070300化学354求调剂 +3 101次希望 2026-03-28 3/150 2026-03-29 00:28 by 544594351
[考研] 生物学学硕,一志愿湖南大学,初试成绩338 +6 YYYYYNNNNN 2026-03-26 7/350 2026-03-28 20:52 by 唐沐儿
[考研] 071000生物学求调剂,初试成绩343 +7 小小甜面团 2026-03-25 7/350 2026-03-28 20:25 by 唐沐儿
[考研] 一志愿北京工业大学,324分求调剂 +4 零八# 2026-03-28 4/200 2026-03-28 15:01 by 17865157980
[考研] 一志愿中南大学化学0703总分337求调剂 +5 niko- 2026-03-27 5/250 2026-03-28 14:25 by 唐沐儿
[考研] 291求调剂 +15 hhhhxn.. 2026-03-23 21/1050 2026-03-28 11:26 by self2008
[考研] 0856,材料与化工321分求调剂 +12 大馋小子 2026-03-27 13/650 2026-03-28 10:56 by self2008
[考研] 085602 307分 求调剂 +7 不知道叫什么! 2026-03-26 7/350 2026-03-28 09:57 by 神马都不懂
[考研] 材料与化工考研调剂 +17 孅華 2026-03-22 17/850 2026-03-28 08:35 by WYUMater
[考研] 085601 材料工程 313分 求调剂 +5 Ong3 2026-03-27 5/250 2026-03-27 12:24 by goldfish51
[考研] 求调剂 +6 林之夕 2026-03-24 6/300 2026-03-27 08:38 by hypershenger
[考研] 086000生物与医药292求调剂 +6 小小陈小小 2026-03-22 9/450 2026-03-26 15:58 by dick_runner
[考研] 一志愿 南京邮电大学 288分 材料考研 求调剂 +3 jl0720 2026-03-26 3/150 2026-03-26 13:39 by zzll406
[考研] 打过很多竞赛,085406控制工程300分,求调剂 +3 askeladz 2026-03-26 3/150 2026-03-26 09:08 by 给你你注意休息
[考研] 0854AI CV方向招收调剂 +4 章小鱼567 2026-03-23 4/200 2026-03-25 17:04 by CoderLoser
[考研] 一志愿武理085500机械专业总分300求调剂 +3 an10101 2026-03-24 7/350 2026-03-25 00:00 by 山鬼0-
[考研] 求调剂 +6 研研,接电话 2026-03-24 7/350 2026-03-24 17:01 by barlinike
[考研] 一志愿南航材料专317分求调剂 +5 炸呀炸呀炸薯条 2026-03-23 5/250 2026-03-24 16:52 by 星空星月
信息提示
请填处理意见