GCC和C语言,鸡生蛋还是蛋生鸡?

前几天,聊到了一个有趣的问题:

C语言最主流的编译器当属GCC,但GCC本身也是由C语言写的,那第一个GCC是怎么来的?

GCC本来就是用来编译C语言的,那当初第一个GCC又是怎么编写出来的呢?

PS:我找到了第一版的GCC源码

https://github.com/huangguiyang/gcc-0.9

这有点类似于那个经典的哲学问题:先有鸡还是先有蛋?

要回答这个问题,可能需要去翻开计算机的发展历史,去历史的痕迹中寻找答案。

首先,C语言是什么时候诞生的?

答案是六十年代末,七十年代初。

那GCC又是什么时候出来的呢?

看吧,GCC是1987年才有了第一个版本,整整比C语言的诞生晚了十多年!那这十多年间,C语言程序是用什么编译呢?肯定有别的编译器。

我们来问问博学多识的ChatGPT同学:

根据ChatGPT的解答,第一个C语言编译器是用B语言写出来的。

我们的问题似乎解答了,但似乎又没有解答。

继续追问下去,那第一个B语言编译器又是怎么来的?这就像科学家一直在追逐的一个问题:世界的起源在哪里?

提到这个问题,就牵出一个重要的概念:自举

大意说的是编译器可以自己编译自己,在不断迭代中完善,举个例子:

一开始的时候,什么高级语言都没有,只有汇编指令,现在我们要发明一种高级语言Q语言。

1、先定义出一个最简单版的高级语言Q0.1,然后用汇编语言写一个能编译这个Q0.1的编译器。

2、在Q0.1的基础上增加一些语法变成Q0.2,然后用Q0.1+汇编写一个能编译这个Q0.2的编译器。

3、···

在这个过程中Q语言渐渐完善,能编译Q语言的编译器也一步步出来了。

这听起来有些抽象,来看个具体的例子:

现在,你应该知道编程语言和编译器这个鸡生蛋蛋生鸡问题的答案了吧。

最后我想说,真的很佩服当年这些大佬,编程语言不好用,就发明一门编程语言,缺编译器就开发一个编译器,操作系统不好用就开发一个操作系统,更厉害的是,这些五六十年前搞出来的东西直接沿用到今天,还成为了整个计算机工程体系的基础设施,实在是吾辈楷模啊!

再看看如今的我们,哎不说了:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/67779.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c#调用c++ dll,Release版本内存访问错误

最近遇到个比较经典的案例,在c#中调用yara进行文件检测,yara是c编写的一个非常强大库,github有个大佬用c#对其进行了封装,使其能在跨平台下,只需编译yara的so或dll就能直接跑。但总是在Release版本下时不时就崩溃&…

Wine 8.0 发布,终于可以在 Linux 上流畅的运行 Windows 应用程序了!

大家好,我是老赵 经过一年多的开发,用于在 GNU/Linux、FreeBSD、Solaris 或 macOS 系统上运行 Windows 应用程序和电子游戏的 Wine 8.0 开源和跨平台兼容层现在可供下载。 Wine 8.0 最大的变化是完成了 PE 格式的转换,历时四年多。这允许开发…

chatgpt赋能python:Python登陆网站的SEO技巧

Python登陆网站的SEO技巧 随着互联网的发展,越来越多的企业选择将业务转移到网络平台。对于这些网站而言,搜索引擎优化(SEO)是一个关键的因素,它决定了网站在搜索结果中的排名。而要实现好的SEO效果,网站登陆功能的实现也是至关重…

社交“搭子”火了!小红书数据分析,品牌正用“陪伴”种草?

找搭子,年轻人在搞一种很新的社交 朋友,你找搭子了吗?近期,“搭子”这种新型社交关系走红,饭搭子、奶茶搭子、厕所搭子、旅游搭子……遍布于各式各样的场景中,主打的就是一个垂直细分领域的精准陪伴。“搭子…

哔哩哔哩弹幕api查找

哔哩哔哩弹幕api查找 以那年那兔那些事为例: 由于B站弹幕库一次只能显示一千条,要进行舆论分析要进行所有的弹幕分析,所以先找一找有没有可以利用的api 打开网页F12打开开发者模式点到network页面,什么都没有,没关系…

移动端项目实战之哔哩哔哩

我们先来看看效果图 是不是心动了呢,小伙伴们 我们先来看看做项目之前的准备吧: 1.新建一个文件夹:m-bilibili 记得在m-bilibili里面建好相应的文件夹;例如css文件夹,less文件夹,images文件夹,以及字体图标文件夹fonts或者leb也行 2.打开软件vscode,导入项目m-bilibili 3.看效…

哔哩哔哩用户数据采集及数据分析

就简单的采集几万个练一下手,代码大家看着改吧 先上代码 import requests import time from pymongo import MongoClient import random import json import urllib3 from multiprocessing.dummy import Poolua [Mozilla/5.0 (compatible; MSIE 9.0; Windows NT …

哔哩哔哩会员免费领取

B站早期是一个ACG(动画、漫画、游戏)内容创作与分享的视频网站。 经过十年多的发展,围绕用户、创作者和内容,构建了一个源源不断产生优质内容的生态系统,B站已经涵盖7000多个兴趣圈层的多元文化社区。 会员领取地址&…

仿哔哩哔哩动画Android客户端(哔哩哔哩 (゜-゜)つロ 干杯~-bilibili)

前言 花了一个月的时间,把这个项目怼的差不多了,该仿的b站开源项目采用主流mvpdagger2rxjava2作为整体框架,而网络请求采用okhttp3retrofit2,虽说仿的,但是b站官方客户端有许多炫酷视觉的效果,本人水平有限…

如何在电脑端安装哔哩哔哩?

如何在电脑端安装哔哩哔哩? 目前哔哩哔哩没有电脑版。之前在自己电脑上安装了一个哔哩聚合,一点都不好用,用了一段时间就卸载了。 其实下载哔哩哔哩电脑版客户端非常简单,只需要按照以下步骤就行啦! 1. 安装安卓模拟…

上班带薪打游戏?二次元的福音 在哔哩哔哩做测试员是一种什么体验?

说起B站,小伙伴们第一个想到的是什么?二次元,手办?诚然,不知什么时候开始,B站成为了许多年轻人的聚集地和二次元的福音,从一个小的视频网站,到现在众多年轻人娱乐需求的刚需&#xf…

哔哩哔哩视频合并 B站缓存视频合并 安卓版 音视频合并 基于ffmpeg

说明 此软件是为了帮助网友合并哔哩哔哩缓存视频,Android上将bilibili缓存视频合并导出为mp4,你可以将它理解为一个专用的格式工厂,并不涉及破解相关内容,仅仅用于学习技术交流,严禁用于商业用途,如有侵权…

制作哔哩哔哩弹幕词云

先展示一下实物图吧 不知道有没有人能猜出来这是哪个视频的弹幕 直接上代码 先是爬取视频弹幕 import re import requests def main():print("输入想爬取的b站视频网址:")url input()res requests.get(url)cid re.findall(r"cid":(.*?),, res.text)…

bilibili获取cookie

bilibili获取cookie 先去登录自己的哔哩哔哩 (゜-゜)つロ 干杯~-bilibili账号 然后进入个人中心 然后按F12打开https://api.bilibili.com/x/web-interface/nav 没找到可以刷新一下页面 获取到cookie填写到环境变量即可 export Ray_BiliBiliCookies__0“”; 本文转载自哔哩…

【爬虫工具】哔哩哔哩插件姬(bilibili-plugin)

完整原文(含源码):Github (转载请注明出处,仅供分享学习,严禁用于商业用途) 声明 写这个插件纯粹是出于学习目的,此博文主要作用是功能展示之后会围绕这个插件,写一个系…

Python爬虫实战之哔哩哔哩二维码登录申请

前言 哈喽,好久不见了吧,各位新年好!博主春节也是比较忙的,没时间去写文章和"coding"。最近我们学校也是初九就开学了,所以更加没时间创作了🤣 言归正传,本次写这篇文章算是想要对我…

技巧丨哔哩哔哩转正答题技巧

技巧丨哔哩哔哩转正答题技巧 技巧丨哔哩哔哩转正答题技巧 准备工具答题 卷一(第一部分)卷一(第二部分)卷二:自选题 前言:前几天在B站看视频,想吐槽一下内容,结果发现需要转正后才能…

哔哩哔哩第三方神器软件,早该用上了

今天分享几个b站第三方神器app,下载地址在公众号苏生不惑后台回复 b站。 BBLL 哔哩哔哩2023最新第三方TV和pad端开源软件https://github.com/xiaye13579/BBLL ,支持8K、弹幕、直播,大会员通用,首页只有推荐、热门、番剧、影视等模…

Miko二次元动漫视频网站源码 视频播放带仿哔哩哔哩视频字幕弹幕

非常大气漂亮的Miko动漫视频网站整站源码,二次元动漫网源码。Dz后台管理方便,整站数据都设置好了,传上即可制作一个完整的动漫网。 安装教程: 1.源码上传到空间 2.自己修改里面数据库信息(错一个网站就打不开&#xff…

哔哩哔哩弹幕api及一些解释

有两个弹幕api接口,分别是移动端与电脑端 https://comment.bilibili.com/ cid .xml https://api.bilibili.com/x/v1/dm/list.so?oid cid以电脑端为例子,使用谷歌浏览器打开某个哔哩哔哩的视频: 右键–检查–network–刷新–一个个找吧&…