程序設(shè)計(Programming)是給出解決特定問題程序的過程,是軟件構(gòu)造活動中的重要組成部分。程序設(shè)計往往以某種程序設(shè)計語言為工具,給出這種語言下的程序。程序設(shè)計過程應(yīng)當包括分析、設(shè)計、編碼、測試、排錯等不同階段。專業(yè)的程序設(shè)計人員常被稱為程序員。
某種意義上,程序設(shè)計的出現(xiàn)甚至早于電子計算機的出現(xiàn)。英國著名詩人拜倫的女兒Ada Lovelace曾設(shè)計了巴貝奇分析機上解伯努利方程的一個程序。她甚至還建立了循環(huán)和子程序的概念。由于她在程序設(shè)計上的開創(chuàng)性工作,Ada Lovelace被稱為世界上第一位程序員。
任何設(shè)計活動都是在各種約束條件和相互矛盾的需求之間尋求一種平衡,程序設(shè)計也不例外。在計算機技術(shù)發(fā)展的早期,由于機器資源比較昂貴,程序的時間和空間代價往往是設(shè)計關(guān)心的主要因素;隨著硬件技術(shù)的飛速發(fā)展和軟件規(guī)模的日益龐大,程序的結(jié)構(gòu)、可維護性、復(fù)用性、可擴展性等因素日益重要。
另一方面,在計算機技術(shù)發(fā)展的早期,軟件構(gòu)造活動主要就是程序設(shè)計活動。但隨著軟件技術(shù)的發(fā)展,軟件系統(tǒng)越來越復(fù)雜,逐漸分化出許多專用的軟件系統(tǒng),如操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)、應(yīng)用服務(wù)器,而且這些專用的軟件系統(tǒng)愈來愈成為普遍的計算環(huán)境的一部分。這種情況下軟件構(gòu)造活動的內(nèi)容越來越豐富,不再只是程序設(shè)計活動了,還包括數(shù)據(jù)庫設(shè)計、用戶界面設(shè)計、接口設(shè)計、通信協(xié)議設(shè)計和復(fù)雜的系統(tǒng)配置過程。
程序設(shè)計(Programming)是指設(shè)計、編制、調(diào)試程序的方法和過程。它是目標明確的智力活動。由于程序是軟件的本體,軟件的質(zhì)量主要通過程序的質(zhì)量來體現(xiàn)的,在軟件研究中,程序設(shè)計的工作非常重要,內(nèi)容涉及到有關(guān)的基本概念、工具、方法以及方法學等。
按照結(jié)構(gòu)性質(zhì),有結(jié)構(gòu)化程序設(shè)計與非結(jié)構(gòu)化程序設(shè)計之分。前者是指具有結(jié)構(gòu)性的程序設(shè)計方法與過程。它具有由基本結(jié)構(gòu)構(gòu)成復(fù)雜結(jié)構(gòu)的層次性,后者反之。按照用戶的要求,有過程式程序設(shè)計與非過程式程序設(shè)計之分。前者是指使用過程式程序設(shè)計語言的程序設(shè)計,后者指非過程式程序設(shè)計語言的程序設(shè)計。按照程序設(shè)計的成分性質(zhì),有順序程序設(shè)計、并發(fā)程序設(shè)計、并行程序設(shè)計、分布式程序設(shè)計之分。按照程序設(shè)計風格,有邏輯式程序設(shè)計、函數(shù)式程序設(shè)計、對象式程序設(shè)計之分。
程序設(shè)計的基本概念有程序、數(shù)據(jù)、子程序、子例程、協(xié)同例程、模塊以及順序性、并發(fā)性、并行性、和分布性等。程序是程序設(shè)計中最為基本的概念,子程序和協(xié)同例程都是為了便于進行程序設(shè)計而建立的程序設(shè)計基本單位,順序性、并發(fā)性、并行性和分布性反映程序的內(nèi)在特性。
程序設(shè)計規(guī)范是進行程序設(shè)計的具體規(guī)定。程序設(shè)計是軟件開發(fā)工作的重要部分,而軟件開發(fā)是工程性的工作,所以要有規(guī)范。語言影響程序設(shè)計的功效以及軟件的可靠性、易讀性和易維護性。專用程序為軟件人員提供合適的環(huán)境,便于進行程序設(shè)計工作。
計算機程序或者軟件程序(通常簡稱程序)是指一組指示計算機每一步動作的指令,通常用某種程序設(shè)計語言編寫,運行于某種目標體系結(jié)構(gòu)上。打個比方,一個程序就像一個用漢語(程序設(shè)計語言)寫下的紅燒肉菜譜(程序),用于指導(dǎo)懂漢語的人(體系結(jié)構(gòu))來做這個菜。 通常,計算機程序要經(jīng)過編譯和鏈接而成為一種人們不易理解而計算機理解的格式,然后運行。未經(jīng)編譯就可運行的程序通常稱之為腳本程序。
程序設(shè)計語言(ProgrammingLanguage)是用于編寫計算機程序的語言。語言的基礎(chǔ)是一組記號和一組規(guī)則。根據(jù)規(guī)則由記號構(gòu)成的記號串的總體就是語言。在程序設(shè)計語言中,這些記號串就是程序。程序設(shè)計語言包含三個方面,即語法、語義和語用。語法表示程序的結(jié)構(gòu)或形式,亦即表示構(gòu)成程序的各個記號之間的組合規(guī)則,但不涉及這些記號的特定含義,也不涉及使用者。語義表示程序的含義,亦即表示按照各種方法所表示的各個記號的特定含義,但也不涉及使用著,語用表示程序與使用的關(guān)系。
程序設(shè)計語言的基本成分有:①數(shù)據(jù)成分,用于描述程序所涉及的數(shù)據(jù);②運算成分,用以描述程序中所包含的運算;③控制成分,用以描述程序中所包含的控制;④傳輸成分,用以表達程序中數(shù)據(jù)的傳輸。
程序設(shè)計語言程序設(shè)計程序設(shè)計語言計算機IT按照語言級別可以分為低級語言和高級語言。低級語言有機器語言和匯編語言。低級語言與特定的機器有關(guān)、功效高,但使用復(fù)雜、繁瑣、費時、易出差錯。機器語言是表示成數(shù)碼形式的機器基本指令集,或者是操作碼經(jīng)過符號化的基本指令集。匯編語言是機器語言中地址部分符號化的結(jié)果,或進一步包括宏構(gòu)造。高級語言的表示方法要比低級語言更接近于待解問題的表示方法,其特點是在一定程度上與具體機器無關(guān),易學、易用、易維護。
程序設(shè)計語言按照用戶的要求有過程式語言和非過程式語言之分。過程式語言的主要特征是,用戶可以指明一列可順序執(zhí)行的運算,以表示相應(yīng)的計算過程,如FORTRAN、COBOL、PASCAL等。
按照應(yīng)用范圍,有通用語言與專用語言之分。如FORTRAN、COLBAL、PASCAL、C等都是通用語言。目標單一的語言稱為專用語言,如APT等。
按照使用方式,有交互式語言和非交互式語言之分。具有反映人機交互作用的語言成分的語言成為交互式語言,如BASIC等。不反映人機交互作用的語言稱為非交互式語言,如FORTRAN、COBOL、ALGOL69、PASCAL、C等都是非交互式語言。
按照成分性質(zhì),有順序語言、并發(fā)語言和分布語言之分。只含順序成分的語言稱為順序語言,如FORTRAN、C等。含有并發(fā)成分的語言稱為并發(fā)語言,如PASCAL、Modula和Ada等。
程序設(shè)計語言是軟件的重要方面,其發(fā)展趨勢是模塊化、簡明化、形式化、并行化和可視化