| 潇峰 的个人资料疯子的天空照片日志列表 | 帮助 |
|
|
3月15日 [Z]3D软件开发工程师——游戏制作中的各种人员
2月13日 计算机Bios时间 RTC时钟是PC机主板上一块靠电池供电的时钟电路,它为整个计算机提供一个计时标准。由于该时钟是最原始最底层的时钟数据,因此解决了该平台的2000年问题,就彻底地解决了PC机硬件平台时钟2000年问题。遗憾的是现在许多计算机主板(包括目前流行的PII电脑,还有许多声称能解决Y2K问题的BIOS升级卡也只是简单地解决了BIOS时钟,而未对RTC时钟作任何处理,实际上也存在Y2K隐患)在设计时对该时钟生成电路均未作任何修改,主板CMOS仍沿用MC146818RTC时钟芯片,该芯片仅提供两位年份数据,故目前大部分PC机都存在RTC时钟问题(可用查虫程序进行测试),这也是PC硬件千年虫根源所在; BIOS时钟是指通过BIOS功能调用INT 1AH来取得的系统时钟数据,一般软件为兼容性的要求,都是通过该调用来取得时钟数据的,BIOS控制的时钟并不是真正意义上的时钟,它更应该被称为一个计数器,计数器每秒钟跳18.2下,并且每24小时清零(重置成零)一次。可以这么说,BIOS时钟里面并不存储日期信息,在PC机刚开始启动操作系统向BIOS读取日期和时间信息时,其实是通过调用BIOS里的中断功能来获取RTC芯片里的日期和时间信息。(注:有些应用程序也直接从I/O 端口地址读取RTC中的日期和时间信息); 操作系统OS时钟是操作系统在开机时通过取得系统硬件时钟(RTC、BIOS)数据,然后往下计数而形成的,该时钟仅在开机时才有效,每次关机再重开时它都要去从硬件时钟处获得一个初始时钟值。 操作系统(包括DOS、Windows 3.1、Windows95、Windows NT等)的系统时钟一般也叫虚拟时钟,最重要的一点是,操作系统仅在刚开始启动时通过BIOS调用向RTC获取当前的日期和时间信息,此后只要系统不关闭,系统时钟便和RTC时钟完全脱离关系,系统时钟的时间信息(小时/分/秒/)主要靠BIOS里面控制的计数器来维持,它一般通过把计数器里存储的计数值除以18.2换算成秒再换算成“小时/分/秒”格式的时间信息,然后每过24小时增加一日,以此类推。 Unix,C的创建者的忏悔翻译整理:pigprince
在前不久举行的一次关于计算机产业的发布会上,Ken Thompson,Dennis Ritchie和Brian Kernighan承认了由他们创建的Unix操作系统和C语言是来源于20年前的一个精心炮制的愚人节游戏!
Thompson是在不久以前在UnixWorld软件开发论坛上说的这番话:
“在1969年,AT&T刚刚完成一个和GE还有Honeywell公司合作的项目--Multics,那时候我和Brian 也刚刚接触一个由瑞士ETH实验室的Nicklaus教授创建的PASCAL语言的一个早期版本,我们当时就对它的简洁朴素和强大留下了深刻的印象。Denis正好读完了《Bored of the Rings》这本书,它实际上是《Lord of the Rings》三部曲的一个拙劣
的模仿,只不过是为了玩,我们决定对Multics和PASCAL也进行一番模仿。我和Dennis负责操作环境,模仿Multics来重新设计一个新系统, 设计的宗旨是尽可能的使系统显得神秘而复杂,让使用者不断地感到受挫,又重新起了一个名,叫作UNIX。 然后Dennis和Brian对一个叫作‘A语言’的东西开展了一番工作,它实际上是对PASCAL语言的一个扭曲。当我们发现竟然有人尝试用A语言开发 真正的程序,我们马上在A语言中又增加了一些更加含义模糊的东西,并把它升级为B语言,之后是BCPL,直到最后的C语言。在我们得到了以下的语法表达之后我们停止了, for(;P("\n"),R=;P("|"))for(e=C; e=;P("_"+(*u++/8)%2))P("| "+(*u/4)%2); 现代的程序员们竟然会试着使用允许这样的声明的语言,这简直超乎我们的想象。我们当时真的是想把这些东西卖给苏联,好让他们的计算机科学水平倒退20年。你想像一下在AT&T和其它的美国公司开始试着使用Unix和C时我们的惊异。 这使他们用了20年,只不过用在了使用建立在60年代的一个拙劣的技术模仿的基础上的专门技术和一些应用。但是我们对Unix和C程序员坚韧不拔的精神也留下了深刻的印象,我和Brian还有Dennis则在这么多年里一直在Apple机上使用PASCAL语言,我们对这种混乱的结果感到了 深深的负罪感,混乱和那些滥程序就是起源于在当时我们愚蠢的恶作剧!” 一些主要的Unix和C的厂商和用户,包括AT&T、Microsoft、Hewlett-Packard、GTE、 NCR和DEC等等这一次拒绝对此发表见解,有一家PACAL和C语言开发工具的业界领先厂商(产品包括流行的Turbo Pascal,Turbo C和Turbo C++等) 声明说他们实际上已经在多年以前就有一些察觉,并宣布今后将继续增强他们的PASCAL产品,并立刻暂停他们在C产品上的远期投入;一个IBM公司发言人则对这件事大笑不止,以至于不得不推迟了一个关乎RS-6000的命运的新闻发布会;而ETH学院的教授, PASCAL,Modula 2和Oberon结构语言的创建者Wirth教授只是说P. T. Barnum是正确的。 和这个事件相关的大抵可信的资料来源说明,不久将有一个相似的招供可能来自于William Gates,是关于MS-DOS和Windows操作环境, 还有就是IBM的发言人开始否认虚拟机(VM)也是一个恶作剧式的拙劣的玩意儿。 C 语言的历史-Dennis M.Ritchie概述:
70年代初,c语言以系统实现语言(system implementation language)的角色开始
出现在早期的UNIX系统上。它由无类型(typeless)的BCPL语言发展而来,并引入了 丰富的“类型”,而他的产生最初是为了改进小型机(tiny machine)的编程环境。 今天,c语言已经成为了一门极具优势的语言,这篇文章着眼于c语言的整个不断发展, 不断革新的历史过程。 简介:
这篇文章着眼于介绍c语言的发展过程,它的影响,以及它产生的条件。为了简短,
我省略了对c语言本身的详细描述,同样也省略了对其前身B,以及B的前身BCPL语言的详细 描述。取而代之,我们将关注每种语言的主要特征以及他们是怎样变迁的。 c语言在1969-1973这段时间产生了出来。这段时间刚好也是UNIX系统早期发展的时间。 而这几年中最具有创造性的时间出现在1972年。另外一个比较大的改变发生在1977-1979, 这个时候UNIX系统的可移植性已经被证实。在这个时段的中期,第一部关于c语言的详细 描述的书籍问世了,这就是<>,这本书通常也被称为"白皮书 "或者"K&R"。最终,在80年代中期,c语言被ANSI X3J11正式标准化。这个标准后来也得到 了修正。直到80年代初期,虽然c语言的编译器出现在了各种不同的体系结构以及操作系统 上,但是它仍然是几乎和UNIX系统捆绑在一起的,直到更晚的一些时候,c语言才扩散到 越来越广泛的体系上。到了今天,c语言已经成为了一门在整个计算机业上的普遍应 用的语言了. 历史:
60年代后期对于贝尔电话实验室是一个混乱的(turbulent)年代。公司被卷入了一个由 MIT,通用电气以及贝尔实验室联合发起的有点探险性质的Multics项目。到了1969年,贝 尔试验的管理层以及研究人员们开始感觉到Multics项目如果要实现,将会拖到很晚, 并且将会付出高昂的代价。就是在GE-645 Multics机被从计划中取消之前,一个由Ken Thompson私人领导的非正式的团队就开始改变他们的目光了。 Thompson想通过他自己的设计,利用一切可以利用的办法,实现一个比较令人满意的 计算机环境。这个计划包含了许多Multics的创新思想,比如清楚的把一个进程当作一个 控制的轨迹,树型结构的文件系统,一个用户级的命令解释器,文本文件的简单表示, 设备的通用存取。他们也剔除了一些其它的东西,比如统一的内存存取以及文件存取。 最开始,Thompson以及我们其他的人推迟了Multics的另外一个创新特点,也就是以一种 高级语言书写其中的大多部分。对PL/I--Multics的实现语言,我们没有作太多的尝试。 我们同时使用其他的语言,包括BCPL。我们感到很遗憾,这样失去了以汇编语言书 写程序的很多优点,比如书写容易,易于理解。在那个时候,我们并没有很注重可移 植性,直到后来,我们才对这个发生了兴趣。 Thompson当时面对的硬件环境即使在当时也是很难懂,体系很简单的:DEC PDP-7。 1968年他开始的时候是一台拥有8K 18-bit字内存并且没有任何可以使用的软件的机器。 在希望使用高级语言的同时,他使用PDP-7汇编语言写了起初的UNIX系统。在最开始, 他甚至就没有对PDP-7本身写程序,而是在一台GE-635机器上使用一堆GEMAP汇编器的宏。 一个postprocessor(??)将这些生成为PDP-7可读的纸带(paper tape)。 这些纸带知道后来才被放到PDP-7上测试,这个时候一个简单的UNIX内核,一个编辑器 ,一个汇编器,一个简单的shell以及一些有用的工具已经完成了。这个时候,整个操作系统 就是自支持的了:程序的书写以及测试再也不需要求助于纸带了,整个系统的开发就可以在 PDP-7系统本身上做了。 Thompson的汇编器在简单性上即使是对DEC的也有过之而无不足,它对表达式进行求 值并改变(emit)相应的位。这个时候没有库,没有装载器,没有连接器,程序的整个源代码 都送给汇编器,并且输出程序有着一个固定的名字以显示它是可以直接执行的。 (这个名字是a.out,这就是解释了现在UNIX操作系统的一个特点:即使在后来系统引入了 连接器以及能够明确指明另外一个名字,但是这个仍然被保留为编译后默认输出的可 执行结果的名字。) 在1969年第一个UNIX系统在PDP-7上开始运行不久,Doug Mcllroy为这个新的系统创 建了一门高级语言:一个McClure的TMG的实现。TMG(TransMoGrifiers)是一种用于书写 编译器的语言。他使用自上而下的递归风格(stytle),并结合了上下文无关文法属性。 Mcllory和Bob Morris就是使用TMG为Multics写了早期的PL/I编译器的. 面对Mcllroy重写TMG功绩的挑战,Thompson决定系统(当时还没有命名)需要一种系 统语言。在快速的尝试Fortran后,它创造了一门他自己的语言,这就是B。B可以被认为 是没有类型的C语言,更准确地说,它就是将BCPL压缩到8k bytes的内存,当然是经过 Thompson自己的改进了的。它的名字很可能就表达了它是BCLP的压缩。另外一些不同 的观点则认为B是从Bon设计而来得,这里的Bon是Thompson在做Multics项目的时候设 计的一门语言,而Bon这个名字这是由他的夫人Bonnie而来得,不过有一份手册表明 Bon来自于一个宗教,在这个教里面有低语的宗教规则。 |
|
|