潍坊市论坛

注册

 

发新话题 回复该主题

是什么能够使C语言这么强大字节程序员编程 [复制链接]

1#

其实编程语言就像个动物世界,弱肉强食。而C语言存在了这么久,还一直在发展,总归有它的原因,那是什么使它能够这样呢?

简短答案:它是由专业人士创建和开发的,旨在解决他们在年代末/年代初遇到的一个问题,事实证明,很多人都遇到了同样的问题。他们将所需的内容放入其中,而忽略了不需要的内容。但是40多年后C的长期保持能力,对原始概念的几乎没有任何变化,这表明设计师们做对了。

更长的答案:现代C语言的力量来自于许多不同的技术功能,而这些页面中没有探讨其他功能。但是,您的问题背后的真实真相来自其历史。

也许C语言(以及C++,C#,D等)并不是很好的教学语言。但是,正如那样,当您学习驾驶飞机时,飞行学校并不会帮助您开始。他们将您带到PiperCub或小型单引擎塞斯纳(Cessna)中,一旦您理解了这些概念,便可以尝试喷射。

也就是说,在设计和最初实现C时,Ken和Dennis已经是我们现在所说的“忍者程序员”。因此,他们希望/需要专业的工具来帮助他们完成工作,而不是减慢工作速度或试图使他们避免犯很多简单的错误。

当肯·汤普森(KenThompson)为面向单词的PDP-7创建B编程语言时,他正在(自己)构建一个工具来帮助他编写操作系统(Unix)。他需要“比汇编程序更好”的东西,但并没有尝试创建世界上最伟大的编程语言。几年后,丹尼斯(Dennis)将语言迁移到面向字节的PDP-11时,需要对B进行重新考虑,然后他创建了newB(NB),在看起来有些不同之后,它最终被重命名为C。事实是,丹尼斯(Dennis)在年的一篇论文中描述的语言与我们今天使用的思想相同!

正如其他人所说,语言本身很简单。原始语言支持四种基本数据类型:面向字节的字符,面向字的整数,浮点数和指向所有先前相同字符的地址指针。这些是硬件支持的相同基本数据类型,因此它们直接映射到汇编器/机器语言。是的,我们会及时添加更多类型的语言,但不会真正改变自然顺序-它们映射到程序员所需硬件中的数据类型。

该语言支持全局和范围内变量的命名,以及它们在结构上的分组。它支持if/then/else的传统Algol样式控制结构以及循环的计算结构(

也称为

switch/case语句)。运算符是传统的运算符,但是还包括汇编/系统人员喜欢了解的一些内容-内置函数,如

sizeof

()和自动指针算法。加号C包含早期退出循环(继续,下一个循环)之类的想法,是的,甚至包含goto。这些都是Ken和Dennis这样的“系统程序员”在日常编程中使用的所有东西。

当然其实还有很多原因,就比如:预处理器的想法以及对单独编译的全面支持。尽管它不是该语言的最早版本,但前者帮助使程序开始“可移植”并被编写为某种程度的本地化,无论是系统偏好设置还是目标系统都可以轻松容纳。只是大概和您从历史原因大概去说下。

然后因为周末了,祝大家周末快乐!小编也许很多写的不好的地方,还希望多多体谅。

预览时标签不可点收录于话题#个上一篇下一篇
分享 转发
TOP
发新话题 回复该主题