程序设计语言论文5000字(程序设计语言论文题目)

程序设计 94
今天给各位分享程序设计语言论文5000字的知识,其中也会对程序设计语言论文题目进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、求一份数控专业的毕业论文要5000字

今天给各位分享程序设计语言论文5000字的知识,其中也会对程序设计语言论文题目进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

求一份数控专业的毕业论文要5000字

近年来,为了适应市场需要,不少职业技术学校相继开设了数控技术方面的专业。我校也于去年购置了两台经济型数控车床和一台数控床身铣床并配置华兴数控仿真软件(机床数控系统是南京华兴数控操作系统)以满足数控教学的要求。通过几个学期的教学实践,深感要做好数控机床操作,零件加工前的准备工作相当重要。 一、零件的加工程序编写及校验 在数控机床上加工零件,不管数控机床使用的是何种操作系统,必须要有与数控机床相适应的数控加工程序。首先,学生根据教师给出的零件图自行编制加工程序。在编写加工程序的时候先分析零件图,根据零件图的技术要求来分析加工工艺路线,确定加工步骤,合理选择加工中每一道工序中要使用的刀具以及加工中的切削用量参数,并进行与数控加工程序相关的数学处理。在数学处理时会出现一些繁琐的坐标计算问题,为简化计算和缩短计算时间,我们让学生在计算机模拟房内利用AutoCAD软件先绘制零件图,再利用AutoCAD软件的查询命令予以解决并记下数据。通过工艺分析与数学计算,再根据所确定的工艺路线与零件加工步骤来编写程序。在编写完数控加工程序之后,利用数控机床制造商提供的配套数控仿真教学软件在计算机模拟室进行反复校验和仿真模拟,以检查程序的正确性,同时,对坐标数值、进给量、刀补值等参数进一步处理,以适应实际加工需要。 为什么要这样做呢?因为一般职业技术学校受经费等原因限制,数控机床数量较少,学生要同时上数控机床校验不太可能,况且时间拖得长不利于教学。另一方面,通过校验还可以使学生在数控机床操作之前熟悉数控加工软件的使用方法以及熟悉数控机床的操作面板,为下一步的数控机床操作打好基础。最后,教师对每个学生编制的加工程序做全面细致的审核,确定最终加工程序。教师审核的内容主要是程序结构的合理性、走刀线路、主轴转速、进给量、吃刀深度以及刀具的选择等,在审核的同时为学生提出建设性的修改意见,使学生知道为什么要这样修改,不改会造成什么后果,程序确定之后,及时将程序记下以备操作。 二、加工材料及刀具、夹具的准备 程序准备仅仅是第一步,程序校验通过以后,接下来就是加工材料及刀具和夹具的准备。这一步工作做得如何,将直接影响到数控操作的最终效果和学生的学习兴趣,因此要认真做好。 目前,职业技术学校供数控机床操作教学用的材料主要是铝材、尼龙棒、钢材、石蜡、硬木砧板等,选用的材料要能最大限度地满足数控操作教学的要求,同时要考虑经济性。根据我校的实际情况,我们选择铝和石蜡作为车床和铣床的加工材料。刀具的选择则要根据被加工材料的表面形状、材质等来选择,由于我们所选用的这些材料没有很高的硬度,故对刀具无特别要求,选用普通刀具即可。但在加工时由于零件的形状和技术要求不同,要选择不同类型的刀具来加工,例如加工三角形螺纹要选择三角螺纹车刀,加工圆弧则要选择圆弧到或者是尖刀来进行加工等,合理的选择加工刀具是加工好零件的基本保证。夹具的选择比较简单,如在数控车床上加工铝棒和石蜡棒,铝棒和石蜡棒直接由三爪自定心卡盘夹紧即可;而在铣床上加工时,只要按普通铣床的要求,用压板将铝或石蜡板固定在工作台上或机用平口钳夹紧就可以了,夹紧力的控制以在加工过程中工件不发生移动为宜。 但是在实际数控机床加工应用中,要综合考虑数控机床的技术要求、夹具的特点、工件材料的性能、加工工序、切削用量以及其他相关因素来正确选用刀具和夹具,而在学习过程中要求学生把石蜡材料看成是金属材料来进行加工,用加工金属材料的切削参数来加工石蜡材料,在加工过程中合理分配加工余量,将粗加工和精加工进行区分。通过以上做法,加工出的工件符合图纸要求,效果良好,达到了数控机床操作的目的。

计算机论文范文5000字

近年来,随着就业竞争越演越烈,关于 毕业 生就业质量问题的研讨亦日益广泛深入。下面是我为大家推荐的计算机论文,供大家参考。

计算机论文 范文 一:认知无线电系统组成与运用场景探析

认知无线电系统组成

认知无线电系统是指采用认知无线电技术的无线通信系统,它借助于更加灵活的收发信机平台和增强的计算智能使得通信系统更加灵活。认知无线电系统主要包括信息获取、学习以及决策与调整3个功能模块,如图1所示[3]。

认知无线电系统的首要特征是获取无线电外部环境、内部状态和相关政策等知识,以及监控用户需求的能力。认知无线电系统具备获取无线电外部环境并进行分析处理的能力,例如,通过对当前频谱使用情况的分析,可以表示出无线通信系统的载波频率和通信带宽,甚至可以得到其覆盖范围和干扰水平等信息;认知无线电系统具备获取无线电内部状态信息能力,这些信息可以通过其配置信息、流量负载分布信息和发射功率等来得到;认知无线电系统具备获取相关政策信息的能力,无线电政策信息规定了特定环境下认知无线电系统可以使用的频带,最大发射功率以及相邻节点的频率和带宽等;认知无线电系统具备监控用户需求并根据用户需求进行决策调整的能力。如表1所示,用户的业务需求一般可以分为话音、实时数据(比如图像)和非实时数据(比如大的文件包)3类,不同类型的业务对通信QoS的要求也不同。

认知无线电系统的第2个主要特征是学习的能力。学习过程的目标是使用认知无线电系统以前储存下来的决策和结果的信息来提高性能。根据学习内容的不同, 学习 方法 可以分为3类。第一类是监督学习,用于对外部环境的学习,主要是利用实测的信息对估计器进行训练;第2类是无监督学习,用于对外部环境的学习,主要是提取外部环境相关参数的变化规律;第3类是强化学习,用于对内部规则或行为的学习,主要是通过奖励和惩罚机制突出适应当前环境的规则或行为,抛弃不适合当前环境的规则或行为。机器学习技术根据学习机制可以分为:机械式学习、基于解释的学习、指导式学习、类比学习和归纳学习等。

认知无线电系统的第3个主要特性是根据获取的知识,动态、自主地调整它的工作参数和协议的能力,目的是实现一些预先确定的目标,如避免对其他无线电系统的不利干扰。认知无线电系统的可调整性不需要用户干涉。它可以实时地调整工作参数,以达到合适的通信质量;或是为了改变某连接中的无线接入技术;或是调整系统中的无线电资源;或是为了减小干扰而调整发射功率。认知无线电系统分析获取的知识,动态、自主地做出决策并进行重构。做出重构决策后,为响应控制命令,认知无线电系统可以根据这些决策来改变它的工作参数和/或协议。认知无线电系统的决策过程可能包括理解多用户需求和无线工作环境,建立政策,该政策的目的是为支持这些用户的共同需求选择合适的配置。

认知无线电与其他无线电的关系

在认知无线电提出之前,已经有一些“某某无线电”的概念,如软件定义无线电、自适应无线电等,它们与认知无线电间的关系如图2所示。软件定义无线电被认为是认知无线电系统的一种使能技术。软件定义无线电不需要CRS的特性来进行工作。SDR和CRS处于不同的发展阶段,即采用SDR应用的无线电通信系统已经得到利用,而CRS正处于研究阶段,其应用也正处于研究和试验当中。SDR和CRS并非是无线电通信业务,而是可以在任何无线电通信业务中综合使用的技术。自适应无线电可以通过调整参数与协议,以适应预先设定的信道与环境。与认知无线电相比,自适应无线电由于不具有学习能力,不能从获取的知识与做出的决策中进行学习,也不能通过学习改善知识获取的途径、调整相应的决策,因此,它不能适应未预先设定的信道与环境。可重构无线电是一种硬件功能可以通过软件控制来改变的无线电,它能够更新部分或全部的物理层波形,以及协议栈的更高层。基于策略的无线电可以在未改变内部软件的前提下通过更新来适应当地监管政策。对于较新的无线电网络,因特网路由器一直都是基于策略的。这样,网络运营商就可以使用策略来控制访问权限、分配资源以及修改网络拓扑结构和行为。对于认知无线电来说,基于策略技术应该能够使产品可以在全世界通用,可以自动地适应当地监管要求,而且当监管规则随时间和 经验 变化时可以自动更新。智能无线电是一种根据以前和当前情况对未来进行预测,并提前进行调整的无线电。与智能无线电比较,自适应无线电只根据当前情况确定策略并进行调整,认知无线电可以根据以前的结果进行学习,确定策略并进行调整。

认知无线电关键技术

认知无线电系统的关键技术包括无线频谱感知技术、智能资源管理技术、自适应传输技术与跨层设计技术等,它们是认知无线电区别传统无线电的特征技术[4,5]。

频谱检测按照检测策略可以分为物理层检测、MAC层检测和多用户协作检测,如图3所示。3.1.1物理层检测物理层的检测方法主要是通过在时域、频域和空域中检测授权频段是否存在授权用户信号来判定该频段是否被占用,物理层的检测可以分为以下3种方式:发射机检测的主要方法包括能量检测、匹配滤波检测和循环平稳特性检测等,以及基于这些方法中某一种的多天线检测。当授权用户接收机接收信号时,需要使用本地振荡器将信号从高频转换到中频,在这个转换过程中,一些本地振荡器信号的能量不可避免地会通过天线泄露出去,因而可以通过将低功耗的检测传感器安置在授权用户接收机的附近来检测本振信号的能量泄露,从而判断授权用户接收机是否正在工作。干扰温度模型使得人们把评价干扰的方式从大量发射机的操作转向了发射机和接收机之间以自适应方式进行的实时性交互活动,其基础是干扰温度机制,即通过授权用户接收机端的干扰温度来量化和管理无线通信环境中的干扰源。MAC层检测主要关注多信道条件下如何提高吞吐量或频谱利用率的问题,另外还通过对信道检测次序和检测周期的优化,使检测到的可用空闲信道数目最多,或使信道平均搜索时间最短。MAC层检测主要可以分为以下2种方式:主动式检测是一种周期性检测,即在认知用户没有通信需求时,也会周期性地检测相关信道,利用周期性检测获得的信息可以估计信道使用的统计特性。被动式检测也称为按需检测,认知用户只有在有通信需求时才依次检测所有授权信道,直至发现可用的空闲信道。由于多径衰落和遮挡阴影等不利因素,单个认知用户难以对是否存在授权用户信号做出正确的判决,因此需要多个认知用户间相互协作,以提高频谱检测的灵敏度和准确度,并缩短检测的时间。协作检测结合了物理层和MAC层功能的检测技术,不仅要求各认知用户自身具有高性能的物理层检测技术,更需要MAC层具有高效的调度和协调机制。

智能资源管理的目标是在满足用户QoS要求的条件下,在有限的带宽上最大限度地提高频谱效率和系统容量,同时有效避免网络拥塞的发生。在认知无线电系统中,网络的总容量具有一定的时变性,因此需要采取一定的接入控制算法,以保障新接入的连接不会对网络中已有连接的QoS需求造成影响。动态频谱接入概念模型一般可分为图4所示的3类。动态专用模型保留了现行静态频谱管理政策的基础结构,即频谱授权给特定的通信业务专用。此模型的主要思想是引入机会性来改善频谱利用率,并包含2种实现途径:频谱产权和动态频谱分配。开放共享模型,又称为频谱公用模型,这个模型向所有用户开放频谱使其共享,例如ISM频段的开放共享方式。分层接入模型的核心思想是开放授权频谱给非授权用户,但在一定程度上限制非授权用户的操作,以免对授权用户造成干扰,有频谱下垫与频谱填充2种。认知无线电中的频谱分配主要基于2种接入策略:①正交频谱接入。在正交频谱接入中,每条信道或载波某一时刻只允许一个认知用户接入,分配结束后,认知用户之间的通信信道是相互正交的,即用户之间不存在干扰(或干扰可以忽略不计)。②共享频谱接入。在共享频谱接入中,认知用户同时接入授权用户的多条信道或载波,用户除需考虑授权用户的干扰容限外,还需要考虑来自其他用户的干扰。根据授权用户的干扰容限约束,在上述2种接入策略下又可以分为以下2种频谱接入模式:填充式频谱接入和下垫式频谱接入。对于填充式频谱接入,认知用户伺机接入“频谱空穴”,它们只需要在授权用户出现时及时地出让频谱而不存在与授权用户共享信道时的附加干扰问题,此种方法易于实现,且不需要现有通信设备提供干扰容限参数。在下垫式频谱接入模式下,认知用户与授权用户共享频谱,需要考虑共用信道时所附加的干扰限制。

在不影响通信质量的前提下,进行功率控制尽量减少发射信号的功率,可以提高信道容量和增加用户终端的待机时间。认知无线电网络中的功率控制算法设计面临的是一个多目标的联合优化问题,由于不同目标的要求不同,存在着多种折中的方案。根据应用场景的不同,现有的认知无线电网络中的功率控制算法可以分成2大类:一是适用于分布式场景下的功率控制策略,一是适用于集中式场景下的功率控制策略。分布式场景下的功率控制策略大多以博弈论为基础,也有参考传统Adhoc网络中功率控制的方法,从集中式策略入手,再将集中式策略转换成分布式策略;而集中式场景下的功率控制策略大多利用基站能集中处理信息的便利,采取联合策略,即将功率控制与频谱分配结合或是将功率控制与接入控制联合考虑等。

自适应传输可以分为基于业务的自适应传输和基于信道质量的自适应传输。基于业务的自适应传输是为了满足多业务传输不同的QoS需求,其主要在上层实现,不用考虑物理层实际的传输性能,目前有线网络中就考虑了这种自适应传输技术。认知无线电可以根据感知的环境参数和信道估计结果,利用相关的技术优化无线电参数,调整相关的传输策略。这里的优化是指无线通信系统在满足用户性能水平的同时,最小化其消耗的资源,如最小化占用带宽和功率消耗等。物理层和媒体控制层可能调整的参数包括中心频率、调制方式、符号速率、发射功率、信道编码方法和接入控制方法等。显然,这是一种非线性多参数多目标优化过程。

现有的分层协议栈在设计时只考虑了通信条件最恶劣的情况,导致了无法对有限的频谱资源及功率资源进行有效的利用。跨层设计通过在现有分层协议栈各层之间引入并传递特定的信息来协调各层之间的运行,以与复杂多变的无线通信网络环境相适应,从而满足用户对各种新的业务应用的不同需求。跨层设计的核心就是使分层协议栈各层能够根据网络环境以及用户需求的变化,自适应地对网络的各种资源进行优化配置。在认知无线电系统中,主要有以下几种跨层设计技术:为了选择合适的频谱空穴,动态频谱管理策略需要考虑高层的QoS需求、路由、规划和感知的信息,通信协议各层之间的相互影响和物理层的紧密结合使得动态频谱管理方案必须是跨层设计的。频谱移动性功能需要同频谱感知等其他频谱管理功能结合起来,共同决定一个可用的频段。为了估计频谱切换持续时间对网络性能造成的影响,需要知道链路层的信息和感知延迟。网络层和应用层也应该知道这个持续时间,以减少突然的性能下降;另外,路由信息对于使用频谱切换的路由发现过程也很重要。频谱共享的性能直接取决于认知无线电网络中频谱感知的能力,频谱感知主要是物理层的功能。然而,在合作式频谱感知情况下,认知无线电用户之间需要交换探测信息,因此频谱感知和频谱共享之间的跨层设计很有必要。在认知无线电系统中,由于多跳通信中的每一跳可用频谱都可能不同,网络的拓扑配置就需要知道频谱感知的信息,而且,认知无线电系统路由设计的一个主要思路就是路由与频谱决策相结合。

认知无线电应用场景

认知无线电系统不仅能有效地使用频谱,而且具有很多潜在的能力,如提高系统灵活性、增强容错能力和提高能量效率等。基于上述优势,认知无线电在民用领域和军用领域具有广阔的应用前景。

频谱效率的提高既可以通过提高单个无线接入设备的频谱效率,也可以通过提高各个无线接入技术的共存性能。这种新的频谱利用方式有望增加系统的性能和频谱的经济价值。因此,认知无线电系统的这些共存/共享性能的提高推动了频谱利用的一种新方式的发展,并且以一种共存/共享的方式使获得新的频谱成为可能。认知无线电系统的能力还有助于提高系统灵活性,主要包括提高频谱管理的灵活性,改善设备在生命周期内操作的灵活性以及提高系统鲁棒性等。容错性是通信系统的一项主要性能,而认知无线电可以有效改善通信系统的容错能力。通常容错性主要是基于机内测试、故障隔离和纠错 措施 。认知无线电对容错性的另一个优势是认知无线电系统具有学习故障、响应和错误信息的能力。认知无线电系统可以通过调整工作参数,比如带宽或者基于业务需求的信号处理算法来改善功率效率。

认知无线电所要解决的是资源的利用率问题,在农村地区应用的优势可以 总结 为如下。农村无线电频谱的使用,主要占用的频段为广播、电视频段和移动通信频段。其特点是广播频段占用与城市基本相同,电视频段利用较城市少,移动通信频段占用较城市更少。因此,从频率域考虑,可利用的频率资源较城市丰富。农村经济发达程度一般不如城市,除电视频段的占用相对固定外,移动通信的使用率不及城市,因此,被分配使用的频率利用率相对较低。由于农村地广人稀,移动蜂窝受辐射半径的限制,使得大量地域无移动通信频率覆盖,尤其是边远地区,频率空间的可用资源相当丰富。

在异构无线环境中,一个或多个运营商在分配给他们的不同频段上运行多种无线接入网络,采用认知无线电技术,就允许终端具有选择不同运营商和/或不同无线接入网络的能力,其中有些还可能具有在不同无线接入网络上支持多个同步连接的能力。由于终端可以同时使用多种 无线网络 ,因此应用的通信带宽增大。随着终端的移动和/或无线环境的改变,可以快速切换合适的无线网络以保证稳定性。

在军事通信领域,认知无线电可能的应用场景包括以下3个方面。认知抗干扰通信。由于认知无线电赋予电台对周围环境的感知能力,因此能够提取出干扰信号的特征,进而可以根据电磁环境感知信息、干扰信号特征以及通信业务的需求选取合适的抗干扰通信策略,大大提升电台的抗干扰水平。战场电磁环境感知。认知无线电的特点之一就是将电感环境感知与通信融合为一体。由于每一部电台既是通信电台,也是电磁环境感知电台,因此可以利用电台组成电磁环境感知网络,有效地满足电磁环境感知的全时段、全频段和全地域要求。战场电磁频谱管理。现代战场的电磁频谱已经不再是传统的无线电通信频谱,静态的和集重视的频谱管理策略已不能满足灵活多变的现代战争的要求。基于认知无线电技术的战场电磁频谱管理将多种作战要素赋予频谱感知能力,使频谱监测与频谱管理同时进行,大大提高了频谱监测网络的覆盖范围,拓宽了频谱管理的涵盖频段。

结束语

如何提升频谱利用率,来满足用户的带宽需求;如何使无线电智能化,以致能够自主地发现何时、何地以及如何使用无线资源获取信息服务;如何有效地从环境中获取信息、进行学习以及做出有效的决策并进行调整,所有这些都是认知无线电技术要解决的问题。认知无线电技术的提出,为实现无线环境感知、动态资源管理、提高频谱利用率和实现可靠通信提供了强有力的支撑。认知无线电有着广阔的应用前景,是无线电技术发展的又一个里程碑。

计算机论文范文二:远程无线管控体系的设计研究

1引言

随着我国航天事业的发展,测量船所承担的任务呈现高密度、高强度的趋势,造成码头期间的任务准备工作越来越繁重,面临着考核项目多、考核时间短和多船协调对标等现实情况,如何提高对标效率、确保安全可靠对标成为紧迫的课题。由于保密要求,原研制的远程标校控制系统无法接入现有网络,而铺设专网的耗资巨大,性价比低,也非首选方案。近些年来,无线通信已经成为信息通信领域中发展最快、应用最广的技术,广泛应用于家居、农业、工业、航天等领域,已成为信息时代社会生活不可或缺的一部分[1],这种技术也为解决测量船远程控制标校设备提供了支持。本文通过对常用中远距离无线通信方式的比较,择优选择了无线网桥,采用了桥接中继的网络模式,通过开发远程设备端的网络控制模块,以及相应的控制软件,实现了测量船对远程设备的有效、安全控制。

2无线通信方式比较

无线通信技术是利用电磁波信号在自由空间中进行信息传播的一种通信方式,按技术形式可分为两类:一是基于蜂窝的接入技术,如蜂窝数字分组数据、通用分组无线传输技术、EDGE等;二是基于局域网的技术,如WLAN、Bluetooth、IrDA、Home-RF、微功率短距离无线通信技术等。在中远距离无线通信常用的有ISM频段的通信技术(比如ZigBee以及其他频段的数传模块等)和无线 网络技术 (比如GSM、GPRS以及无线网桥等)。基于ISM频段的数传模块的通信频率为公共频段,产品开发没有限制,因此发展非常迅速,得到了广泛应用。特别是近年来新兴的ZigBee技术,因其低功耗、低复杂度、低成本,尤其是采用自组织方式组网,对网段内设备数量不加限制,可以灵活地完成网络链接,在智能家居、无线抄表等网络系统开发中得到应用[2]。但是,对于本系统的开发而言,需要分别研制控制点和被控制点的硬件模块,并需通过软件配置网络环境,开发周期长,研制成本高,故非本系统开发的最优方案。

GSM、GPRS这种无线移动通信技术已经成为人们日常生活工作必不可少的部分,在其他如无线定位、远程控制等领域的应用也屡见不鲜[3],但是由于保密、通信费用、开发成本等因素,也无法适用于本系统的开发。而无线网桥为本系统的低成本、高效率的研发提供了有利支持,是开发本系统的首选无线通信方式。无线网桥是无线网络的桥接,它可在两个或多个网络之间搭起通信的桥梁,也是无线接入点的一个分支。无线网桥工作在2•4GHz或5•8GHz的免申请无线执照的频段,因而比其他有线网络设备更方便部署,特别适用于城市中的近距离、远距离通信。

3系统设计

该远程控制系统是以保障测量船对远端标校设备的有效控制为目标,包括标校设备的开关机、状态参数的采集等,主要由测量船控制微机、标校设备、网络控制模块、主控微机以及无线网桥等组成。工作流程为测量船控制微机或主控微机发送控制指令,通过无线网桥进行信息传播,网络控制模块接收、解析指令,按照Modbus协议规定的数据格式通过串口发给某一标校设备,该标校设备响应控制指令并执行;网络控制模块定时发送查询指令,并将采集的状态数据打包,通过无线发给远程控制微机,便于操作人员监视。网络通信协议采用UDP方式,对于测量船控制微机、主控微机仅需按照一定的数据格式发送或接收UDP包即可。网络控制模块是系统的核心部件,是本文研究、设计的重点。目前,常用的网络芯片主要有ENC28J60、CP2200等,这里选用了ENC28J60,设计、加工了基于STC89C52RC单片机的硬件电路。通过网络信息处理软件模块的开发,满足了网络信息交互的功能要求;通过Modbus串口协议软件模块的开发,满足了标校设备监控功能,从而实现了系统设计目标。

3.1组网模式

无线网桥有3种工作方式,即点对点、点对多点、中继连接。根据系统的控制要求以及环境因素,本系统采用了中继连接的方式,其网络拓扑如图1所示。从图中可以清晰看出,这种中继连接方式在远程控制端布置两个无线网桥,分别与主控点和客户端进行通信,通过网络控制模块完成数据交互,从而完成组网。

3.2安全防范

由于是开放性设计,无线网络安全是一个必须考虑的问题。本系统的特点是非定时或全天候开机,涉密数据仅为频点参数,而被控设备自身均有保护措施(协议保护)。因此,系统在设计时重点考虑接入点防范、防止攻击,采取的措施有登录密码设施、网络密匙设置、固定IP、对数据结构体的涉密数据采取动态加密等方式,从而最大限度地防止了“被黑”。同时,采用了网络防雷器来防护雷电破坏。

3.3网络控制模块设计

3.3.1硬件设计

网络控制模块的功能是收命令信息、发状态信息,并通过串口与标校设备实现信息交互,其硬件电路主要由MCU(微控制单元)、ENC28J60(网络芯片)、Max232(串口芯片)以及***电路组成,其电原理图如图2所示。硬件设计的核心是MCU、网络芯片的选型,本系统MCU选用的STC89C52RC单片机,是一种低功耗、高性能CMOS8位微控制器,可直接使用串口下载,为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。ENC28J60是由M-icrochip公司出的一款高集成度的以太网控制芯片,其接口符合IEEE802.3协议,仅28个引脚就可提供相应的功能,大大简化了相关设计。ENC28J60提供了SPI接口,与MCU的通信通过两个中断引脚和SPI实现,数据传输速率为10Mbit/s。ENC28J60符合IEEE802.3的全部规范,采用了一系列包过滤机制对传入的数据包进行限制,它提供了一个内部DMA模块,以实现快速数据吞吐和硬件支持的IP校验和计算[4]。ENC28J60对外网络接口采用HR911102A,其内置有网络变压器、电阻网络,并有状态显示灯,具有信号隔离、阻抗匹配、抑制干扰等特点,可提高系统抗干扰能力和收发的稳定性。

3.3.2软件设计

网络控制模块的软件设计主要包括两部分,一是基于SPI总线的ENC28J60的驱动程序编写,包括以太网数据帧结构定义、初始化和数据收发;二是Modbus协议编制,其软件流程如图3所示。

3.3.2.1ENC28J60的驱动程序编写

(1)以太网数据帧结构符合IEEE802.3标准的以太网帧的长度是介于64~1516byte之间,主要由目标MAC地址、源MAC地址、类型/长度字段、数据有效负载、可选填充字段和循环冗余校验组成。另外,在通过以太网介质发送数据包时,一个7byte的前导字段和1byte的帧起始定界符被附加到以太网数据包的开头。以太网数据包的结构如图4所示。(2)驱动程序编写1)ENC28J60的寄存器读写规则由于ENC28J60芯片采用的是SPI串行接口模式,其对内部寄存器读写的规则是先发操作码前3bit+寄存器地址后5bit,再发送欲操作数据。通过不同操作码来判别操作时读寄存器(缓存区)还是写寄存器(缓冲区)或是其他。2)ENC28J60芯片初始化程序ENC28J60发送和接收数据包前必须进行初始化设置,主要包括定义收发缓冲区的大小,设置MAC地址与IP地址以及子网掩码,初始化LEDA、LEDB显示状态通以及设置工作模式,常在复位后完成,设置后不需再更改。3)ENC28J60发送数据包ENC28J60内的MAC在发送数据包时会自动生成前导符合帧起始定界符。此外,也会根据用户配置以及数据具体情况自动生成数据填充和CRC字段。主控器必须把所有其他要发送的帧数据写入ENC28J60缓冲存储器中。另外,在待发送数据包前要添加一个包控制字节。包控制字节包括包超大帧使能位(PHUGEEN)、包填充使能位(PPADEN)、包CRC使能位(PCRCEN)和包改写位(POVERRIDE)4个内容。4)ENC28J60接收数据包如果检测到EIR.PKTIF为1,并且EPKTCNT寄存器不为空,则说明接收到数据,进行相应处理。

3.3.2.2ModBus协议流程

本系统ModBus协议的数据通信采用RTU模式[5],网络控制模块作为主节点与从节点(标校设备)通过串口建立连接,主节点定时向从节点发送查询命令,对应从节点响应命令向主节点发送设备状态信息。当侦测到网络数据时,从ENC28J60接收数据包中解析出命令,将对应的功能代码以及数据,按照Modbus数据帧结构进行组帧,发送给从节点;对应从节点响应控制命令,进行设备参数设置。

4系统调试与验证

试验调试环境按照图1进行布置,主要包括5个无线网桥、1个主控制点、2个客户端、1块网络控制模块板以及标校设备等,主要测试有网络通信效果、网络控制能力以及简单的安全防护测试。测试结论:网络连接可靠,各控制点均能安全地对远端设备进行控制,具备一定安全防护能力,完全满足远程设备控制要求。

5结束语

本文从实际需要出发,通过对当下流行的无线通信技术的比较,选用无线网桥实现远控系统组网;通过开发网络控制模块,以及相应的控制软件编制,研制了一套用于测量船远程控制设备的系统。经几艘测量船的应用表明,采用无线网桥进行组网完全满足系统设计要求,具有高安全性、高可靠性、高扩展性等优点,在日趋繁重的保障任务中发挥了重要的作用。本系统所采用的无线组网方法,以及硬件电路的设计方案,对其他相关控制领域均有一定的参考价值。

谁能给我发个面向对象程序设计论文的例文啊?

不知道这篇文章能够满足您的要求:

面向对象的软件开发

1 历史回顾

针对日趋复杂的软件需求的挑战,软件业界发展出了面向对象(OO)的软件开发模式。目前作为针对“软件危机”的最佳对策,OO技术已经引起人们的普遍关注。最初被多数人看作只是一种不切实际的方法和满足一时好奇心的研究,现在得到了人们近乎狂热的欢迎。许多编程语言都推出了支持面向对象的新版本。大量的面向对象的开发方法被提出来。关于OO的会议、学术研讨班和课程极受欢迎。无数专业的学术期刊都为这一话题开辟了专门的版面。一些软件开发合同甚至也指明了必须使用OO的技术和语言。面向对象的软件开发对于90年代,就向是结构化的软件开发对于70年代那样让人着迷,而且OO的发展势头还在日益加速。

诸如“对象”和“对象的属性”这样的概念,可以一直追溯到1950年代初。它们首先出现于关于人工智能的早期著作中。然而,OO的实际发展却是始于 1966年 (当年文化大革命在中国爆发) 。 当时Kisten Nygaard和Ole-Johan Dahl开发了具有更高级抽象机制的Simula语言。Simula提供了比子程序更高一级的抽象和封装;为仿真一个实际问题,引入了数据抽象和类的概念。 大约在同一时期,Alan Kay正在尤他大学的一台个人计算机上努力工作,他希望能在其上实现图形化和模拟仿真。尽管由于软硬件的限制,Kay的尝试没有成功,但他的这些想法并没有丢失。70年代初期,他加入了Palo Alto研究中心(PARC),再次将这些想法付诸实施。

在PARC,他所在的研究小组坚信计算机技术是改善人与人、人与机器之间通讯渠道的关键。在这信念的支持下,并吸取了Simula的类的概念,他们开发出Smalltalk语言; 1972年PARC发布了Smalltalk的第一个版本。大约在此时,“面向对象”这一术语正式确定。Smalltalk被认为是第一个真正面向对象的语言。 Smalltalk 的目标是为了使软件设计能够以尽可能自动化的单元来进行。在Smalltalk中一切都是对象-----即某个类的实例。最初的Smalltalk的世界中,对象与名词紧紧相连。Smalltalk还支持一个高度交互式的开发环境和原型方法。这一原创性的工作开始并未发表,只是视为带浓厚试验性质的学术兴趣而已。

Smalltalk-80是PARC的一系列Smalltalk版本的总结,发布于1981年。1981年8月的 BYTE杂志公布了Smalltalk开发组的重要结果。在这期杂志的封面图上,一个热气球正从一个孤岛上冉冉升起来,标志着 PARC的面向对象思想的启航。该是向软件开发界公开发表的时候了。起初,影响只是渐进式的,但很快就跃升到火爆的程度。热气球确实启航了,而且影响深远。早期Smalltalk关于开发环境的研究导致了后来的一系列进展:窗口(window),图标(icon),鼠标(mouse)和下拉式 window环境。Smalltalk语言还影响了80年代早期和中期的面向对象的语言,如:Object-C(1986), C++(1986), Self(1987),Eiffl(1987),Flavors(1986). 面向对象的应用领域也被进一步拓宽。对象不再仅仅与名词相联系,还包括事件和过程。1980 Grady Booch首先提出面向对象设计(OOD)的概念。然后其他人紧随其后,面向对象分析的技术开始公开发表。1985年,第一个商用面向对象数据库问世。 1990年代以来,面向对象的分析、测试、度量和管理等研究都得到长足发展。目前对象技术的前沿课题包括设计模式(design patterns)、分布式对象系统和基于网络的对象应用等。

2 动因

为什么面向对象运动发展到了现在这样火暴的程度?部分是源于人们长久以来的一个希望:人们希望它,象以前其他的软件开发技术一样,能够满足软件开发对于生产效率、可靠性、易维护性、易管理等方面的更高、更快、更强的迫切需求。除此之外,还有许多原因都促使了它的流行。

面向对象的开发强调从问题域的概念到软件程序和界面的直接映射;心理学的研究也表明,把客观世界看成是许多对象更接近人类的自然思维方式。对象比函数更为稳定;软件需求的变动往往是功能相关的变动,而其功能的执行者- ---对象----通常不会有大的变动。另外,面向对象的开发也支持、鼓励软件工程实践中的信息隐藏、数据抽象和封装。在一个对象内部的修改被局部隔离。面向对象开发的软件易于修改、扩充和维护。

面向对象也被扩充应用于软件生命周期的各个阶段---从分析到编码。而且,面向对象的方法自然而然地支持快速原型法和RAD(Rapid Application Development)。面向对象开发的使用鼓励重用,不仅软件的重用,还包括分析、设计的模型的重用。更进一步,OO技术还方便了软件的互换性,即,网络中一个节点上应用能够利用另一个节点上的资源。面向对象的开发还支持并发、层次和复杂等一些在目前的软件系统中常见的现象。今天我们常常会需要建造一些软件系统----不止是一黑盒应用。这些复杂系统通常包含由多个子系统组成的层次结构。面向对象的开发支持开放系统的建设;利用不同的应用来进行软件集成有了更大的柔性。最后,面向对象开发的使用可以减小开发复杂系统所面临的危险,主要是因为系统集成遍布软件生命周期的各个阶段。

3 面向对象的建模

面向对象的建模不仅仅是新的编程语言的汇总。它是一种新的思维方式,一种关于计算和信息结构化的新思维。面向对象的建模,把系统看做是相互协作的对象,这些对象是结构和行为的封装,都属于某个类,那些类具有某种层次化的结构。系统的所有功能通过对象之间相互发送消息来获得。面向对象的建模可以视为是一个包含以下元素的概念框架:抽象、封装、模块化、层次、分类、并行、稳定、可重用和可扩展性。

面向对象的建模的出现并不能算是一场计算革命。更恰当地讲,它是面向过程和严格数据驱动的软件开发方法的渐进演变结果。软件开发的新方法受到来自两个方面的推动:编程语言的发展和日趋复杂的问题域的需求驱动。尽管在实际中分析和设计在编程阶段之前进行,但从发展历史看却是编程语言的革新带来设计和分析技术的改变。同样,语言的演变也是对计算机体系的增强和需求的日益复杂的自然响应。

影响OO产生的诸多因素中,最重要的可能要算是编程方法的进步了。在过去的几十年中,编程语言中对抽象机制的支持已经发展到了一个较高的水平。这种抽象的进化从地址(机器语言)到名字(汇编语言),到表达式(第一代高级语言,如 Fortran),到控制(第二代高级语言,如Cobol),到过程和函数(第二代和早期第三代高级语言,如Pascal),到模块和数据(晚期第三代高级语言,如modula),最后到对象(基于对象和面向对象的语言)。Smalltalk和其他面向对象语言的发展使得新的分析和设计的技术的实现成为可能。

这些新的OO的技术实际上是结构化和数据库方法的融合。OO的方法中,小范围内对面向数据流的关注,如偶合和聚合,也是很重要的。同样,对象内部的行为最终也需要面向过程的设计方法。数据库技术中的实体-关系(ER图)的数据建模思想也在 OO的方法中得以体现。

计算机硬件体系结构的进步,性能价格比的提高和硬件设计中对象概念的引入都对OO的发展产生了一定的影响。OO的程序通常要更加频繁地访问内存,需要更高的处理速度。他们需要并且也正在利用强大的计算机硬件功能。哲学和认知科学的层次和分类理论也促进了OO的产生和发展。最后,计算机系统不断增长的规模、复杂度和分布性都对OO技术起了或多或少的推动作用。

因为影响OO发展的因素很多,OO技术本身还未成熟,所以在思想和术语上有很多不同的提法。所有的OO语言并非生而平等,他们在术语、概念的运用上也各不相同。尽管也存在统一的趋势,但就如何进行面向对象的分析、设计而言还没有完全达成共识,更没有统一的符号来描述这些活动。(说明:UML正在朝这方向努力)但是,OO的开发已经在以下领域被证明是成功的:空中交通管理、动画设计、银行、商业数据处理、命令和控制系统、CAD、CIM、数据库、专家系统、图象识别、数学分析、音乐合成、操作系统、过程控制、空间站软件、机器人、远程通讯、界面设计和VLSI设计。毫无疑问,OO技术的应用已经成为软件工业发展的主流。

4 面向对象编程

1 概念

在面向对象编程中,程序被看作是相互协作的对象集合,每个对象都是某个类的实例,所有的类构成一个通过继承关系相联系的层次结构。面向对象的语言常常具有以下特征:对象生成功能、消息传递机制、类和遗传机制。这些概念当然可以并且也已经在其他编程语言中单独出现,但只有在面向对象语言中,他们才共同出现,以一种独特的合作方式互相协作、互相补充。

过程化编程模式: 参数输入----- | 代 码 | ------结果输出

为实现某个功能,参数被传入某个处理过程,最后传回计算结果。

| 对象------ 数据结构 面向对象编程模式:

界面 | 对象------ 和

| 对象------ 操作

OOP中,功能是通过与对象的通讯获得的。对象可以被定义为一个封装了状态和行为的实体;或者说是数据结构(或属性)和操作。状态实际上是为执行行为而必须存于对象之中的数据、信息。对象的界面,也可称之为协议,是一组对象能够响应的消息的集合。消息是对象通讯的方式,因而也是获得功能的方式。对象受到发给他的消息后,或者执行一个内部操作(有时成为方法或过程),或者再去调用其他对象的操作。所有对象都是类的实例。类是具有相同特点的对象的集合,或者也可以说,类是可用于产生对象的一个模版。对象响应一个消息而调用的方法,由接受该消息的对象自己决定。类可以以一种层次结构来安排。在这个层次结构中,子类可以从比他高的超类中继承得到状态和方法。当对象接收到一个消息后,寻找相应的方法的过程将在从该对象的类开始,并在该类所处的层次结构中展开,最后,直到找着该方法,或者什么也没找到(将会报错)。在某些语言中,一个给定的类可以从不止一个超类中继承,称之为多继承。如果采用动态联编,继承就导致了多态性。多态性描述的是如下现象:如果几个子类都重新定义了超类的某个函数(都用相同的函数名),当消息被发送到一个子类对象时,在执行时该消息会由于子类确定的不同而被解释为不同的操作。方法也可以被包括在超类的界面中被子类继承,而实际上并不去真正定义他。这样的超类也叫抽象类。抽象类不能被实例化,因此也就只能被用于产生子类。

2 语言

面向对象的语言包含4个基本的分支:

1 基于Smalltalk的; 包括smalltalk的5个版本,以Smalltalk-80为代表。

2 基于C的; 包括 objective-C, C++, Java

3 基于LISP的; 包括 Flavors, XLISP, LOOPS, CLOS

4 基于PASCAL的。包括 Object Pascal, Turbo Pascal, Eiffel, Ada 95

Simula实际上是所有这些语言的老祖宗。在这些OO语言中,术语的命名和支持OO的能力都有不同程度的差别。 尽管Smalltalk-80不支持多继承,它仍被认为是最面向对象的语言(the truest OO language)。

在基于C的OO语言中,Object-C 是Brad Cox开发的,它带有一个丰富的类库,已经被成功用于大型系统的开发。C++是由贝尔实验室的Bjarne Stroustrup写的。它将C语言中的STRUCT 扩展为 具有数据隐藏功能的CLASS。多态性通过虚函数(virtual functions)来实现。C++ 2.0 支持多继承。在多数软件领域,尤其是Unix平台上,C++都是首选的面向对象编程语言。同C和C++相类似的新一代基于Internet的面向对象语言Java是由Sun microsystems研制的。它于1995年伴随着Internet的崛起而风靡一时。用Java写的applets可以嵌入HTML中被解释执行,这使它具备了跨平台特性。Java和Ada一样支持多线程和并发机制,又象C一样简单、便携。

基于LISP的语言,多被用于知识表达和推理的应用中。其中CLOS(Common LISP Object System)是面向对象LISP的标准版。

在基于Pascal的语言中,Object Pascal是由Apple和Niklaus Wirth为Macintosh开发的,它的类库是MacApp。Turbo Pascal 是Borland公司以Object Pascal为范本开发的。

Eiffel由交互软件工程公司的Bertrand Meyer于1987年发布的。它的语法类似Ada,运行于Unix环境。Ada在1983年刚出来时并不支持继承和多态性,因而不是面向对象的。到了 1995年,一个面向对象的Ada终于问世,这就是Ada 95。

除了上述的面向对象的语言之外,还有一些语言被认为是基于对象(Object-based)的。它们是:Alphard, CLU, Euclid, Gypsy, Mesa, Modula。

5 面向对象的软件工程

生命周期

尽管面向对象的语言正在取得令人激动的进展,但我们都知道,编码并非是软件开发中的问题的主要来源。相比之下,需求和分析的问题更加普遍,而且它们的纠错代价更加昂贵。因此,对OO开发技术的关注就不能仅仅集中在编码上面,更应集中关心软件工程的其他方面。OO方法在处理复杂系统的分析和设计、分析和设计的重用方面的应用前景也是非常可观。如果我们承认OO的软件开发不仅仅局限于编码活动,那么就必须采用一种全新的开发模式,包括新的软件生命周期。目前最常见的生命周期是“瀑布”模型(结构化)。它是在60年代末“软件危机”后出现的第一个生命周期模型。如下所示。

分析 ----- 设计 ----- 编码 ----- 测试 ------ 维护

如图所示,瀑布式生命周期的开发过程是顺序行进的;活动流向基本是单向的。它假设开发者在开发初期对系统的了解足够清楚。不幸的是,任何软件开发活动都不可避免地要涉及大量迭代过程,无论你事先是否安排。好的设计人员指的是那些能同时在抽象的层面和具体的细节上进行工作的实践家。总的来说,瀑布式生命周期的缺点表现在三个方面:1 后期的变化、迭代、改动困难 2 不支持重用 3 没有一个联系各个阶段的统一模型。

面向对象的方法从问题模型开始,然后就是识别对象、不断细化的过程。它从本质上就是迭代的和渐增的。在这里,快速原型和反馈环路是必需的标准结构。开发过程就是一次次的迭代反复过程。随着迭代的进行,系统的功能不断完善。这里,传统的开发模式中在分析、设计和编码等各个阶段之间的明显界限变得模糊起来。其原因是因为对象的概念弥漫了整个开发过程。对象和它们之间的关系成为分析、设计和编码等各个阶段的共同表达媒介。开发的重心从编码向分析偏移,从功能为中心向数据为中心偏移。而且,面向对象开发的迭代和无缝性使得重用变得更加自然。

近来,为改善面向对象开发的可管理性,玻姆(Boehm,1988)提出了一个结合了宏观和微观视角(macro microview)的螺旋开发模型。宏观包括3个阶段:1分析---发现和识别对象;2 设计---发明和设计对象;3 实施---创建和实现对象。每个宏观阶段都包含一些微观迭代活动。

6 OOA和OOD

由于面向对象的技术还比较新,目前存在许多种面向对象的分析和设计方法。面向对象的分析(OOA)建立于以前的信息建模技术的基础之上,可以定义为是一种以从问题域词汇中发现的类和对象的概念来考察需求的分析方法。OOA的结果是一系列从问题域导出的“黑箱”对象。OOA通常使用“剧情(scenarios)”来帮助确定基本的对象行为。一个剧情是发生在问题域的一个连续的活动序列。在对一个给定的问题域进行 OOA时,“框架”(Frameworks)的概念非常有用。框架是应用或应用子系统的骨架,包含一些具体或者抽象的类。或者说,框架是一个特定的层次结构,包含描述某一问题域的抽象父类。当下流行的所有的OOA方法的一个缺点就是他们都缺乏一种固定的模式(formality)。

在面向对象的设计(OOD)阶段,注意的焦点从问题空间转移到了解空间。OOD是一种包含对所设计系统的逻辑的和物理的过程描述,以及系统的静态和动态模型的设计方法(Booch,1994)。

在OOA和OOD中,都存在着对重用性的关注。目前,OO技术的研究人员们正在尝试定义“设计模式(design patterns)”这一概念。它是一种可重用的“财富”,可以应用于不同的问题域。通常,设计模式指的是一种多次出现的设计结构或解决方案。如果对他们进行系统的归类,即可被重用,可以构成不同设计之间通信的基础。

OOD技术实际上早于OOA技术而出现。目前在OOA和OOD已经很难画出一条清晰的界限。因此,下面的描述给出一些常用的OOA/OOD技术的(联合)概貌。

Meyer 用语言作为表达设计的工具。(1988)

Booch的OOD技术扩展了他以前在Ada方面的工作。他采用一种“反复综合(round-trip gestalt)”的方法,包括以下过程:识别对象,识别对象的语义,识别对象之间的关系,进行实施,同时包含一系列迭代。Booch是最先使用类图,类分类图,类模板和对象图来描述OOD的人(1991)。

Wrifs-Brock's的OOD技术是由职责代理来驱动的。类职责卡(Class Responsibilities Cards)被用来记录负责特定功能的类。在确定了类及其职责之后,再进行更详细的关系分析和子系统的实施。(1990)

Rumbaugh使用3种模型来描述一个系统:1 对象模型,描述系统中对象的静态结构;2 动态模型,描述系统状态随时间变化的情况;3 功能模型,描述系统中各个数据值的转变。对象图,状态转换图和数据流图分别被用于描述这3个模型。(1991)

Coad和Yourdon采用以下的OOA步骤来确定一个多层OO模型(5个层次):找出类和对象,识别结构和关系,确定主题,定义属性,定义服务。5 个步骤分别对应模型的5个层次,即类和对象层,主题层,结构层,属性层和服务层。他们的OOD方法既是多层次的又是多方面的 (multicomponent)。层次机构和OOA一样。多方面包括:问题域,人与人的交互,任务管理和数据管理。

Ivar Jacobson 提出了Objectory方法(或Jacbson法),一种他在瑞典Objective系统中开发的面向对象软件工程方法。Jacbson的方法特别强调了“Use Case”的使用。 Use Case成为分析模型的基础,用交互图(Interaction Diagram)进一步描述后就形成设计的模型。Use cases同时也驱动测试阶段的测试工作。到目前为止,Jacbson法是最为完整的工业方法。 (1992)

以上所述的方法还有许多的变种,无法一一列出。近年来,随着各种方法的演变,它们之间也互相融合。1995年,Booch,Rumbaugh和Jacbson联手合作,提出了第一版的UML(Unified Modelling Language),一体化建模语言。(目前已经成为OO建模语言的事实标准)

7 管理问题

当组织向面向对象的开发技术转向时,支持软件开发的管理活动也必然要有所改变。承诺使用OO技术即意味要改变开发过程,资源和组织结构。 (Goldberg 1995) OO开发的迭代、原型以及无缝性消除了传统开发模式不同阶段之间的界限。新的界限必须被重新确定。同时,一些软件测度的方法也不在适用了。“代码行数” LOC(Lines of Code)绝对过时了。重用类的数目,继承层次的深度,类与类之间关系的数目,对象之间的耦合度,类的个数以及大小显得更有意义。在OO的软件测度方面的工作还是相当新的,但也已经有了一些参考文献。(Lorenz 1993)

资源分配和人员配置都需要重新考虑。开发小组的规模逐步变小,擅长重用的专家开始吃香。重点应该放在重用而非LOC上。重用的真正实现需要一套全新的准则。在执行软件合同的同时,库和应用框架也必须建立起来。长期的投资策略,以及对维护这些可重用财富的承诺和过程,变的更加重要。

至于软件质量保证,传统的测试活动仍是必须的,但它们的计时和定义必须有所改变。例如,将某个功能“走一遍”将牵涉到激活一个剧情(scenario),一系列对象互相作用,发送消息,实现某个特定功能。测试一个 OO系统是另一个需要进一步研究的课题。发布一个稳定的原型需要不同与以往控制结构化开发的产品的配置管理。

另一个管理方面要注意的问题是合适的工具支持。一个面向对象的开发环境是必须的。同时需要的还包括:一个类库浏览器,一个渐增型编译器,支持类和对象语义的调试器,对设计和分析活动的图形化支持和引用检查,配置管理和版本控制工具,以及一个象类库一样的数据库应用。

除非面向对象开发的历史足以提供有关资源和消耗的数据,否则成本估算也是一个问题。计算公式中应该加入目前和未来的重用成本。最后,管理也必须明白在向面向对象方法转变的过程中要遇到的风险。如消息传递、消息传递的爆炸增长、动态内存分配和释放的代价。还有一些起步风险,如对合适的工具,开发战略的熟悉,以及适当的培训,类库的开发等。

8 向面向对象转变

这个转变的时期可能相当长。培训是必须的。一个实验性质的向导项目也是有必要的。建议不要使用结构化和面向对象像结合的办法。越来越多的证据表明,成功需要完全的 OO解决方案.

9 未来

总的来说,面向对象的技术是以前的软件开发技术自然演进的成果,对许多应用领域的软件开发都极具前途。借用Maurice Wilkes在他图灵奖颁奖仪式上的演讲的话:“对象是软件界从70年代以来最激动人心的革新之一。” (1996) 然而,面向对象的开发并非是包医百病的灵丹妙药,其发展还远未成熟。可是尽管OO技术的未来还未确定,但在90年代初期的一些预言都已实现。 (Winblad 1990) 类库和应用程序框架在市场上已经可用。应用和环境之间的透明信息存取业已实现。支持用户在应用之间通信的的环境以及面向对象的继承多媒体工具包正在涌现。随着经验的积累,OO的发展将日渐流行,OO技术也将日趋成熟。当然,OO技术也有可能为某种处理更高一级抽象的开发技术取代或融合。这些都只是猜想。虽然在不远的将来,谈论对象无疑会显得过时,但现在,还有许多的问题等着我们去付出真正的热情。

谁能告诉我:计算机程序设计语言发展史和对程序设计语言未来的看法?

【摘要】

本文以自然辩证的观点探讨了计算机语言的发展历程,运用自然辩证法的基本理论、基本方法,系统分析了计算机语言的发展历史、现状和未来。并对其的发展趋势和未来模式做了探索性研究和预测,同时以哲学的观点阐述其发展的因果关系,揭示其事物发展的共性问题;最后文章介绍了在计算机语言发展历程中做出杰出贡献的科学家,以其在计算机事业中的突出表现来折射出人类智慧的伟大,以其不平凡的一生来激励和指导我们在计算机语言的发展中向着正确的方向前进。

【关键字】

自然辩证法 计算机语言 计算机技术 编程语言 因特网 面向对象

正文

一九九三年美国的克林顿政府提出了“信息高速公路”计划,从而在这十多年间在全球范围内引发了一场信息风暴,信息技术几乎触及了现代生活的方方面面,毫不夸张的说没有了信息技术,现代文明的生活将无从谈起;作为信息技术中最重要的部分,计算机技术无疑是其发展的核心问题,而我们知道计算机只是一台机器,它只能按照计算机语言编好的程序执行,那么正确认识计算机语言的过去和未来,就是关系到计算机发展的重中之重;以自然辩证法的观点认识和分析计算机语言的发展历程,将有助于更加全面地推动计算机技术的发展,有助于更加准确地掌握计算机语言发展趋势。

一、科学认识大门的钥匙--当代自然辩证法

自然辩证法,是马克思主义对于自然界和科学技术发展的一般规律以及人类认识自然改造自然的一般方法的科学,是辩证唯物主义的自然观、科学技术观、科学技术方法论。它主要研究自然界发展的总规律,人与自然相互作用的规律,科学技术发展的一般规律,科学技术研究的方法。

马克思、恩格斯全面地、系统地概括了他们所处时代的科学技术成功,批判吸取了前人的合理成分,系统地论述了辩证唯物主义自然观、自然科学发展过程及其规律性,以及科学认识方法的辩证法,以恩格斯的光辉著作《自然辩证法》为标志,创立了自然辩证法继续发展的广阔道路。

自然辩证法是马克思主义哲学的一个重要组成部分。在辩证唯物主义哲学体系中,自然辩证法与历史唯物论相并列。它集中研究自然界和科学技术的辩证法,是唯物主义在自然界和科学技术领域中的应用,它的原理和方法主要适用于自然领域和科学技术领域。

学习和运用自然辩证法将有助于我们搞清科学和哲学的关系,从而更加清楚地认识科学的本质和发展规律,更加全面的观察思考问题,只有加深了认识,我们才能更好地发挥主观能动性,迎接新的科学技术的挑战。下面我将以自然辩证法的观点来分析计算机语言的发展历程。

二、计算机语言的发展历程和发展趋势

计算机语言的发展是一个不断演化的过程,其根本的推动力就是抽象机制更高的要求,以及对程序设计思想的更好的支持。具体的说,就是把机器能够理解的语言提升到也能够很好的模仿人类思考问题的形式。计算机语言的演化从最开始的机器语言到汇编语言到各种结构化高级语言,最后到支持面向对象技术的面向对象语言。

1、计算机语言的发展历史:二十世纪四十年代当计算机刚刚问世的时候,程序员必须手动控制计算机。当时的计算机十分昂贵,唯一想到利用程序设计语言来解决问题的人是德国工程师楚泽 (konrad zuse)。几十年后,计算机的价格大幅度下跌,而计算机程序也越来越复杂。也就是说,开发时间已经远比运行时间来得宝贵。于是,新的集成、可视的开发环境越来越流行。它们减少了所付出的时间、金钱(以及脑细胞)。只要轻敲几个键,一整段代码就可以使用了。这也得益于可以重用的程序代码库。随着c, pascal,fortran,等结构化高级语言的诞生,使程序员可以离开机器层次,在更抽象的层次上表达意图。由此诞生的三种重要控制结构,以及一些基本数据类型都能够很好的开始让程序员以接近问题本质的方式去思考和描述问题。随着程序规模的不断扩大,在60年代末期出现了软件危机,在当时的程序设计模型中都无法克服错误随着代码的扩大而级数般的扩大,以至到了无法控制的地步,这个时候就出现了一种新的思考程序设计方式和程序设计模型-----面向对象程序设计,由此也诞生了一批支持此技术的程序设计语言,比如eiffel,c++,java,这些语言都以新的观点去看待问题,即问题就是由各种不同属性的对象以及对象之间的消息传递构成。面向对象语言由此必须支持新的程序设计技术,例如:数据隐藏,数据抽象,用户定义类型,继承,多态等等。

2、计算机语言的发展现状:目前通用的编程语言有两种形式:汇编语言和高级语言。

汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。

高级语言是目前绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。

高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,如目前流行的vb、vc、foxpro、delphi等,这些语言的语法、命令格式都各不相同。

高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类: 解释类和编译类。

3、计算机语言的发展趋势:面向对象程序设计以及数据抽象在现代程序设计思想中占有很重要的地位,未来语言的发展将不在是一种单纯的语言标准,将会以一种完全面向对象,更易表达现实世界,更易为人编写,其使用将不再只是专业的编程人员,人们完全可以用订制真实生活中一项工作流程的简单方式来完成编程。下面是一张计算机语言发展图表,从中不难得出计算机语言发展的特性:

² 简单性

提供最基本的方法来完成指定的任务,只需理解一些基本的概念,就可以用它编写出适合于各种情况的应用程序

² 面向对象

提供简单的类机制以及动态的接口模型。对象中封装状态变量以及相应的方法,实现了模块化和信息隐藏;提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用

² 安全性

用于网络、分布环境下有安全机制保证。

² 平台无关性

与平台无关的特性使程序可以方便地被移植到网络上的不同机器、不同平台。

三、面向未来的汉语程序设计语言:

从计算机诞生至今,计算机自硬件到软件都是以印欧语为母语的人发明的。所以其本身就带有印欧语的语言特征,在硬件上cpu、i/o、存储器的基础结构都体现了印欧语思维状态的"焦点视角",精确定义,分工明确等特点。计算机语言也遵照硬件的条件,使用分析式的结构方法,严格分类、专有专用,并在其发展脉络中如同他们的语言-常用字量和历史积累词库量极度膨胀。实际上,计算机硬件的发展越来越强调整体功能,计算机语言的问题日益突出。为解决这一矛盾,自六十年代以来相继有500多种计算机语言出现,历经五代,至今仍在变化不已。

汉语没有严格的语法框架,字词可以自由组合、突出功能的整体性语言。在计算机语言问题成为发展瓶颈的今天,汉语言进入计算机程序设计语言行列,已经成为历史的必然。

1、 发展汉语程序设计语言的理由:

1)计算机语言问题解决,只能从人类语言中寻找解决方案;

2)计算机语言的现存问题是形式状态与功能需求的矛盾;

3)计算机硬件的发展已为整体性语言-汉语进入计算机程序设计语言提供了条件

2、 汉语程序设计语言的技术特点:

1)汉文字的常用字高度集中,生命力极强,能灵活组合,简明准确地表达日新月异的词汇,这些优点是拼音文字无法企及的。

2)汉语言的语法简易灵活,语词单位大小和性质往往无一定规,可随上下语境和逻辑需要自由运用。汉语言的思维整体性强,功能特征突出。

3)汉语程序设计语言的发明者采用核心词库与无限寄存器相结合的方法,实现了汉语言的词素自由组合;将编译器与解释器合一,使汉语程序设计语言既能指令又能编程;以独特的虚拟机结构设计,将数据流与意识流分开,达到汉语程序设计语言与汉语描述完全一致,通用自如。

具有汉语言特性的汉语程序设计语言的出现,打破了汉语言不具备与计算机结合的条件而不能完成机器编码的神话。还为计算机科学与现代语言学研究提出了一条崭新的路径,它从计算机语言的角度,从严格的机械活动及周密的算法上,向世人证实汉语的特殊结构状态,及其特殊的功能。

四、计算机语言之父——尼盖德

尼盖德帮助因特网奠下了基础,为计算机业做出了巨大贡献。

尼盖德是奥斯陆大学的教授,因为发展了simula编程语言,为ms-dos和因特网打下了基础而享誉国际。克里斯汀·尼盖德于1926年在奥斯陆出生,1956年毕业于奥斯陆大学并取得数学硕士学位,此后致力于计算机计算与编程研究。

1961年~1967年,尼盖德在挪威计算机中心工作,参与开发了面向对象的编程语言。因为表现出色,2001年,尼盖德和同事奥尔·约安·达尔获得了2001年a.m.图灵机奖及其它多个奖项。当时为尼盖德颁奖的计算机协会认为他们的工作为java,c++等编程语言在个人电脑和家庭***装置的广泛应用扫清了道路,“他们的工作使软件系统的设计和编程发生了基本改变,可循环使用的、可靠的、可升级的软件也因此得以面世。”

尼盖德因其卓越的贡献,而被誉为“计算机语言之父”,其对计算机语言发展趋势的掌握和认识,以及投身于计算机语言事业发展的精神都将激励我们向着计算机语言无比灿烂的明天前进。

五、结束语

用科学的逻辑思维方法认识事物才会清楚的了解其过去、现在和未来,计算机语言的发展同样遵循着科学技术发展的一般规律,以自然辩证法的观点来分析计算机语言,有助于我们更加深入地认识计算机语言发展的历史、现状和趋势,有了自然辩证法这把开启科学认识大门的钥匙,我们将回首过去、把握现在、放眼未来,正确地选择计算机语言发展的方向,更好的学习、利用和发展计算机语言。

六、致谢

本人急需C语言程序设计论文一篇!!!

谈及C语言,我想凡是学过它的朋友都有这样一种感觉,那就是“让我欢喜让我忧。”欢喜的是,C语言功能非常强大、应用广泛,一旦掌握了后,你就可以理直气壮地对他人说“我是电脑高手!”,而且以后若是再自学其他语言就显得轻而易举了。忧虑的是,C语言犹如“少林武功”一般博大精深,太难学了。其实就笔者认为C语言并非是“difficult(困难)”的,只要你能理清思路,掌握它的精髓,那么自学C语言是一件非常容易且又其乐无穷的事。今天本人就与大家一起谈谈如何学习C语言或者说学习C语言应从哪几方面着手。

了解一些基本知识

一.C语言的背景

就个人感触,无论学习哪门语言首先应该了解一下自己所学语言的背景,也可以说它的发展史。

C语言属于高级程序语言的一种,它的前身是“ALGOL”。其创始人是布朗·W·卡尼汉和丹尼斯·M·利奇。C语言问世时是带有很大的局限性,因为它只能用于UNIX系统上。然而随着科学技术的进步,计算机工业的发展,C语言逐渐脱离UNIX。1987年美国标准化协会制定了C语言的国际标准,简称“ANSI C”,从此以后它便成为一种广泛使用的程序语言。C语言的优点很多,主要的有如下四点:

1.兼备高级语言与低级语言的优点,属于一种中间语言。

2.它是一种结构化程序设计语言,非常适合结构化程序设计。

3.有较丰富的数据类型、运算符以及函数供以选用。

4.直接与内存打交道,使修改、编辑其他程序与文档变得轻松,简单。

二.二大语系二种不同的学习方法

其实高级程序语言分为两大语系。例如:C,C++(C语言的扩展),QBASIC,VB(BASIC的可视化),JAVAs cript,Js cript ,VBs cript,JAVA,ASP,FOXPRO,PERL等等。一路是以C为主的程序语言,例如:JAVAs cript,JAVA等,这类语言在函数的调用,程序语句的书写,循环的控制都极为相似。另一路是以BASIC为首的程序语言,例如:FOXPRO,VBs cript等,此类语言同样具有相似的函数调用,程序语句书写以及循环控制,但与C语系是不同的。因此若是您以前是从QBASIC起家的,那么在学习C语言前最好是先洗洗脑,千万不要把学习BASIC的方法以及思路用在C身上。

讲到这里,我想大家对C语言一定有了感性认识吧!下面让我们再升华一下,全方位亲密接触它。学习C语言必须从以下四点入手,也就是说,只要你能掌握这四点的内容,那么基本上就大功告成了。

亲密接触C语言

一.输入输出

C语言的输入输出是非常严格的,或许在其他程序语言中我们可以不关心这个问题,但在C语言中,我们必须要彻底了解它。由于篇幅有限,因此笔者不能详谈,有兴趣的朋友可以参考由著名程序语言教授谭浩强先生主编,由清华大学出版社出版的《C程序设计第二版》。不过这里笔者还是有几点要简单的谈一下。

1.二维浮点数数组的输入

二维浮点数数组的输入(即:通过键盘给二维浮点数数组赋值)在很多专业书中都没有详细讲过这个问题。在给二维浮点数数组赋值时一定要先声明一个变量,接着把数值赋予这个变量,最后把变量数值赋予二维浮点数数组赋值。

2.注意输出格式中“%”后的字符

C语言的输出说复杂不复杂,因为常用的都很简单。可说不复杂也未必,记得曾在一次等级考前辅导我们C语言的教授讲道:“如果C语言要考得很难的话,根本不用考什么指针,只要专考输出格式,我想百分之九十九的学生都不及格。”当时我们无不认同。从这则事例中可以看出C语言的输出格式之复杂程度。因此大家在学习它时千万要学会辨别输出格式中“%”后的字符,每个字符都有其意义,也都有其作用。

二.优先级

说道优先级,有很多朋友都不是很了解或说很模糊。为此笔者想先通过一个例子让各位有个概念。什么叫优先级?比方说,我们在公交车终点站排座队时总会遇到70岁以上的老人不需要排队就能上车的情景,这就是优先级的涵义。C程序在运行时也象排队坐车一样,首先照顾那些优先级高的运算符,若是优先级相同,那么就象遇到两位(或两位以上)70岁以上的老人那样,让他们依次上车。但是C语言中的优先级的运算并不是千篇一律的,只能说是在大多数情况下,有些运算符的优先级有其自己的特点,因此这点大家要注意。例如条件表达式:条件?结果1:结果2,这种表达式很多朋友都知道,它的作用与IF…ELSE…条件判断语句很雷同,它运算时的优先级就不是按照C语言的规则来完成的。所以说对于优先级各位编程爱好者一定灵活掌握,不要死记硬背。

三.指针

就个人认为,C语言中的指针是最有特色的,当然也是最难学的。指针说穿了,其实是变量的一种表现形式,只不过这种变量记载的不是数值而是地址。就象一个人可以用姓名来表示自己,也可以用身份证号码来表示自己一样。笔者涉足编程已经有三年多了,在这期间曾经收到过很多网友的电子邮件询问学习指针的方法。就本人感触,学习指针最好是先学些计算机硬件工作的原理,例如:直接寻址,间接寻址等,只有了解了这些内容以后,你再学指针就比较容易理会,毕竟C语言是一门介于机器语言与高级语言中间的语言,没有一些硬件工作知识是很难领悟它的真谛的。然而事事并非绝对,如果你没有这些知识也不要紧,只要清楚知道以下笔者总结的二点再加上多练习便可:

1.指针是地址变量:它的值有两种:其一是地址,其二是内容。不同的表达方式可以取不同的值,这有点象一个家庭地址在不同的场合标识的人物也不同。例如:父母亲在他们的单位所登记的家庭地址就代表他们自己,而你在学校中登记的同样的家庭地址就代表你自己。

2.指针是可以运算的,它的运算法则与变量是一致的。

另外,在编写一个程序时,除非万不得已,一般不要使用指针变量。因为指针是比较复杂的,用不好就“当机”。所以笔者建议各位对于指针只要能看懂就行,当然如果你是准备参加考试的就另当别论了。

四.函数

虽说很多程序语言都有函数这一内容,但笔者觉得C语言的函数是最有魅力的。如果你能完全掌握C语言的函数,那么学习C++就不成问题了(C++是一门建立在C语言上,但又不同于C语言的高级程序语言,它增添了很多函数。)。学习函数的方法是比较简单的,只有两个字“牢记”,即:牢记函数的功能,牢记函数的用途以及如何输入输出。有些朋友认为,程序语言中的函数没有多大用处,其实这并不正确,函数从本质上讲是一段通用程序,用它可以帮助我们节约很多编程的时间,一个聪明的编程者在编写程序前往往总是先找自己所编写的程序中有多少是可以用函数来代替的。笔者曾经作过一个比较字符串的实验,用C语言中的strcmp()函数只要一句话,而自己编写的话30句话都摆不平,可想而知函数是多么实用呀!

计算机导论论文

大学计算机科学导论论文

计算机科学与技术这一门科学深深的吸引着我们这些同学们,原先不管是国内还是国外都喜欢把这个系分为计算机软件理论、计算机系统、计算机技术与应用。后来又合到一起,变成了现在的计算机科学与技术。我一直认为计算机科学与技术这门专业,在本科阶段是不可能切分成计算机科学和计算机技术的,因为计算机科学需要相当多的实践,而实践需要技术;每一个人(包括非计算机专业),掌握简单的计算机技术都很容易(包括原先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中应是有所体会了。难道我们真就写个什么都要用汇编,以显示自己的水平高,真是这样倒不如直接用机器语言写算了。反过来说,想要以最快的速度接受并利用新技术关键还是在于你对计算机科学地把握程度。

总的来说,从教育角度来讲,国内高校的课程安排不是很合理,强调理论,又不愿意在理论上深入教育,无力接受新技术,想避开新技术又无法避得一干二净。我觉得关键问题就是国内的高校难于突破现状,条条框框限制着怎么求发展。我们虽然认识得到国外教育的优越性,但为什么迟迟不能采取行动?哪怕是去粗取精的取那么一点点。

关于程序设计语言论文5000字和程序设计语言论文题目的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

扫码二维码