先有第一只鸡还是先有第一只鸡蛋?这是个悖论。

先解释一下: 悖论—逻辑学指可以同时推导或证明两个互相矛盾的命题的命题或理论体系。
没有鸡哪儿来的鸡蛋呢?同样,没有鸡蛋怎么孵出鸡呢?计算机语言中其实也有类似的现象。

以C语言和它的编译器gcc为例。C语言的编译器是用C语言写的,这样看来应该先有C语言。可是如果没有C语言编译器,C语言也没法运行。这里C语言就好像鸡蛋,而C语言编译器就好像是鸡。鸡孵化鸡蛋,C语言编译器编译C语言。在C语言这个范畴里,先有C语言还是先有C语言编译器也是一个悖论。


可是跳出这个圈子问题就迎刃而解了。因为第一个C语言编译器可以用其它语言实现。C语言及其编译器的发展历史可以概述如下:首先是用汇编语言产生了第一个C语言编译器,于是我们可以使用K&R的C语言。后来用K&R C写出了ANSI C89标准的C语言编译,然后用C89语言写出了支持C99标准的C语言编译。

根据这个过程类推,我们可以猜测鸡的进化过程大概是这样的:首先是原始鸟类下了一个基因变异的蛋,然后从这只蛋里孵出了第一只原始鸡。然后鸡生蛋,蛋孵化出鸡。其中每次鸡生蛋的时候都有小量的基因变异,最终形成了现在的鸡这个物种。至于先有鸡还是先有鸡蛋,就要看我们是否把那个原始鸟类下的变异蛋叫鸡蛋了。

注:
----起初,C语言没有官方标准。1978年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。布莱恩·柯林汉(Brian Kernighan) 和 丹尼斯·里奇(Dennis Ritchie) 出版了一本书,名叫《The C Programming Language》。这本书被 C语言开发者们称为K&R,很多年来被当作 C语言的非正式的标准说明。人们称这个版本的 C语言为K&R C。
----即使在后来ANSI C标准被提出的许多年后,K&R C仍然是许多编译器的最 准要求,许多老旧的编译器仍然运行K&R C的标准。
----1970到80年代,C语言被广泛应用,从大型主机到小型微机,也衍生了C语言的很多不同版本。
----1983年,美国国家标准协会(ANSI)成立了一个委员会X3J11,来制定 C语言标准。
----1989年,美国国家标准协会(ANSI)通过了C语言标准,被称为ANSI X3.159-1989 “Programming Language C”。因为这个标准是1989年通过的,所以一般简称C89标准。有些人也简称ANSI C,因为这个标准是美国国家标准协会(ANSI)发布的。
----1990年,国际标准化组织(ISO)和国际电工委员会(IEC)把C89标准定为C语言的国际标准,命名为ISO/IEC 9899:1990 - Programming languages – C。因为此标准是在1990年发布的,所以有些人把简称作C90标准。不过大多数人依然称之为C89标准,因为此标准与ANSI C89标准完全等同。
----1994年,国际标准化组织(ISO)和国际电工委员会(IEC)发布了C89标准修订版,名叫ISO/IEC 9899:1990/Cor 1:1994 有些人简称为C94标准。
----1995年,国际标准化组织(ISO)和国际电工委员会(IEC)再次发布了C89标准修订版,名叫ISO/IEC 9899:1990/Amd 1:1995 - C Integrity,有些人简称为C95标准。
----1999年1月,国际标准化组织(ISO)和国际电工委员会(IEC)发布了C语言的新标准,名叫ISO/IEC 9899:1999 - Programming languages – C,简称C99标准。这是C语言的第二个官方标准
----2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)再次发布了C语言的新标准,名叫ISO/IEC 9899:2011 - Information technology – Programming languages – C [10] ,简称C11标准,原名C1X。这是C语言的第三个官方标准,也是C语言的最新标准。

C语言发展史参见百度百科:
https://baike.baidu.com/item/c%E8%AF%AD%E8%A8%80/105958?fr=aladdin

科普类(二)先有鸡还是先有蛋?看看C语言怎么说......相关推荐

  1. 《系统思考》:先有鸡还是先有蛋?(转)

    <系统思考>:先有鸡还是先有蛋? 关于作者,关于本书 本书的作者是丹尼斯·舍伍德.丹尼斯曾就读于剑桥大学.耶鲁大学.加州大学以及伦敦商学院. 丹尼斯在学术界享有盛名,著述颇丰.他曾以合伙人 ...

  2. 菌群与疾病的关系探讨之一:先有鸡还是先有蛋?

    本文转载自"态昌基因",己获授权. 掐指一算,小昌也是有十几年菌群研究项目经验的老司机了,本以为做的多会的多,结果却是做得越多疑问越多,所以小昌对菌群研究的评价就是"这里 ...

  3. 先有鸡还是先有蛋? 加拿大科学家揭开谜底

    据美国生活科学网报道,鸡和蛋先后之争持续已久,究竟是先有的鸡还是先有的蛋,这一让人百思不得其解的古老谜题终于有了谜底.通过对7700万年前的恐龙蛋化石的研究后,科学家宣布谜题答案是先有的蛋后有的鸡. ...

  4. 二维离散余弦变换(DCT)与二维离散反余弦变换(IDCT)C语言实现

    二维离散余弦变换(DCT)与二维离散反余弦变换(IDCT)C语言实现 实验目标 对一个8x8的矩阵进行DCT和IDCT然后在观察前者和后者的变化 实验准备 理论基础 二维离散余弦变换 F ( u , ...

  5. 先有鸡还是先有蛋,程序员怎么看

    先有鸡还是先有蛋,这个问题你是否也想过?这种具有互相依赖关系的情况,其实相对于经常接触电子产品和信息系统的程序员来说,也很常见.你有没有想过,这种现象就好比现代CPU的设计,需要在PC电脑上设计,而P ...

  6. 蛋鸡问题,先有鸡还是先有蛋。顺便回答第一个编译器是怎么来的。(思考使人伟大)

    生活中存在着一些自举的例子,这些例子常被拿来做为思维狡辩的工具,它们确实也起到了让普通人思维混乱的作用. 问题如下: 1.  蛋鸡问题,鸡可以生蛋,蛋可以孵出鸡,那么到底先有鸡还是先有蛋? 2.  人 ...

  7. 破旧立新破解先有鸡还是先有蛋

    这个世界上是先有鸡还是先有鸡蛋呢? 这是一个流传极广的难题,往往被认为无法回答,算是一个"看起来很简单,实际上异常困难"的典型. 先有鸡还是先有蛋之所以无法解答,并非真的有多难,而 ...

  8. 逃不出的循环,先有鸡还是先有蛋?object和type纠葛(python中的基类和元类)

    问题 学习一段时间python了,一定会接触到两个词,基类和元类. 基类: 也叫父类,python中所有对象的终极父类是object,所有类都显式或隐式,直接或间接地继承了object类. 元类: 由 ...

  9. 用C#写C#编译器,先有鸡还是先有蛋

    前段时间翻译的一篇文章 微软是如何重写C#编译器并使它开源的,文章讲了微软用C#重写C#编译器的坎坷路,引发了一些童鞋的思考:用C#编写C#编译器(Roslyn),那么C#编译器本身是由谁来编译的?C ...

  10. 用 C# 编写 C# 编译器,先有鸡还是先有蛋?

    前段时间翻译了一篇文章 微软是如何重写 C# 编译器并使它开源的,文章讲了微软用 C# 重写 C# 编译器的坎坷路,引发了一些童鞋的思考:用 C# 编写 C# 编译器(Roslyn),那么 C# 编译 ...

最新文章

  1. 辞职读博:研究AI设计怪物,从《游戏王》卡牌开始
  2. iOS动画系列之五:基础动画之缩放篇旋转篇Swift+OC
  3. Docker:使用本地卷和tmpfs挂载
  4. AUTOSAR从入门到精通100讲(三十五)-Lin通信协议栈分析三部曲LinTrcv配置及代码分析
  5. ThinkPHP中的find和select的区别
  6. 研华自动驾驶计算机,ADVANTECH研华TPC-1582H-433BE 工业平板电脑一体机计算机工控机...
  7. sqlserver的存储过程
  8. Windows 7常见蓝屏代码解决办法
  9. LS-DYNA 学习总结与感悟 以EM模块为主
  10. 前端控制台返回406错误解决方法
  11. android开发一款app的流程
  12. html中footer怎么写,HTML DOM Footer用法及代码示例
  13. C++ switch怎么用
  14. android 权限开启回调,Android M请求onSurfaceTextureAvailable回调权限不在活动
  15. Angular2组件开发—模板的逻辑控制(一)
  16. python控制excel选择区域_python针对excel的操作技巧
  17. 词法分析器设计与实现
  18. mysql5.7.10 二进制包_mysql 32 位安装教程mysql5.7 二进制包安装
  19. 2018第九届蓝桥杯-决赛-Java大学-C组
  20. Method of posterior probabilities generation for ordinal classification

热门文章

  1. 使用MATLAB2010实现AVI视频播放
  2. linux系统制作macos启动,如何手动制作macOS High Sierra可启动安装U盘
  3. Oracle 变量绑定与变量窥视合集系列五
  4. python中pd是什么意思_何时申请(pd.to_numeric)以及何时在python中使用...
  5. java时间戳 时分秒_orale获取两个时间戳字符串之间的时间差(时分秒)(含java实现)...
  6. python之pyautogui实现鼠标键盘控制
  7. 小米之家真的是有效的渠道模式么?
  8. java深度模仿支付宝订单号/交易流水号(高性能,不重复)
  9. 1138: C语言合法标识符
  10. python求高阶导数_高阶导数 - 问答 - Python中文网