主题:IT教师手记--软件 -- redbud
(欢迎大家多提意见啊,帮我找例子啦,这个就是我讲课讲稿的框架,我发现写出来再去讲会好多了,反正我写中文的,半个小时就能写好一篇)
其实软件是一个非常有意思的话题,虽然基本,却也不是那么容易讲清楚,记得大学时回家,刚学了计算机,爸爸问我一个问题,你在学计算机,都学了什么,其时在学编程,Fortran好像,我居然一句话都答不上来,晕死。爸爸说,你这个大学生还不如我,我最起码知道操作系统,那时他为单位买了台计算机。
很多年后,我开始教课,逼着自己要把以前的知识全部理一遍还要加例子,不得不狂补课。
要说软件是什么呢?word,ERP, CRM, Windows, Android,他们都是干什么的,指令,全部都是指令,一条手机里据说有2百万条指令,指令做什么呢?告诉计算机去替你干活,你怎么样让你家的小狗学会wee wee,去训练它,对吧,怎么让你的计算机替你干活,你告诉它,帮我打印一份文档,它会回应吗?NO Way,他是冷的,没有生命的,他只懂得二进制的代码,所以呢,你要让你的计算机替你干活,必须要告诉一些能够让它懂得的语言,这就产生了一系列的编程语言,所有编程语言的目的就只有一个呢,就是通过指令和代码,让硬件理解你的需求,完成你所想要达到的目标。例子若干......,如果让你的销售系统打印一份销售报表,如果打印一份工资单,编程让计算机能够懂得你。
可是计算机语言和人的语言差别太大了,所以软件的发展历史,就是一个计算机语言和人的语言互相沟通和理解的过程,好像谈恋爱一样,互相了解么。
第一代计算机语言是比较笨拙的,人是很难理解的,全部是00101010这的二进制代码,oh,oh, it's totally above my head. How can I read these weird codes? 1940年出现的这种语言,只有少数人才能懂呢,接着呢,大家就开始想办法了,想什么办法,怎么才能读懂这些代码呢,让更多人可以学习这些代码,接着呢,有人就开始发明一些信号啦,比如,我用ADD代表加法这个运算,这样不是好多了吗,这就是汇编语言,当然也出现了一种介于编译汇编语言的程序,还得翻回去让机器明白,是不是。接着大家就开始想更加聪明的办法,让人这里可以对计算机说的语言越来越接近自然语言,让计算机通过其他的媒介来了解人的意思,这就产生了第三代,第四代,第五代,也就是越来越跟人类比较接近的语言了。
好了,如果了解了这个计算机语言的发展过程,你就可以知道了,要让计算机和人之间通上话,是经过一层又一层的沟通的,这一层又一层的沟通,是通过一层又一层的编译来完成的。就如同下图:
所以呢,广泛地讲,software includes all the various forms and roles that digitally stored data may have and play in a computer (or similar system), regardless of whether the data is used as code for a CPU, or other interpreter, or whether it represents other kinds of information.而有些软件直接跟硬件沟通,有些软件是作为其他软件的代理,传递信息和参数的,最终目的就是让计算机知道你要做的事情。
操作系统
所以这样就出现了直接跟硬件打交道的软件,叫做操作系统,然后再操作系统这个平台上面跟用户打交道的软件,叫做应用软件,这么着,就是operating systems+application software,构成了软件的两大主力军。
操作系统的主要作用有几个,分配资源,比如这个程序要用多少cpu,有什么用的地址,鼠标,键盘,等等都该被操作系统管着。管理任务和进程,比如同时进行excel和word,还放着音乐,那么怎么调配他们的进度,还有几个程序都同事接触一个数据库文件,如何调配数据的更新,其它还有两个功能,管理文件和数据,另外就是支持utility function,比如磁盘碎片整理,备份等等。
几大操作系统厂家,就不一一介绍了,太累了,windows,Mac OS, Unix and Linux. 目前又出现了mobile operating systems,以palm os, windows mobile, android, apple osi,这几个系统竞争,故事太长,写起来太琐碎,暂时不写了,故事很有趣。还有一个趋势是3D操作系统,[FLASH]http://www.youtube.com/v/RZcJOZC38iQ[/FLASH]
应用软件
明天写