C语言【基础篇】之初识C语言——开启编程之旅

202 阅读10分钟

1.引言

大家好!我是EnigmaCoder。本文为我的专栏 [C语言]的开篇之作,如果您喜欢,可以订阅本专栏,我将持续更新,感谢您的支持!

  • 对于很多程序员来说,C语言就像游戏里的新手村,需要不断打怪升级,夯实编程基础,然后一步一步成为顶尖大佬。
  • 在我看来,C语言的学习分为基础语法以及项目实战两部分,基础语法就是你的武器,通过不断的打怪(也就是刷题)来积累经验进行升级,最后打败boss(项目实现)完成通关。

2. 编程语言的发展

——正如我国汉字历经漫长演变,从开始的甲骨文篆书隶书,最后发展为如今的楷书。编程语言也是类似的,从最初的机器语言逐渐演变到如今简洁高效的高级语言。汉文的甲骨文正好可以对应编程语言里的机器语言,都是很基础且难以理解的存在。但它们都为各自的领域奠定了基石,为语言的发展做出了突出贡献,意义重大。篆书、隶书正好对应汇编语言,它们是过渡阶段,在保留一定底层特性的同时,开始向更易理解的方向发展。楷书如同高级语言,让交流和表达变得更加便捷高效,极大地推动了信息传播和应用开发。接下来,我们详细讲述编程语言发展史。

  • 2.1 机器语言

    • 定义:机器语言是一种由二进制代码(由01组成)表示的、计算机硬件能够==直接识别和执行==的低级程序设计语言。

    • 特点

      • 直接执行性:由于机器语言能够被计算机硬件直接识别和执行,没有中间转换和解释的开销,使得机器语言程序在执行速度上有很大优势,能够充分发挥计算机硬件的性能。常常应用在对性能要求极高的场景,如航空航天、高端游戏引擎等,以确保系统高效稳定运行。
      • 不可移植性:不同型号、不同架构的计算机,其机器语言指令集是不同的,因此机器语言程序不可移植
      • 难以理解和编写:计算机语言以二进制形式呈现,人类很难理解编写,难度极大,且容易出错,开发效率也极低。使用机器语言的程序员必须记住每一组二进制数对应是什么指令,大大增加工作难度。
    • 组成:机器语言由操作码操作数组成。操作码是机器语言指令中用于指定操作类型的部分,它告诉机器计算机要执行怎么样的操作,如算术运算、逻辑运算、数据传输、程序控制等。而操作数是机器语言指令中用于指定操作对象的部分,它告诉机器操作码所指示的操作要作用于哪些数据或地址。

    • 小结 :机器语言至今仍然有广泛的应用领域,比如操作系统开发、嵌入式系统、驱动程序开发等等,其在安全性、性能优化上有着很大优势。但是正如前文所说,机器语言晦涩难懂,程序员需要精准记住一串二进制指令,稍有差池便会出错,导致开发效率低下。随着计算机技术的发展和人们需求的提升,这种情况急需改变,于是汇编语言应运而生。

  • 2.2 汇编语言

    • 汇编语言就像机器语言和人类程序语言之间的一座桥梁,用助记符代替了繁杂的二进制操作码,让程序员能够以更直观、更易于理解的方式编写程序。从机器语言到汇编语言的转变,不仅仅是代码形式的变化,更是计算机编程领域迈向高效发展的一步。

    • 定义: 汇编语言是一种低级编程语言,介于机器语言与高级语言之间。它用助记符符号地址代替机器语言的二进制代码,使程序更易于编写和理解。 在这里插入图片描述

    • 特点

      • 易读性:相比机器语言的二进制,汇编语言用助记符表示操作码,如“MOV”表示数据传输,让程序员更容易理解指令含义。
      • 硬件相关性:针对特定计算机架构设计,能直接控制硬件,实现高效操作,但缺乏可移植性。
      • 执行效率:接近机器语言,可充分利用硬件特性,优化程序性能,常用于对性能要求极高的场景。
    • 组成

      • 指令:由操作码和操作数组成,操作码用助记符表示操作类型,操作数指定操作对象,如寄存器、内存地址或立即数。
      • 伪指令:用于汇编过程中的辅助操作,如定义数据、分配存储空间、指定程序入口等,不直接转换为机器指令。
    • 小结: 汇编语言是连接人类思维与计算机硬件的桥梁,能实现对硬件的精细控制和高效操作,在操作系统、驱动程序开发及性能优化等领域不可或缺,是计算机科学的重要基础。但与机器语言相同,汇编语言仍然缺乏可移植性,其受硬件束缚,开发复杂程序时效率欠佳。随着计算机应用场景不断拓展,人们渴望更便捷强大的编程工具。于是,高级语言登上舞台,它屏蔽底层硬件细节,以简洁语法和丰富功能,让编程变得更高效、灵活,开启了软件发展的新篇章。

  • 2.3 高级语言

    • 高级语言是一种相对接近人类自然语言和数学表达式且独立于计算机硬件的程序设计语言。其诞生初期是在二十世纪五十年代,世界上第一个高级程序设计语言是由IBM公司于1954年推出的FORTRAN。之后便陆续出现了语法接近英语自然语言的COBOL,以及本文的主角——C语言。再后来高级语言进入蓬勃发展期,陆续出现了许多不同的高级语言。
#include<stdio.h>
int main()
{
    printf("Hello,world!");
    return 0;
}    
  • 2.4 归纳

语言类型定义特点组成
机器语言一种用二进制代码(由0和1组成)表示的、计算机硬件能够直接识别和执行的低级程序设计语言1. 直接执行,效率极高
2. 与硬件紧密相关,不同计算机的机器语言不同
3. 难理解、难编写和调试
操作码和操作数,操作码指示计算机执行的操作,操作数是操作的对象,可能是数据或数据存储地址
汇编语言用助记符代替机器语言的二进制操作码的低级程序设计语言,需要通过汇编器将汇编代码转换为机器语言才能被计算机执行1. 比机器语言易理解和编写,但仍较复杂
2. 对硬件有较强的依赖性,可移植性较差
3. 执行效率较高
由助记符表示的指令、伪指令和宏指令等组成。助记符指令对应机器语言的操作码,伪指令用于告诉汇编器如何进行汇编工作,宏指令是用户自定义的指令
高级语言一种相对接近人类自然语言和数学表达式,且独立于计算机硬件的程序设计语言,需通过编译器或解释器转换为机器语言才能在计算机上运行1. 语法简洁直观,接近自然语言,易于理解和编写
2. 高度抽象,对硬件细节进行封装,可移植性强
3. 有丰富的数据类型和强大的程序控制结构,编程效率高
由数据类型、运算符、表达式、语句(如赋值语句、条件语句、循环语句等)以及函数等组成 ,通过这些元素实现各种复杂的算法和逻辑功能

3. 什么是C语言?

在我看来,学习一门编程语言之前,我们应该先弄清楚这门语言的由来、发展以及前景,我们才能抱以更大的热情进入学习中。

  • 3.1 由来

    • 你肯定想不到,在==C语言==之前,还有一个B语言 。1970 年,肯·汤普森基于BCPL语言开发出了B语言,用于UNIX系统的早期开发。然而B语言存在不足,于是在1972 年,丹尼斯·里奇在B语言基础上进行创新,C语言就此诞生。他也被称为“C语言之父”。 丹尼斯·里奇
  • 3.2 发展

C语言的设计目标是提供一种高效、可移植和易于使用的编程语言。它结合了高级语言的结构化特性和低级语言的实用性,使得程序员能够用更少的代码完成复杂的任务。这种语言的特点使其在计算机科学领域迅速得到广泛应用,成为操作系统、编译器、数据库、网络应用和游戏等多种类型软件开发的首选语言

随着技术的不断发展,C语言也经历了多个版本的更新和完善。从最初的K&R C到后来的ANSI CISO C,再到最新的C17和即将发布的C23标准,C语言不断引入新特性和改进,以适应新的计算机技术和应用领域。这些更新使得C语言更加现代化、灵活和高效。

如今,C语言在嵌入式系统、高性能计算、系统级编程等领域仍然占据主导地位。同时,它也对其他现代编程语言产生了深远影响,是学习计算机科学的重要基础语言之一。随着物联网、大数据和人工智能的快速发展,C语言的需求将继续增长,其在未来编程领域中的地位也将更加重要。

在这里插入图片描述

  • 3.3 前景

    C语言的前景依然广阔。作为操作系统开发、嵌入式系统、游戏开发以及数据库管理系统等领域的重要编程语言,C语言凭借其对硬件的直接控制能力、高效的内存管理和底层操作特性,保持着不可替代的地位。随着物联网、人工智能等新兴技术的快速发展,对底层编程语言的需求持续存在,C语言在这些领域中的应用也将进一步拓展。此外,C语言是许多现代编程语言的基础,学习C语言有助于深入理解计算机底层工作原理,对其他编程语言的学习也有积极促进作用。 在这里插入图片描述

4. 首选C语言的好处

  • C语言是许多现代编程语言的基础,学习C语言可以深入理解编程的基本概念和原理,如变量数据、结构控制结构等为后续学习其他语言打下坚实的基础。

  • C语言允许直接访问内存和硬件,学习C语言可以让初学者更深入的了解计算机底层的工作原理,有助于理解操作系统、计算机网络等高级课程。

  • C语言编程需要严密的逻辑思维和问题解决能力,通过编写程序初学者可以锻炼自己的思维,提高解决问题的能力。

5. 总结

本文作为C语言的引入,讲述了编程语言的发展、什么是C语言以及将C语言作为首选语言的好处,接下来的篇章,我将会讲解C语言的基础语法,希望能帮助到您。