软件分类
(1)裸机程序
所谓裸机程序,指的是运行在没有操作系统的计算机上的程序,早期第一代计算机程序大都是裸机的,现在的计算能力稍强一点的计算机都运行有操作系统,目前的裸机程序大部分是单片机程序。
服务器,手机,台式机,PC机都有操作系统。
(2)辅助开发的程序软件
各种编译器以及辅助开发的工具类软件(IDE:集成开发环境,把编译器和编辑器合在一起,安装运行在操作系统上)
一般来说,运行在客户端。
基本上是非裸机的,运行在操作系统上。
(3)各种函数库(SDK)
数学库、线程库、图形库、各种用途算法库等。
C语言用的是函数库(面向过程)
Java用的是类库(面向对象)
有可能是裸机的,也有可能是运行在操作系统上的。
C语言的静态库:可以裸机运行,也可以基于操作系统运行的
C语言的动态库:基于操作系统运行的
(4)操作系统
是最大的裸机软件,操作系统是直接运行在整个计算机硬件平台上的。各类操作系统,比如Windows、UNIX、Linux、IOS、MAC、安卓等,驱动是属于OS的一部分。
(5)应用程序
可能是裸机的,也可能是非裸机的
基本是基于操作系统运行的
比如,视频播放器、音乐播放器、浏览器、word/wps文档编辑器、360、QQ、微信,说到应用程序往往想到的都是客户端程序,它们其实
都对应有服务器端程序,现在已经很少有纯“单机版”的应用了。
库
库就是各种函数或者类的集合在一起的仓库,库里面的都是各种我们自己或别人做好的,方便使用的常用工具函数。
函数库分为两种,
一种是静态库,另一种是动态库。
函数库是面向过程的语言的库。
类库是面向对象的语言的库。
库、框架、SDK之间的关系
库:比如C语言的函数库、java/c#的类库
库里放的就是别人预先写好并且编译好的,一个个功能性函数或者类组成的仓库,这个函数或者类之间并没有什么关联,就是放在了一起而已。
框架:比如web三大框架,os的驱动框架等
也是别人写好并且编译好的代码,但是框架的函数或者类代码在一起,会提供一个核心功能。
SDK:SDK = 库+框架+开发工具
大量节省程序员的开发时间,快速搭建产品。
SDK有2种:
1.离散搭建出来
2.一次性提供的