Blue
Red
Green
Orange
Voilet
Slate
Dark

文件类型 ( 积分: 80 )

S

sjjwan

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一点不明白.象C语言它是来开发计算机系统程序的
它里面怎么会有文件这里概念呢?
文件应该在操作系统出来以后才有这个概念吧
C语言设计出来,本来就是来开发操作系统的
它应该在操作系统之前吧,怎么会有文件这一概念呢?
如果在操作系统之后,那可以理解.是为了对操作系统里的文件进行处理!
请高手指点啊!
对于我上面的说法.是否对不对?或者逻辑不清楚.根本乱问!呵呵
请高手指点啊
这个问题已经捆绕我好久时间了
 
S

sjjwan

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一点不明白.象C语言它是来开发计算机系统程序的
它里面怎么会有文件这里概念呢?
文件应该在操作系统出来以后才有这个概念吧
C语言设计出来,本来就是来开发操作系统的
它应该在操作系统之前吧,怎么会有文件这一概念呢?
如果在操作系统之后,那可以理解.是为了对操作系统里的文件进行处理!
请高手指点啊!
对于我上面的说法.是否对不对?或者逻辑不清楚.根本乱问!呵呵
请高手指点啊
这个问题已经捆绕我好久时间了
 
N

newsmile

Unregistered / Unconfirmed
GUEST, unregistred user!
文件的概念要比C语言古老得多,C语言的编译器要运行在操作系统之上,并不是有了C语言才开发出操作系统的,最早的操作系统可能是手工接线或是纯手工编码的二进制文件(见过纸带穿孔机就明白了)。
 
S

sjjwan

Unregistered / Unconfirmed
GUEST, unregistred user!
.我还有一个问题.对与高级语言.科学家开发出来以后.他们用高级语言写代码之后,可以不用编译器,就把她翻译成机器指令吧.因为语言是他们开发出来的呀.他们当然知道怎么翻译吧 编译器只不过一个工具吧了.
我的说法.对吗?
那请问楼主.WINDOWS操作系统的文件系统是不是C语言开发出来的?
 
N

newsmile

Unregistered / Unconfirmed
GUEST, unregistred user!
我注意到你提了很多与理论相关的问题,感觉你很好学啊!你是楼主哦,我可不是楼主。你发贴你就是楼主了。目前来说没有人能不用编译器就直接把高级语言程序翻译成机器指令的。很简单的程序当然可以了,比如1+1=2之类。如果你学2个小时汇编,你就可以把1+1=2直接翻译成机器指令了。机器指令是一串串的0、1组合,人能处理的一般也就到汇编语言了。windows操作系统是用C语言写的。
 
S

sjjwan

Unregistered / Unconfirmed
GUEST, unregistred user!
我的意思.象高级语言是科学家开发出来的.语言跟编译器应该是两回事吧.语言是灵魂,可以写出各种各样的程序.而编译器只不过是一个工具.编译器跟语言应该不是一块出来的吧.象一些很早的高级语言,科学家早就开发出来了.我的问题就是是不是在早期科学家不用编译器就可以把高级语言翻译成机器指令.我指的是科学家哦.当然象我们只能用编译器帮我做这件事了哦.
 
D

dongy_143

Unregistered / Unconfirmed
GUEST, unregistred user!
纸带穿孔时代,全是人工翻译;
编译器出现在纸带穿孔之后...
当人发现人工翻译比较烦琐的时候,又发现每次翻译的东西有很多地方类似,干脆发明一种编译器,省的人工每次都重复做一种动作?
穿孔很好玩,以前上学的时候老师带过实验课......
 
N

newsmile

Unregistered / Unconfirmed
GUEST, unregistred user!
你的理解正确,语言跟编译器当然是两回事,编译器只是工具。早期不但没有编译器连语言也没有,全是手工连接线路,后来出现了语言也就出现了相应的编译器,它们基本上是同时出现的。最早的编译器是由cpu制造商提供的,制造商要提供如何操纵它的cpu的工具呀。我们通过汇编语言就能操纵cpu中的寄存器等等。现在即使是科学家也无法把高级语言编的程序直接翻译成机器指令(除了前述的简单程序)。
 
S

sjjwan

Unregistered / Unconfirmed
GUEST, unregistred user!
你跟上面的人说法的不一样.那最早的编译器不是只能用二进制写出来了.
 
N

newsmile

Unregistered / Unconfirmed
GUEST, unregistred user!
对于intel系列cpu来说最早的编译器实际上就是汇编语言的编译器。它的功能就是把汇编指令翻译成二进制码。intel之前还有其它cpu呢,比如Z80,68000等等。
 
S

sjjwan

Unregistered / Unconfirmed
GUEST, unregistred user!
好.我们换个话题吧
C语言里的变量的段地址不是C语言自己分配的吗?
而是操作系统分配的吗?
如果是操作系统分配的.那又如何开发操作系统呢?它本身要运行在操作系统上
 

金卡绣球jk8.com

Unregistered / Unconfirmed
GUEST, unregistred user!
现在出的编译器都是对应语言的
 
N

newsmile

Unregistered / Unconfirmed
GUEST, unregistred user!
如果用C语言开发操作系统,有很多的资源就不能使用了,很显然现操作系统的资源是不能使用的,只能使用BIOS中的资源。这个问题看看DOS就知道了。在DOS中,如果要开发操作系统你只能使用BIOS中断调用,不能使用DOS中断调用。否则就只能开发出一个Winodws 3.0之类的半操作系统。这就是我们把windows 3.0称为内核为DOS的原因。因为它调用了DOS资源,所以它是不能脱离DOS的。后来的windows 95亦如此,windows 98才真正成为一个操作系统。win nt的内核又发生了变化,所以我们现在可以看到有些函数只能运行在nt系统内核的操作系统中而不能运行在98下。linux和unix都是用C写的,但它们与ms毫不相干,因为它们不使用ms的资源。
 
S

sjjwan

Unregistered / Unconfirmed
GUEST, unregistred user!
newsmile 谢谢你这么多次对我的回答. 我有一个问题捆老了我。你说对理论知识要不要掌握一些。还是直接会用就行了。不用去了解它到底是怎么回事。
不过我还有一些问题想问你。
我想理清一下线路。我现在的想法是:
先是发明了计算机,但是人们用写一个的简单科学计算程序,就要花费很大的时间。因为科学计算只不过是一个应用程序。一个应用程序只是为了解决生活中的问题,它不能来操作硬件,所以是不能在裸机运行的。还要为这个应用程序需要用到哪些硬件资源(系统资源分硬件资源和软件资源)写一些服务程序,它们是直接来操作硬件的。应用程序必须在这些服务程序之上才能运行的。我说是这么说,但是我还不不明白。操作硬件的程序到底是什么样的程序。应用程序为什么不能在裸机上运行?比如我写一个1+1=?的程序。我用二进制写好指令。在用纸带穿孔的方法把程序输入到计算机中去。我不需要用到打印机。难道它不能在计算机中运行吗?
 
N

newsmile

Unregistered / Unconfirmed
GUEST, unregistred user!
依我看,现在的程序员比20年前或10年前要轻松多了。拿个delphi点几下鼠标不用学习就能编出个窗口来。以前的程序员光掌握语言是不行的,就连使用著名的basic,也要熟悉硬件及计算机原理。程序员那是很了不起的职业。现在不一样了,高级语言离硬件越来越远,从面向事务到面向对象等等,一般的程序员基本上不用知道硬件,更不用知道什么理论。只有那些做底层开发的程序员还是要清楚硬件和计算机原理的。但是用delphi的有几个是做底层开发的呢?有人说Delphi是RAD(Rapid Application Development,快速应用开发工具)。不适合做底层,这是真的吗?不!当你会用delphi操纵寄存器了,才真正领会了delphi的强大,才知道原来delphi竟然可以这样用。所以我的结论是如果你只想在最短的时间内学会编程,选用delphi吧,找本delphi指南之类的书就可以了。知道操作它的IDE基本上就可以编出象样的程序了,不用去管什么理论。如果你想成为一名出色的程序员,最终你还得从计算机原理、硬件结构、数据结构入手。
第二个问题,操作系统就是人与硬件之间的一个界面,人不能直接控制寄存器中的电信号必须通过操作系统才能达成。我们把需求告诉操作系统,操作系统将其转告cpu。所以可以说操作系统就是第一个操作硬件的程序。应用程序要调用操作系统的资源,裸机就是指无操作系统的计算机,所以它不能在裸机上运行。裸机上你无法“用纸带穿孔的方法把程序输入到计算机中去”,所以“它不能在计算机中运行”。
 
S

sjjwan

Unregistered / Unconfirmed
GUEST, unregistred user!
newsmile,感谢你一直以来关照我!对于高级语言为什么离硬件越来越远了.是不是没法直接对硬件操作,那为什么C可以呢,C也不是高级语言吗?
但是高级语言编译之后的代码是对硬件操作的吗?象X:=1+2;,编译之后的代码应该对内存操作的吧,把3写到相应的内存去吧.还是调用操作系统,叫操作系统把C写到内存?如果这样的话,那不是用高级语言写的程序都要操作系统的支持了.那C语言怎么还能开发操作系统呢?
 
N

newsmile

Unregistered / Unconfirmed
GUEST, unregistred user!
不客气,大家共同学习共同提高嘛。一般认为C不是高级语言,因为它有直接操纵硬件的能力,它也不是低级语言,因为它有较好的人机界面,它界于低级语言和高级语言之间。在C中可以调用操作系统资源再通过操作系统去操纵硬件把3算出来显示出来出来(不是对内存操作),也可以直接操纵寄存器得到结果。无论什么语言最终都要编译成二进制代码。高级语言写的程序一般都要操作系统的支持。
 
S

sjjwan

Unregistered / Unconfirmed
GUEST, unregistred user!
newsmile,你能不能给我举个列子,比如C语言怎么写,是调用操作系统的把1+2算出来,再把它赋给X的,C语言怎么写是直接操纵硬件来算出来的?
 
顶部 底部