写了2年程序了,我就是搞不明白!

来源:百度知道 编辑:UC知道 时间:2024/06/05 15:46:59
写了1年程序了,有几个地方想起来就让我发疯!

都说是程序员操作计算机,但我就是搞不明白,究竟是什么原理?
我写的这些代码计算机怎么来理解呢?别和我说虚拟机啊....
操作系统是拿什么写的?(比如你电脑都没操作系统。如何打开编译器来写代码啊...)
JAVA是拿什么写的?
C是拿什么写的?
汇编是拿什么写的?
机器码又是拿什么写的?如果说虚拟机把字节码转换成机器码,那么
01010100这样的东西到底如何控制计算机?别打那个蠢比方“0是关机1是开机”,计算机怎么认识0和1啊。。这些机器是啊拉伯人?

还有,听人说很多硬件里自带了驱动程序,那是怎么写进去的?我的想象里是:用一根电线连接那个硬件的借口,然后拿电脑写进去...可是电脑也是硬件组成的啊,总要有一台机器能用才可以写吧?

还有就是,写这些语言的人都是科学怪人吗?他们写语言能赚钱吗?我感觉我用JAVA,C#,都没给过一分钱,那创造这么神奇东西的人怎么赚钱呢?比如微软自己是做软件的,为什么要创造。NET平台这样的东西给大家,让大家抢他的饭碗?(不过貌似似乎我们所知道的象JAVA,C#,这样的语言根本写不出操作系统.顺便问一下大家,国内有自己的操作系统吗?)

感觉象个没有蛋怎么有鸡的问题..小弟我确实才疏学浅,只希望有高人能简单的概括,解开我心中的疑惑啊,,我可不想一辈子靠一个自己都不知道是什么东西的东西吃饭...

问题比较多。50分犒劳高手,回答的好再加50分!
就算是象形文字也就几个考古的吧?你们天天写程序难道就从没想过这些问题吗?再说计算机出来才几年啊?就成象形文字 了。说的夸张点,如果有一天因为某原因全世界的电脑软件都被删了,那就没一个人有能力可以回复成现在的样子?

5楼你牛..只差一点点就见清天了,,麻烦再回答一下.
你说你说的010101010这些机器代码0010可能就表示+法,而有些0010表示2这个就是数据,当然,但是你如何让向一堆硅和金属输入这些O和1?

还有,[这些语言都伴随着他们的编译器,这些编译器负责将语言转化成为汇编语言或者机器语言],这个我当然知道,但是

看楼主的问题,感觉楼主能一直追溯到机器码,就是不知道机器码是如何被机器识别的。要是知道机器如何识别机器码,那上面一串关于编程语言的问题楼主都该会了。
事实上,不是你向机器输入0,1的,而是机器主动去读取0,1的。一开机,电脑会从bios的rom上顺次“读取”0和1,这个所谓的读取就是检验所读取的电路是否是通路,通过是否是通路来判断是0还是1。是断路就是高电平,是断路就是低电平。如何制造通路或者断路?烧断通路上的某一点就会使通路变成断路,这个谁都知道吧。这就是某些只读rom的原理。这只是一种制造断路和通路的方法,举个例子用来说明,还有其他方法,但作用都是为了制造通路和断路。
不知道楼主可否明白机器如何识别机器码的?
只要机器可以开始识别机器码了,那么就可以用已经识别的机器码来控制以后的程序,以及读取的位置了。这就是为什么每台电脑都必须有bios,bios是电脑最初读取的机器码,用来控制以后的操作。

楼主说Java,C#不可以写操作系统,那是因为这些语言无法操作物理地址。没种语言都有自己的用途,没必要要求大炮又能轰山又能打蚊子吧?

微软如果不开发.Net,那么就会有更多的人使用Java,而Java是不依赖于Windows的,这样无形中微软的市场占有率就下降了,这个对于微软来说是致命的吧?

不知道这些回答能否让楼主得到一些想要的信息。其实这些东西如果挖到最底层,不管你是编程2年还是200年,只要你不懂硬件的构成,你永远都不会明白最基本的机器码是如何被读取的。楼主可以尝试阅读一下关于数字电路的资料,或许可以得到你想要的东西。

建议你系统学习一下计算机体系结构
想必你连图灵机都不知道怎么回事儿

献给你说说大概
你说的010101010这些机器代码0010可能就表示+法,而有些0010表示2这个就是数据,当然计算机直到哪些是操作哪些是数据
因为规定一个指令包括4个字节,第一个是操作接下来三个是数据,或者是数据的地址,你要是想知道这些指令到底都是什么,在计算机里面怎么就到CPU,怎么就去寄存器,怎么就存储起来了,一个process怎么加载这么运行,怎么调度,或者看看OS的书

硬件的核心是电路或者