电脑程式又称“计算机软体”。通过指令的顺序,使计算机能按所要求的功能进行精确记述的逻辑方法。计算机本身作为机器可以获得专利,但电脑程式是一种数学逻辑方法,各国一般不予保护。随着电子技术的广泛套用,导致产生了专门提供计算机所需软体的新兴工业部门及新型商品——电脑程式。因此,也产生了对此类创造性活动的产品予以保护的需要。美国1980年12月12日生效的新修订专利法已将电脑程式列为着作权的保护对象。不过一些学者认为,用专利法或派权法对软体进行保护均不适宜,因为软体的寿命较短,经常变化,而专利的保护期一般是10—20年,着作权的保护期更长如有必要,对软体的保护还应另颁单行法规更为适宜。世界智慧财产权组织也曾召开专家会议,讨论对计算机软体的保护问题。会议建议补充专利法、着作权法及不正当竞争法,酌情建立电脑程式保护制度。
基本介绍
- 中文名:电脑程式
- 外文名:Computer program
- 又名:软体
- 简称:程式
- 类型:计算机动作的指令
简介
电脑程式(英语:Computer program),也称为软体(英语:software),简称程式(英语:Program)是指一组指示计算机或其他具有信息处理能力装置执行动作或做出判断的指令,通常用某种程式设计语言编写,运行于某种目标体系结构上。打个比方,一个程式就像一个用汉语(程式设计语言)写下的红烧肉菜谱(程式),用于指导懂汉语和烹饪手法的人(体系结构)来做这个菜。
脚本程式
通常,电脑程式要经过编译和连结而成为一种人们不易理解而计算机理解的格式,然后运行。未经编译就可运行的程式通常称之为脚本程式。
程式运行
为了一个程式运行,计算机载入程式代码,可能还要载入数据,从而初始化成一个开始状态,然后调用某种启动机制。在最低层上,这些是由一个引导序列开始的。
在大多数计算机中,作业系统例如Windows等,载入并且执行很多程式。在这种情况下,一个电脑程式是指一个单独的可执行的映射,而不是当前在这个计算机上运行的全部程式。
体系结构
在一台基于最常见的冯诺依曼体系结构(又称Harvard Architecture)的计算机上,程式从某种外部设备,通常是硬碟,被载入到计算机里。 如果计算机选择冯诺依曼体系结构,那幺程式就被载入入记忆体。 指令序列顺序执行,直到一条跳转或转移指令被执行,或者一个中断出现。所有这些指令都会改变指令暂存器的内容。
基于这种体系计算机如果没有程式的支持将无法工作。一个电脑程式是一系列指令的集合。
程式里的指令都是基于机器语言;程式通常首先用一种电脑程式设计语言编写,然后用编译程式或者解释执行程式翻译成机器语言。 有时,程式也可以用彙编语言编写,彙编语言实质就是表示机器语言的一组记号-在这种情况下,用于翻译的程式叫做彙编程式(Assembler)。
程式数据
程式已经被定义了。如何定义数据呢?数据可以被定义为被程式处理的信息。当我们考虑到整个计算机系统时,有时程式和数据的区别就不是那幺明显了。中央处理器有时有一组微指令控制硬体,数据可以是一个有待执行的程式(参见脚本程式语言),程式可以编写成去编写其它的程式;所有这些例子都使程式和数据的比较成为一种视角的选择。有人甚至断言程式和数据没有区别。
编写一个程式去生成另外一个程式的过程被称之为原编程(Metaprogramming)。它可以被套用于让程式根据给定数据生成代码。单一一个程式可能不足以表示给定数据的所有方面。让一个程式去分析这个数据并生成新的程式去处理数据所有的方面可能会容易一些。Lisp就是一例支持这种编程模式的程式语言。
在神经网路里储存的权重是一种数据。正是这些权重数据,跟网路的拓扑结构一起,定义了网路的行为。人们通常很难界定这些数据到底表示什幺或者它们是否可以由程式来代替。这个例子以及跟人工智慧相关的其它一些问题进一步考验程式和数据的区别。
算法
算法指解决某个问题的严格方法,通常还需辅以某种程度上的运行性能分析。算法可以是纯理论的,也可以由一个电脑程式实现。理论算法通常根据複杂性分为不同类别;实现的算法通常经过颇析(Profiling)以测试其性能。请注意虽然一个算法在理论上有效可行,但是一个糟糕的实现仍会浪费宝贵的计算机资源。(更详细信息,参见算法资讯理论,Algorithmic Information Theory)
开发
编写程式是以下步骤的一个往复过程:编写新的原始码,测试、分析和提高新编写的代码以找出语法和语义错误。从事这种工作的人叫做程式设计员??趋多样,由此产生了不同种类的程式设计员,每一种都有更细緻的分工和任务。软体工程师和系统分析员就是两个例子。编程的长时间过程被称之为“软体开发”或者软体工程。后者也由于这一学科的日益成熟而逐渐流行。
因此,如今程式设计员可以指某一领域的编程专家,也可以泛指软体公司里编写一个複杂软体系统里某一块的一般程式设计师。一组为某一软体公司工作的程式设计师有时会被指定一个程式组长或者项目经理,用以监督项目进度和完成日期。大型软体通常经历由系统设计师的掌握的一个长时间的设计阶段,然后才交付给开发人员。牛仔式的编程(未经详细设计)是不为人所齿的。
两种当今常见的程式开发方式之一是项目组开发方式。使用这种方式项目组里每一个成员都能对项目的进行发表意见,而由其中的某一个人协调不同意见。这样的项目组通常有10个左右的成员,这样做是为了便于管理。第二种开发方式是结对开发。