网站首页 > 技术文章 正文
在Reddit上有个提问:
为什么有这么多以字母 “C” 为开头的编程语言?
题主从4个月前开始学习编程,对编程语言的数量印象深刻,但后来他意识到有很多字母为“C”的编程语言,例如:C、C++、CSS、Objective-C……这是为什么呢?
这些名字虽然看着像一家人,但其实各有各的故事。
今天我们就来聊聊,这些语言的名字到底是怎么来的,它们之间又有什么关系呢?
从B到C:C语言的诞生
故事要从20世纪60年代的一门语言BCPL讲起。
这是一种早期的系统编程语言,名字听起来很学术,而它也确实为后来的编程语言打下了基础。
后来,BCPL被简化成了B语言。
B是Ken Thompson和Dennis Ritchie在贝尔实验室开发的,主要用来编写Unix系统。
但很快,B就显得有些吃力了,于是Dennis Ritchie又在B的基础上开发了C语言。
至于为什么叫 C?原因特别简单:
因为C是字母表里排在B后面的字母,就这么随意。但这随意的命名,却开启了编程语言历史上的一个新篇章。
C和C的后代
C语言凭借其高效、简洁、贴近硬件的特点,成为了一代经典,也成了许多编程语言的“祖宗”。接下来,让我们看看那些以C为名的“后代”们。
1. C++:C的进化版
C++是由Bjarne Stroustrup在1980年代开发的。它基于C,但加入了面向对象编程(OOP)的特性,解决了C在开发大型软件时的一些短板。
至于名字,C++里的 “++” 是C语言中的自增运算符,意思就是“比C更进一步”。可以说,这个名字既geek又直白。
2. C#:更高一级的C
C#是微软开发的语言,专门用来构建Windows应用程序和企业级软件。
它的名字读作 “C Sharp”,源于音乐中的升音符号#,寓意“比C更高一级”。
也有一种说法是,C#的名字来源于 “C++++”,四个加号组成了一个“#”。不管是哪种解释,这个名字确实很有创意。
3. Objective-C:目标导向的C
Objective-C是由Brad Cox和Tom Love开发的,它在C的基础上增加了面向对象的特性,是苹果macOS和iOS开发的主要语言之一。
它的名字虽然听起来冷峻又正式,但其实就是“目标导向的C”。可以说,Objective-C是C的“苹果特别版”。
4. Carbon:C++的新挑战者
2022年,Google发布了一种名为Carbon的语言,目标是解决C++的一些问题,同时与C++保持兼容。
虽然名字里没有直接出现“C”,但它显然是受到了C和C++的启发。
那…CSS 又是什么?
这名字看着像是C家族的一员,但其实完全不沾亲带故。CSS的全称是Cascading Style Sheets,意思是“级联样式表”,用来定义网页的外观和布局。
它名字里的 “C” 代表的是Cascading(级联),而不是C语言。可以说,CSS是个“撞名”的无关亲戚。
有人调侃“A生B,B生C,C生万物”,C语言可以说是编程史上的里程碑。
无论是C++、C#,还是Go和Rust,这些语言或多或少都继承了C的思想——简洁、高效、贴近硬件。
学习编程的第一步,或许就在C语言。
猜你喜欢
- 2025-09-01 C语言重要吗?_c语言重要吗计算机专业
- 2025-09-01 2024 年顶级 C# 面试问题和答案_c#面试题及答案2020
- 2025-09-01 C#调用C++编写的DLL需要通过P/Invoke机制实现
- 2025-09-01 掌握 C# 和 .NET:常用术语与概念_c#.net教程
- 2025-09-01 C++ .NET与C# .NET:谁才是.NET开发的“真香”选择?
- 2025-09-01 是C++好,带GC的Java、C#好?还是Rust好?
- 2025-09-01 为什么有人一直喜欢 C 而不喜欢 C++?
- 2025-06-08 深入理解C#,首推这六本书(c#入门经典书籍)
- 2025-06-08 C语言有何意义(c语言的含义)
- 2025-06-08 Java、C语言、C++、Python等编程该选哪一个
- 最近发表
-
- 用Cursor开启JAVA+AI生涯_javascirpt怎么开启
- 大数据调度服务监控平台_大数据调度是什么意思
- SpringBoot、MyBatis、Vue搭建一个Java企业应用开源框架源码分享
- 大数据技术之Flume_大数据volume的含义
- Jenkins运维之路(Slave容器节点)_jenkins slave工作原理
- 程序员自救指南:IDEA 卡成狗?我的 9G 堆内存调参表让你起飞 附避坑
- JMeter:一个简单的测试计划怎么做?
- Windows 命令行终端 PowerShell 美化计划
- JDK25即将发布!新特性概览_jdk52.0
- JDK 25 新特性极简总结(2025 年 9 月 16 日发布,LTS 长期支持)
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (77)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)