C是用什么语言写出来的?

C是用什么语言写出来的?


C语言的起源和发展是一个迭代过程:

1. 最初的C语言编译器的开发始于对B语言的改进。B语言是由Ken Thompson设计的,它是基于BCPL语言简化而来的。在开始前我有一些资料,是我根据网友给的问题精心整理了一份「 C语言的资料从专业入门到高级教程」,

点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!


2. B语言的编译器可能是用汇编语言编写的,因为早期的高级语言编译器往往需要用机器语言或汇编语言编写才能有效控制硬件资源并生成高效的机器代码。

3. Dennis Ritchie在B语言的基础上设计了C语言,最初的C语言编译器的部分或全部很可能是用汇编语言编写的。

4. 随着C语言的发展成熟,出现了用C语言自身重新编写的C编译器,这是一个被称为“自举”(bootstrapping)的过程。这意味着C语言足够强大到能够用来编写自身的编译器,从而摆脱对其他语言的依赖。

综上所述,C语言的首个编译器是用汇编语言和B语言开发的,而后续的C编译器则实现了用C语言编写,形成了自我完善的生态系统。现在我们熟知的一些流行的C语言编译器,如GCC(GNU Compiler Collection)的大部分是用C语言编写的,而Clang的大部分是用C++编写的。

195dfb289419527d06c98e2aee15d348.jpeg

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

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

相关文章

jmeter常用的函数

20211025白板 课前内容: 参数: 用户定义变量:它是一个全局变量,在启动运行时,获取一次值,在运行过程中,不会动态获取值。 用户定义变量,在启动时获取一次值,在运行过程中…

课堂练习——4、实验环境练习

任务描述 本关任务:修改 Linux 0.11 内核程序,将系统启动时显示的字符串由原来的Partition table ok.变为Hello, world!。 通过本关任务,可以熟悉 Linux 0.11 内核实验环境,掌握内核程序的编辑、编译和测试方法。 相关知识 为了…

SCP收容物006~010

注 :此文接SCP简介以及001~005的介绍,本文只供开玩笑 ,与 steve_gqq_MC 合作 --------------------------------------------------------------------------------------------------------------------------------- 目录 scp-006 scp-007 scp-008 scp-010 …

【Hive】HIVE运行卡死没反应

Hive运行卡死 再次强调 hive:小兄弟,没想到吧,咱可不是随便的人。😄 那么,这次又遇见了hadoop问题,问题描述是这样的。 hive> insert into test values(1, nucty, 男); Query ID atguigu_202403241754…

StringRedisTemplate与RedisTemplate详解【序列化的方式不同】

spring 封装了 RedisTemplate 对象来进行对redis的各种操作&#xff0c;它支持所有的 redis 原生的 api。在RedisTemplate中提供了几个常用的接口方法的使用&#xff0c;分别是: private ValueOperations<K, V> valueOps; private HashOperations<K, V> hashOps; …

设计模式之原型模式讲解

原型模式本身就是一种很简单的模式&#xff0c;在Java当中&#xff0c;由于内置了Cloneable 接口&#xff0c;就使得原型模式在Java中的实现变得非常简单。UML图如下&#xff1a; 我们来举一个生成新员工的例子来帮助大家理解。 import java.util.Date; public class Employee…

【科研基础】VAE: Auto-encoding Variational Bayes

[1]Kingma, Diederik P., and Max Welling. “Auto-encoding variational bayes.” arXiv preprint arXiv:1312.6114 (2013). [2] [论文简析]VAE: Auto-encoding Variational Bayes[1312.6114] [3] The Reparameterization Trick [4] 变分法的基本原理是什么? 文章目录 1-…

SMMU学习这一篇就够了

快速链接: 【精选】ARMv8/ARMv9架构入门到精通-[目录] &#x1f448;&#x1f448;&#x1f448; 引流关键词: SMMU&#xff0c;mmu500,mmu600,mmu700,system mmu,Non-cacheable,Cacheable, non-shareable,inner-shareable,outer-shareable, optee、ATF、TF-A、Trustzone、opte…

基于单片机HX711电子秤称重控制设计

**单片机设计介绍&#xff0c;基于单片机HX711电子秤称重控制设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机HX711的电子秤称重控制设计是一个融合了单片机技术、称重传感器技术和显示技术的综合性项目。其设计目…

Docker 夺命连环 15 问

目录 什么是Docker&#xff1f; Docker的应用场景有哪些&#xff1f; Docker的优点有哪些&#xff1f; Docker与虚拟机的区别是什么&#xff1f; Docker的三大核心是什么&#xff1f; 如何快速安装Docker&#xff1f; 如何修改Docker的存储位置&#xff1f; Docker镜像常…

HTML5+CSS3+JS小实例:原生JS实现全屏滚动

实例:原生JS实现全屏滚动 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial…

网络socket编程(一)——socket接口函数、面向数据报的UDP编程及测试、select函数应用

目录 一、socket简介 二、socket编程接口函数介绍 2.1 socket()函数&#xff08;创建socket&#xff09; 2.2 bind()函数&#xff08;绑定地址和端口&#xff09; 2.3 listen()函数&#xff08;设置socket为监听模式&#xff09; 2.4 accept()函数&#xff08;接受连接…