潇峰 的个人资料疯子的天空照片日志列表 工具 帮助

日志


3月15日

[Z]3D软件开发工程师——游戏制作中的各种人员

1、本科,计算机或相关专业毕业。
2、图形学基础扎实,精通D3D或OpenGL。
3、精通常见室外、室内渲染技术,如地形、LOD、多叉树、bsp、portal等。
4、了解各种3D性能优化技术。
5、了解vertex shader 、 pixel shader 、 HLSL。
6、编辑器相关编程经验,如MFC、界面编程经验。
7、熟悉OGRE等一种或多种常见游戏引擎者优先。
8、有相关实践经验,如制作相关DEMO者优先。
9、有优秀的 C++ 代码功底,有设计分析、调试、测试经验、5万行以上代码经验者优先。

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来自于一个宗教,在这个教里面有低语的宗教规则。