在开发软件前,先说硬件。自然界有天然的特殊材料(如硅锗),他们具有单向导电性。所谓单向导电性是指:当电压低于5V时不导电,电压高于5V时导电,于是研发人员制作了二极管。
研发人员看二极管是好的,于是他们对二极管进行了重新定义:通电定义为1,不通电定义为0。 这样,一个二极管就可以表示:0,1两种状态。类推,2个二极管可以表示为:00,01,10,11四种状态。于是,研发人员把更多二极管整合在一起,芯片就产生了。
毫无疑问,如果一个芯片里集成了4个二极管,他就可以有2的4次方也就是16个状态。(本文仅是通俗解释,芯片了肯定不是二极管啦)
IBM看芯片前景无限,所以,开始生产大规模芯片,此时芯片还是以硬件为主。以4位芯片为例,可以表示16种情况,0000,0001,0010,0011...1111,IBM于是定义:
0000--表示Stop(Stop)。
0001--表示Start(开始)
0010--表示Pending(暂停)
这三个位置为IBM芯片所占用,余下13个位置留给各个软件公司使用。
(这里你就可以看到,不同的硬件公司可能定义的位置并不完全兼容,只是当时IBM非常强大,大家就用他的规则作为行业标准。)
此时,微软出来了,微软创始人比尔盖茨看芯片是好的,于是扩展芯片基本功能,他编写了一个编译器。用 0011--表示Add(加法),0100--表示Sub(减法)。
此时,汇编语言雏形就出来了。例如需要计算1+1
写成代码就是:
Start:
Add :1
Add:1
Stop
上面代码在执行时,就被芯片翻译成下面的机器语言执行:
0001
0011:1
0011:1
0000
微软看上面用汇编语言编写的程序是好的,但是不容易编写,于是对汇编语言进行了升级,开发了C语言,以更适合人类阅读的方式编写程序,这样用C编写计算加法的函数就是如下,这个程序虽然简单,但是却是各种程序运行的雏形。
void main(int a, int b)
{
return a+b;
}
概况的说,当程序员用C语言开发出来程序后,由编译器把他翻译为汇编语言,然后再由芯片再翻译成1,0的机器语言,这样程序就能执行了。最终,微软开发出了自己的操作系统DOS
那时的DOS背景是黑色的,那时的电脑还不叫电脑,叫做计算机,顾名思义,主要是做计算用的。而且主要是给高级人员用的,普通用户并不会用。
微软看DOS操作太麻烦,例如查看文件夹需要输入“dir”命令,每个用户都要记住很多DOS命令,那能不能简化这个操作呢?当然可以。
于是图形化操作的Win3.1出来了。你甚至可以认为win3.1就是为了用图像代替枯燥的DOS命令。
Win3.1是好的,于是大量开发人员为Win3.1开发程序,那时开发环境还是Turbo-C,程序员在Win3.1上利用C语言开发各种程序(下图是当时开发界面),
因为开发环境不方便,于是微软开发了VC++,方便开发windows,以及方便程序员为windows编写程序。
这里,到底是先有Windows还是先有VC++,一直像是先有鸡还是先有蛋一样引起争论。其实他们2个是可以和平相处,互相促进的。
有了VC++,开始有各种Office,Photoshop,3DMAX等程序的开发,也有在Windows上开发后续windows的可能。
就这样,一个Windows诞生了。有了Windows后,人们可以编写HTML网页,然后通过网络互连。
最后,我想说:Windows XP大约4000万行代码,Windows Vista 大约5000万行代码
这些代码不但要保证功能完善,而且还可以互相调用,没有BUG,这真是一个伟大工程。
我们应该真的谢谢微软,没有她,我们的社会不会发展的这么快。
联系客服