“学”的部分
首先我们来简要了解一下,什么是操作系统。
计算机被发明出来之后,是可以直接使用的,因为计算机的功能就是快速计算嘛!和普通计算器的区别,就是计算机的计算都是二进制的而已。所以,最早发明计算机的目的就是为了科学计算。然而,随着当时的使用人员(程序员)慢慢的深入,发现数学计算可不仅仅是数学计算,很多其他的内容都可以转化成数学计算。
也是从那个时候开始,我们才真正明白,数学为什么是基础科学,因为世界上几乎所有的事物都可以转化成数学计算。最早的时候,程序员们解决了屏幕显示的问题,成功把显示转化成了数学计算。后来,随着研究的深入,各种各样的模拟都变成了数学计算。随着计算机的功能被开发得越来越多,程序员们发现了一个非常严重的问题:
计算机功能太多太复杂了,一个人想从零开始学习,可能需要花费半辈子的时间,实在是太耗时间了。
但是,计算机的这些功能都具有划时代的意义,可不能因为难学就抛弃掉。
后来,程序员们真的想到了一个折中的办法:设计一个中间程序,把使用计算机功能的那些非常繁琐的、晦涩难懂的部分提前写好,这样,这个复杂难用的功能一下子就简化了。
这个中间程序就是操作系统最初的形态,它把所有纷繁复杂的东西提前处理好了,让我们可以非常方便地使用计算机那强大的功能。随着时间的推移以及程序员们的经验累积,人们越发觉得这个中间程序的重要性,如果没有这个中间程序,他们眼前的计算机就是一台大型的废铁了(因为他们并不懂这个中间程序的具体编写过程)。
计算机是年诞生的,一直到70年代末,计算机的体型才变得比较小(差不多小衣柜大小),也是这个时候,计算机得到了大量的普及,各大研究机构都有一台计算机,可是,这个中间程序却越来越不尽如人意:计算机的功能越发展越多,而中间程序的编写难度是很高的。
所以,70年代末的时候,世界上终于出现了计算机系统了,也就是所谓的操作系统。
操作系统比上面的中间程序要更加完善:中间程序只是为了让我们更方便使用计算机,而操作系统不仅能方便使用计算机,还具有无限的扩展性!
什么是无限的扩展性呢?因为操作系统把所有的计算机功能分类整理,只实现了那些最最基础的功能,然后以这些基础功能为背景,再去开发新的功能。
这种打完基础再创造的方式,一直到了微软的DOS系统出来后,才被利用得淋漓尽致。你可以这样理解:
假设计算机一共有个基础功能,这些基础功能都是控制计算机某个硬件的功能,比方说控制CPU或者是内存的功能。虽然这些功能看起来很简单,可是,要用数学的方法来实现这些功能是非常不容易的,况且这个数学只是二进制的加法而已。拿DOS系统来说,它包含了这个基础功能的所有机器语言代码。作为一个程序员,只需要熟悉这个基础功能怎么用,就能写出各种各样的扩展程序了。比方说,我们要编辑文字,程序员就用这个功能给我们写了一个DOS版本的文字编辑程序。
所以,从DOS系统开始,计算机的编程语言就已经和计算机的操作系统绑定了,因为所有的计算机基础功能都是操作系统给的,如果编程语言和操作系统分开,那么,程序员就需要自己编写计算机的那些基础功能。比方说,和操作系统绑定的编程语言要在电脑屏幕上显示一张图片是非常简单的,可能一个函数调用就解决了。如果编程语言和操作系统分开,那想要显示这张图片,程序员就需要把图片变成数字,把显示控制变成数字,把屏幕也变成数字,而这些内容,都是非常高深的内容,99.9%的程序员都不知道该怎么办。
和操作系统绑定的编程语言已经非常方便了,程序员为什么非要单独写程序呢?
所以,现在的计算机编程语言,基本上都是和操作系统绑定的。比方说,Windows下有专门的编程语言,Unix下有专门的编程语言,苹果公司的Mac系统下也有专门的编程语言。不仅仅是电脑,各种便携式“电脑”也有自己的编程语言,比方说手机啊、掌上游戏机啊、各种各样的游戏主机啊等等。
我们用的最多的就是Windows系统,所以,这个课程用到的C++语言是Windows系统下的。这也是为什么,我们推荐使用微软公司的VisualStudio。毕竟Windows是他们写的,他们制作的C++集成开发环境能最大程度地使用Windows的系统功能。
总而言之,操作系统帮我们解决了非常纷繁复杂的计算机功能转化数学计算的难题,可即便如此,我们要在这个相对“简单”的平台上开发新的功能,也是非常不简单的。
“习”的部分
别看这节课好像在讲故事,但这个故事对于编程的理解有着很强的帮助作用。所以,一定要带着孩子好好学习,最好让孩子能转述这个“故事”。