先有鸡还是先有蛋?先有操作系统,还是先有汇编器?(对计算机本质的探讨 3)

naniandeyu 2006-08-02 04:21:11
这个是以前给别人的回帖,感觉对初学者应该还有点帮助吧,于是就无耻的再贴出来了,大家包涵。

内容开始:

“这个问题很好,说明搂主是个寻根究底的人,任何求知欲强的人都会通过探索层层深入,最后到最根本的问题。最痛恨一知半解的人乱回答别人的问题,或者找风马牛不相及的答案糊弄人!这样的人就别搞技术了,去搞政治更合适!

你的困惑感应该和蛋鸡问题类似,到底是先有操作系统还是先有汇编器?其实只要对计算机史了解的话就不会迷惑了。原始的电子计算机是没有操作系统也没有汇编器的,那时编程是靠写一条条机器指令(就是高低电位组成的信号)进行的,没多久,出现了汇编语言,就是用符号来表示原本的指令由程序员写出这些符号指令,再由其他人对表翻译成真正的机器指令。这就是所谓的手工汇编。后来出现了用程序来代替人的查表,就是现在的机器汇编,从此现在意义上的汇编语言诞生。

运行汇编程序并不一定要操作系统,只要把程序加载到内存,然后cpu逐条执行就可以了,而操作系统也未必非要汇编语言来写,也可以用机器指令写的。也就是说他们在逻辑上并非一定的因果关系。所以历史上也没有明确的先后关系,是同时交错进行的。那时没有操作系统的概念,只是一个个工具程序而已。

你的困惑还在于最初程序是如何输入进计算机的,现在要把一个程序加载到内存,需要借助别的程序,那这个“别的程序”又是怎么到内存里的呢?还是蛋鸡问题。其实,最早把程序加入计算机里的方法是搬开关,一位一个开关来代表高低电位。后来打卡片(和纸带),再用转换器读入。再后来出现了磁介质,存储和加载靠程序对磁介质读写来完成,这就不需要借助体力和外部设备了,存储和加载都在计算机内部完成。那么这个“最初的加载程序”当然不是靠程序加载的,是靠人力加载的(可以搬开关,也可以打孔。)

再后来呢,由于输入汇编指令太累,所以有人就开发了一中程序,叫“自动编程器”,就是输入一条高级指令,由那个程序解释成多条机器指令,这就是后来的高级语言。

ps:其实计算机的本质就是一条条电信号(机器指令)来推动运行的,和一台内部有很多齿轮的精密大钟没什么两样,都是机器!什么操作系统啦,什么程序啦,都是我们抽象后给他们起的名字,他们本质还是一个个机器指令,注意,我很反对某些人说机器指令就是1、0数字组成的,这很不确切容易使人误解(可能他自己就误解了),应该说是由高低电位组成的,只不过我们把高电位看作1,低电位看作0。我还很鄙视某些缺乏探索精神的所谓的“技术人员”,在他们看来好像在键盘上按一个键,然后显示器上显示出字符,这么一个简单的过程是理所应当的,不值得探索,殊不知就是这个简单的过程也是很多很多内部指令的结果,这些都不思考更不要指望他们去思考“最初的操作系统”类的问题了。一句话,没有探索的欲望和好奇心,就不要搞研究!”


结束
...全文
2955 81 打赏 收藏 转发到动态 举报
写回复
用AI写文章
81 条回复
切换为时间正序
请发表友善的回复…
发表回复
晨星 2007-04-03
  • 打赏
  • 举报
回复
早期的计算机上的简单系统,你很难讲它是个编译器还是个操作系统。
lx0825 2007-04-03
  • 打赏
  • 举报
回复
如果先有操作系统,那是什么解释或者编译它?
如果先有编译器,那是什么编译或者解释它本身?什么组织它在加电时自动执行.......
到底是不是该追溯到——硬件还是软件的问题?

对这个问题,有时候我也很迷糊.....

学过进化论的脑子里应该有个印象,物种的进化,可以从个体的成长过程得到一些启示.....

就好像最开始学习相对论,我甚至还在一直执着的查找光速不变是不是真理,现在回头看,其实才知道相对论的理论基础正是光速不变.........
bigbat 2007-04-03
  • 打赏
  • 举报
回复
你看计算机的历史就知道了。要是想不同把头塞到书里去!
littlegang 2007-03-23
  • 打赏
  • 举报
回复
从本质来说,两者没有必然的先后关系,两者都是软件,只是作用不同
只是从历史的角度来说,汇编器出现得早,也是很自然的,因为从机器码过渡到助记符是很顺理成章的
而当时配合汇编器工作,我想定义为BIOS(基本IO系统)的软件更合适些,而这些BIOS发展下去就成为了操作系统的部分,
因为,毕竟,比较公认的操作系统的定义是要包括对IO设备、内存和执行软件进行管理调度的软件,如果只是完成BIOS功能的部分,似乎还不能称为操作系统

如果有人一定要把包括读孔器的动作、人的动作也称为“操作系统”的话,那也就不用讨论这个问题了
LinZhongBao 2007-03-20
  • 打赏
  • 举报
回复
oo
handle19811106 2007-03-19
  • 打赏
  • 举报
回复
正在做汇编的项目
看来以后有问题可以向好多高手讨教了
zhishixuexi 2007-03-13
  • 打赏
  • 举报
回复
呵呵。这个问题好象是原来我问的,然后可能就是楼主以前给我回答的,一转眼真快!因为以前的号被我问的没分了,只能注册了几个。以后一定再多问一些此类问题
Mepeyu 2007-03-10
  • 打赏
  • 举报
回复
这种讨论有意思!
skypu 2007-03-07
  • 打赏
  • 举报
回复
先顶一下,等下仔细看好找着:)
dandanmylady 2007-03-07
  • 打赏
  • 举报
回复
先有妈妈还是先有女儿?

yzarc 2007-03-06
  • 打赏
  • 举报
回复
我的印象中这两者没有必然的关系.听老师说以前都是用纸带打孔的方式来对付裸机的,如果是这样,操作系统和编译器不就是两根纸条吗?不需要彼此依赖吧,虽然依赖可能会高效一些.那谁先谁后,查一下计算机的发展历史就应该知道了吧.还有啊,这个操作系统和编译器是怎么定义的罗,看你们都把人说成操作系统和编译器了,都定不下哪个阶段的哪个东西才叫os或complier,怎么比较啊?就好像什么时候的鸡和蛋才是你脑子里的鸡和蛋啊,不要找参照物时却不知道找谁的参照物了.
cxy89173 2007-03-06
  • 打赏
  • 举报
回复
mengshijie_1981 说得很对,虽然从历史上来看,是先有了汇编器,才慢慢有了操作系统。
但谁敢说用早期的打孔机不是一个操作系统啊。
hellothinker 2007-02-12
  • 打赏
  • 举报
回复
我觉得鸡蛋问题要去看“鸡蛋”这个词的定义
一个蛋为什么叫鸡蛋?
是鸡下的蛋叫鸡蛋,还是能孵出鸡的蛋叫鸡蛋?
回答了这个问题就回答了鸡和蛋的问题
所以这个问题不是哲学问题
去翻辞海把
我没有。。。
DriftKCat 2007-02-09
  • 打赏
  • 举报
回复
naniandeyu(捍卫真理)讲得很清楚咯~~~~还争什么啊。买本操作系统原理的书看看,再了解一下计算机的历史自然就知道了!!!
我在地球 2007-02-09
  • 打赏
  • 举报
回复
看完这篇文章,我知道了很多呀。
谢谢了。
liujianhui 2007-01-28
  • 打赏
  • 举报
回复
操作系统、编译器或解释器只是一个计算机程序,用哪种语言都可以设计出来的。从历史上来看,最先是使用机器语言编程,然后设计出汇编器这个程序后,就用汇编语言编程了,接着出来一些监控程序,慢慢发展成操作系统,一些用汇编语言写的高级语言编译器例如Fortran、C也出来了。
zzwu 2007-01-26
  • 打赏
  • 举报
回复
先有汇编器,再有操作系统,绝对可靠.

(磁盘)操作系统,如DOS,只有当出现磁盘(软盘或硬盘)后,才谈得上,

而早期的计算机只有内存(磁芯存储器),根本没有任何磁盘.

hjl5135 2007-01-26
  • 打赏
  • 举报
回复
都讨论半年了,各位不要放弃。
继续,加油,拭目以待。
yclz 2007-01-24
  • 打赏
  • 举报
回复
要想知道:先有鸡还是先有蛋?先有操作系统,还是先有汇编器?的问题,还是问一问比尔盖茨
他是最清楚了。

============================================================================
瞎掰,比尔盖茨还没出生的时候什么东西都有了,他知道个屁啊.
axx1611 2007-01-24
  • 打赏
  • 举报
回复
yclz(我是菜鸟) ( ) 信誉:100 Blog 2007-01-24 12:51:20 得分: 0


要想知道:先有鸡还是先有蛋?先有操作系统,还是先有汇编器?的问题,还是问一问比尔盖茨
他是最清楚了。

============================================================================
瞎掰,比尔盖茨还没出生的时候什么东西都有了,他知道个屁啊.


----------------

顶~~~ BS盲目崇拜
加载更多回复(61)

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧