程序設計(Programming)是給出解決特定問題程序的過程,是軟件構造活動中的重要組成部分。程序設計往往以某種程序設計語言為工具,給出這種語言下的程序。程序設計過程應當包括分析、設計、編碼、測試、排錯等不同階段。專業的程序設計人員常被稱為程序員。
某種意義上,程序設計的出現甚至早于電子計算機的出現。英國著名詩人拜倫的女兒AdaLovelace曾設計了巴貝奇分析機上解伯努利方程的一個程序。她甚至還建立了循環和子程序的概念。由于她在程序設計上的開創性工作,AdaLovelace被稱為世界上第一位程序員。
任何設計活動都是在各種約束條件和相互矛盾的需求之間尋求一種平衡,程序設計也不例外。在計算機技術發展的早期,由于機器資源比較昂貴,程序的時間和空間代價往往是設計關心的主要因素;隨著硬件技術的飛速發展和軟件規模的日益龐大,程序的結構、可維護性、復用性、可擴展性等因素日益重要。
另一方面,在計算機技術發展的早期,軟件構造活動主要就是程序設計活動。但隨著軟件技術的發展,軟件系統越來越復雜,逐漸分化出許多專用的軟件系統,如操作系統、數據庫系統、應用服務器,而且這些專用的軟件系統愈來愈成為普遍的計算環境的一部分。這種情況下軟件構造活動的內容越來越豐富,不再只是程序設計活動了,還包括數據庫設計、用戶界面設計、接口設計、通信協議設計和復雜的系統配置過程。
程序設計(Programming)是指設計、編制、調試程序的方法和過程。它是目標明確的智力活動。由于程序是軟件的本體,軟件的質量主要通過程序的質量來體現的,在軟件研究中,程序設計的工作非常重要,內容涉及到有關的基本概念、工具、方法以及方法學等。
按照結構性質,有結構化程序設計與非結構化程序設計之分。前者是指具有結構性的程序設計方法與過程。它具有由基本結構構成復雜結構的層次性,后者反之。按照用戶的要求,有過程式程序設計與非過程式程序設計之分。前者是指使用過程式程序設計語言的程序設計,后者指非過程式程序設計語言的程序設計。按照程序設計的成分性質,有順序程序設計、并發程序設計、并行程序設計、分布式程序設計之分。按照程序設計風格,有邏輯式程序設計、函數式程序設計、對象式程序設計之分。
程序設計的基本概念有程序、數據、子程序、子例程、協同例程、模塊以及順序性、并發性、并行性、和分布性等。程序是程序設計中最為基本的概念,子程序和協同例程都是為了便于進行程序設計而建立的程序設計基本單位,順序性、并發性、并行性和分布性反映程序的內在特性。
程序設計規范是進行程序設計的具體規定。程序設計是軟件開發工作的重要部分,而軟件開發是工程性的工作,所以要有規范。語言影響程序設計的功效以及軟件的可靠性、易讀性和易維護性。專用程序為軟件人員提供合適的環境,便于進行程序設計工作。
計算機程序或者軟件程序(通常簡稱程序)是指一組指示計算機每一步動作的指令,通常用某種程序設計語言編寫,運行于某種目標體系結構上。打個比方,一個程序就像一個用漢語(程序設計語言)寫下的紅燒肉菜譜(程序),用于指導懂漢語的人(體系結構)來做這個菜。通常,計算機程序要經過編譯和鏈接而成為一種人們不易理解而計算機理解的格式,然后運行。未經編譯就可運行的程序通常稱之為腳本程序。