当前位置: 首页 > news >正文

C语言本身是用什么语言写的

C语言是用C写的吗?,没有第一个编译器哪来的C?,那它到底从哪冒出来的。

今天翻了翻老资料,才知道这事根本不是传说里那样——C语言不是天才一拍脑袋想出来的,它是被逼出来的。Multics项目搞了几年,一堆大公司参与,结果做出来的东西又慢又占内存,贝尔实验室直接退出。汤普森回到自己办公室,在一台破旧的PDP-7上写了个小系统,连内存都只有8KB。他先用汇编写,写完发现太累,就弄了个叫B的语言,解释执行,简单是简单,但跑得比蜗牛还慢。

后来换到PDP-11,机器好点,B就不行了。里奇开始改——不是加功能,是往硬件上靠。PDP-11有自动增减地址的指令,他就把++和--加进去;寄存器能存16位数据,就定int是16位;内存按字节寻址,char就刚好是1字节。这些不是随便定的,是把机器怎么干活,原样搬进语法里。连a

等于*(a+i)这种写法,都是为了编译器能直接翻译成一条加法指令,不浪费一个时钟周期。

第一个C编译器根本不是用C写的。是里奇他们先用汇编写了个极简版本,只支持if、while、基础运算和函数调用——小到可以在纸上推演清楚。用它编译出稍强一点的C编译器,再用这个编译器去写更完整的C语言和UNIX内核。1973年第三版UNIX内核已经全用C重写了。这过程不是炫技,是实在没别的路:你不能一边造车一边设计轮子,得先用木头轮子跑起来,再换铁的、钢的、最后才是合金的。

很多人说C可移植,其实刚出生那会儿,它根本离不开PDP-11。float自动变double?因为PDP-11的浮点协处理器只算双精度。register关键字后来没人用了?因为编译器自己比人更懂怎么分配寄存器。K&R第一版里main()不写返回类型都行,void也不需要,不是忘了,是当时PDP-11上压根没这个抽象需求。C不是通用语言,它是PDP-11的镜像,只是碰巧长得太像人类写的代码,让人误以为它很“高级”。

1978年那本《The C Programming Language》一出来,大家才发现:哦,原来别人也是这么写的。它没被当成标准,但所有人都照着它干——因为UNIX跟着它一起卖出去了。后来pcc编译器试图把C搬到别的机器上,就得砍掉一些直译硬件的特性,效率降了,但能用了。到1989年ANSI定标准,才正式加入void、函数原型、const这些东西。这不是技术升级,是妥协:C要进大公司、进学校、进课本,就得放弃一部分和硬件的硬连接。

标准化之后的C,慢慢从系统程序员的工具,变成了工程师的通用语言。但它的底子没变:指针还是能随便算地址,数组不检查越界,union还是靠程序员自己记哪个字段在用。这不是bug,是设计选择——它信任你能管住自己,也默认你真正在乎的是机器怎么跑得快,而不是代码看起来多安全。

现在看C语言,它不像Python那样友好,也不像Rust那样防错。但它写出来的程序,只要不写错,就能贴着硬件跑。它的语法古怪,但每一条背后都有一台老机器在喘气。它的编译器能自举,不是为了秀技术,是因为当年没人给它准备现成的工具链,只能自己造一把钥匙,再用这把钥匙打开下一扇门。

C语言没说过它想改变世界。它只是静静地,把1970年代一台小机器的脾气,刻进了全世界的代码里。

它到现在还在用。

http://www.rkmt.cn/news/1471083.html

相关文章:

  • TSG软件数据融合实战:如何将光谱、钻孔照片与地化数据整合到一个工程里?
  • 2026年靠谱的办公家具定做/商丘现代办公家具/办公家具定制/办公家具口碑好的厂家推荐 - 品牌宣传支持者
  • 交流直流lem莱姆传感器ltc350:闭环磁通门技术电流传感器/S技术解析与选型全推荐 - 优质品牌商家
  • 别再轮询了!用STM32F407的USART空闲中断+DMA搞定不定长数据,效率翻倍
  • VC++6.0创建C语言文件指南
  • COM3D2.MaidFiddler:实时编辑女仆数据的终极工具指南
  • NITZ 网络时间与时区同步架构
  • 2026年比较好的钢筋桁架楼承板/包头Z型钢/镀锌楼承板/包头楼承板优质厂家推荐榜 - 行业平台推荐
  • 第五章:让主角动起来——玩家角色创建
  • 2026年热门的防静电环氧地坪/混凝土浇筑/环氧磨石地坪公司哪家好 - 行业平台推荐
  • 2026年q2矿用车选型技术解析:矿用四不像运输车/矿用搅拌罐车/矿用无轨人车/从核心维度选对厂家 - 优质品牌商家
  • 当AI学会‘读心’:从AOL搜索数据泄露看NLP时代的隐私保卫战
  • 大模型算法学习2026.6.1
  • Anthropic发布Opus 4.8,首次超越OpenAI
  • 《和死对头成亲后》小说|下载|txt
  • Altium Designer新手避坑:从PCB设计到Gerber文件导出的完整流程与常见错误排查
  • C# 索引器 this[]
  • 随着树木和非树木植被覆盖的扩大,全球人口暴露于城市绿地的不平等加剧
  • 从‘边缘’到‘语义’:手把手教你用TensorBoard逐层可视化ResNet的‘认知’过程(PyTorch版)
  • 保姆级教程:用ROS1在局域网内搞定两台机器人的主从通信(含rqt_graph可视化验证)
  • SpringBoot项目升级Swagger3.0后,swagger-ui.html 404?别慌,一个注解和依赖就搞定
  • HoRain云--Claude Code 开发配置
  • Meta:智能体自主发现高效混合架构
  • 告别打印插件!纯前端JS调用斑马打印机打印二维码的保姆级教程(附ZPL指令详解)
  • 安徽广告道闸服务商大揭秘,2026年05月口碑之选在此,升降柱/导轨伸缩门/电动悬浮门,广告道闸集成服务商选哪家 - 品牌推荐师
  • 别再硬写样式了!用uni-app的midButton属性5分钟搞定中间凸起TabBar(H5/小程序通用)
  • 3D高斯泼溅技术与GaussianSwap人脸交换系统解析
  • Vivado秒表进阶玩法:如何给你的FPGA计时器增加小数点显示和时分秒格式切换?
  • 网络排障不求人:手把手教你配置中兴ZXR10-3928A的端口镜像(附完整命令)
  • 2026年美国留学中介哪家好,机构排名推荐与选机构避坑全流程指南 - 环球新视野