软件 = 程序+文档 = 数据结构+算法+文档。
打个比方,软件是一件衣服,那程序就是材料。软件是由许多能实现某些固定任务的程序的集合。也就是说,软件是由许许多多的程序组合而成的。程序是由编程人员通过某种编程语言,编写出来能实现某些固定任务的代码。
可这么说,编程人员能过 通过C语言或其他某种语言,编写出一些能实现任务某些固定任务的函数,再把这些函数集合起来,通过编译程序编成软件,也就是我们通常在电脑上用的各种软件了。
软件和系统的关系:应用程序是软件,操作系统也是软件。cpu会将他们一视同仁,甚至,cpu不知道自己在执行的程序是操作系统还是一般应用软件,cpu只知道去寄存器中指向的内存取指令并执行,它不知道什么是操作系统,也无须知道。
操作系统是人想出来的,为了让自己管理计算机方便而创造出来的一套管理办法。应用程序要用某种语言编写,而语言又是编译器来提供的。其实根本就没有什么语言,有的只是编译器。是编译器决定怎样解释某种关键字及某种语法。
语言只是编译器和大家的约定,只要写入这样的代码,编译器便将其翻译成某种机器指令,翻译成什么样取决于编译器的行为,和语言无关,比如说c语言的printf函数,它的功能不是说一定要把字符打印到屏幕上,这要看编译器对这种关键字的处理。