计算机程序

来源:互联网 发布:js 加密算法 编辑:程序博客网 时间:2024/06/07 10:58

  程序的运行[编辑]为了一个程序运行,计算机加载程序代码,可能还要加载数据,从而初始化成一个开始状态,然后调用某种启动机制。在最低层上,这些是由一个加载器开始的。

  在大多数计算机中,操作系统例如Windows等,加载并且执行很多程序。在这种情况下,一个计算机程序是指一个单独的可执行的映射,而不是当前在这个计算机上运行的全部程序。

  冯诺依曼体系结构[编辑]在一台基于最常见的冯诺依曼体系结构(又称普林斯顿结构)的计算机上,程序从某种外部设备,通常是硬盘,被加载到计算机之内。 如果计算机选择冯诺依曼体系结构,那么程序就被加载入内存。 指令串行顺序执行,直到一条跳转或转移指令被执行,或者一个中断出现。所有这些指令都会改变指令寄存器的内容。

  基于这种体系的计算机,如果没有程序的支持,将无法工作。一个计算机程序是一系列指令的集合。

  程序里的指令都是基于机器语言;程序通常首先用一种计算机程序设计语言编写,然后用编译器或者解释器翻译成机器语言。 有时,也可以用汇编语言编程,汇编语言实质就是表示机器语言的一组记号-在这种情况下,用于翻译的程序叫做汇编程序。

  程序和数据[编辑]程序已经被定义了。如何定义数据呢?数据可以被定义为被程序处理的信息。当我们考虑到整个计算机系统时,有时程序和数据的区别就不是那么明显了。中央处理器有时有一组微指令控制硬件,数据可以是一个有待执行的程序(参见脚本编程语言),程序可以编写成去编写其它的程序;所有这些例子都使程序和数据的比较成为一种视角的选择。有人甚至断言程序和数据没有区别。

  编写一个程序去生成另外一个程序的过程被称之为元编程(Metaprogramming)。它可以被应用于让程序根据给定数据生成代码。单单一个程序可能不足以表示给定数据的所有方面。让一个程序去分析这个数据并生成新的程序去处理数据所有的方面可能会容易一些。Lisp就是一例支持这种编程模式的程序语言。

  在神经网络里储存的权重是一种数据。正是这些权重数据,跟网路的拓扑结构一起,定义了网络的行为。人们通常很难界定这些数据到底表示什么或者它们是否可以由程序来代替。这个例子以及跟人工智能相关的其它一些问题进一步考验程序和数据的区别。

  算法[编辑]主条目:算法

  算法指解决某个问题的严格方法,通常还需辅以某种程度上的运行性能分析。算法可以是纯理论的,也可以由一个计算机程序实现。理论算法通常根据复杂性分为不同类别;实现的算法通常经过颇析(Profiling)以测试其性能。请注意虽然一个算法在理论上有效可行,但是一个糟糕的实现仍会浪费宝贵的计算机资源。(更详细信息,参见算法信息论(Algorithmic Information Theory))

0 0
原创粉丝点击