转载原创作者【关于编程哪些事】:https://zhuanlan.zhihu.com/p/130360966

故事1:把大象装到冰箱里


● C
C语言是一个极其高冷的人,因此回答都是冷冷的:

我:你好C语言,我想把大象放到冰箱里,帮我做好不好?

C:好

我:那我们要怎么做呢?

C:猜

我:额。。。是不是应该先创造一只大象?

C:是

我:怎么创造呢?

C:猜

我只好去翻了一下文档,哦,malloc一块内存啊。

我:好的,我用malloc,申请一块空间放大象好不好?

C:好

我:额。。。大象怎么构造呢?

C:猜

我。。。去看了看大象的结构

我:好吧。。。我定义了一个大象的数据结构,接下来怎么做?

C:猜

我心里一阵说不出的感觉。。。

我:哦好吧,我创造一个冰箱,步骤应该和大象差不多。

C:嗯

我翻看了冰箱的结构,然后定义了一个冰箱的struct。

我:好了,冰箱构造出来了,怎么放呢?

C:哼

我。。。默默在Stack Overflow上输入"如何把大象放进冰箱 C"。

我:终于找到答案了,定义一个方法,把大象的鼻子放进去、眼睛放进去、耳朵放进去。OK,都放进去了。C,你输出一下看看吧。

C:烫烫烫烫烫烫烫

我:哈哈哈哈C你终于不高冷了

。。。

我:哎,你咋不说话了?C?你发烧了吗?

立刻一盆水倒上去。

● C++
C++是一个知识渊博的孩子,相对年轻,也没那么高冷。

我:C艹,我们把大象放冰箱好吗?

C++:滚

说话咋不高冷呢?

我:额我错了,亲爱的C++,我们把大象放冰箱好吧。

C++:好的么么哒,大象的数据类型已经有人定义好了,冰箱也有人定义好了,你需要分别构造一个哦。

我:好的。

于是我翻看了文档后知道了用new来构造

我:OK,亲爱的C++,我想构造一个大象。

C++:好的,构造大象的方法有13个,请问你选择哪一种呢?

我。。。

我:你介绍一下吧。

C++:OK,首先可以在栈上面构造,这么做的好处呢是可以方便资源管理,而且语法也好看一些,可以利用RAII,如果你不知道什么事RAII,你可以去cppreference上面查一下,当然你也可以在堆上构造,可以构造一只很大很大的大象,还有。。。。。。。

一个月过后,C++终于讲完了。我也长满了胡须。。。刮了胡子之后继续工作

我:好的,C++,我就在栈上面构造一只大象吧。

C++:你不爱我了。

我:???

C++:你都没有说“亲爱的”。

我。。。

我:好吧,亲爱的C++,我想简单构造一只大象。

C++:好的呢,你可以选择构造一只非洲象还是美洲象还是南极洲象,象的肤色是什么样子的你可以设定一下,象的屁股大小你可以设定一下,象的性别和性取向你看要什么。。。。。。

我:我就想要一只简单的,默认的就好。

C++:好的,构造出来了一只,你可以选择怎么初始化它,有13种初始化方法,推荐使用最新的统一初始化。

我。。。

我:统一初始化

C++:好的,我们可以构造冰箱了。

我:好。。。

经过一个月的选择,终于构造出了冰箱。

C++:好的,冰箱提供了addElephant方法,可以直接使用哦。

我:哇太棒了,好的,我就用这个方法。

C++:这个方法提供了多种重载,可以拷贝,移动,也可以直接转发,省的在移入冰箱之前构造一个大象。

我:。。。你为啥不早说

C++:你为啥不早问。

我:就用移动的吧。

C++:OK,请用std::move将构造好的大象转为右值引用。

我一脸懵,但是还是照办。

我:好了

C++:OK,开始放入冰箱了哦,速度极快的呢。

突然

C++:报错了报错了,分子和原子不是可以转换的类型,大熊猫和爱迪生之间没有+运算符等1556项错误。

我。。。。。。。。。

我:网上找资料,说看最后一行就差不多了,好的看看。嗯,看起来是第31行出错了,错误是什么呢?报错信息啥也没说明白啊。随便改改吧。编译,运行。

C++:好的,已经将臀围12米,左臂长13米,右臂长14米,喜欢公大象,没有结婚生子,从小家教不错,熟读四书五经的非洲母大象放入橘黄色,五十米高,六十米宽,三百米厚,温度有零下三百度,制冷剂的牌子是湖澈牌,额定电压220V的冰箱里。

我。。。长舒了一口气。

● C#
我:我想把大象放进冰箱。

C#:好的主人,我爸爸微软已经写好了大象类,也写好了冰箱类,你只需new一下就好了。

我:OK,new好了,放入冰箱。

C#:好的,已经放入,使用了冰箱的拓展方法addElephant<>方法。

我:嗯,你表现得很好,能不能放的稍微快点儿,刚刚C++放的就很快。

C#:为了您的安全,不能。

我:额。。。那我想调节一下大象耳朵的尺寸。

C#:对不起,不能调节。您可以设定大象的耳朵形状,已为您定义好多种耳朵形状,您还可以调整大象的肤色,已为您定义好多种肤色。

我:算了不调了,就这样吧。

C#:好的。如果您需要速度,或者需要对大象的每个细节进行把握,还可以去看看我的弟弟,C++/CLR,他可以完成您提出的这些功能。您也可以将他带到我这里来,我们可以一起工作的。你也可以把C++完成的工作导出到二进制形式,我可以直接使用的。

我:好的谢谢,不用了。

C#:好的,祝您生活愉快。

故事2:魔法师的“火球术”


在遥远的地方,有三位大魔法师,吸引了许多学徒。这三位魔法师都会一种魔术叫“火球术”。。。

● C
第一位大魔法师叫C,他是这样教学生的。

“火球术:”

“首先,把提前写好的符咒放在桌子上。”

“然后,把左手抬起来。”

“把右手抬起来。”

“让左手的位置下移3厘米。”

………

省略大约100行。

虽然这位魔法师的方法很麻烦。但是很快就能召唤出火球,同时以后重复这个步骤就可以召唤出火球。

● C++
第二位大魔法师叫C++,是C的徒弟。

他的火球术则是这样的。

“首先,用100个小时制作一张封装的,美观的,有注释的符咒,然后专门写一篇文档描述它的外表。”

“然后在上面写上火球术三个字。”

“扔出去。”

这位大魔法师的火球术使用很方便,只不过制作过程过于繁琐,并且有的时候可能会过十分钟才出现火球。

● C#
第三位大魔法师叫C#,据说是C和另一位姓J的大魔法师的不清不楚的产物。

他的火球术很简单,只要喊一声 火球!就可以了。

只不过有一个致命的缺点。

如果离他的距离超过了5米,那所有的法术都会失效并且出现一大堆红色的写着error的神秘符咒,据说那是异次元的魔鬼的产物。

故事3:不同车型的比拼


如果把这三种语言比作不同类型车的话,我想他们分别应该是这样的:

● C
C就像一台引擎裸露在外,轮子变速箱刹车传动轴承都要自己装的“车”,如果你是DIY狂人喜欢自己造车,你会喜欢C的。

● C++
C++就像上面说的DIY狂人造出来的一台马力十足的跑车,包含了C的全部优点外加一个外壳。开起来是疯狂的野兽马力十足,但是不是谁都能驾驭了,稍有不慎就会车毁人亡。

● C#
C#就像一台综合性能非常好的轿跑,自动超速箱ABS防抱死空调音响一应俱全。让你轻松上路,怎么开怎么爽。但是你永远体会不到飙车的激情了,而且这车只能在特定公路开哦~

C、C++、C# 三种汇编语言之间的小故事相关推荐

  1. css:块元素、行内元素、行内块元素以及三种元素之间的转换

    一.三种元素的介绍 1.块元素 块元素的特点 独占一行,也就是会自动换行 可以设置高度.宽度.外边距.内边距 宽度默认是父元素的宽度 常见块元素 <h1></h1>---< ...

  2. vue,js,html三种文件之间是怎样的关系?

    vue,js,html三种文件之间是怎样的关系? 比如说,我创建一个js文件,vue实例是在js中创建,component组件也是在js中注册, 然后我去html中导入这个JS,这个时候我就可以在ht ...

  3. 【SSH】——Hibernate三种状态之间的转化

    Hibernate的三种状态为:transient.persistent和detached.对这三种状态的理解可以结合Session缓存,在Session缓存中的状态为persistent,另外两种不 ...

  4. 三种工作室之间有哪些联系?

    在我国的很多地区内都有一些网络游戏工作室的存在,这些工作室一般来说都是一些年轻人开办的,因为在开办的时候不需要过多的资金投入,同时还可以有着不错的效益,时间也是比较充足,不像上班那样每天的时间是非常有 ...

  5. 简要介绍VGA、DVI、HDMI三种接口之间的关系

    这三种接口都是视屏接口,一般高清电视都会带有这些接口.再者我们在用笔记本办公的时候可能会觉得屏幕有点小,想要再外接一个显示器,那么这个时候就会用到这几个接口(用到其中一个) 在购买这三种接口线的时候都 ...

  6. HSDPA,HSUPA,HSPA+ 三种技术之间的区别

    HSDPA,HSUPA,HSPA+的祖先都是 WCDMA,在不同时期使用不同的技术: WCDMA(联通3G网络制式) 最初使用的是 R99和R4系统能够提供的最高上行速率:64kbps和 最高下行速率 ...

  7. 三个关于采购的小故事,真是绝了!

    在采购管理的过程中,有许多的小典故,生动形象地讲述关于采购的故事.今天我们不谈套路,小编分享几个小故事给大家,希望对大家的采购工作有所帮助~ 第一个故事:合格率的检查制度 二战期间,美国空军降落伞的合 ...

  8. 3.13. Notepad++中Windows,Unix,Mac三种格式之间的转换

    由于历史原因,导致Windows,Unix/Linux,Mac三者之间,对于文件中所用回车换行符,表示的方法,都不一样. 这就导致了很多人都会遇到回车换行符的困惑,和需要在不同格式间进行转换. 其中, ...

  9. 面向对象三种模型之间的关系

    功能模型指明了系统应该"做什么":动态模型明确规定了什么时候(即在何种状态下接受了什么事件的触发)做:对象模型则定义了做事情的实体.在面向对象方法学中,对象模型是最基本最重要的,它 ...

最新文章

  1. LibreOffice使用笔记
  2. selenium之 chromedriver与chrome版本映射表(更新至v2.33)
  3. 3.2 矩阵和图像类型
  4. c语言二维数组表示坐标,c语言多维数组地址的表示方法
  5. vmware智能资源调整
  6. OpenCV:No value has been specified for property 'manifestOutputDirectory'
  7. Linux下设置环境变量
  8. fibonacci数列前20项_数学第十七课:数列综合应用第一弹
  9. JAVA利用google的zxing快速生成QRCode
  10. 低姿态生活,高境界做人
  11. 小米一加等手机如何正确的刷入PixelExperience_Plus系统-完整谷歌服务
  12. 泛函分析 04.05 有界线性算子 - 闭算子与闭图像定理
  13. 伦敦大学计算机研究生雅思要求,伦敦TOP10大学的雅思入学要求来了!
  14. error while loading shared libraries解决办法
  15. 电脑常用快捷键【按使用场景分类】-Windows
  16. 计算机图形学(一) 视频显示设备_2_光栅扫描显示器
  17. Flutter控件——常用控件:按钮
  18. Java实现文件查重去重
  19. 安装语言包(LANGUAGE PACKAGE)
  20. 抖音获取抖音商品原数据 API 返回值说明

热门文章

  1. 2017滴滴出行校园招聘笔试题
  2. linux上oops介绍
  3. 一起学 mybatis 基础教程
  4. android源码下载,编译及编译时遇到的错误整理
  5. YZOI 队员日常练习的反思总结模板
  6. 哈格管理信息系统【内容整理】
  7. 用SQL进行集合运算
  8. 使用libx264静态编译库编译FFmpeg
  9. 23种设计模式意图汇总
  10. 求职面试100问,最全职场面试宝典