现在电脑越来越普及了,一点是人们生活水平提高了,一点是电子产品价格真的下降了,还有很重要的一点是它确实丰富了人们物质和精神生活。电脑用起来也确实太方便了,一按电源键就能使用了,而且还有很多的匪夷所思的功能。我老家的长辈们对我所从事的软件这个行业都觉得很神奇,而且完全不能理解。确实我对软件的熟悉也仅限于我知道去哪里能得到这个软件,这个软件能做什么,其它的就真的不知道了。
朋友们有没有想过,在我们按下电源键那一刻起电脑都做了什么,那么令人头痛的东西我就不絮叨了-> _ ->!
图 boot.asm
上图的代码(图 boot.asm)使用命令nasm boot.asm -o boot.bin,将会把代码变成软件,接下来运行一系列的命令将这个软件打包。
第一条命令:
dd if=/dev/zero of=blank.img bs=512 count=2880
第二条命令:
dd if=boot.bin of=boot.img bs=512 count=1
第三条命令:
dd if=blank.img of=boot.img skip=1 seek=1 bs=512 count=2879
上面生成的boot.img就是我们需要的打包好的软件,其实这是一个软盘镜像。把它直接写到软盘里就可以使用了,但是在今天如此先进的时代,如此落后的软驱技术我就不难为朋友们去弄了。去安个虚拟机去吧,呵呵,硬件不要求,软件又来了一个。
弄好虚拟机后,先新建一台,把刚刚生成的软件先运行起来再说。装什么操作系统?Windows?OR Linux?OR Othres?我这个软件特殊,不依赖操作系统,直接驱动电脑硬件。神马?对,这个就是引导扇区使用的软件,让电脑从boot.img启动,下图(图 myos)就是我们软件的运行结果。
图 myos
这是如何做到的?boot.img能完美适配所有电脑么?这个就要说设计者们的伟大之处了。规定是这样的:
1. BIOS首先会加载磁盘的第一扇区
2. BIOS仅载入512字节
3. 将该512字节放入0x7c00处
4. 检查511和512字节是不是55和AA
如果检查通过BIOS则认为这是一个有效的引导扇区,按照引导扇区软件的要求继续启动电脑(比如我们用的windows操作系统)。
硬件厂商和软件厂商就靠这些简单的约束,和谐的让我们的电脑优雅的装点着我们美好的生活。程序猿们是否对他们的设计惊叹称奇?不管你是不是赞叹了,反正我是对他们的景仰那是如滔滔江水连绵不绝又如黄河泛滥一发不可收拾。
远的不说,我们说近的。开发一套程序我们该如何做,所谓兵马未到,粮草先行,那好我们开工吧。老板说“程序猿们,我想做一个电商软件,我们开工吧。做个IPhone手机端的,做个Andorid手机端的,做个浏览器端的,再来个电脑应用端的”。这么一分摊下来,这个开发团队可就真的很庞大了,不要小看我们这几个常用设备上的开发,这每一款软件都有其强大的规则,我们按其严谨开发,自然是水到渠成。
IPhone端比较封闭,一款软件的诞生需要Apple的批准,不然你就永远让用户用开发模式的软件吧。Android虽然Google也有严格的审核,但是它还是很灵活的,可以通过Google之外的其它应用商下载安装,或者直接在软件官网下载程序自主安装。浏览器端则要想好是适配IE内核,还是Webkit内核,等等浏览器内核,或者都适配。当然每种浏览器内核还有版本之分、页面大小之分等等。电脑应用端则更像自主开发了一个浏览器,那开发它的优势在哪里呢?这么提一下吧,我们玩的魔兽世界、Dota这些没用浏览器去玩吧。
刚才提到的这几个软件,都是在用户端运行的,它们所需要的数据还需要一个强大的服务器支持,服务器端的程序也是一个庞大的开发量。刚才说兵马未到,粮草先行。这个服务端程序和用户端程序之间的协议,就是我们先行的粮草。人吃粮,马吃草,这IPhone、Android、浏览器和电脑应用,都有各自的协议特色,需要和谐对待。
文章到这里,仅就蜻蜓点水般的提到了软件开发。所谓醉翁之意不在酒,只在文中上半篇,希望对我中华有志之士能做到抛砖引玉。