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