思越木结构|C语言的前世今生(图)

前言

C语言虽然提供了很多低级处理功能,但仍然保持了良好的跨平台特性。以标准规范编写的 C 语言程序可以在许多计算机平台上编译,甚至包括一些嵌入式处理器(MCU 或 MCU)。MCU)和超级计算机等操作平台。

1980年代,为了避免各个开发者使用的C语言语法存在差异,美国国家标准局为C语言建立了一套完整的国际标准语法,称为ANSI C,作为C语言的初始标准。 . .

发展历程

C语言之所以命名为C,是因为C语言源于Ken Thompson发明的B语言,而B语言又源于BCPL语言。

1967 年,剑桥大学的 Martin Richards 简化了 CPL 语言,产生了 BCPL(基本组合编程语言)语言。

1960年代,美国AT&T贝尔实验室(AT&T Bell Laboratory)的研究员Ken Thompson无事可做,手痒痒的,想玩自己编的一个电子游戏来模拟在太阳下航行系统 – 太空旅行。他背着boss,找到了一台闲置的机器——PDP-7。但是这台机器没有操作系统,游戏需要用到操作系统的一些特性,于是他着手为PDP-7开发操作系统。后来,这个操作系统被命名为——UNIX。

1971 年,同样热爱太空旅行的 Dennis M.Ritchie 加入了 Thompson 的开发项目,开发 UNIX,以便更早地玩游戏。他的主要工作是改造B语言,使其更加成熟。

1972年,美国贝尔实验室的DMRitchie终于在B语言的基础上设计了一种新的语言。他把BCPL的第二个字母作为语言的名称,也就是C语言。

1973年初,C语言主体完成。Thompson 和 Ritchie 迫不及待地开始用它彻底重写 UNIX。至此,编程的乐趣让他们彻底忘记了“太空旅行”,投身于UNIX和C语言的开发。随着UNIX的发展,C语言本身也在不断的完善。直到今天,各种版本的 UNIX 内核和外围工具仍然使用 C 语言作为主要的开发语言,并且很多都继承了 Thompson 和 Ritchie 的代码。

语言特点 高级语言:它是一个工作单元,它结合了高级语言的基本结构和语句与低级语言的实用性。结构化语言:结构化语言的显着特点是代码和数据的分离,即程序的每一部分除了必要的信息交换外,都是相互独立的。这种结构化的方式可以使程序层次清晰,易于使用、维护和调试。C语言以函数的形式提供给用户,易于调用,并有多种循环和条件语句来控制程序的流程,使程序完全结构化。代码级跨平台:由于标准的存在,几乎相同的C代码可以用于多种操作系统,如Windows、DOS、UNIX等;它也适用于多种型号。C语言在需要硬件操作进行编写的场合,优于其他高级语言。使用指针:可以直接在硬件附近进行操作,但是C的指针操作是不受保护的,这也给它带来了很多不安全的因素。C++在这方面做了改进,保留了指针操作的同时增强了安全性,得到了部分用户的支持。但是,由于这些改进增加了语言的复杂性,因此也受到了其他人的批评。Java吸取了C++的教训,取消了指针操作,也取消了C++改进中的一些争议点。在安全性和适用性方面取得了不错的成绩,但它自己的解释是,它运行在虚拟机中,运行效率不如 C++/C。一般来说,C、C++、java被视为同族语言,长期占据程序使用榜前三名。

优势

1、简单、紧凑、灵活、方便

C语言只有32个关键字和9个控制语句。该程序以自由形式编写,并且区分大小写。将高级语言的基本结构和语句与低级语言的实用性相结合。C语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机中最基本的工作单元。

2、 运算符丰富

C语言的运算符范围很广,一共有34个运算符。C 语言将括号、赋值和强制类型转换视为运算符。因此,C语言的运算类型极其丰富,表达式类型多样化。各种运算符的灵活使用,可以实现其他高级语言难以实现的运算。

3、丰富的数据类型

C语言的数据类型有:整数、实数、字符、数组、指针、结构体、联合体等,可以用来实现对各种复杂数据结构的操作。并引入了指针的概念,使程序更高效。

4、表达灵活实用

C语言提供了多种运算符和表达式值的方法,可以通过多种方式获得问题的表达式,其程序设计更加主动灵活。它的语法限制不那么严格,程序设计的自由度很大,比如对整数、字符数据和逻辑数据都是通用的。

5、允许直接访问物理地址以在硬件上操作

由于C语言允许直接访问物理地址,可以直接对硬件进行操作,所以它既有高级语言的功能,也有低级语言的许多功能,可以像汇编语言一样对位、字节和地址进行操作。,而这三个是计算机最基本的工作单元线程标识符 有什么用,可以用来编写系统软件。

6、生成的目标代码质量高,程序执行效率高

C语言比汇编语言描述问题的速度更快,工作量更少,可读性更好,易于调试、修改和移植,代码质量与汇编语言相媲美。C 语言的效率一般只比汇编程序生成的目标代码低 10% 到 20%。

7、良好的便携性

C语言的C编译器在不同机器上86%的代码是公开的,所以C语言的编译器易于移植。在一个环境中用 C 语言编写的程序无需修改或稍加修改即可移植到另一个完全不同的环境中运行。

8、富有表现力

C 语言具有丰富的数据结构和运算符。包含各种数据结构,如整数类型、数组类型、指针类型和联合类型等线程标识符 有什么用,用于实现对各种数据结构的操作。C语言有34个运算符,范围很广。各种算子的灵活运用,可以实现极难的操作。

C语言可以直接访问硬件的物理地址,可以进行位操作。结合了高级语言和低级语言的许多优点。

它不仅可以用来编写系统软件,还可以用来开发应用软件,已经成为一种通用的编程语言。

此外,C语言具有强大的图形功能,支持多种显示器和驱动程序。并且计算功能和逻辑判断功能强大。

缺点

1、 C语言的缺点主要表现在对数据的封装上,这使得C在数据安全方面存在很大的缺陷,这也是C和C++的一大区别。

2、 C语言的语法限制不是太严格,变量的类型约束也不是很严格,影响程序的安全性,不检查越界数组下标。从应用的角度来看,C语言比其他高级语言更难掌握。换句话说,对于使用C语言的人来说,需要更加精通编程。

C11新功能

对齐处理(Alignment)标准化(包括_Alignas标志、alignof操作符、aligned_alloc函数和头文件)。_Noreturn 函数标志,类似于 gcc 的 __attribute__(noreturn)。_通用关键字。多线程(Multithreading)支持,包括:_Thread_local 存储类型标识符,;头文件,其中包含线程创建和管理功能。增强的 Unicode 支持,基于 C Unicode 技术报告 ISO/IEC TR 19769:2004,它增强了 Unicode 支持。包括为 UTF-16/UTF-32 编码添加 char16_t 和 char32_t 数据类型,提供包含 unicode 字符串转换函数的头文件。删除gets() 函数并将其替换为一个新的、更安全的函数gets_s()。增加了边界检查函数接口,定义了新的安全函数,如fopen_s()、strcat_s()等。添加了更多浮点处理宏。匿名 struct/union 支持,在 gcc 中早已存在,C11 将其引入标准。静态断言,_Static_assert(),在 #if 和 #error 被解释后处理。新的 fopen() 模式,(“…x”),类似于 POSIX 中的 O_CREAT|O_EXCL,更常用于文件锁定。添加了 quick_exit() 函数作为终止程序的第三种方法。当 exit() 失败时,可以进行最少的清理。_Atomic 类型修饰符和头文件。添加了 quick_exit() 函数作为终止程序的第三种方法。当 exit() 失败时,可以进行最少的清理。_Atomic 类型修饰符和头文件。添加了 quick_exit() 函数作为终止程序的第三种方法。当 exit() 失败时,可以进行最少的清理。_Atomic 类型修饰符和头文件。

经典笑话

《美女同学》

偶然在班上看到一位美女同学的C语言课堂笔记:

int – 外观变量

“牛肉干”

C语言课上,一个女同学偷偷吃牛肉干。

一粒牛肉在键盘上干涸,卡在了 7 和 8 键之间。

女同学就在键盘上挖挖挖挖……

程序中的一行代码变成了这样:

int *pa=&*&*&*&*&*&*&*&*&*&*&*&*&*& *&*&*&*&*&*&*&*&*&* &一个;

最终结果是

————程序编译成功,运行结果正确!

《谁动了我的女朋友?》

一个男同学写C程序代码。

有这样一条线…

女朋友 my_Girlfriend_1;

一个男同学在编辑代码的时候,不小心把名字里的“我的”敲掉了,所以代码变成了:

女朋友_Girlfriend_1;

按“编译”按钮…

编译器喊道:

错误:老兄!那是 *MY* 女朋友,不是你的!

“微软的编译器”

有一次,一个男同学向一个女同学炫耀:“我好久不用微软的‘首席IDE’了,我用CL直接在命令行编译程序!”

后来,女同学尝试这样做,但她不记得命令是什么。她只记得第二个字母是“L”。

她想知道… GNU 的编译器是 gcc,它以字母 g 开头…

那么,这个微软编译器应该以字母 M 开头!

于是,她在命令行中输入:

C:\>ML…..

一旁的男同学看到了,满头大汗……

“一劳永逸的终极解决方案”

两个学生争论如何为 for 循环括号中的第三个表达式写“更好”。

坚持 i++。

B 坚持 ++i。

这时,C来了,听了他们的争论后,不屑的说道:

“嘿——不是这样写的!”

+我+

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论