電腦程式

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書
「電腦程式」的各地常用名稱
中國大陸計算機程序
臺灣電腦程式
星馬電腦程序
#include <stdio.h>
int main(void) {
    printf("Hello world!\n");
    return 0;
}
CHello World程式樣例
public class HelloWorld {
    public static void main(String[] args){
        System.out.println("Hello World!");
    }
}
Java的Hello World程式樣例
using System;

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
C♯的Hello World程式樣例
print("Hello World!")
Python 3的Hello World程式樣例
#include <iostream>
int main()
{
    std::cout<<"Hello World!"<<endl;
    return 0;
}
C++Hello World程式樣例

電腦程式(英語:Computer Program)是指一組指示電腦或其他具有訊息處理能力的電子裝置每一步動作的指令,通常用某種程式設計語言編寫,執行於某種目標體系結構上。打個比方,一個程式就像一個用漢語(程式設計語言)寫下的紅燒肉菜譜(程式原始碼),用於指導懂漢語的人(體系結構)來做這個菜。 電腦程式是軟體的一個組成部分,它還包括文件和其他無形組成部分。通常,以英文文字為基礎的電腦程式要經過編譯連結而成為一種人們不易看清而電腦可解讀的一連串數字的格式,然後放入執行。這種程式也叫作編譯語言。未經編譯就可執行的程式,通常稱之為指令碼程式(script)或直譯語言

程式的執行[編輯]

為了一個程式執行,電腦載入程式碼,可能還要載入資料,從而初始化成一個開始狀態,然後呼叫某種啟動機制。在最低層上,這些是由一個載入器開始的。

在大多數電腦中,作業系統例如Windows等,載入並且執行很多程式。在這種情況下,一個電腦程式是指一個單獨的可執行的對映,而不是當前在這個電腦上執行的全部程式。

程式里的指令都是基於機器語言。程式通常由一個電腦程式設計語言編寫,然後由改語言的編譯器(或者,有時由組譯程式)編譯為機器語言。

馮諾依曼體系結構(普林斯頓結構)[編輯]

馮·紐曼結構又做普林斯頓結構,在一台基於最常見的馮諾依曼體系結構的電腦上,程式從某種外部裝置,通常是硬碟,被載入到電腦之內。 如果電腦選擇馮諾依曼體系結構,那麼程式就被載入入記憶體。 指令序列順序執行,直到一條跳轉或轉移指令被執行,或者一個中斷出現。所有這些指令都會改變指令暫存器的內容。

基於這種體系的電腦,如果沒有程式的支援,將無法工作。一個電腦程式是一系列指令的集合。

程式裡的指令都是基於機器語言;程式通常首先用一種電腦程式設計語言編寫,然後用編譯器或者直譯器翻譯成機器語言。 有時,也可以用組合語言程式設計,組合語言實質就是表示機器語言的一組記號-在這種情況下,用於翻譯的程式叫做組譯程式。

程式和資料[編輯]

資料可以被定義為被程式處理的資訊。當我們考慮到整個電腦系統時,有時程式和資料的區別就不是那麼明顯了。中央處理器有時有一組微指令控制硬體,資料可以是一個有待執行的程式(參見指令碼程式語言),程式可以編寫成去編寫其它的程式;所有這些例子都使程式和資料的比較成為一種視角的選擇。有人甚至斷言程式和資料沒有區別。

編寫一個程式去生成另外一個程式的過程被稱之為元程式設計Metaprogramming)。它可以被應用於讓程式根據給定資料生成代碼。單單一個程式可能不足以表示給定資料的所有方面。讓一個程式去分析這個資料並生成新的程式去處理資料所有的方面可能會容易一些。Lisp就是一例支援這種程式設計模式的程式語言。

神經網路裡儲存的權重是一種資料。正是這些權重資料,跟網路拓撲結構一起,定義了網路的行為。人們通常很難界定這些資料到底表示什麼或者它們是否可以由程式來代替。這個例子以及跟人工智慧相關的其它一些問題進一步考驗程式和資料的區別。

演算法[編輯]

演算法指解決某個問題的嚴格方法,通常還需輔以某種程度上的執行效能分析。演算法可以是純理論的,也可以由一個電腦程式實現。理論演算法通常根據複雜性分為不同類別;實現的演算法通常經過剖析Profiling)以測試其效能。請注意雖然一個演算法在理論上有效可行,但是一個糟糕的演算法仍會浪費寶貴的電腦資源。(更詳細資訊,參見演算法資訊理論Algorithmic Information Theory))

開發[編輯]

編寫程式是以下步驟的一個往復過程:編寫新的原始碼,測試、分析和提高新編寫的代碼以找出語法語意錯誤。從事這種工作的人叫做程式設計師。由於電腦的飛速發展,程式設計的要求和種類也日趨多樣,由此產生了不同種類的程式設計員,每一種都有更細緻的分工和任務。軟體工程師系統分析員就是兩個例子。現在,程式設計的長時間過程被稱之為「軟體開發」或者軟體工程。後者也由於這一學科的日益成熟而逐漸流行。

因此,如今程式設計員可以指某一領域的程式設計專家,也可以泛指軟體公司英語Software company裡編寫一個複雜軟體系統裡某一塊的一般程式設計師。一組為某一軟體公司工作的程式設計師有時會被指定一個程式組長或者專案經理,用以監督專案進度和完成日期。大型軟體通常經歷由系統設計師掌握的一個長時間的設計階段,然後才交付給開發人員。牛仔式的程式設計(未經詳細設計)是不為人所齒的。

兩種當今常見的程式開發方式之一是專案組開發方式。使用這種方式專案組裡每一個成員都能對專案的進行發表意見,而由其中的某一個人協調不同意見。這樣的專案組通常有15個左右的成員,這樣做是為了便於管理。第二種開發方式是結對開發

參見[編輯]

參考文獻[編輯]

  1. Eric Baum What is Thought MIT Press 2004年 ISBN 0-262-02548-5
  2. - Chapter Two: The Mind is a Computer Program

外部連結[編輯]