Linux C一站式编程(第一章 程序的基本概念)

  • 编写程序可以说就是这样一个过程:把复杂的任务分解成子任务,把子任务再分解成更简单的任务,层层分解,直到最后简单得可以用以上指令来完成。

  • 语言的发展历程:机器语言(查表)—— 助记符(Mnemonic),汇编语言(Assembly Language),让汇编器(Assembler)去查表把助记符替换成数字,也就把汇编语言翻译成了机器语言——高级语言,需要编译器(Compiler)

  • C语言是可移植的(Portable)或者称为平台无关的(Platform Independent),平台这个词有很多种解释,可以指计算机体系结构(Architecture),也可以指操作系统(Operating System),也可以指两者的组合。不同的计算机体系结构有不同的指令集(Instruction Set),可以识别的机器指令格式是不同的,直接用某种计算机的汇编或机器指令写出来的程序只能在这种计算机上执行,然而各种计算机上都有C编译器,可以把C程序编译成该计算机自己的(Native)机器指令,这意味着用C语言写出来的程序只需要稍加修改甚至不用修改就可以在不同的计算机上编译执行。各种高级语言都具有C语言的这些优点,所以绝大部分程序是用高级语言编写的,只有和硬件关系密切的少数程序(例如驱动程序)才会用到低级语言。(理解:平台无关性取决于编译器能否翻译成对应平台/机器的指令集)

  • 编译:source code —— Object Code目标代码(Executable Code,可执行代码是目标代码的一种)(机器代码)

  • 解释(Interpret):由运行解释器(Interpreter)执行该源代码,解释器是一行一行地翻译源代码,边翻译边执行的

  • 编程语言的发展演化:器语言称为第一代语言(1GL,1st Generation Programming Language),汇编语言称为第二代语言(2GL,2nd Generation Programming Language),C、C++、Java、Python等可以称为第三代语言(3GL,3rd Generation Programming Language)。目前已经有了4GL(4th Generation Programming Language)和5GL(5th Generation Programming Language)的概念,主要区别在于,4GL以后的语言主要不是通过输入、输出、基本运算、测试分支和循环这些基本指令来编程的,4GL以后的语言更多是在描述要做什么(Declarative)而不是描述具体一步一步怎么做(Imperative),具体一步一步怎么做完全交由编译器或解释器决定,例如SQL语言(SQL,Structured Query Language,结构化查询语言)就是这样的例子。(第一代至第三代是:bottom-up;第四代是: up-bottom)

  • 编译型语言与解释型语言的比较
    (编译型更加快,运用资源少;不过在安全性,改bug等其他方面不行)

  • RunTime Error:运行时错误,能够生成目标代码,但运行时会出错。


  • 编译指令:gcc 选项 参数

gcc 源文件:编译并且输出目标代码,默认为a.out
gcc 源文件 -o 目标文件:指定生成的输出文件

猜你喜欢

转载自blog.csdn.net/lansehuanyingyy/article/details/81346453