虚拟现实游戏介绍

计算机科学和技术深深地吸引着我们学生。一开始国内外都喜欢把这个部门分为计算机软件理论、计算机系统、计算机技术和应用。后来两者融合在一起,成为了现在的计算机科学与技术。我一直认为,计算机科学与技术在本科阶段不能分为计算机科学和计算机技术,因为计算机科学需要大量的实践,实践需要技术;大家(包括非计算机专业)掌握简单的计算机技术(包括专业曾经引以为傲的编程)很容易,但计算机专业的优势在于我们掌握了很多其他专业不“钻研”的东西,比如算法、架构等等。非计算机专业的人可以很轻松的做一个芯片,写一个程序,但是做不出计算机专业的人能做的大规模系统。今天,我想谈谈计算机科学,重点是计算理论。

1)计算机语言

随着20世纪40年代第一台带有存储程序的通用电子计算机的研制成功,计算机的发展在20世纪50年代后进入了实用阶段。但在最初的应用中,人们普遍感觉用机器指令编程不仅效率低,而且很笨拙,不利于交流和软件维护。在复杂的程序中发现错误尤其困难。因此,软件开发迫切需要一种类似于自然语言的高级编程语言。1952年,出现了第一个编程语言短代码。两年后,Fortran问世。Fortran作为一种科学计算的高级编程语言,最大的成就是牢固地确立了高级语言的地位,使之成为一种通用的编程语言。Algol60的诞生标志着计算机语言的研究已经成为一门科学。这种语言的文本中提出了一系列新概念,如变量的类型描述和范围规则、进程的递归和参数传递机制。而且是第一个用严格的语法规则定义语言语法的高级语言——BNF。在程序设计语言的研发产生了一批成功的高级语言之后,它的进一步发展开始受到编程思想、方法和技术,以及编程理论、软件工程、人工智能等诸多方面,尤其是实用方面的影响。在关于“软件危机”的争论逐渐平息的同时,一些设计准则开始被大多数人所接受,并在各种高级语言中有所体现。比如支持结构化程序设计的PASCAL语言,适用于各种军事应用的大型通用程序设计语言ADA,支持并发程序设计的MODULA-2,支持逻辑程序设计的PROLOG语言,支持人工智能程序设计的LISP语言,支持区域对象程序转换的SMALLTALK和C等等。而且随着这些语言的产生和发展,也发展出了大量的理论、方法和技术来解决语言的编译和应用中的问题。大量的学术论文可以证明,高级语言发展所衍生出的各种思想、方法、理论和技术,已经触及了计算机科学的大部分学科,但内容仍然相对集中在语言、计算模型和软件开发方法论上。

(2)计算机模型和软件开发方法

20世纪80年代见证了计算机网络、分布式处理和多媒体的巨大发展。在各种高级编程语言中加入并发机制以支持分布式编程,在语言中扩展绘图子程序以支持计算机图形编程,成为当时编程语言中的一种时尚。然后在A/D转换、数据库技术等接口技术的支持下,通过扩充高级语言库,实现多媒体编程的思想。20世纪90年代以来,并行计算机和分布式大规模异构计算机网络的发展,使得并行程序设计语言、并行编译器、并行操作系统、并行和分布式数据库系统等试用软件开发的关键技术与高级语言和计算模型密切相关,如各种并行和并发程序设计语言、进程代数、PETRI网等。,是软件开发方法和技术研究中支持不同阶段软件开发的编程语言和理论基础。

(3)计算机应用

用计算机代替人进行计算,首先要研究计算方法和相应的计算机算法,然后编制计算机程序。由于早期计算机的应用主要集中在科学计算领域,数值计算方法成为应用数学最早的分支,并与计算机应用建立了联系。刚开始,由于计算机的内存容量很小,速度不快,为了计算一些稍微大一点的问题,人们往往要研究如何节省存储单元,如何减少不必要的运算。为此,发展了稀疏矩阵计算理论来求解方程组。开发散列函数来动态存储和访问数据。开发了虚拟编程和程序覆盖技术的思想,以便在内存较小的计算机上运行较大的程序;子程序和包的概念提出后,很多人开始把数学中的一些通用计算公式和方法写成子程序,并进一步开发成包,通过简洁的调用命令向用户开放。子程序的提出是当今软件复用思想的开端。

在计算机应用领域,科学计算是一个长久的方向。这个方向主要取决于应用数学中数值计算的发展,数值计算的发展也受计算机系统结构的影响。早期的科学计算主要是在单机上进行,经历了从小规模数值分析到中大型数值分析的阶段。随着并行计算机和分布式并行计算机的出现,并行数值计算已经成为科学计算的热点,它所处理的问题也从中大规模数值分析向中大规模复杂问题转变。所谓大规模的复杂问题,并不是因为数据的增加,导致计算的困难和复杂,而主要是因为计算中考虑的因素太多,特别是有些因素是不确定的,导致计算的困难和复杂,其结果往往是精度和复杂度的矛盾在算法的研究中难以克服。

几何是数学的一个分支,实现了人类思维方式中的数形结合。计算机发明后,人们很自然地想到了用计算机处理图形的问题,这就引出了计算机图形学。计算机图形学是一门利用计算机生成和处理图形的科学。并由此推动了计算机辅助设计(CAD)、计算机辅助教学(CAI)、计算机辅助信息处理、计算机辅助测试(CAT)等方向的发展。

在各种实际应用系统的开发中,有一个重要的方向值得关注,那就是实时系统的开发。

用计算机证明数学定理被认为是人工智能的一个方向。人工智能的另一个方向是研究不依赖于任何领域的通用解题程序或系统,叫做GPS。特别值得一提的是,在专家系统的开发中开发了一批新技术,如知识表示方法和不精确推理技术,积累了经验,加深了对人工智能的理解。20世纪70年代末,一些学者意识到过去人工智能研究基础的薄弱,开始关注人工智能逻辑基础的研究,试图从总结和研究人类推理思维一般规律的角度研究机器思维,并在1980发表了一批人工智能中非单调逻辑的研究论文。他们的工作立即得到了大量计算机科学家的响应,非单调逻辑的研究很快开展得如火如荼,人工智能的逻辑基础成为人工智能发展的主流。

数据库技术、多媒体技术和图形学技术的发展产生了两个新的方向,即计算可视化技术和虚拟现实技术。

随着计算机网络的发展,分布在世界各地的各种计算机以惊人的速度相互连接。在互联网上,每天都有大量的政治、经济、军事、外交、商业、科研、艺术信息的交流和交换。网络上大量信息的频繁交流,缩短了地域之间的距离,但同时也使互联网上的各种信息资源处于防不胜防的状态。因此,计算机信息安全受到世界各国政府的高度重视。除了下大力气研究对付计算机病毒的软硬件技术外,由于各项工作保密的需要,计算机密码学的研究也越来越受到世界各国政府的重视。

事实上,在计算机科学中,计算机模型和计算机理论与实现技术同样重要。但现在很多学生往往只重视一些计算机操作技术,而忽略了基础理论的学习,并因自己是“操作大师”而沾沾自喜,这不仅限制了自己将研究工作推向深入,还可能使自己在学科发展中处于被动地位。比如上世纪五六十年代,随着计算机研究和软件开发的发展,中国在计算机制造和维护方面培养了对计算机设备某一方面非常精通的专家。他们能够准确地找出核心存储器、磁鼓、运算器、控制器和整机电路的哪个部分出现了问题,并对其进行维修和排除故障,使用最少的存储单元编写运算速度快的程序,并对机器代码相当熟悉。然而,当小容量的磁芯存储器、磁鼓、慢速计算设备和控制器被集成电路迅速取代,当高级语言、软件开发工具和新的软件开发方法被广泛应用于程序设计和软件开发时,这些熟练的专家,除了少数有扎实的数学基础并在工作中把研究工作转向其他方向的,都在以新技术的出现取代原有技术的开发过程中被淘汰。所以在计算机科学中,计算比实现计算的技术更重要。只有打下扎实的理论基础,尤其是数学基础,才能事半功倍。只有建立在高起点理论基础上的计算机科学技术才有巨大的潜力和发展前景。

计算机理论的一个核心问题

我国计算机系的传统是培养做学术研究,尤其是理论研究的人(方向上没有太大问题,但不是那么尽如人意)。说到底,计算机的理论研究,比如网络安全、图形图像学、视音频处理,都和数学有很大的关系,虽然在正统数学家眼里可能是非主流数学。这里我也想澄清一下我的观点:众所周知,数学是从现实生活中抽象出来的理论。人们之所以把现实抽象成理论,是想用抽象出来的理论更好地指导实践。有些数学研究者喜欢用一些已有的理论知识推导出几个推论,却不知道一个是考虑问题不全面很可能是错误的推论,一个是他的推论在现实生活中找不到原型,无法指导实践。严格来说,我不是理想主义者,政治课理论联系实际一直是指引我学习科学文化知识的灯塔(至少我认为计算机科学与技术应该是这个方向)。

我的拙见是,计算机系的学生对数学的要求不一样,但和物理更不一样。平时非数学专业?《高等数学》无非是把数学分析中比较难的理论部分删掉,强调应用公式计算。对于计算机系来说,数学分析最有用的部分就是被删掉的理论部分。记住一堆曲面积分的公式就能理解数学吗?还不如现在查,何必去记。或者直接用Mathematica或者Matlab。退一万步讲。华在数学方面的造诣不用我多说,但他辉煌的一生做了几件我认为对我们来说最重要的事情:第一,它建立了中国科学院计算技术研究所,这是我们国家计算机科学的摇篮。现在他给做工业生产的技术人员讲了很多高等数学理论,推动了中国工业的进步。第三件事是他一生写了很多书,但对高校师生来说更有价值的是他在生病期间和心爱的王元一起写了《高等数学导论》(与其说王元是他的心爱之人,不如说是他的同事,他是中科院数学所的老一辈研究员,对哥德巴赫猜想的贡献在国际上仅次于陈景润)。这本书实际上可以在我们的图书馆找到。说实话,那个时候,那本书上有bug。别人走到哪里都会让开,我却特别感兴趣。看完前两卷,我最大的收获不在于对理论的阐述,而在于对他的理论的完整实例化,以及在生活中寻找模型。这也是我更喜欢具体数学的原因。正如我上面提到的,没有实践,理论就失去了存在的意义。正因为理论是从实践中抽象出来的,理论研究才能更好地指导实践,没有用来指导实践的理论可以说是一文不值。

如上所述,计算机系的学生学习高等数学:知道它是什么,更重要的是知道它为什么。你学习的目的应该是:把抽象的理论运用到实践中,不仅要掌握解题方法,还要掌握解题思路。对于定理的学习,不是简单的应用,而是掌握证明过程,也就是掌握定理的由来,训练你的推理能力。这样才能达到学习这门科学的目的,同时也能缩小我们和数学系同学的思维差距。

我觉得计算机技术的学习是这样的:学校开设的任何科学都有它的滞后性。不要总以为自己掌握了某项技术就天下无敌了。虽然现在Java,VB,C,c++用的很多,但是怎么保证不会有一天被淘汰呢?我认为。NET平台和X#语言的最初迹象就能充分说明问题。换句话说,当我们掌握了一项新技术,就会有更新的技术出现。作为当代大学生,我们应该具备跟上科学发展的素质。比如像有些同学总说的,设计网页的时候我更喜欢直接写html,不想用Frontpage,Dreamweaver。能用语言写网页固然好,但是有高效的手段。你为什么不用它们?就为了显示你的高水平,独一无二?我觉得真正高层次的人是那些能以最快的速度接受新事物的人。高级编程语言的发展日新月异。未来编程就像人说话一样。我认为每个人都应该对xml有所了解。我们真的要把所有东西都用汇编写出来才能显示我们的高水平吗?如果是这样,我们还不如直接用机器语言来写。另一方面,最快接受和利用新技术的关键在于你对计算机科学的掌握。

总的来说,从教育的角度来看,国内高校的课程安排不是很合理,强调理论,但不愿意在理论上深入教育,无法接受新技术,也无法完全回避新技术。我觉得关键问题是国内高校很难突破现状,条条框框限制了如何谋求发展。虽然我们意识到了国外教育的优势,但为什么不能行动起来呢?甚至一点点从粗到细。