C的实用笔记1——认识程序、计算机语言

目录

一、什么是程序?

二、程序怎么来的?

三、什么是计算机语言?

一、什么是程序?

  1. 认识计算机程序(软件)

    1. 传统电脑PC领域:PC上的程序大致可以分为三种情况
      1. 应用:比如QQ,游戏,Windows系统上位机,等。针对Windows系统上位机开发(比如设计界面控制智能家居),我们也有许多开发语言(括号中是它们的库): C++ (MFC、QT);Java(Swing);C#;Python(pyqt,即python结合qt);C(Gtk,Minigui)。
      2. 操作系统OS内核、手机安卓系统:开发语言是C语言、汇编。可见C的主要作用体现在操作系统领域。
      3. 后端服务器代码:比如淘宝、学生登录管理系统:开发语言有很多,比如,Java(市场需求大);PHP;Go(大数据);C#
    2. 嵌入式领域:按照功能需求的递增,简略介绍三种情况
      1. 80C51单片机:智能小车(循迹、避障、红外等),刷卡门禁等。
      2. STM32单片机:无人机,两轮平衡小车等。
      3. ARM高级(带Linux内核):手机上的程序(操作系统、各种app、微信小程序),智能终端(酒店送餐机器人、人脸识别、蜂巢快递柜等)。
  2. 程序的定义:沃思(Nikiklaus Wirth)提出“数据结构+算法=程序”。举个简单的例子就是算账,算账时各个账目就是数据结构,账目里有许多数据,我们搜集好数据后统一进行处理,处理的方法就是算法。
    1. 数据结构:数据结构=数据类型+数据组织方式
      1. 数据类型:程序中可能用到许多不同类型的数据,比如整型、字符型、浮点型、数组、结构体、共用体等等
      2. 组织方式:即数据结构,比如队列、栈、链表、树、图等
    2. 算法:算法是对操作的描述,不同的算法,它们结果可能相同,但是效率上会有差异
      1. 逻辑性算法:推理演绎的过程,程序员根据事物的规律进行写代码,比如天黑了就要打开电灯,看到红灯就要停下来等。
      2. 数学数据型算法:
        1. 简单的:比如
          1. 计算1加到100的和
          2. 计算两个正整数的最大公因数
        2. 复杂的:比如
          1. 音视频处理
            1. 维纳滤波算法
            2. AEC、AGC、NS算法
            3. 频谱泄露
          2. PID算法、模糊PID算法、人工神经网络等算法
  3. 进程/任务:程序分为静止的和动态的,跑起来的程序叫做进程,这是个动态概念,比如打开我们电脑上的任务管理器,里面就有许多进程,这些跑起来的程序会占用CPU、内存、磁盘、网络等。

二、程序是怎么来的?

总体来说分为三大部分:编辑、编译、运行。

                         ①编辑: 源程序(程序员编辑的,以文件形式存在,C程序的扩展名为“.c”)

                                                                         ↓

                         ②编译: 编译预处理(此过程中检查所有内容,将.c转化为.exe)

                                                                         ↓ 

                         ③运行:执行程序(是二进制形式的文件,扩展名为“.exe”)

这里重点介绍C语言的编译的过程:它分为四个部分

  1. 预处理:将.c文件处理为.i文件(.i文件是预处理之后的文件
    1. 找到.c中#include的头文件,头文件中包括一些全局变量以及函数的声明,将其进行展开替代#include这句话
    2. 将宏定义进行替换
  2. 编译:将预处理后生成的.i文件生成.s文件(.s文件是汇编文件
  3. 汇编:将编译后生成的.s文件生成.o文件(.o文件是目标文件,是二进制形式的文件)
  4. 链接:将汇编后的.o文件链接成.exe文件(.exe文件是可执行文件,也是二进制形式的文件)
    1. 如果程序中有多个.c文件,那么编译器会经过前面3步,将每一个.c生成对应的.o文件,在最后一步,将所有的.o文件链接成一个可执行程序

我们可以使用Linux环境下的GCC编译器来查看C语言的上述编译过程(下一节会讲gcc指令):
              
 :当有多个.c时
    a)要依次经过上述步骤将每一个.c生成.o文件;
    b)最后将所有生成的.o文件链接,步骤为上述第4步将多个.o用空格隔开,比如:
            gcc hello.o main.o max.o -o main      (这里hello.o、main.o、max.o是我们经过前3步得到的汇编文件,最后统一将它们链接在一起成为一个可执行文件)

 三、什么是计算机语言?

简单来说,发明计算机语言就是为了让人能和机器交流。它的发展经过三个阶段:

  1. 机器语言:人们编辑程序的方式就是通过打孔与不打孔,让机器区别1和0
  2.  符号语言:汇编,人们通过将一串二进制形象化地记为一个符号,这个符号代表这一条指令,比如ADD就是加,SUB就是减
  3. 高级语言:这是接近于人类的语言,我们通常可以分为两种
    1. 面向过程:这是一种结构化的语言,我们之后写C语言就要培养结构化程序的思维,将一个源文件分为多个c文件和多个h文件(头文件),在其中进一步建立各种函数,它们代表不同的功能。
    2. 面向对象:涉及到类的概念,比如C++、Java、PHP、C#都是面向对象语言,能够制作很多具有良好人机交互功能的计算机程序。       

                

                
                    
                    



    

        
        
        
        

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值