西安工业大学
操作系统课程设计报告
课 目:¬¬¬¬ 银行家算法
学 院: 计算机科学与工程学院
指导教师: 姜虹
学 生: 王丽娇
班 级: 网络工程080610127
完成时间:2010年12月25日
操作系统课程设计报告
课 目:¬¬¬¬ 银行家算法
学 院: 计算机科学与工程学院
指导教师: 姜虹
学 生: 王丽娇
班 级: 网络工程080610127
目 录
1、项目内容、要求与分组情况总体介绍 2
2、概要设计 2
2.1开发工具及环境 2
2.2 任务及需求分析 2
2.3 功能模块设计 2
2.4 工作原理 3
3、 具体实现 3
3.1 类设计 3
3.2 模块及实现代码介绍 3
4、运行调试与分析讨论 4
5、设计体会与小结 6
6、参考文献 7
附录:(源程序) 7
1、项目内容、要求与分组情况总体介绍
项目内容、要求:
本次实验的目标是制作一个计算器,可以进行简单的四则运算(加、减、乘、除)。
小组的具体分工情况见下表:
小组组长 谌江波
成员 子项目名称 具体要求
谌江波 模块的组合及测试 查找出程序的错误并改正
肖权 数字键的注册 将数字键注册监听者,使其功能正常
刘达辉 窗口的创建和分配 设计计算器的界面
李晓阳 组合其余同学的工作 是程序完整化
詹烨刚 编写具体的计算方法 添加运算符号及功能代码
2、概要设计
2.1开发工具及环境
文本编辑器:记事本;
运行环境:命令提示符(DOS环境)。
2.2 任务及需求分析
设计简易计算器程序,实现简单的运算(加减乘除),具体任务如下:
1) 计算器窗口界面布局设计;
2) 各种计算功能的算法分析;
3) 编程实现具体的计算功能;
4) 运行测试程序,调试纠正运行错误。
5) 调试无误,运行,测试具体算法功能。
2.3 功能模块设计
计算器的模块设计图如下:
2.4 工作原理
点击相应的数字键,即会在显示文档中显示该数字。进行相应的运算,首先输入第一个计算数字,然后输入运算符,再输入第二个计算数字,点击“=”按钮即得计算结果。同时,还有归零功能,点击该按钮,显示栏中即可归零。
3、 具体实现
3.1 类设计
类名:jisuanqi
作用:功能代码,窗口布局设定
public class Calculator extends WindowAdapter
{}
¬WindowAdapter实现了WindowListener的类,实现了WindowListener
frame.addWindowListener(new WindowAdapter(){});———————————————————————————
类名:WindowDestroyer
作用:用于退出窗口动作
关键代码:
class close implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
3.2 模块及实现代码介绍
Frame fm = new Frame("简单计算器");
for (int i = 0; i <= 16; i++) {
b[i] = new Button(ss[i]);
}
for (int i = 0; i <= 15; i++) {
p2.add(b[i]);
} //创建按钮 并添加到P2
b[16].setBackground(Color.yellow);
txt = new TextField(15);
txt.setEditable(false);
for (int i = 0; i <= 16; i++) {
b[i].addActionListener(new buttonlistener());…… }
注:此方法主要设置窗口、面板、各个按键。对各个按键进行定义(定义好各按键该实现什么功能)、排布,将各个按键注册到监听器上。
———————————————————————————
txt.setText(txt.getText() + btn.getLabel());
if (btn.getLabel() == "归零")
txt.setText("");
注:该代码使每次进入时的文本都清空
———————————————————————————
class close implements ActionListener {//退出
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
注:该方法实现了窗口的关闭
4、运行调试与分析讨论
调试运行4*5运算,运算过程如下所示:
1)命令提示符中运行计算器程序,如下图:
2)计算器界面显示,输入第一个运算值“4”,如下图:
3)输入运算符“*”,如下图:
4)输入第二个运算值“5”,如下图所示:
5)点击计算器按钮“=”,得出计算结果。如下图:
5、设计体会与小结
通过这次课程设计,我们了解到java也是可以分工合作的,虽然最后的整合过程非常麻烦,但是在整合完后,我们发现,课本被翻过很多遍,很多以前不知道的东西就这样豁然开朗了。我们还引用了很多从来没有用过的语句块,大多是从网上找到,然后自己整合进入代码,再实现我们想要的功能。
编程是个艰难的过程,很多功能语句都需要上网或者是查其他书籍来查看他们的用法,课本上的东西对我们来说远远不够,我们要把目光放长远一些。
这次的课程设计使我对JAVA的许多东西都有了更深一步的了解,以前对自己的要求是看得懂就行,现在才发现,光能看懂是远远不够的,能看懂并不代表你会!只有自己真的亲身体验到了,才会知道。
这个礼拜的课程设计是这个学期最累的一个礼拜,但是,我们的付出总算有回报,虽然我们的计算器可能还存在不少的问题,但是,至少它可以正常运行四则运算,基本达到了我们预期的要求,所以,这个礼拜同样是我最充实的一个礼拜。
6、参考文献
[1]杜春涛,《面向对象程序设计—Java语言》,中国铁道出版社.
[2]丁振凡,《JAVA语言实用教程》,北京邮电大学出版社.
[3]
附录:(源程序)
import java.awt.*;
import java.awt.event.*;
public class jisuanqi extends WindowAdapter {
Panel p1 = new Panel();
Panel p2 = new Panel();
Panel p3 = new Panel();
TextField txt;
private Button[] b = new Button[17];
private String ss[] = { "7", "8", "9", "+", "4", "5", "6", "-", "1", "2", "3", "*", "归零", "0", "=", "/", "关闭" };
static double a;
static String s, str;//定义变量 创建对像
public static void main(String args[]) {
(new jisuanqi()).frame();
}
public void frame() {
Frame fm = new Frame("简单计算器");
for (int i = 0; i <= 16; i++) {
b[i] = new Button(ss[i]);
}
for (int i = 0; i <= 15; i++) {
p2.add(b[i]);
} //创建按钮 并添加到P2
b[16].setBackground(Color.yellow);
txt = new TextField(15);
txt.setEditable(false);
for (int i = 0; i <= 16; i++) {
b[i].addActionListener(new buttonlistener());//添加监听器
}
b[16].addActionListener(new close());
fm.addWindowListener(this);
fm.setBackground(Color.red);
p1.setLayout(new BorderLayout());
p1.add(txt, "North");
p2.setLayout(new GridLayout(4, 4));
p3.setLayout(new BorderLayout());
p3.add(b[16]);
fm.add(p1, "North");
fm.add(p2, "Center");
fm.add(p3, "South");
fm.pack();
fm.setVisible(true);//都是些窗中设置 添加相关组件和监听器
}
public void windowClosing(WindowEvent e) {
System.exit(0);//退出系统
}
class buttonlistener implements ActionListener {
//编写监听器事件 通过按键得出给果
public void actionPerformed(ActionEvent e) {
Button btn = (Button) e.getSource();
if (btn.getLabel() == "=") {
jisuan();
str = String.valueOf(a);
txt.setText(str);
s = "";
} else if (btn.getLabel() == "+") {
jisuan();
txt.setText("");
s = "+";
} else if (btn.getLabel() == "-") {
jisuan();
txt.setText("");
s = "-";
} else if (btn.getLabel() == "/") {
jisuan();
txt.setText("");
s = "/";
} else if (btn.getLabel() == "*") {
jisuan();
txt.setText("");
s = "*";
} else {
txt.setText(txt.getText() + btn.getLabel());
if (btn.getLabel() == "归零")
txt.setText("");
}
}
public void jisuan() {//编写具体计算方法
if (s == "+")
a += Double.parseDouble(txt.getText());
else if (s == "-")
a -= Double.parseDouble(txt.getText());
else if (s == "*")
a *= Double.parseDouble(txt.getText());
else if (s == "/")
a /= Double.parseDouble(txt.getText());
else
a = Double.parseDouble(txt.getText());
}
}
}
class close implements ActionListener {//退出
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
计算机专业 教育 是我国高等教育课程体系中开设时间较早、学科建设较为成熟和完善、专业人才数量较多的专业。下文是我为大家搜集整理的关于计算机专业3000字 毕业 论文的内容,欢迎大家阅读参考!
浅析当前计算机存在的问题及发展趋势
1我国计算机应用发展中存在的问题
1.1我国计算机应用水平较低与其他发达国家相比较而言,我国计算机应用水平相对较低,上网企业和家庭数量还相对较少,计算机在企业和家庭中的普及还不够,与发达国家相差甚远,尚没有达到信息化和自动化。
1.2我国计算机应用水平发展不平衡
我国计算机用户大多集中在东部地区,并且大陆与台湾的计算机普及量相差较大,计算机应用发展水平很不均衡。另外,我国信息产业不能满足信息化的发展与计算机发展对软硬件商品的需要。
1.3我国信息化产业发展较慢
我国国内生产的商品技术水平比较低,不能在世界市场内占据一席之地,科技成果转化速度慢,计算机应用的标准缺乏统一规范。
1.4计算机应用推广的环境不规范
我国计算机应用发展起步晚,管理体制不够完善,有待加强。有关的法律法规和信用体制还没有完全建立,知识的缺乏和资金的供应不足成为了影响我国计算机应用发展的最大阻碍。
1.5引用的外国科技缺乏针对性
因为受到条件的限制和科学技术落后等原因,我国对于外国引入的先进计算机技术不能完全掌握,不仅浪费了资源,还赔出了大量成本,造成严重浪费。
2当代计算机应用发展策略
2.1加强信息化和办公自动化建设国内企业要逐步推广办公室自动化,实现无纸化办公,积极推行网络自动化处理办公任务,使文件管理更加规范,节约资源,提高工作效率。
2.2加强计算机和网络安全管理设置“防火墙”,防止病毒和黑客的非法入侵,必要时对计算机数据进行备份,建立光盘库,对数据实行档案化管理。
2.3健全体制,完善法律法规相关部门要完善计算机应用管理体制,加强有关法律法规的建立,建立完善的计算机信用体制。
2.4加强对计算机应用开发的投资,重视计算机人才的培养,注重从先进国家吸收 经验 和教训,多与其进行合作和沟通。做到取长补短,互相提高,互相进步。
3计算机应用的发展趋势
3.1计算机应用领域更加广泛计算机技术现已分布到各个领域,包括医学、生产、工业等领域,在未来发展中,计算机技术不断提高,将在更多的领域中得到应用。
3.2突飞猛进的微电子技术微电子技术是现代计算机技术的一个重要分支,一些新兴的计算机有可能会在21世纪后期登上历史舞台,融入人们的生活和生产工作当中去,未来的计算机世界是机遇与挑战并存的。
3.3计算机的智能化发展在人类与计算机之间的沟通障碍会变少,人机界面将会更加友好。虽然目前计算机的思维和人类的 思维方式 还相差甚远,但是计算机正在以一种更自然、更人性化的方式与人类打交道,它们将更加与人靠近,更加贴近人类的生活,成为我们的好朋友。
3.4计算机性能越来越高,速度越来越快计算机将往更高的方向发展,主要表现在速度和精确度上,计算机的芯片频率更高,并且计算机的整体性能也有了新的提高。
4结束语
随着计算机技术的不断发展,在各个行业都有了广泛的应用。计算机的应用渗透到我们生活和工作的每个地方,使更多的人力资源从繁重的工作中解脱出来,节约了资源,提高了生产效率,获得更多经济效益。可以说现代社会中推广并发展计算机应用技术,是顺应时代潮流的必经之路。
论信息化背景下的计算机基础理论教育
随着信息技术、通讯技术及计算机技术的飞速发展,现代信息技术日渐成熟,在高校教学工作中发挥的作用越来越大,同时给高校教务管理工作带来了新的挑战和发展契机。在信息化背景下,学校必须顺应时代发展需要,加大计算机基础理论教育,重视教师工作质量,从而符合新的教育观以及人才观。
一、信息化背景下计算机基础理论教育的教学现状
信息化主要以数字化、多媒体和电子化形式存在。随着信息技术、 网络技术 、通讯技术和计算机技术的不断发展,全球网络化已逐渐发展成为基本现状,在世界范围内,一个新型的、在现代信息技术及信息网络基础上发展而来的信息环境正逐步构成。在这一背景下,学校也加强计算机基础理论教育。其讲授的内容从1984年至今一共经历了三次变化,从最开始的Basic语言程序方面的设计,转到现在的office办公 操作系统 和计算机网络。然而当前许多学校在给学生传授计算机基础理论时,并未在教学内容以及考试 方法 上面有过多的变化,同时教学课时也逐渐缩减。造成上述原因主要有以下三个方面:首先由于当前计算机等级考试通过率比较高,使人不禁考虑是否题目设置的过于简单;其次等级考试的导向性限制了计算机教学进行改革发展的路程;最后由于传统与单一的教学方式与评价手段,影响了学生学习计算机理论的积极性,与此同时学校对于相关基础设施的建设与投入还比较欠缺。
二、加强计算机基础理论教育的主要方式
1.调整结构,突出技能
结合当前信息化背景,广大院校应该在调整专业培养的结构上认真的考虑,要面向目前的市场经济来设置课程,将那些已经陈旧过时的知识及时的淘汰出去,及时的加入一些能够培养应用型专业人才实际操作的课程。在学生的能力结构方面,院校应该着重培养学生运用先进工具软件的能力,着重培养学生的安装、维护和管理计算机软件的能力,还应该要求学生要具有一定的计算机局域网组网能力和编程能力等。
一方面,可以打破目前教学计划的框架,开设多种多样的选修课。另一方面,应该加强培养学生的动手能力。要改变传统的 教学方法 ,着重强调学生在教师的指导下进行自我建构,从而培养其良好的动手操作能力。比如,可以广泛的开展第二课堂,鼓励学生使用先进的工具软件。
2.转变传统教学模式
改变传统的教学模式,采用先进的教学方法:随着时代的发展和科技的进步,越来越多的新技术被应用在了计算机基础理论课的教学当中,比如互联网的应用等等,这样就可以让教学内容变得更加的丰富和有趣。同时,互联网和校园网的接轨也可以有效地提高教学的质量。比如,在讲解一些枯燥的理论知识的时候,可以让学生自己在网络上对这些资料进行查找,然后对查到的结果进行 总结 和分类,可以采用表格或者图形的方式,然后在校内网上发布,喜欢的学生可以在这个平台上进行充分的交流,这样就可以让学生充分掌握课堂中讲解的相关技术知识,并且也锻炼了动手操作的能力。
3.个体化教学方式
采用个体化教学的方式,因材施教:由于各个学生水平往往不处于同一个水平线上,有些学生水平高,如果教师一味的教一些简单的知识,慢慢的就会让这些学生失去学习的兴趣;而有些水平比较差的学生,会不容易理解这些教学内容,从而失去了学习的信心和动力,因此,就需要采用个体化教学的方式,根据学生的实际水平选择合适的教学方法,在计算机教学中,针对不同水平的学生采取一些不同难度的问题,并且还能够将计算机的优势充分的体现出来,比如在学习WORD的时候,可以让学生自己做一个个人简历等等,并且进行评比,选出最好的,从而让学生获得成功的快感。
三、结束语
随着时代的发展和社会经济的进步,在当前信息化背景下,对计算机基础理论的教学的要求日益严格,需要教师不断提高自身教学水平,转变传统的教学模式,加强学生的计算机信息化技术学习,从而使得学生能够适应时代发展的潮流,掌握计算机应用的具体含义,最终提高自身的综合素质。
浅谈计算机技术对社会发展的影响
摘要:计算机技术的应用促进各个领域发展,加快了社会的发展。在知识经济时代参与下,资本的分配形式发生改变,不是以工作量与工作时间进行计算,而是以知识技术的参与度进行资产的分配,重视知识在生产过程中创造的价值,计算机技术的应用总体促进了社会发展,但也存在一定问题,从不同方面阐述计算机技术对社会发展的影响,希望为研究计算机技术应用的专家与学者提供理论参考。
关键词:计算机技术;社会发展;影响
计算机技术与社会发展存在一定关系,计算机技术发展促进社会发展,同时社会发展为计算机技术发展提供了条件。在互联网+时代,大数据及云计算技术的应用,促进了各个领域的发展,加快了我国经济发展,经济快速发展,拉动了 其它 产业的发展。计算机技术需要在应用过程中不断完善,不断改进,以适应社会发展对计算机技术的需求。
1计算机技术对社会发展的促进作用
1.1提高 文化 的传播程度
计算机技术对提高文化传播程度主要有三方面:首先计算机技术应用到教学领域,改变了传统的教学模式,提高了教学手段,丰富了教学方法,教师可以通过计算机向学生提供图片、视频、音频、课件等教学辅助工具,激发了学生学习兴趣,提高了课堂教学效果,符合现代高等学校教学改革需要,为教学改革提供了技术支持。其次计算机有超强的计算机处理能力,教师在科研研究阶段,需要进行大量数据处理,数据分析,利用计算机进行处理,提高了工作效率,提高科技文化传播。最后,网络是现在宣传的主要阵地,通过网络可以进行民族文化传播,还可以与国外人士进行文化交流,促进我国文化产业的快速发展。文化传播程度的改变,需要计算机技术的发展,计算机技术发展为文化传播提供了技术支持。
1.2促进经济发展
计算机技术在企业中的应用,尤其管理信息系统在相应企业中的应用,提高了企业的工作效率,降低了企业成本,促进经济的快速发展。计算机现在成为企业发展的主要工具,现在企业内部办公基本都依靠计算机,改变传统办公方式,节省了人力、物力、财力,促进了企业经济的发展。企业之间的交流与合作,都是通过互联网技术在网络上进行初步了解,达成共识,谋求合作发展,实现企业之间双赢力度。企业与同行业在激烈竞争的过程中,在竞争过程寻求合作,共同促进经济发展。企业的发展需要利润最大化支持,企业发展核心因素就是有创新能力,创新能力需要先进的技术支持,计算机技术在企业发展中起到重要作用,加快了企业的快速发展,提高了企业工作效率,促进了经济发展。
1.3计算机技术推动了社会生产力的发展
计算机发展促进其它产业发展,比如电子商务、现代生物技术等的发展。社会生产力的发展需要科技水平不断发展与创新,计算机技术发展及其广泛应用,计算机技术已经成为现代技术核心。在企业发展过程中,依靠计算机技术提高企业发展速度,为企业发展提供了技术支持,促进企业转型,适应社会发展需要,通过计算机企业可以获得很多有价值的信息,为企业的发展及决策起到重要作用,推动了社会生产力的发展。
2计算机技术应用在社会发展过程存在的弊端
2.1计算机技术淡化了人与人之间的关系
计算机技术的广泛应用,尤其Internet技术的应用,改变了人们的生活习惯,现在人们之间的交流都是通过网络完成,促使人与人之间的关系淡化,缺少直接沟通的亲切感,经常发展下去,容易促使人们之间产生隔阂,人与人之间更加陌生、冷漠,人的感情更加淡化,容易造成一些人心理健康出现问题,出现对社会的恐惧感。计算机技术的应用改变了社会,但人们应该积极面对相关问题,提出解决 措施 ,但还是要积极应用计算机技术解决工作中的实际问题,我们必须正确应用计算机技术。
2.2计算机技术的使用不利于知识产权的保护
现在国家越来越重视知识产权的保护,侵权是一种违法行为。网络是一种自由的开发平台,在网络上给知识产权的保护起到一定难度。各行各业均已广泛使用到计算机技术,然而却加大了对知识产权的保护难度。计算机网络缺乏行业规范约束且无区域限制,使得无法对全部的知识产权进行保护。计算机技术的使用不利于做好知识产权的保护工作。此外,在创作艺术作品时,如果作品进入计算机网络,就容易被非法下载和复制,使得创作者的著作权受到威胁,造成了创作者的经济损失。从经济角度分析,这将不利于文化的发展与社会的进步。社会的进步发展,依靠科技水平的发展,计算机技术的广泛应用,促进了社会的发展,但在计算机技术的应用过程中也存在一定问题,必须在网络环境下,如何进行有效知识产权的保护,促使人们的合法权益不受侵犯,这也是迫切需要解决的问题。
2.3降低个人隐私的安全程度
在互联网的开发平台中,个人隐私容易泄露,比如在酒店登记入住的时候,一般都需要留手机号码,还有其它个人信息,由于技术原因、人为因素促使个人信息泄露,有时候给个人的生活带来一定的麻烦,现在基本都是通过网络平台建立个人信息的数据库,一些公众人员在网络上进行买卖个人信息,个人信息泄露严重时候可能给个人的财产等带来一定的危险。但在网上买卖个人信息,基本都是营销人员,通过打电话的形式进行推销产品,希望国家加大力度维护个人信息,对一些有意泄露个人信息的单位、个人要建立立法坚决打击。
参考文献
[1]王宇.浅谈现代计算机技术的发展方向与趋势[J].数字技术与应用,2017(1).
[2]李婷.计算机技术在茶叶生产中的应用探讨[J].福建茶叶,2017(1).
[3]赵耀.计算机技术在电子商务发展中的地位[J].现代经济信息,2017(1).
[4]杨威,刘胜珍.关于计算机技术应用与电子商务发展的探究[J].现代工业经济和信息化,2017(2).
[5]王璐.论计算机技术发展过程中的创新[J].电脑迷,2016(12).
[6]潘苏.计算机技术应用现状和未来发展方向[J].信息与电脑(理论版),2016(22).
[7]刘闯.在包装领域中如何运用计算机技术[J].电脑知识与技术,2016(28).
[8]霍玲玲,李岳.浅谈计算机技术的发展[J].现代交际,2015(12).
[9]康文德.计算机技术在面向市场需求中的应用[J].电子技术与软件工程,2016(01).
[10]何兰,黄煌镜,石红.论计算机技术在医院中的重要作用[J].电子测试,2016(12).
大学计算机科学导论论文
计算机科学与技术这一门科学深深的吸引着我们这些同学们,原先不管是国内还是国外都喜欢把这个系分为计算机软件理论、计算机系统、计算机技术与应用。后来又合到一起,变成了现在的计算机科学与技术。我一直认为计算机科学与技术这门专业,在本科阶段是不可能切分成计算机科学和计算机技术的,因为计算机科学需要相当多的实践,而实践需要技术;每一个人(包括非计算机专业),掌握简单的计算机技术都很容易(包括原先Major们自以为得意的程序设计),但计算机专业的优势是:我们掌握许多其他专业并不"深究"的东西,例如,算法,体系结构,等等。非计算机专业的人可以很容易地做一个芯片,写一段程序,但他们做不出计算机专业能够做出来的大型系统。今天我想专门谈一谈计算机科学,并将重点放在计算理论上。
1)计算机语言
随着20世纪40年代第一台存储程序式通用电子计算机的研制成功,进入20世纪50年代后,计算机的发展步入了实用化的阶段。然而,在最初的应用中,人们普遍感到使用机器指令编制程序不仅效率低下,而且十分别扭,也不利于交流和软件维护,复杂程序查找错误尤其困难,因此,软件开发急需一种高级的类似于自然语言那样的程序设计语言。1952年,第一个程序设计语言Short Code出现。两年后,Fortran问世。作为一种面向科学计算的高级程序设计语言,Fortran的最大功绩在于牢固地树立了高级语言的地位,并使之成为世界通用的程序设计语言。Algol60的诞生是计算机语言的研究成为一门科学的标志。该语言的文本中提出了一整套的新概念,如变量的类型说明和作用域规则、过程的递归性及参数传递机制等。而且,它是第一个用严格的语法规则——巴科斯范式(BNF)定义语言文法的高级语言。程序设计语言的研究与发展在产生了一批成功的高级语言之后,其进一步的发展开始受到程序设计思想、方法和技术的影响,也开始受到程序理论、软件工程、人工智能等许多方面特别是实用化方面的影响。在“软件危机”的争论日渐平息的同时,一些设计准则开始为大多数人所接受,并在后续出现的各种高级语言中得到体现。例如,用于支持结构化程序设计的PASCAL语言,适合于军队各方面应用的大型通用程序设计语言ADA,支持并发程序设计的MODULA-2,支持逻辑程序设计的PROLOG语言,支持人工智能程序设计的LISP语言,支持面积对象程序变换的SMALLTALK、C等。而且,伴随着这些语言的出现和发展,产生了一大批为解决语言的编译和应用中所出现的问题而发展的理论、方法和技术。有大量的学术论文可以证明,由高级语言的发展派生的各种思想、方法、理论和技术触及到了计算机科学的大多数学科方向,但内容上仍相对集中在语言、计算模型和软件开发方法学方面。
(2)计算机模型与软件开发方法
20世纪80年代是计算机网络、分布式处理和多媒体大发展的时期。在各种高级程序设计语言中增加并发机构以支持分布式程序设计,在语言中通过扩展绘图子程序以支持计算机图形学程序设计成为当时程序设计语言的一种时尚。之后,在模数/数模转换等接口技术和数据库技术的支持下,通过扩展高级语言的程序库又实现了多媒体程序设计的构想。进入20世纪90年代之后,并行计算机和分布式大规模异质计算机网络的发展又将并行程序设计语言、并行编译程序、并行操作系统、并行与分布式数据库系统等试行软件的开发的关键技术依然与高级语言和计算模型密切相关,如各种并行、并发程序设计语言,进程代数,PETRI网等,它们正是软件开发方法和技术的研究中支持不同阶段软件开发的程序设计语言和支持这些软件开发方法和技术的理论基础——计算模型。
(3)计算机应用
用计算机来代替人进行计算,就得首先研究计算方法和相应的计算机算法,进而编制计算机程序。由于早期计算机的应用主要集中在科学计算领域,因此,数值计算方法就成为最早的应用数学分支与计算机应用建立了联系。最初的时候,由于计算机的存储器容量很小,速度也不快,为了计算一些稍稍大一点的题目,人们常常要挖空心思研究怎样节省存储单元,怎样减少不需要的操作。为此,发展了像稀疏矩阵计算理论来进行方程组的求解;发展了杂凑函数来动态地存储、访问数据;发展了虚拟程序设计思想和程序覆盖技术在内存较小的计算机上运行较大的程序;在子程序和程序包的概念提出之后,许多人开始将数学中的一些通用计算公式和计算方法写成子程序,并进一步开发成程序包,通过简洁的调用命令向用户开放。子程序的提出是今日软件重用思想的开端。
在计算机应用领域,科学计算是一个长久不衰的方向。该方向主要依赖于应用数学中的数值计算的发展,而数值计算的发展也受到来自计算机系统结构的影响。早期,科学计算主要在单机上进行,经历了从小规模数值分析到中大规模数值分析的阶段。随着并行计算机和分布式并行计算机的出现,并行数值计算开始成为科学计算的热点,处理的问题也从中大规模数值分析进入到中大规模复杂问题的计算。所谓中大规模复杂问题并不是由于数据的增大而使计算变得困难,使问题变得复杂,而主要是由于计算中考虑的因素太多,特别是一些因素具有不确定性而使计算变得困难,使问题变得复杂,其结果往往是在算法的研究中精度与复杂性的矛盾难于克服。
几何是数学的一个分支,它实现了人类思维方式中的数形结合。在计算机发明之后,人们自然很容易联想到了用计算机来处理图形的问题,由此产生了计算机图形学。计算机图形学是使用计算机辅助产生图形并对图形进行处理的科学。并由此推动了计算机辅助设计(CAD)、计算机辅助教学(CAI)、计算机辅助信息处理、计算机辅助测试(CAT)等方向的发展。
在各种实际应用系统的开发中,有一个重要的方向值得注意,即实时系统的开发。
利用计算机证明数学定理被认为是人工智能的一个方向。人工智能的另一个方向是研究一种不依赖于任何领域的通用解题程序或通用解题系统,称为GPS。特别值得一提的是在专家系统的开发中发展了一批新的技术,如知识表示方法、不精确性推理技术等,积累了经验,加深了对人工智能的认识。20世纪70年代末期,一部分学者认识到了人工智能过去研究工作基础的薄弱,开始转而重视人工智能的逻辑基础研究,试图从总结和研究人类推理思维的一般规律出发去研究机器思维,并于1980年在《Artificial Intelligence》发表了一组非单调逻辑的研究论文。他们的工作立即得到一大批计算机科学家的响应,非单调逻辑的研究很快热火朝天地开展起来,人工智能的逻辑基础成为人工智能方向发展的主流。
数据库技术、多媒体技术、图形学技术等的发展产生了两个新方向,即计算可视化技术与虚拟现实技术。
随着计算机网络的发展,分布在全世界的各种计算机正在以惊人的速度相互连接起来。网络上每天都在进行着大量政治、经济、军事、外交、商贸、科学研究与艺术信息的交换与交流。网络上大量信息的频繁交换,虽然缩短了地域之间的距离,然而同时也使各种上网的信息资源处在一种很难设防的状态之中。于是,计算机信息安全受到各国政府的高度重视。除了下大力气研究对付计算机病毒的软硬件技术外,由于各种工作中保密的需要,计算机密码学的研究更多地受到各国政府的重视。
实际上,在计算机科学中计算机模型和计算机理论与实现技术同样重要。但现在许多学生往往只注重某些计算机操作技术,而忽略了基础理论的学习,并因为自己是“操作高手”而沾沾自喜,这不仅限制了自己将研究工作不断推向深入,而且有可能使自己在学科发展中处于被动地位。例如,在20世纪50年代和20世纪60年代,我国随着计算机研制工作和软件开发工作的发展,陆续培养了在计算机制造和维护中对计算机某一方面设备十分精通的专家,他们能准确地弄清楚磁芯存储器、磁鼓、运算器、控制器,以及整机线路中哪一部分有问题并进行修理和故障排除,能够编制出使用最少存储单元而运算速度很快的程序,对机器代码相当熟悉。但是,当容量小的磁芯存储器、磁鼓、速度慢的运算器械、控制器很快被集成电路替代时,当程序设计和软件开发广泛使用高级语言、软件开发工具和新型软件开发方法后,这批技术精湛的专家,除少量具有坚实的数学基础、在工作中已有针对性地将研究工作转向其他方向的人之外,相当一部分专家伴随着新技术的出现,在替代原有技术的发展过程中而被淘汰。因此,在计算机科学中,计算比实现计算的技术更重要。只有打下坚实的理论基础,特别是数学基础,学习计算机科学技术才能事半功倍,只有建立在高起点理论基础之上的计算机科学技术,才有巨大的潜力和发展前景。
计算机理论的一个核心问题
我国计算机科学系里的传统是培养做学术研究,尤其是理论研究的人(方向不见得有多大的问题,但是做得不是那么尽如人意)。而计算机的理论研究,说到底了,如网络安全学,图形图像学,视频音频处理,哪个方向都与数学有着很大的关系,虽然也许是正统数学家眼里非主流的数学。这里我还想阐明我的一个观点:我们都知道,数学是从实际生活当中抽象出来的理论,人们之所以要将实际抽象成理论,目的就在于想用抽象出来的理论去更好的指导实践,有些数学研究工作者喜欢用一些现存的理论知识去推导若干条推论,殊不知其一:问题考虑不全很可能是个错误的推论,其二:他的推论在现实生活中找不到原型,不能指导实践。严格的说,我并不是一个理想主义者,政治课上学的理论联系实际一直是指导我学习科学文化知识的航标(至少我认为搞计算机科学与技术的应当本着这个方向)。
我个人的浅见是:计算机系的学生,对数学的要求固然跟数学系不同,跟物理类差别则更大。通常非数学专业的所?高等数学",无非是把数学分析中较困难的理论部分删去,强调套用公式计算而已。而对计算机系来说,数学分析里用处最大的恰恰是被删去的理论部分。记上一堆曲面积分的公式,难道就能算懂了数学?那倒不如现用现查,何必费事记呢?再不然直接用Mathematica或是Matlab好了。退一万步。华罗庚在数学上的造诣不用我去多说,但是他这光辉的一生做得我认为对我们来说,最重要的几件事情:首先是它筹建了中国科学院计算技术研究所,这是我们国家计算机科学的摇篮。在有就是他把很多的高等数学理论都交给了做工业生产的技术人员,推动了中国工业的进步。第三件就是他一生写过很多书,但是对高校师生价值更大的就是他在病期间在病床上和他的爱徒王元写了《高等数学引论》(王元与其说是他的爱徒不如说是他的同事,是中科院数学所的老一辈研究员,对歌德巴赫猜想的贡献全世界仅次于陈景润)这书在我们的图书馆里居然找得到,说实话,当时那个书上已经长了虫子,别人走到那里都会闪开,但我却格外感兴趣,上下两册看了个遍,我的最大收获并不在于理论的阐述,而是在于他的理论完全的实例化,在生活中去找模型。这也是我为什么比较喜欢具体数学的原因,正如我在上文中提到的,理论脱离了实践就失去了它存在的意义。正因为理论是从实践当中抽象出来的,所以理论的研究才能够更好的指导实践,不用于指导实践的理论可以说是毫无价值的。
正如上面所论述的,计算机系的学生学习高等数学:知其然更要知其所以然。你学习的目的应该是:将抽象的理论再应用于实践,不但要掌握题目的解题方法,更要掌握解题思想,对于定理的学习:不是简单的应用,而是掌握证明过程即掌握定理的由来,训练自己的推理能力。只有这样才达到了学习这门科学的目的,同时也缩小了我们与数学系的同学之间思维上的差距。
关于计算机技术的学习我想是这样的:学校开设的任何一门科学都有其滞后性,不要总认为自己掌握的某门技术就已经是天下无敌手了,虽然现在Java,VB,C,C++用的都很多,怎能保证没有被淘汰的一天,我想.NET平台的诞生和X#语言的初见端倪完全可以说明问题。换言之,在我们掌握一门新技术的同时就又有更新的技术产生,身为当代的大学生应当有紧跟科学发展的素质。举个例子,就像有些同学总说,我做网页设计就喜欢直接写html,不愿意用什么Frontpage,Dreamweaver。能用语言写网页固然很好,但有高效的手段你为什么不使呢?仅仅是为了显示自己的水平高,unique? 我看真正水平高的是能够以最快的速度接受新事物的人。高级程序设计语言的发展日新月异,今后的程序设计就像人们在说话一样,我想大家从xml中应是有所体会了。难道我们真就写个什么都要用汇编,以显示自己的水平高,真是这样倒不如直接用机器语言写算了。反过来说,想要以最快的速度接受并利用新技术关键还是在于你对计算机科学地把握程度。
这里有很多我不知道你要的!