版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
軟件技術(shù)概論與基礎(chǔ)第5章軟件開(kāi)發(fā)語(yǔ)言學(xué)習(xí)導(dǎo)入“工欲善其事,必先利其器”,在軟件開(kāi)發(fā)中也是一樣。想要高效地進(jìn)行開(kāi)發(fā)軟件活動(dòng),那么一種趁手的軟件開(kāi)發(fā)語(yǔ)言是必須的?,F(xiàn)代編程語(yǔ)言林林總總,如何選擇一種適合的編程語(yǔ)言呢?想要做出正確的選擇,了解主流編程語(yǔ)言的特性是重要的一環(huán)。在了解了不同編程語(yǔ)言的特性和異同之后,才能知道一個(gè)軟件項(xiàng)目應(yīng)該選擇何種編程語(yǔ)言。本章內(nèi)容將介紹當(dāng)前流行的一些編程語(yǔ)言,以及這些編程語(yǔ)言的歷史和特點(diǎn)。思維導(dǎo)圖學(xué)習(xí)目標(biāo)了解常見(jiàn)的編程語(yǔ)言了解不同編程語(yǔ)言的歷史和特點(diǎn)了解常見(jiàn)的編程語(yǔ)言類型了解不同編程語(yǔ)言擅長(zhǎng)的場(chǎng)景了解編程語(yǔ)言之間語(yǔ)法的差異重點(diǎn)難點(diǎn)學(xué)習(xí)重點(diǎn)主流編程語(yǔ)言每種語(yǔ)言的歷史、特點(diǎn)等學(xué)習(xí)難點(diǎn)編程開(kāi)發(fā)環(huán)境的搭建相關(guān)知識(shí)5.1Java語(yǔ)言5.2C語(yǔ)言5.3C++語(yǔ)言5.4C#語(yǔ)言5.5Python語(yǔ)言5.6PHP語(yǔ)言5.7HTML、JavaScript、CSS語(yǔ)言5.1Java語(yǔ)言一5.1Java語(yǔ)言5.1.1Java語(yǔ)言簡(jiǎn)介5.1.2Java語(yǔ)言的發(fā)展歷史5.1.3Java語(yǔ)言的特點(diǎn)5.1.4Java環(huán)境配置5.1.5Java代碼展示一5.1Java語(yǔ)言5.1.1Java語(yǔ)言簡(jiǎn)介Java編程語(yǔ)言是一種通用編程語(yǔ)言,其初衷是作為C++語(yǔ)言的改進(jìn)語(yǔ)言而被開(kāi)發(fā)出來(lái)的,經(jīng)過(guò)多年的發(fā)展,Java語(yǔ)言已經(jīng)在在桌面應(yīng)用程序、智能移動(dòng)設(shè)備應(yīng)用程序、企業(yè)級(jí)應(yīng)用、互聯(lián)網(wǎng)Web應(yīng)用、大數(shù)據(jù)應(yīng)用、分布式應(yīng)用、基于云技術(shù)的應(yīng)用等領(lǐng)域都成為主流的開(kāi)發(fā)語(yǔ)言。一5.1Java語(yǔ)言5.1.2Java語(yǔ)言的發(fā)展歷史20世紀(jì)90年代,Sun(太陽(yáng)計(jì)算機(jī)系統(tǒng))公司準(zhǔn)備開(kāi)拓消費(fèi)類電子產(chǎn)品市場(chǎng),使消費(fèi)類電子產(chǎn)品能夠?yàn)橛脩籼峁└鼜?qiáng)的智能交互體驗(yàn)。當(dāng)時(shí)的嵌入式單片機(jī)系統(tǒng)種類繁雜,由不同企業(yè)生產(chǎn)的不同嵌入式處理器之間有較大的差異,使用C語(yǔ)言或C++語(yǔ)言進(jìn)行軟件開(kāi)發(fā)存在通用性和可移植性的問(wèn)題。一5.1Java語(yǔ)言5.1.2Java語(yǔ)言的發(fā)展歷史1996年1月,Sun公司發(fā)布了Java語(yǔ)言的第一個(gè)開(kāi)發(fā)工具包JDK1.0。9月,約8.3萬(wàn)個(gè)網(wǎng)頁(yè)應(yīng)用了Java技術(shù)來(lái)制作。10月,Sun公司發(fā)布了Java平臺(tái)的第一個(gè)即時(shí)(JIT)編譯器。1997年2月,JDK1.1發(fā)布,在隨后的3周時(shí)間里,達(dá)到了22萬(wàn)次的下載量。4月,JavaOne會(huì)議召開(kāi),參與者逾一萬(wàn)人,創(chuàng)當(dāng)時(shí)全球同類會(huì)議紀(jì)錄。一5.1Java語(yǔ)言5.1.2Java語(yǔ)言的發(fā)展歷史1999年6月,SUN公司發(fā)布了應(yīng)用于不同領(lǐng)域的3個(gè)版本:標(biāo)準(zhǔn)版(Java2StandardEdition,J2SE)應(yīng)用于桌面環(huán)境、企業(yè)版(Java2EnterpriseEdition,J2EE)應(yīng)用于基于Java的應(yīng)用服務(wù)器、微型版(Java2MicroEdition,J2ME)應(yīng)用于移動(dòng)設(shè)備及有限資源的環(huán)境。一5.1Java語(yǔ)言5.1.2Java語(yǔ)言的發(fā)展歷史2000年后的最初幾年,發(fā)布了JDK1.3、JDK1.4,以及J2EE1.3、J2EE1.4,這幾年隨著手機(jī)的普及,支持J2ME的設(shè)備快速增多,到2003年,僅Nokia就宣稱出售了1億部支持Java的手機(jī)。一5.1Java語(yǔ)言5.1.2Java語(yǔ)言的發(fā)展歷史2004年9月,J2SE1.5發(fā)布,成為Java語(yǔ)言發(fā)展史上的又一里程碑。為了表示該版本的重要性,J2SE1.5更名為JavaSE5.0。這一版本為Java提供了大量新特性,其中包括泛型支持、基本類型的自動(dòng)裝箱、改進(jìn)的循環(huán)、枚舉類型、格式化I/O及可變參數(shù)。一5.1Java語(yǔ)言5.1.2Java語(yǔ)言的發(fā)展歷史2005年6月,JavaOne大會(huì)召開(kāi),Sun公司公開(kāi)JavaSE6。此時(shí),Java的各種版本已經(jīng)更名,以取消其中的數(shù)字“2”:J2ME更名為JavaME,J2SE更名為JavaSE,J2EE更名為JavaEE。一5.1Java語(yǔ)言5.1.2Java語(yǔ)言的發(fā)展歷史2006年11月,Java技術(shù)的發(fā)明者Sun公司宣布,將Java技術(shù)作為免費(fèi)軟件對(duì)外發(fā)布,Sun公司正式發(fā)布有關(guān)Java平臺(tái)標(biāo)準(zhǔn)版的第一批源代碼,以及Java迷你版的可執(zhí)行源代碼。從2007年3月起,全世界所有的開(kāi)發(fā)人員均可對(duì)Java源代碼進(jìn)行修改。2009年,甲骨文公司宣布收購(gòu)Sun公司。此后,甲骨文公司于2014年發(fā)布了Java8,于2017年發(fā)布了Java9等版本,到寫作本文的2022年3月,最新版本為Java18。一5.1Java語(yǔ)言5.1.3Java語(yǔ)言的特點(diǎn)Java程序的運(yùn)行依賴于一個(gè)解釋程序執(zhí)行,即Java虛擬機(jī)(JavaVirtualMachine,JVM)。執(zhí)行Java程序的流程是:首先將Java源文件編譯成字節(jié)碼,字節(jié)碼類似于CPU執(zhí)行的指令,不過(guò)它不對(duì)應(yīng)于任何真實(shí)的CPU指令集;字節(jié)碼再經(jīng)由Java虛擬機(jī)(JVM)轉(zhuǎn)譯為特定平臺(tái)的指令,如x86的64位平臺(tái)的CPU指令。一5.1Java語(yǔ)言5.1.3Java語(yǔ)言的特點(diǎn)這樣的執(zhí)行方式固然會(huì)有一些性能上的損失,但是帶來(lái)的好處是Java程序不再受限于軟硬件平臺(tái),能夠通過(guò)JVM去適配不同的運(yùn)行環(huán)境。而且現(xiàn)在JVM支持JIT(JustInTimeCompile,即時(shí)編譯)技術(shù),能讓Java程序接近C/C++程序的運(yùn)行效率,滿足需要高性能的應(yīng)用場(chǎng)景。一5.1Java語(yǔ)言5.1.3Java語(yǔ)言的特點(diǎn)Java語(yǔ)言依托于Java虛擬機(jī),將內(nèi)存管理完全從軟件開(kāi)發(fā)人員手中接管過(guò)來(lái),讓開(kāi)發(fā)人員根據(jù)需要使用內(nèi)存,而不必關(guān)心如何管理內(nèi)存,極大地減輕了軟件開(kāi)發(fā)的難度,也減少了內(nèi)存管理出錯(cuò)的問(wèn)題。這一機(jī)制就是Java語(yǔ)言的垃圾回收(GarbageCollection,GC)機(jī)制。為了能夠高效地管理內(nèi)存,Java虛擬機(jī)采用多種不同的算法,如引用計(jì)算、標(biāo)記-清除算法、復(fù)制算法、標(biāo)記-整理算法等,為不同的內(nèi)存使用場(chǎng)景提供高效的管理方式。相對(duì)來(lái)說(shuō),使用GC機(jī)制的Java程序比C/C++程序占用更多的內(nèi)存。但是,Java程序減少了內(nèi)存出錯(cuò)的情況,因?yàn)槌绦虻姆€(wěn)定性由Java語(yǔ)言和Java虛擬機(jī)提供保證,而非由開(kāi)發(fā)人員的經(jīng)驗(yàn)提供保證,這也是很多大型商業(yè)軟件使用Java語(yǔ)言開(kāi)發(fā)的原因。一5.1Java語(yǔ)言5.1.4Java環(huán)境配置首先需要從甲骨文公司的官網(wǎng)上下載最新的JDK安裝包。當(dāng)前JDK的最新版本為JDK18。一5.1Java語(yǔ)言5.1.4Java環(huán)境配置在Windows11的任務(wù)欄搜索框中輸入“編輯系統(tǒng)環(huán)境變量”,按下Enter鍵后會(huì)自動(dòng)打開(kāi)“系統(tǒng)屬性”對(duì)話框,在“高級(jí)”選項(xiàng)卡中單擊右下角的“環(huán)境變量…”按鈕,會(huì)打開(kāi)“環(huán)境變量”對(duì)話框。在“環(huán)境變量”對(duì)話框中有上下兩個(gè)“新建…”按鈕,可以根據(jù)需要選擇是創(chuàng)建用戶變量還是創(chuàng)建系統(tǒng)變量。一5.1Java語(yǔ)言5.1.4Java環(huán)境配置在選擇變量類型后,新建環(huán)境變量JAVA_HOME,變量值為JDK的安裝路徑。一5.1Java語(yǔ)言5.1.4Java環(huán)境配置需要使用命令創(chuàng)建對(duì)應(yīng)的JRE,如下圖所示。以管理員身份運(yùn)行“CMD”(命令行窗口)。在命令行中執(zhí)行如下命令:cd“C:\programfiies\Java\jdk-18.0.1”.\bin\jlink--module-pathjmods--add-modulesjava.desktop--outputjre一5.1Java語(yǔ)言5.1.4Java環(huán)境配置命令執(zhí)行完成后,會(huì)在安裝目錄下創(chuàng)建jre目錄。配置環(huán)境變量JRE_HOME,如圖所示,變量值為剛才創(chuàng)建的JRE的路徑。一5.1Java語(yǔ)言5.1.4Java環(huán)境配置配置環(huán)境變量CLASSPATH,如圖所示,變量值為“%JRE_HOME%\lib”。一5.1Java語(yǔ)言5.1.4Java環(huán)境配置最后將JDK的bin目錄及JRE的bin目錄加入環(huán)境變量PATH中,如圖所示,值分別是“%JAVA_HOME%\bin”和“%JRE_HOME%\bin”。一5.1Java語(yǔ)言5.1.4Java環(huán)境配置從IntelliJIDEA官網(wǎng)上下載安裝程序,IntelliJIDEA官網(wǎng)的主頁(yè)如圖所示。一5.1Java語(yǔ)言5.1.4Java環(huán)境配置安裝完成后,啟動(dòng)IntelliJIDEA,并創(chuàng)建新項(xiàng)目。設(shè)置項(xiàng)目名稱、項(xiàng)目保存路徑、語(yǔ)言、JDK版本等。在“Name”文本框中輸入“HelloWorld”,然后選擇項(xiàng)目保存路徑,其他選項(xiàng)保持默認(rèn)設(shè)置即可,如圖所示。一5.1Java語(yǔ)言5.1.4Java環(huán)境配置創(chuàng)建項(xiàng)目后,會(huì)顯示IntelliJIDEA的主界面,如圖所示。一5.1Java語(yǔ)言5.1.5Java代碼展示下邊的代碼展示了使用Java語(yǔ)言編寫統(tǒng)計(jì)字符與數(shù)字的程序:一5.1Java語(yǔ)言importjava.util.Scanner;publicclassAlphabet{
publicstaticvoidmain(String[]args){ System.out.println("請(qǐng)?jiān)谙旅孑敵鲎帜富驍?shù)字:"); Scanners=newScanner(System.in); Stringstr=s.nextLine(); char[]ch=str.toCharArray();
intshuzi=0,zimu=0;
for(inti=0;i<ch.length;i++){
if(ch[i]>='0'&&ch[i]<='9'){ shuzi++; }
elseif(ch[i]>='a'&&ch[i]<='z'||ch[i]>='A'&&ch[i]<='Z'){ zimu++; } } System.out.println("字母有:"+zimu+"個(gè)"); System.out.println("數(shù)字有:"+shuzi+"個(gè)"); }}一5.2C語(yǔ)言5.2C語(yǔ)言5.2.1C語(yǔ)言簡(jiǎn)介5.2.2C語(yǔ)言的發(fā)展歷史5.2.3C語(yǔ)言的特點(diǎn)5.2.4C環(huán)境配置5.2.5C代碼展示一5.2C語(yǔ)言5.2.1C語(yǔ)言介紹C語(yǔ)言于1973年被正式發(fā)布,正趕上20世紀(jì)70、80年代計(jì)算機(jī)技術(shù)的飛速發(fā)展時(shí)期,得益于自身面向過(guò)程、靈活訪問(wèn)硬件的特點(diǎn),C語(yǔ)言迅速占領(lǐng)了系統(tǒng)軟件開(kāi)發(fā)領(lǐng)域,并影響了此后數(shù)十年間產(chǎn)生的各種編程語(yǔ)言。C++、Java、C#、JavaScript、PHP、D、Go等編程語(yǔ)言都受到了C語(yǔ)言的影響,這一大類語(yǔ)法相近的語(yǔ)言被稱為“Clike”語(yǔ)言。一5.2C語(yǔ)言5.2.1C語(yǔ)言介紹現(xiàn)在,雖然C語(yǔ)言不再像以前一樣在軟件開(kāi)發(fā)領(lǐng)域占據(jù)著統(tǒng)治地位,顯得不那么耀眼,但是在需要高性能軟件系統(tǒng)的領(lǐng)域,C語(yǔ)言仍然是首選的開(kāi)發(fā)語(yǔ)言。而且在如今的軟件產(chǎn)業(yè)中,大量基礎(chǔ)軟件都是由C語(yǔ)言開(kāi)發(fā)的,這些軟件在服務(wù)器、智能設(shè)備、電子設(shè)備上及我們不會(huì)注意到的幕后默默地運(yùn)行著,支撐著現(xiàn)代信息社會(huì)的運(yùn)轉(zhuǎn)。可以說(shuō),C語(yǔ)言是現(xiàn)代軟件產(chǎn)業(yè)的基石。一5.2C語(yǔ)言5.2.1C語(yǔ)言介紹(1)華為鴻蒙操作系統(tǒng)、UNIX操作系統(tǒng)、Linux操作系統(tǒng)、蘋果macOS操作系統(tǒng)等操作系統(tǒng),這些操作系統(tǒng)可以為各類計(jì)算機(jī)系統(tǒng)管理硬件資源、支持程序運(yùn)行。操作系統(tǒng)作為特殊的軟件,需要極高的運(yùn)行效率及管理計(jì)算機(jī)硬件的能力,而編寫操作系統(tǒng)就是C語(yǔ)言被設(shè)計(jì)的目的之一,因此,在操作系統(tǒng)開(kāi)發(fā)領(lǐng)域,C語(yǔ)言占據(jù)著統(tǒng)治地位。(2)各種編程語(yǔ)言的編譯器、虛擬機(jī)、解釋器等都是由C語(yǔ)言開(kāi)發(fā)的。例如,Python語(yǔ)言的解釋程序就是由C語(yǔ)言開(kāi)發(fā)的,并且解釋程序的C語(yǔ)言源代碼全部開(kāi)源,任何人都可以將Python解釋程序整合到自己的軟件中,同時(shí),任何人都可以使用C語(yǔ)言為Python語(yǔ)言開(kāi)發(fā)新的功能;Java語(yǔ)言的編譯器與Java虛擬機(jī)(JVM)都是由C語(yǔ)言開(kāi)發(fā)的,同樣可以使用C語(yǔ)言擴(kuò)展Java語(yǔ)言的功能;C語(yǔ)言自身的編譯器也是由C語(yǔ)言開(kāi)發(fā)的,如GCC。一5.2C語(yǔ)言5.2.1C語(yǔ)言介紹(3)MySQL、Oracle等數(shù)據(jù)庫(kù)管理系統(tǒng)的核心部分是由C語(yǔ)言開(kāi)發(fā)的。由于數(shù)據(jù)庫(kù)管理系統(tǒng)需要管理大量的數(shù)據(jù),同時(shí)對(duì)外提供高并發(fā)的服務(wù),對(duì)性能要求極高。(4)Subversion、Git等源代碼管理工具是由C語(yǔ)言開(kāi)發(fā)的,大量軟件企業(yè)使用這些工具管理自身的源代碼。(5)在互聯(lián)網(wǎng)領(lǐng)域,使用C語(yǔ)言開(kāi)發(fā)的Apache、Nginx等高性能Web服務(wù)器為全世界的網(wǎng)站提供服務(wù)。(6)在嵌入式開(kāi)發(fā)領(lǐng)域,由于硬件資源的限制,要求程序不能有過(guò)多的消耗,最好能直接訪問(wèn)各種硬件資源。因此,C語(yǔ)言成為嵌入式開(kāi)發(fā)領(lǐng)域的首選語(yǔ)言,其他語(yǔ)言目前還無(wú)法撼動(dòng)其地位。例如,各種小型電子設(shè)備的軟件、小型家用路由器、車載電子控制單元(ECU)等都是由C語(yǔ)言開(kāi)發(fā)的。隨著物聯(lián)網(wǎng)、智能汽車等新興電子設(shè)備的興起,C語(yǔ)言在嵌入式領(lǐng)域?qū)l(fā)揮更大的作用。一5.2C語(yǔ)言5.2.1C語(yǔ)言介紹(7)C語(yǔ)言也可以使用GNOME/Gtk+開(kāi)發(fā)桌面應(yīng)用程序,如Linux系統(tǒng)的Ubuntu發(fā)行版桌面環(huán)境就是C語(yǔ)言使用GNOME/Gtk+開(kāi)發(fā)的,有著不輸于Windows、macOS系統(tǒng)的美觀界面。(8)機(jī)器學(xué)習(xí)領(lǐng)域的TensorFlow框架,其核心部分就是由C語(yǔ)言開(kāi)發(fā)的,該框架在大數(shù)據(jù)、人工智能、自動(dòng)駕駛等領(lǐng)域被大量使用。一5.2C語(yǔ)言5.2.2C語(yǔ)言的發(fā)展歷史1970年,肯尼斯·藍(lán)·湯普森和丹尼斯·里奇在貝爾實(shí)驗(yàn)室參與UNIX操作系統(tǒng)的開(kāi)發(fā)。隨著UNIX操作系統(tǒng)的成功,貝爾實(shí)驗(yàn)室考慮將操作系統(tǒng)從PDP-7電腦移植到其他類型的電腦上,由于匯編語(yǔ)言不具備跨平臺(tái)的能力,因此UNIX開(kāi)發(fā)團(tuán)隊(duì)決定使用BCPL語(yǔ)言重寫操作系統(tǒng)。在開(kāi)發(fā)過(guò)程中,肯尼斯·藍(lán)·湯普森發(fā)現(xiàn)BCPL語(yǔ)言不能很好地滿足操作系統(tǒng)的開(kāi)發(fā),就在BCPL語(yǔ)言的基礎(chǔ)上設(shè)計(jì)了一種新的編程語(yǔ)言,這種語(yǔ)言被命名為“B語(yǔ)言”(取“BCPL”語(yǔ)言的第一個(gè)字母)。一5.2C語(yǔ)言5.2.2C語(yǔ)言的發(fā)展歷史后來(lái),在使用B語(yǔ)言開(kāi)發(fā)UNIX操作系統(tǒng)的過(guò)程中,發(fā)現(xiàn)還是無(wú)法達(dá)到他們的預(yù)期要求,于是丹尼斯·里奇在B語(yǔ)言的基礎(chǔ)上做了進(jìn)一步的改進(jìn),設(shè)計(jì)出了具有豐富的數(shù)據(jù)類型并支持大量運(yùn)算符的編程語(yǔ)言。為了支持在不同計(jì)算機(jī)系統(tǒng)中移植,新語(yǔ)言支持“一次編寫,隨處編譯”。1973年初,新語(yǔ)言的主體完成,改進(jìn)后的語(yǔ)言較B語(yǔ)言有質(zhì)的飛躍,這種語(yǔ)言被命名為C語(yǔ)言(取“BCPL”的第二個(gè)字母)。隨后,湯普森和里奇使用C語(yǔ)言成功重新編寫了UNIX操作系統(tǒng)。一5.2C語(yǔ)言5.2.2C語(yǔ)言的發(fā)展歷史20世紀(jì)70、80年代,C語(yǔ)言被廣泛應(yīng)用,從大型主機(jī)到小型微機(jī),也衍生了C語(yǔ)言的很多不同版本。1989年,ANSI發(fā)布了第一個(gè)完整的C語(yǔ)言標(biāo)準(zhǔn)——ANSIX3.159-1989,簡(jiǎn)稱“C89”。1999年,在做了一些必要的修正和完善后,ISO發(fā)布了新的C語(yǔ)言標(biāo)準(zhǔn),命名為ISO/IEC9899:1999,簡(jiǎn)稱“C99”。2011年12月8日,ISO又正式發(fā)布了新的標(biāo)準(zhǔn),稱為ISO/IEC9899:2011,簡(jiǎn)稱為“C11”。一5.2C語(yǔ)言5.2.3C語(yǔ)言的特點(diǎn)由于產(chǎn)生的時(shí)代及明確的目標(biāo),讓C語(yǔ)言具有小巧、精悍的特點(diǎn)。第一點(diǎn),C語(yǔ)言足夠高級(jí)。C語(yǔ)言不和任何特定的計(jì)算機(jī)硬件綁定,這讓它可以適應(yīng)不同的硬件。C語(yǔ)言有豐富的內(nèi)置數(shù)據(jù)類型,如整型(short、int、long)、浮點(diǎn)型(float、double)、字符型(char)等。除了這些內(nèi)置數(shù)據(jù)類型,還可以通過(guò)數(shù)組類型、枚舉類型(enum)、共用體類型(union)、結(jié)構(gòu)體類型(struct)來(lái)定義復(fù)合類型,使得C語(yǔ)言具有強(qiáng)大的數(shù)據(jù)描述能力。C語(yǔ)言中包含大量的運(yùn)算符,遠(yuǎn)多于同時(shí)代的其他編程語(yǔ)言。C語(yǔ)言語(yǔ)法靈活多變,支持不同類型數(shù)據(jù)之間的自動(dòng)轉(zhuǎn)換。一5.2C語(yǔ)言5.2.3C語(yǔ)言的特點(diǎn)第二點(diǎn),C語(yǔ)言足夠精簡(jiǎn)。C語(yǔ)言的所有功能由32個(gè)關(guān)鍵字(C89標(biāo)準(zhǔn)32個(gè)、C99標(biāo)準(zhǔn)37個(gè)、C11標(biāo)準(zhǔn)44個(gè))、34個(gè)運(yùn)算符實(shí)現(xiàn),這讓C語(yǔ)言本身非常的簡(jiǎn)練。另外,20世紀(jì)70年代C語(yǔ)言被發(fā)布時(shí),面向?qū)ο蟮木幊趟枷脒€沒(méi)有大規(guī)模流行,C語(yǔ)言面向過(guò)程的編程思想足夠滿足當(dāng)時(shí)軟件項(xiàng)目的需求,這也讓C語(yǔ)言保持簡(jiǎn)潔的語(yǔ)法及易學(xué)易用的特點(diǎn)。一5.2C語(yǔ)言5.2.3C語(yǔ)言的特點(diǎn)第三點(diǎn),C語(yǔ)言足夠底層。為了適應(yīng)系統(tǒng)編程的需要,C語(yǔ)言保留指針的概念,讓程序員能夠自由地訪問(wèn)內(nèi)存,而其他高級(jí)語(yǔ)言為了安全性和穩(wěn)定性往往會(huì)隱藏內(nèi)存操作。除了能夠進(jìn)行內(nèi)存操作,C語(yǔ)言還能夠?qū)ψ兞康拇鎯?chǔ)類型進(jìn)行設(shè)置,如將變量設(shè)置為寄存器類型(register)變量,這樣就有更快的存取速度。在必要時(shí),甚至可以在C語(yǔ)言的源代碼中嵌入?yún)R編語(yǔ)言,實(shí)現(xiàn)更高的執(zhí)行效率。一5.2C語(yǔ)言5.2.4C環(huán)境配置C語(yǔ)言的開(kāi)發(fā)環(huán)境有很多,微軟的VisualStudio系列集成開(kāi)發(fā)環(huán)境、JetBrains的CLion集成開(kāi)發(fā)環(huán)境、Dev-C++集成開(kāi)發(fā)環(huán)境、C-Free集成開(kāi)發(fā)環(huán)境,嵌入式開(kāi)發(fā)領(lǐng)域有KeilC51、AVRGCC、ADS等。這里以Windows平臺(tái)下的Dev-C++集成開(kāi)發(fā)環(huán)境為例配置C語(yǔ)言開(kāi)發(fā)環(huán)境。一5.2C語(yǔ)言5.2.4C環(huán)境配置Dev-C++原是由Bloodshed公司開(kāi)發(fā)的,后被Embarcadero公司收購(gòu),更名為EmbarcaderoDev-C++,可以從Embarcadero官網(wǎng)或GitHub上下載,下載頁(yè)面如圖所示。一5.2C語(yǔ)言5.2.4C環(huán)境配置安裝完成后,桌面上會(huì)出現(xiàn)DevC++的圖標(biāo),雙擊DevC++的圖標(biāo)即可運(yùn)行集成開(kāi)發(fā)環(huán)境。在第一次啟動(dòng)DevC++時(shí)會(huì)要求進(jìn)行一些設(shè)置。一5.2C語(yǔ)言5.2.4C環(huán)境配置設(shè)置完成后就可以開(kāi)始使用了。在菜單欄中選擇“文件”->“新建”->“項(xiàng)目”命令,新建C語(yǔ)言項(xiàng)目,如圖所示。一5.2C語(yǔ)言5.2.5C代碼展示右邊的代碼展示了如何使用C語(yǔ)言代碼找到水仙花數(shù)。水仙花數(shù)是一個(gè)三位數(shù)整數(shù),這個(gè)數(shù)中每一位上數(shù)三次方的和等于其自身。一5.2C語(yǔ)言#include<stdio.h>//計(jì)算num的三次方intcube(intnum){ returnnum*num*num;}//判斷num是否為水仙花數(shù)intisNarcissistic(intnum){ inth=num/100; //取得百分位上的數(shù) intt=(num/10)%10; //取得十分位上的數(shù) into=num%10; //取得個(gè)位上的數(shù) //3個(gè)數(shù)三次方的和是否等于自身 return(cube(h)+cube(t)+cube(o))==num;}
//在主函數(shù)中利用循環(huán)尋找水仙花數(shù)intmain(intargc,char*argv[]){ //利用循環(huán)從100開(kāi)始遍歷所有的三位數(shù) intnum; for(num=100;num<1000;++num){ //利用isNarcissistic函數(shù)判斷num是否為水仙花數(shù) if(isNarcissistic(num)){ //如果num是水仙花數(shù),則將num打印出來(lái) printf("%d**3+%d**3+%d**3=%d\n",num/100,num/10%10,num%10,num); } } return0;}一5.3C++語(yǔ)言5.3C++語(yǔ)言5.3.1C++語(yǔ)言簡(jiǎn)介5.3.2C++語(yǔ)言的發(fā)展歷史5.3.3C++語(yǔ)言的特點(diǎn)5.3.4C++環(huán)境配置5.3.5C++代碼展示一5.3C++語(yǔ)言5.3.1C++語(yǔ)言介紹20世紀(jì)70年代C語(yǔ)言被發(fā)布后,編程思想繼續(xù)在發(fā)展,由結(jié)構(gòu)化編程發(fā)展到面向?qū)ο缶幊?。尤其是?0世紀(jì)80年代“個(gè)人計(jì)算機(jī)”概念興起,為了能讓非專業(yè)人員方便地使用計(jì)算機(jī),需要簡(jiǎn)化計(jì)算機(jī)的操作方式,而原有的命令方式就顯得復(fù)雜難用了,直觀的圖形化用戶界面成為新的趨勢(shì)。圖形化界面軟件的規(guī)模和復(fù)雜性相較于以前的命令行程序大大增加,隨著軟件項(xiàng)目變得越來(lái)越大,C語(yǔ)言這類面向過(guò)程的開(kāi)發(fā)語(yǔ)言在新形勢(shì)下就顯得力不從心了。為了解決這個(gè)問(wèn)題,面向?qū)ο缶幊叹土餍衅饋?lái),更能適應(yīng)大型軟件項(xiàng)目中復(fù)雜的業(yè)務(wù)邏輯。一5.3C++語(yǔ)言5.3.1C++語(yǔ)言介紹C++語(yǔ)言適合開(kāi)發(fā)對(duì)運(yùn)行效率敏感、功能復(fù)雜的應(yīng)用程序。由C++語(yǔ)言開(kāi)發(fā)或核心功能由C++語(yǔ)言開(kāi)發(fā)并被大量使用的軟件列舉如下。(1)辦公類軟件,如金山公司的WPS系列軟件、微軟公司的Office系列軟件、OpenOffice系列軟件等。辦公類軟件功能復(fù)雜,對(duì)運(yùn)行效率要求較高,這類軟件多數(shù)是使用C++語(yǔ)言開(kāi)發(fā)的。(2)互聯(lián)網(wǎng)瀏覽器,如谷歌公司的Chrome、Mozilla基金會(huì)的Firefox、微軟公司的Edge等。隨著互聯(lián)網(wǎng)的發(fā)展,為了能展示越來(lái)越豐富的互聯(lián)網(wǎng)內(nèi)容,瀏覽器的功能變得越來(lái)越強(qiáng)大,對(duì)瀏覽器運(yùn)行效率的要求也越來(lái)越高,此類應(yīng)用主要使用C++語(yǔ)言開(kāi)發(fā)。一5.3C++語(yǔ)言5.3.1C++語(yǔ)言介紹(3)電子娛樂(lè)游戲類軟件,如雅基軟件的Cocos2d-x游戲引擎、EpicGames公司的游戲引擎——虛幻引擎4等。游戲引擎是用于開(kāi)發(fā)游戲的工具集,Cocos2d-x主要應(yīng)用于智能設(shè)備上,虛幻引擎4主要用于開(kāi)發(fā)一些商業(yè)游戲。有一些游戲直接使用C++語(yǔ)言作為開(kāi)發(fā)語(yǔ)言,如《英雄聯(lián)盟》、《星際爭(zhēng)霸2》等。在網(wǎng)絡(luò)游戲中,也常用C++語(yǔ)言開(kāi)發(fā)游戲服務(wù)器,用于處理游戲邏輯。(4)計(jì)算機(jī)輔助設(shè)計(jì)類軟件,如AutoCAD、SolidWorks、UG、SolidEdge等,這類軟件也主要由C++語(yǔ)言開(kāi)發(fā)。一5.3C++語(yǔ)言5.3.1C++語(yǔ)言介紹(5)阿里巴巴公司的國(guó)產(chǎn)企業(yè)級(jí)分布式關(guān)系數(shù)據(jù)庫(kù)OceanBase是使用C++語(yǔ)言開(kāi)發(fā)的,微軟SQLServer、IBMDB2等數(shù)據(jù)庫(kù)也是使用C++語(yǔ)言開(kāi)發(fā)的。(6)微軟的集成開(kāi)發(fā)環(huán)境VisualStudio(VS)使用C++語(yǔ)言作為主要開(kāi)發(fā)語(yǔ)言。VS是當(dāng)前功能非常完善、運(yùn)行效率非常高的集成開(kāi)發(fā)環(huán)境、是Windows操作系統(tǒng)上主要的開(kāi)發(fā)環(huán)境,支持C、C++、C#、python、HTML+CSS+JavaScript、F#等編程語(yǔ)言進(jìn)行軟件開(kāi)發(fā)。一5.3C++語(yǔ)言5.3.2C++語(yǔ)言的發(fā)展歷史1979年,本賈尼·斯特勞斯特盧普正在AT&T貝爾實(shí)驗(yàn)室從事研究工作。當(dāng)時(shí)他接觸到一種名為Simula
67的面向?qū)ο缶幊陶Z(yǔ)言。本賈尼·斯特勞斯特盧普發(fā)現(xiàn)面向?qū)ο笏枷朐谲浖_(kāi)發(fā)上非常有用,但是因?yàn)镾imula
67語(yǔ)言的執(zhí)行效率低,其實(shí)用性不強(qiáng)。不過(guò)AT&T貝爾實(shí)驗(yàn)室正好有一款小巧、精悍的編程語(yǔ)言——C語(yǔ)言。本賈尼·斯特勞斯特盧普決定將這兩種語(yǔ)言的優(yōu)點(diǎn)結(jié)合在一起,最終推出了帶類的C語(yǔ)言(C
with
classes)。
隨著不斷地改進(jìn),帶類的C語(yǔ)言與C語(yǔ)言之間的差距越來(lái)越大,最終于1983年,該語(yǔ)言被正式命名為“C++”,成為一種新的編程語(yǔ)言。此時(shí),C++語(yǔ)言與C語(yǔ)言就逐漸不再兼容,C++語(yǔ)言中類型檢測(cè)變得嚴(yán)格,C語(yǔ)言代碼的某些寫法在C++語(yǔ)言代碼中被視為語(yǔ)法錯(cuò)誤。一5.3C++語(yǔ)言5.3.2C++語(yǔ)言的發(fā)展歷史1985年,本賈尼·斯特勞斯特盧普的C++參考手冊(cè)《TheC++ProgrammingLanguage》出版,成為C++語(yǔ)言技術(shù)規(guī)范的重要參考。同年,C++語(yǔ)言的商業(yè)版本問(wèn)世。1990年,《TheAnnotatedC++ReferenceManual》發(fā)布,同年,Borland公司的商業(yè)版TurboC++編譯器問(wèn)世。TurboC++附帶了大量函數(shù)庫(kù),這一舉措對(duì)使用C++編程語(yǔ)言進(jìn)行軟件開(kāi)發(fā)產(chǎn)生了極為深遠(yuǎn)的影響。一5.3C++語(yǔ)言5.3.2C++語(yǔ)言的發(fā)展歷史1993年,RTTI(運(yùn)行期類型識(shí)別)和namespace(名字空間)被添加到C++語(yǔ)言中。1998年,C++標(biāo)準(zhǔn)委員會(huì)發(fā)布了C++語(yǔ)言的第一個(gè)國(guó)際標(biāo)準(zhǔn)——ISO/IEC14882:1998,該標(biāo)準(zhǔn)即為C++98標(biāo)準(zhǔn),這個(gè)標(biāo)準(zhǔn)將標(biāo)準(zhǔn)模板庫(kù)(StandardTemplateLibrary,STL)也納入C++語(yǔ)言標(biāo)準(zhǔn)中。一5.3C++語(yǔ)言5.3.2C++語(yǔ)言的發(fā)展歷史2011年,推出C++11標(biāo)準(zhǔn),一些新的語(yǔ)言特性被添加到C++語(yǔ)言中,包括正則表達(dá)式、完備的隨機(jī)數(shù)生成函數(shù)庫(kù)、新的時(shí)間相關(guān)函數(shù)、原子操作支持、標(biāo)準(zhǔn)線程庫(kù)、新的for語(yǔ)法、auto關(guān)鍵字、新的容器類、更好的union支持、數(shù)組初始化列表,以及變參模板等。此后,在2014年和2017年又分別推出了C++14標(biāo)準(zhǔn)與C++17標(biāo)準(zhǔn),這兩個(gè)標(biāo)準(zhǔn)在C++11標(biāo)準(zhǔn)的基礎(chǔ)上進(jìn)行了較少的調(diào)整。2020年,發(fā)布了C++20標(biāo)準(zhǔn),C++20標(biāo)準(zhǔn)有了較大的變化,為C++語(yǔ)言添加了協(xié)程、模塊、新的操作符與關(guān)鍵字、原子智能指針、同步庫(kù)、概念與約束、范圍、指定初始化等新特性。一5.3C++語(yǔ)言5.3.3C++語(yǔ)言的特點(diǎn)C++語(yǔ)言最初被設(shè)計(jì)為C語(yǔ)言的超集,希望在保留C語(yǔ)言的所有優(yōu)點(diǎn)的前提下又有更強(qiáng)大的功能,但是C++語(yǔ)言的目標(biāo)和C語(yǔ)言的目標(biāo)終究是不一樣的,最終這兩種語(yǔ)言走向了兩個(gè)截然不同的方向。C++語(yǔ)言的第一個(gè)特點(diǎn)就是復(fù)雜。C++語(yǔ)言自發(fā)布以來(lái),經(jīng)過(guò)數(shù)十年的發(fā)展與改進(jìn),功能變得越來(lái)越強(qiáng)大,但是語(yǔ)法也變得越來(lái)越復(fù)雜,造成這一現(xiàn)象的原因是C++語(yǔ)言承載了多種不同的編程思想,面向過(guò)程、面向?qū)ο?、函?shù)式編程、泛型編程等,很多評(píng)論指出“C++不是一門編程語(yǔ)言,而是多門編程語(yǔ)言”。不像C語(yǔ)言精簡(jiǎn)靈活的語(yǔ)法,C++語(yǔ)言為了在提供更多功能的同時(shí)保持靈活性,在語(yǔ)法中不可避免地引入了很多非常細(xì)節(jié)的語(yǔ)法,讓學(xué)習(xí)、使用C++語(yǔ)言變得困難。一5.3C++語(yǔ)言5.3.3C++語(yǔ)言的特點(diǎn)與語(yǔ)法復(fù)雜對(duì)應(yīng)的是C++語(yǔ)言的強(qiáng)大。C++語(yǔ)言的強(qiáng)大體現(xiàn)在兩個(gè)方面:高效率和通用性。C++語(yǔ)言能從底層系統(tǒng)的開(kāi)發(fā)覆蓋到應(yīng)用層軟件的開(kāi)發(fā),從操作系統(tǒng)、桌面程序的開(kāi)發(fā)工作到大型分布式系統(tǒng)的開(kāi)發(fā)工作,C++語(yǔ)言都能勝任,有時(shí)甚至是唯一選擇??梢哉f(shuō),C++語(yǔ)言是一種能覆蓋所有開(kāi)發(fā)領(lǐng)域的通用開(kāi)發(fā)語(yǔ)言。不過(guò)想要發(fā)揮好C++語(yǔ)言的優(yōu)勢(shì)并不容易,由于學(xué)習(xí)、使用C++語(yǔ)言的成本較高,在一些用戶需求快速變化的領(lǐng)域,如互聯(lián)網(wǎng)領(lǐng)域、企業(yè)級(jí)應(yīng)用領(lǐng)域、科研領(lǐng)域等,C++語(yǔ)言雖然可以開(kāi)發(fā),但是并不擅長(zhǎng),在這些領(lǐng)域活躍的就是Java、C#、Python等編程語(yǔ)言了。一5.3C++語(yǔ)言5.3.4C++環(huán)境配置C++語(yǔ)言的開(kāi)發(fā)工具很多,而且和C語(yǔ)言的開(kāi)發(fā)工具有很大的重疊。這里以微軟Windows平臺(tái)下的VisualStudio為例配置C++語(yǔ)言開(kāi)發(fā)環(huán)境。一5.3C++語(yǔ)言5.3.4C++環(huán)境配置Windows平臺(tái)上VisualStudio有3個(gè)版本:Community、Professional、Enterprise,分別是免費(fèi)的社區(qū)版、專業(yè)版、企業(yè)版,如圖所示。社區(qū)版包含了所有常用的基礎(chǔ)功能,如果以學(xué)習(xí)為目的,則選擇社區(qū)版即可。一5.3C++語(yǔ)言5.3.4C++環(huán)境配置啟動(dòng)安裝后,需要選擇安裝的內(nèi)容,如圖所示。這里選擇“使用C++的桌面開(kāi)發(fā)”,也可以根據(jù)需要選擇其他內(nèi)容,如需要使用C#語(yǔ)言,則可以選擇與.Net相關(guān)的內(nèi)容。一5.3C++語(yǔ)言5.3.4C++環(huán)境配置安裝完成后,啟動(dòng)VisualStudio2022。在啟動(dòng)界面中單擊“創(chuàng)建新項(xiàng)目”按鈕,在彈出的“創(chuàng)建新項(xiàng)目”界面中語(yǔ)言選擇“C++”,平臺(tái)選擇“Windows”,項(xiàng)目類型選擇“控制臺(tái)”,項(xiàng)目模板選擇“控制臺(tái)應(yīng)用”,如圖所示。一5.3C++語(yǔ)言5.3.5C++代碼展示右邊的代碼展示了如何使用C++語(yǔ)言代碼對(duì)一百萬(wàn)個(gè)數(shù)進(jìn)行排序。排序的方法是快速排序算法??焖倥判蛩惴ǖ乃悸肥牵哼x取一個(gè)關(guān)鍵數(shù),用這個(gè)關(guān)鍵數(shù)將待排序的數(shù)據(jù)劃分成兩個(gè)區(qū)域,一個(gè)是比關(guān)鍵數(shù)小的區(qū)域,一個(gè)是比關(guān)鍵數(shù)大的區(qū)域,然后在這兩個(gè)區(qū)域中反復(fù)進(jìn)行上述操作,直到整個(gè)區(qū)域都有序?yàn)橹?。代碼如下:一5.3C++語(yǔ)言#include<iostream>#include<random>constintMAXLEN=1024*1024;//定義數(shù)組的最大長(zhǎng)度unsignedintdata[MAXLEN]={0};//定義數(shù)組typedefunsignedint(&dataArray)[MAXLEN];//定義部分排序函數(shù),將數(shù)據(jù)劃分為大于關(guān)鍵數(shù)的部分和小于關(guān)鍵數(shù)的部分,并返回排序后關(guān)鍵數(shù)的位置intsortParttion(dataArrayd,intbegin,intend,intkeyPos){std::swap(d[begin],d[keyPos]);autol=begin;auto&keyValue=d[begin];for(autoindex=begin+1;index<end;index++){if(d[index]<keyValue){l++;std::swap(d[l],d[index]);}}std::swap(d[begin],d[l]);returnl;}//定義快速排序函數(shù)voidquickSort(dataArrayd,intbegin,intend){if(begin>=end-1)return;
autokeyPos=begin;keyPos=sortParttion(d,begin,end,keyPos);quickSort(d,begin,keyPos);quickSort(d,keyPos+1,end);}intmain(){std::default_random_enginee;for(autoi=0;i<MAXLEN;i++)data[i]=e();quickSort(data,0,MAXLEN);}一5.4C#語(yǔ)言5.4C#語(yǔ)言5.4.1C#語(yǔ)言簡(jiǎn)介5.4.2C#語(yǔ)言的發(fā)展歷史5.4.3C#語(yǔ)言的特點(diǎn)5.4.4C#環(huán)境配置5.4.5C#代碼展示(略)一5.4C#語(yǔ)言5.4.1C#語(yǔ)言介紹C#語(yǔ)言是微軟公司發(fā)布的一種由C++語(yǔ)言衍生出來(lái)的面向?qū)ο蟮木幊陶Z(yǔ)言,該語(yǔ)言是運(yùn)行于.NET平臺(tái)之上的高級(jí)程序設(shè)計(jì)語(yǔ)言之一。因?yàn)檫@種繼承關(guān)系,C#語(yǔ)言與C/C++語(yǔ)言具有極大的相似性,熟悉類似語(yǔ)言的開(kāi)發(fā)者可以很快地轉(zhuǎn)向C#語(yǔ)言。C#語(yǔ)言與Java語(yǔ)言有著相近的定位,并且都是大量借鑒了C++語(yǔ)言的語(yǔ)法,以至于它們看起來(lái)非常相似,如兩種語(yǔ)言都包括了諸如純面向?qū)ο蟆我焕^承、接口等。此外,C#程序的運(yùn)行方式與Java程序的運(yùn)行方式一樣,由一個(gè)被稱為公共語(yǔ)言運(yùn)行時(shí)(CommonLanguageRuntime,CLR)的虛擬機(jī)執(zhí)行。一5.4C#語(yǔ)言5.4.1C#語(yǔ)言介紹由C#語(yǔ)言開(kāi)發(fā)并被大量使用的軟件列舉如下。(1)微軟開(kāi)發(fā)者網(wǎng)絡(luò)(MicrosoftDeveloperNetwork,MSDN)是微軟官方關(guān)于Windows平臺(tái)的開(kāi)發(fā)者社區(qū),這個(gè)站點(diǎn)上包含了微軟全部的技術(shù)文檔,以及大量開(kāi)發(fā)者在其上討論的各類開(kāi)發(fā)問(wèn)題。MSDN的后臺(tái)Web服務(wù)器端是由C#語(yǔ)言開(kāi)發(fā)的,類似的還有StackOverflow等。(2)微軟SQLServer數(shù)據(jù)庫(kù)產(chǎn)品中的大部分程序是由C#語(yǔ)言開(kāi)發(fā)的,如SQLServerManagementStudio等。(3)微軟基于云計(jì)算的操作系統(tǒng)MicrosoftAzure主要是由C#語(yǔ)言開(kāi)發(fā)的。一5.4C#語(yǔ)言5.4.1C#語(yǔ)言介紹(4)微軟XBOX游戲機(jī)中的操作界面主要是使用C#語(yǔ)言開(kāi)發(fā)的。(5)跨平臺(tái)游戲引擎Unity3D使用C#語(yǔ)言作為開(kāi)發(fā)語(yǔ)言,配合使用開(kāi)源.Net平臺(tái)“mono”實(shí)現(xiàn)了跨平臺(tái)游戲開(kāi)發(fā)能力,可以開(kāi)發(fā)Windows平臺(tái)、Android平臺(tái)、微軟Xbox、索尼PlayStation、任天堂Switch等平臺(tái)游戲。一5.4C#語(yǔ)言5.4.2C#語(yǔ)言的發(fā)展歷史2000年,由微軟公司的安德斯·海爾斯伯格(AndersHejlsberg)主持開(kāi)發(fā)的C#語(yǔ)言發(fā)布,它是一種面向?qū)ο蟮木幊陶Z(yǔ)言,其借鑒了C++語(yǔ)言和Java語(yǔ)言的語(yǔ)法特點(diǎn)。2001年,微軟發(fā)布第一個(gè).NETFramework。2003年,.NETFramework的版本升級(jí)到v1.1,完善了桌面應(yīng)用開(kāi)發(fā)和Web開(kāi)發(fā)。2006年,微軟相繼推出了2.0和3.0版本的.NETFramework。在3.0版本中,微軟推出了WPC、WCF、WF等框架。隨著3.0版本的問(wèn)世,C#語(yǔ)言進(jìn)入發(fā)展的快車道,微軟借此占領(lǐng)了開(kāi)發(fā)市場(chǎng)半壁江山。一5.4C#語(yǔ)言5.4.2C#語(yǔ)言的發(fā)展歷史2009年,微軟發(fā)布Web框架ASP.NETMVC1.0并完全開(kāi)源,并在隨后幾年不斷完善,成為.Net平臺(tái)主要的Web開(kāi)發(fā)框架。2016年,微軟開(kāi)啟跨平臺(tái)產(chǎn)品線.NETCore,并完全開(kāi)源。同年,微軟正式推出.NETCore1.0,在Web領(lǐng)域推出了跨平臺(tái)Web框架ASP.NETCore,以及開(kāi)發(fā)Win10應(yīng)用的UWP框架。2017年,.NETCore2.0發(fā)布,傳統(tǒng)的.NETFramework的版本升級(jí)到4.7。2019年,.NETCore3.0發(fā)布,.NETFramework的版本升級(jí)到4.8,這也是.NETFramework的最后一個(gè)版本。2020年,微軟關(guān)閉了.NETFramework產(chǎn)品線,并將.NETCore產(chǎn)品線更名為.NET。為了和原來(lái)的.NETFramework4.x進(jìn)行區(qū)分,新.NET產(chǎn)品線直接從版本號(hào)5開(kāi)始,即.NET5.0。一5.4C#語(yǔ)言5.4.3C#語(yǔ)言的特點(diǎn)C#語(yǔ)言被設(shè)計(jì)為一種安全的、穩(wěn)定的、簡(jiǎn)單的面向?qū)ο缶幊陶Z(yǔ)言。在設(shè)計(jì)時(shí),C#語(yǔ)言借鑒了C++語(yǔ)言與Java語(yǔ)言的特點(diǎn),但是去掉了其中一些復(fù)雜的語(yǔ)法特性,使得使用C#語(yǔ)言能夠高效地編寫程序。C#程序的運(yùn)行方式類似于Java程序的運(yùn)行方式,先將C#程序的源代碼編譯為被稱為中間公共語(yǔ)言(CommonIntermediateLanguage,CIL)的代碼,再被稱為CLR的虛擬機(jī)執(zhí)行。CLR內(nèi)建垃圾收集器,當(dāng)對(duì)象的生命周期結(jié)束時(shí),垃圾收集器負(fù)責(zé)收回不被使用的對(duì)象占用的內(nèi)存空間。在使用C#語(yǔ)言時(shí),不必考慮復(fù)雜的內(nèi)存管理,也不必?fù)?dān)心指針操作帶來(lái)的危險(xiǎn),這讓使用C#語(yǔ)言變得安全、簡(jiǎn)單。一5.4C#語(yǔ)言5.4.3C#語(yǔ)言的特點(diǎn)C#語(yǔ)言是完全的面向?qū)ο缶幊陶Z(yǔ)言,支持面向?qū)ο笳Z(yǔ)言的基本特征,即封裝、繼承、多態(tài)。同時(shí),C#語(yǔ)言簡(jiǎn)化了設(shè)計(jì),如C#語(yǔ)言不支持多重繼承,減少了開(kāi)發(fā)時(shí)的復(fù)雜度,讓程序結(jié)構(gòu)變得簡(jiǎn)潔明了,也降低了使用C#語(yǔ)言的成本。一5.4C#語(yǔ)言5.4.4C#環(huán)境配置C#語(yǔ)言主要的開(kāi)發(fā)環(huán)境使用的是VisualStudio,其安裝過(guò)程在介紹C++語(yǔ)言時(shí)已經(jīng)展示。這里簡(jiǎn)單介紹一下安裝過(guò)程中的區(qū)別。在安裝VisualStudio的過(guò)程中,在選擇需要安裝的內(nèi)容時(shí)將“ASP.NET和Web開(kāi)發(fā)”、“使用.NET的移動(dòng)開(kāi)發(fā)”和“.NET桌面開(kāi)發(fā)”內(nèi)容選上,如圖所示。一5.4C#語(yǔ)言5.4.4C#環(huán)境配置安裝完成啟動(dòng)VisualStudio2022。在啟動(dòng)界面中單擊“創(chuàng)建新項(xiàng)目”按鈕,在彈出的“創(chuàng)建新項(xiàng)目”界面中,語(yǔ)言選擇“C#”,平臺(tái)選擇“Windows”,項(xiàng)目類型選擇“控制臺(tái)”,項(xiàng)目模板選擇“控制臺(tái)應(yīng)用(.NETFramework)”,如圖所示。。一5.4C#語(yǔ)言5.3.4C#環(huán)境配置安裝完成后,啟動(dòng)VisualStudio2022。在啟動(dòng)界面中單擊“創(chuàng)建新項(xiàng)目”按鈕,在彈出的“創(chuàng)建新項(xiàng)目”界面中語(yǔ)言選擇“C++”,平臺(tái)選擇“Windows”,項(xiàng)目類型選擇“控制臺(tái)”,項(xiàng)目模板選擇“控制臺(tái)應(yīng)用”,如圖所示。一5.4C#語(yǔ)言一5.5Python語(yǔ)言5.5Python語(yǔ)言5.5.1Python語(yǔ)言簡(jiǎn)介5.5.2Python語(yǔ)言的發(fā)展歷史5.5.3Python語(yǔ)言的特點(diǎn)5.5.4Python環(huán)境配置5.5.5Python代碼展示一5.5Python語(yǔ)言5.5.1Python語(yǔ)言介紹吉多·范羅蘇姆設(shè)計(jì)Python編程語(yǔ)言的初衷是替代名為“ABC”的編程語(yǔ)言,ABC語(yǔ)言是面向教育的強(qiáng)交互語(yǔ)言,不過(guò)最終ABC語(yǔ)言并未取得成功。作為ABC語(yǔ)言開(kāi)發(fā)者之一的吉多·范羅蘇姆,在分析了ABC語(yǔ)言失敗的原因后,開(kāi)發(fā)出了語(yǔ)法簡(jiǎn)練的Python編程語(yǔ)言。Python語(yǔ)言不是一門強(qiáng)調(diào)運(yùn)行效率的編程語(yǔ)言,所以如果開(kāi)發(fā)需要較高運(yùn)行效率的程序,那么不要選擇Python語(yǔ)言。但是,Python語(yǔ)言卻是有著非常出眾開(kāi)發(fā)效率的編程語(yǔ)言,同樣一件事情,在其他編程語(yǔ)言中需要大量的代碼,而在Python中則可能只需要寥寥幾行代碼就能完成。之所以Python語(yǔ)言有如此高的開(kāi)發(fā)效率,是因?yàn)镻ython語(yǔ)言具有種類豐富的開(kāi)發(fā)庫(kù),這些不同功能的庫(kù)往往又是由其他語(yǔ)言開(kāi)發(fā)的,如C語(yǔ)言、C++語(yǔ)言等。一5.5Python語(yǔ)言5.5.1Python語(yǔ)言介紹自發(fā)布以來(lái),Python語(yǔ)言受到了軟件開(kāi)發(fā)社區(qū)的廣泛支持,各類開(kāi)發(fā)團(tuán)體如程序員、開(kāi)源社區(qū)、大型軟件企業(yè)等,為Python語(yǔ)言貢獻(xiàn)了數(shù)量龐大的軟件開(kāi)發(fā)庫(kù)。現(xiàn)在,Python語(yǔ)言已經(jīng)在如下領(lǐng)域建立了龐大的用戶基礎(chǔ)。(1)互聯(lián)網(wǎng)Web開(kāi)發(fā)領(lǐng)域:由于互聯(lián)網(wǎng)應(yīng)用需求易變的特點(diǎn),Python語(yǔ)言作為一種動(dòng)態(tài)類型語(yǔ)言,在快速響應(yīng)需求變化上有先天的優(yōu)勢(shì),尤其以開(kāi)發(fā)迅速著稱,配合Python語(yǔ)言豐富的Web服務(wù)端框架,如Flask、Django、Tornado等,能夠快速部署Web應(yīng)用。(2)科學(xué)計(jì)算和統(tǒng)計(jì)領(lǐng)域:Python語(yǔ)言的NumPy、Pandas、SciPy、Statsmodel等庫(kù)在科學(xué)計(jì)算和統(tǒng)計(jì)領(lǐng)域應(yīng)用廣泛,配合Matplotlib繪圖庫(kù)使用,是研究領(lǐng)域常見(jiàn)的使用方式。一5.5Python語(yǔ)言5.5.1Python語(yǔ)言介紹(4)網(wǎng)絡(luò)爬蟲(chóng)領(lǐng)域:Python語(yǔ)言配合使用Requests、lxml、Scrapy、Selenium等庫(kù),能夠快速開(kāi)發(fā)各類網(wǎng)絡(luò)爬蟲(chóng)。(5)圖形用戶界面(GraphicalUserInterface,GUI)領(lǐng)域:使用PyQt、PyGTK、wxPython、Tkinter等GUI庫(kù),能夠開(kāi)發(fā)桌面應(yīng)用程序,如GIMP——一款Photoshop的開(kāi)源替代品。由于Python語(yǔ)言的解釋器是開(kāi)源軟件,因此Python解釋器也能非常方便地被集成到使用其他語(yǔ)言開(kāi)發(fā)的程序中,尤其是使用C語(yǔ)言、C++語(yǔ)言開(kāi)發(fā)的程序,通過(guò)集成Python解釋器,能讓宿主軟件獲得易于擴(kuò)展、易于修改的特點(diǎn)。一5.5Python語(yǔ)言5.5.2Python語(yǔ)言的發(fā)展歷史1991年,第一個(gè)Python語(yǔ)言解釋器誕生。它是用C語(yǔ)言實(shí)現(xiàn)的,并能夠調(diào)用C庫(kù)。從一誕生,Python語(yǔ)言已經(jīng)具有了類、函數(shù)、異常處理、包括表和詞典在內(nèi)的核心數(shù)據(jù)類型,以及以模塊(module)為基礎(chǔ)的拓展系統(tǒng)。1995年,吉多·范羅蘇姆在弗吉尼亞州的國(guó)家創(chuàng)新研究公司(CNRI)繼續(xù)他在Python上的工作,并在那里發(fā)布了該軟件的多個(gè)版本。2001年,Python軟件基金會(huì)(PSF)成立,這是一個(gè)專為擁有Python相關(guān)知識(shí)產(chǎn)權(quán)而創(chuàng)建的非營(yíng)利組織。一5.5Python語(yǔ)言5.5.2Python語(yǔ)言的發(fā)展歷史2000年,Python2發(fā)布,目前穩(wěn)定版本是Python2.7。同年發(fā)布Jython,Jython是使用Java語(yǔ)言編寫的Python實(shí)現(xiàn)。2006年,IronPython發(fā)布,IronPython是一個(gè)在.Net平臺(tái)運(yùn)行Python程序的項(xiàng)目。2007年,PyPy發(fā)布,PyPy是用Python語(yǔ)言實(shí)現(xiàn)的Python解釋器。2008年,Python3發(fā)布,Python3不完全兼容Python2,建議新軟件項(xiàng)目使用Python3。2021年,Python語(yǔ)言超過(guò)C語(yǔ)言,成為TIOBE排行榜上世界編程語(yǔ)言排行第一的語(yǔ)言。一5.5Python語(yǔ)言5.5.3Python語(yǔ)言的特點(diǎn)Python語(yǔ)言是基于解釋器運(yùn)行的編程語(yǔ)言,這讓Python語(yǔ)言有極強(qiáng)的可移植性。再加上Python解釋器是開(kāi)源軟件,這也讓更多的平臺(tái)能夠運(yùn)行Python程序。另外,使用C/++語(yǔ)言開(kāi)發(fā)的軟件能將Python解釋器集成到程序中,這讓集成了Python解釋器的軟件也能通過(guò)Python語(yǔ)言提高擴(kuò)展性和靈活性。Python解釋器還可以通過(guò)其他編程語(yǔ)言來(lái)擴(kuò)展Python語(yǔ)言的功能,如使用C、C++語(yǔ)言為Python開(kāi)發(fā)新的功能庫(kù)。Python種類豐富的各類庫(kù)中很多庫(kù)是由其他語(yǔ)言開(kāi)發(fā)的,如科學(xué)計(jì)算庫(kù)NumPy就是使用C語(yǔ)言開(kāi)發(fā)的。一5.5Python語(yǔ)言5.5.3Python語(yǔ)言的特點(diǎn)Python語(yǔ)言的設(shè)計(jì)原則是“優(yōu)雅”、“明確”和“簡(jiǎn)單”。為了貫徹這些原則,設(shè)計(jì)者希望Python語(yǔ)言能“用一種方法,最好是只有一種方法來(lái)做一件事”,從而讓Python語(yǔ)言的使用者能聚焦于想要做的功能,而不是過(guò)多地考慮如何去做這個(gè)功能。這讓Python語(yǔ)言具有語(yǔ)法簡(jiǎn)潔、易于學(xué)習(xí)、易于閱讀、易于使用的特點(diǎn)。Python語(yǔ)言有相對(duì)較少的關(guān)鍵字和簡(jiǎn)潔清晰的語(yǔ)法結(jié)構(gòu),學(xué)習(xí)起來(lái)更加簡(jiǎn)單。標(biāo)志性的強(qiáng)制代碼塊縮進(jìn),讓代碼結(jié)構(gòu)更為清晰美觀,便于代碼的閱讀和維護(hù)。Python語(yǔ)言作為動(dòng)態(tài)類型語(yǔ)言,在編程時(shí)不用糾結(jié)于語(yǔ)法細(xì)節(jié)(如考慮數(shù)量的類型等),而是專注于數(shù)據(jù)如何處理、如何實(shí)現(xiàn)功能。當(dāng)然這也帶來(lái)了一些問(wèn)題,在面對(duì)大型軟件項(xiàng)目時(shí),類型安全將會(huì)成為問(wèn)題,如何協(xié)調(diào)不同模塊之間的數(shù)據(jù)交互,會(huì)考驗(yàn)開(kāi)發(fā)者的設(shè)計(jì)與項(xiàng)目管理能力。一5.5Python語(yǔ)言5.5.4Python環(huán)境配置Python程序的運(yùn)行需要運(yùn)行環(huán)境支持,這里介紹Python運(yùn)行環(huán)境的安裝與配置。首先從Python的官網(wǎng)上下載官方發(fā)行版,打開(kāi)官網(wǎng)后頁(yè)面中會(huì)顯示當(dāng)前最新的Python版本,如圖所示。一5.5Python語(yǔ)言5.5.4Python環(huán)境配置啟動(dòng)安裝程序后,勾選界面下部的“AddPython3.10toPATH”復(fù)選框,如果不改變路徑,則可以直接選擇“InstallNow”,也可以選擇“Customizeinstallation”改變默認(rèn)的安裝配置,如圖所示。一5.5Python語(yǔ)言5.5.4Python環(huán)境配置安裝完成后,可以在“開(kāi)始”菜單中找到Python程序。其中,IDLE是Python運(yùn)行環(huán)境自帶的圖形化交互界面,如圖所示。一5.5Python語(yǔ)言5.5.4Python環(huán)境配置安裝運(yùn)行環(huán)境后,還需要配置開(kāi)發(fā)環(huán)境。能用于開(kāi)發(fā)Python程序的工具有很多,如微軟的VisualStudio集成開(kāi)發(fā)環(huán)境、VisualStudioCode編輯器、SublimeText編輯器、JetBrains的PyCharm集成開(kāi)發(fā)環(huán)境等。一5.5Python語(yǔ)言5.5.4Python環(huán)境配置安裝完成后,,啟動(dòng)PyCharm開(kāi)發(fā)環(huán)境。一5.5Python語(yǔ)言一5.6PHP語(yǔ)言5.6PHP語(yǔ)言5.6.1PHP語(yǔ)言簡(jiǎn)介5.6.2PHP語(yǔ)言的發(fā)展歷史5.6.3PHP語(yǔ)言的特點(diǎn)5.6.4PHP環(huán)境配置5.6.5PHP代碼展示一5.6PHP語(yǔ)言5.6.1PHP語(yǔ)言介紹PHP(超文本預(yù)處理器,PHP:HypertextPreprocessor)語(yǔ)言是開(kāi)發(fā)Web服務(wù)器端程序的編程語(yǔ)言,最初是由拉斯馬斯·勒德?tīng)柗颍≧asmusLerdorf)為自己的網(wǎng)站創(chuàng)建的一個(gè)簡(jiǎn)單腳本語(yǔ)言,后來(lái)發(fā)展成為流行的Web服務(wù)器端編程語(yǔ)言。PHP語(yǔ)言是一種免費(fèi)開(kāi)源、跨平臺(tái)、被廣泛使用的編程語(yǔ)言。一5.6PHP語(yǔ)言5.6.1PHP語(yǔ)言介紹PHP語(yǔ)言是一種Web服務(wù)器端面向?qū)ο蟮木幊陶Z(yǔ)言,它結(jié)合了C語(yǔ)言、Java語(yǔ)言和Perl語(yǔ)言的特點(diǎn),在互聯(lián)網(wǎng)領(lǐng)域被廣泛使用。PHP程序可以比CGI或Perl程序更快速地執(zhí)行動(dòng)態(tài)網(wǎng)頁(yè)。不同于其他的編程語(yǔ)言,PHP語(yǔ)言是將PHP程序嵌入HTML文檔中去執(zhí)行,執(zhí)行效率比完全由其他語(yǔ)言生成HTML標(biāo)記的方式快許多。PHP程序還可以被編譯成中間代碼,編譯后的PHP程序可以達(dá)到加密和優(yōu)化代碼運(yùn)行的目的,這樣執(zhí)行起來(lái)更快。其他用于開(kāi)發(fā)Web服務(wù)器端程序的編程語(yǔ)言所具有的功能,PHP語(yǔ)言都能實(shí)現(xiàn)。PHP語(yǔ)言具有非常強(qiáng)大的功能,能夠滿足Web服務(wù)器端程序的開(kāi)發(fā),而且支持幾乎所有流行的數(shù)據(jù)庫(kù)及操作系統(tǒng)。一5.6PHP語(yǔ)言5.6.2PHP語(yǔ)言的發(fā)展歷史PHP語(yǔ)言是在1994年由拉斯馬斯·勒德?tīng)柗騽?chuàng)建的,最初只是一個(gè)簡(jiǎn)單的用Perl語(yǔ)言編寫的統(tǒng)計(jì)他自己網(wǎng)站訪問(wèn)者數(shù)量的程序,取名為“PersonalHomePageTools”,后來(lái)用C語(yǔ)言重新編寫,同時(shí)可以訪問(wèn)數(shù)據(jù)庫(kù),可以讓用戶開(kāi)發(fā)簡(jiǎn)單的動(dòng)態(tài)Web程序。1997年,首個(gè)發(fā)行版PHP2發(fā)布,功能開(kāi)始逐漸完備,用戶量增多。1998年,AndiGutmans和ZeevSuraski在為一所大學(xué)的項(xiàng)目中開(kāi)發(fā)電子商務(wù)程序時(shí)發(fā)現(xiàn)PHP2的功能明顯不足,于是他們重寫了代碼,發(fā)布了PHP3。一5.6PHP語(yǔ)言5.6.2PHP語(yǔ)言的發(fā)展歷史2000年,PHP4發(fā)布,包含新增的Zend引擎、支持更多的Web服務(wù)器、HTTPSessions支持、輸出緩沖、更安全的處理用戶輸入的方法、一些新的語(yǔ)言結(jié)構(gòu)等功能。2004年,PHP5發(fā)布,Zend引擎升級(jí)到Zend2,引入了新的對(duì)象模型和大量新功能。2015年,PHP7發(fā)布(PHP6被取消,未發(fā)布),Zend升級(jí)到Zend3,性能提升并在Windows平臺(tái)上支持64-bit整數(shù)、統(tǒng)一的變量語(yǔ)法、基于抽象語(yǔ)法樹(shù)編譯過(guò)程。2020年,PHP8發(fā)布,新版本對(duì)各種變量判斷和運(yùn)算采用更嚴(yán)格的驗(yàn)證判斷模式,這點(diǎn)有利于后續(xù)版本對(duì)JIT的性能優(yōu)化。一5.6PHP語(yǔ)言5.6.3PHP語(yǔ)言的特點(diǎn)PHP語(yǔ)言作為Web服務(wù)器端編程語(yǔ)言,有一大優(yōu)勢(shì)就是開(kāi)源免費(fèi)。這里的“開(kāi)源免費(fèi)”不僅僅是指PHP語(yǔ)言自身,還包括一整套開(kāi)發(fā)部署工具鏈?;ヂ?lián)網(wǎng)上常見(jiàn)的PHP開(kāi)發(fā)組合包括Linux、Apache、MySQL、PHP,這四款工具簡(jiǎn)稱LAMP,并且全部是開(kāi)源免費(fèi)的,這一組合可以節(jié)約大量的授權(quán)費(fèi)用。而且這四款工具都有強(qiáng)大的開(kāi)發(fā)者社區(qū)作為支撐,持續(xù)的迭代為L(zhǎng)AMP提供新功能及維護(hù)服務(wù)。一5.6PHP語(yǔ)言5.6.3PHP語(yǔ)言的特點(diǎn)PHP語(yǔ)言的核心包含了數(shù)量超過(guò)1000的內(nèi)置函數(shù),功能全面,開(kāi)箱即用,程序代碼簡(jiǎn)潔,開(kāi)發(fā)快捷便利。PHP數(shù)組支持動(dòng)態(tài)擴(kuò)容,既支持以數(shù)字作為鍵名的索引數(shù)組,也支持以字符串或字符串與數(shù)字混合作為鍵名的關(guān)聯(lián)數(shù)組,能大幅度提高開(kāi)發(fā)效率。PHP是一門弱類型語(yǔ)言,程序編譯通過(guò)率高,相對(duì)于其他強(qiáng)類型語(yǔ)言能夠更快地開(kāi)發(fā)程序。此外,PHP語(yǔ)言解釋器由C語(yǔ)言開(kāi)發(fā),有非常高的執(zhí)行效率,還可以使用C語(yǔ)言開(kāi)發(fā)高性能的擴(kuò)展組件。PHP天然熱部署,在php-fpm運(yùn)行模式下覆蓋代碼文件即完成熱部署,無(wú)須復(fù)雜的配置和重啟Web服務(wù)的過(guò)程。一5.6PHP語(yǔ)言5.6.3PHP語(yǔ)言的特點(diǎn)隨著PHP語(yǔ)言版本的迭代,PHP程序的運(yùn)行效能顯著提高,尤其是在PHP8引入JIT技術(shù)后,性能進(jìn)一步提升。并且每次版本升級(jí)不只是帶來(lái)運(yùn)行性能的提升,還會(huì)為PHP語(yǔ)言帶來(lái)新的便捷語(yǔ)法,進(jìn)一步提升開(kāi)發(fā)效率。為了保證持續(xù)的更新,版本迭代保持每5年發(fā)布一個(gè)大版本,每個(gè)月發(fā)布兩個(gè)小版本的頻率進(jìn)行。每個(gè)平臺(tái)均有對(duì)應(yīng)的PHP解釋器版本,使用PHP語(yǔ)言開(kāi)發(fā)的程序可以不經(jīng)修改就運(yùn)行在Windows、Linux、UNIX等多個(gè)操作系統(tǒng)上。PHP語(yǔ)言中所有的變量都是頁(yè)面級(jí)的,無(wú)論是全局變量還是類的靜態(tài)成員,都會(huì)在頁(yè)面執(zhí)行完畢后被清空,這樣降低了程序開(kāi)發(fā)的難度,也能減少內(nèi)存的占用,特別適用于中小型系統(tǒng)的開(kāi)發(fā)。一5.6PHP語(yǔ)言5.6.4PHP環(huán)境配置使用PHP語(yǔ)言開(kāi)發(fā)程序需要配置開(kāi)發(fā)環(huán)境,這里建議使用XAMPP作為學(xué)習(xí)PHP語(yǔ)言的開(kāi)發(fā)環(huán)境,事實(shí)上,XAMPP也可以作為開(kāi)發(fā)PHP程序的實(shí)際工作環(huán)境。XAMPP包含Apache、MySQL、PHP、Perl這幾款工具。Apache作為Web服務(wù)器,MySQL作為數(shù)據(jù)庫(kù),還包含PHP語(yǔ)言、Perl語(yǔ)言的運(yùn)行環(huán)境。首先從XAMPP的官網(wǎng)上下載官方發(fā)行版,打開(kāi)官網(wǎng)頁(yè)面后,根據(jù)平臺(tái)選擇下載安裝程序。這里以Windows平臺(tái)為例展示安裝過(guò)程,如圖所示。一5.6PHP語(yǔ)言5.6.4PHP環(huán)境配置開(kāi)發(fā)工具可以使用SublimeText編輯器??梢詮腟ublimeText官網(wǎng)上下載安裝程序,官網(wǎng)頁(yè)面如圖所示。一5.6PHP語(yǔ)言5.6.5PHP代碼展示這里展示使用PHP語(yǔ)言開(kāi)發(fā)一個(gè)簡(jiǎn)易聊天室的服務(wù)器端程序。創(chuàng)建兩個(gè)PHP文件,分別命名為“chatServer.php”和“getChat.php”,并將這兩個(gè)文件保存到XAMPP安裝目錄的“htdocs”目錄中。一5.6PHP語(yǔ)言chatServer.php文件中的代碼如下:<?php$json=file_get_contents('php://input');$json=json_decode($json);session_id("wechat");session_start();if(!isset($_SESSION['contentList'])){ $_SESSION['contentList']="";}$_SESSION['contentList']=$_SESSION['contentList']."\n".$json->{'userName'}.":".$json->{'msg'};?>getChat.php文件中的代碼如下:<?phpsession_id("wechat");session_start();if(!isset($_SESSION['contentList'])){$_SESSION['contentList']="";}$contentList=$_SESSION['contentList'];echo$contentList;?>一5.7HTML、JavaScript、CSS語(yǔ)言5.7HTML、JavaScript、CSS語(yǔ)言5.7.1HTML、JavaScript、CSS語(yǔ)言簡(jiǎn)介5.7.2HTML、JavaScript、CSS語(yǔ)言的發(fā)展歷史5.7.3HTML、JavaScript、CSS語(yǔ)言的特點(diǎn)5.7.4HTML、JavaScript、CSS環(huán)境配置5.7.5HTML、JavaScript、CSS代碼展示一5.7HTML、JavaScript、CSS語(yǔ)言5.7.1HTML、JavaScript、CSS語(yǔ)言簡(jiǎn)介HTML的全稱是HyperTextMarkupLanguage(超文本標(biāo)記語(yǔ)言),是一種用于創(chuàng)建網(wǎng)頁(yè)的標(biāo)準(zhǔn)標(biāo)記語(yǔ)言。它包括一系列標(biāo)簽,通過(guò)這些標(biāo)簽可以將網(wǎng)絡(luò)上的文檔格式統(tǒng)一,使分散于互聯(lián)網(wǎng)上的資源連接為一個(gè)邏輯整體。HTML文本是由HTML標(biāo)簽組成的描述性文本,HTML標(biāo)簽可以說(shuō)明文字、圖形、動(dòng)畫、聲音、表格、鏈接等。HTML文檔的后綴名是.htm、.html,如果細(xì)心,我們會(huì)發(fā)現(xiàn)在日常使用瀏覽器的過(guò)程中,經(jīng)常在地址欄里邊見(jiàn)到這兩個(gè)后綴。我們?nèi)粘Uf(shuō)的“網(wǎng)頁(yè)”實(shí)際上就是由HTML標(biāo)簽構(gòu)成的。HTML標(biāo)簽給出了頁(yè)面的基礎(chǔ)結(jié)構(gòu),如頁(yè)面中包含哪些文本、圖片、視頻、鏈接內(nèi)容等,這些內(nèi)容的顯示形式可能是表格、列表、表單、按鈕、選項(xiàng),或者其他顯示形式。一5.7HTML、JavaScript、CSS語(yǔ)言5.7.1HTML、JavaScript、CSS語(yǔ)言簡(jiǎn)介HTML通過(guò)將整個(gè)頁(yè)面組織成樹(shù)形結(jié)構(gòu)來(lái)描述整個(gè)頁(yè)面的內(nèi)容之間的關(guān)系,如圖所示。一5.7HTML、JavaScript、CSS語(yǔ)言5.7.1HTML、JavaScript、CSS語(yǔ)言簡(jiǎn)介JavaScript語(yǔ)言是一種編程語(yǔ)言,它能讓頁(yè)面“動(dòng)”起來(lái),讓頁(yè)面能夠根據(jù)JavaScript程序的控制執(zhí)行相應(yīng)的功能,如頁(yè)面內(nèi)容的顯示與隱藏、向服務(wù)器提交數(shù)據(jù)、從服務(wù)器接收數(shù)據(jù)、修改頁(yè)面結(jié)構(gòu)等。當(dāng)頁(yè)面有內(nèi)容,能根據(jù)需要執(zhí)行不同業(yè)務(wù)邏輯后,還有一個(gè)重要的需求沒(méi)有滿足,那就是讓頁(yè)面美觀。承擔(dān)這一任務(wù)的就是層疊樣式表(CascadingStyleSheets,CSS)。一5.7HTML、JavaScript、CSS語(yǔ)言5.7.2HTML、JavaScript、CSS語(yǔ)言的發(fā)展歷史一5.7HTML、JavaScript、CSS語(yǔ)言HTMLJavascriptCSS1993年,互聯(lián)網(wǎng)工程工作小組(IETF)工作草案發(fā)布HTML1.0。1995年,發(fā)布HTML2.0。1997年,發(fā)布HTML3.2。1997年,發(fā)布HTML4.0。1999年,發(fā)布HTML4.01。2014年,發(fā)布HTML5.0。1992年,Nombas公司發(fā)布ScriptEase語(yǔ)言。1998年,ECMAScript2.0版發(fā)布。1999年,ECMAScript3.0版發(fā)布。2009年,ECMAScript5.0版發(fā)布。2015年,ECMAScript6.0版發(fā)布,即ECMAScript20
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025山東濟(jì)寧市東方圣地人力資源開(kāi)發(fā)有限公司招聘輔助服務(wù)人員7人備考題庫(kù)(含答案詳解)
- 2025云南玉溪貓哆哩集團(tuán)食品有限責(zé)任公司第一期招募就業(yè)見(jiàn)習(xí)人員70人備考題庫(kù)及答案詳解一套
- 2026中國(guó)支付清算協(xié)會(huì)招聘?jìng)淇碱}庫(kù)有答案詳解
- 2026四川濟(jì)廣制藥有限公司(高原明珠制藥)招聘?jìng)淇碱}庫(kù)完整參考答案詳解
- 2026北京海淀區(qū)實(shí)驗(yàn)學(xué)校招聘?jìng)淇碱}庫(kù)及一套完整答案詳解
- 2025福建廈門市集美區(qū)寧寶幼兒園非在編廚房人員招聘1人備考題庫(kù)及參考答案詳解
- 2025云南省電子競(jìng)技協(xié)會(huì)招聘?jìng)淇碱}庫(kù)及答案詳解參考
- 2025年西安市西京小學(xué)教務(wù)主任招聘?jìng)淇碱}庫(kù)完整答案詳解
- 2026北京北化化學(xué)科技有限公司招聘15人備考題庫(kù)及答案詳解(新)
- 2026國(guó)網(wǎng)江蘇省電力有限公司博士后招聘?jìng)淇碱}庫(kù)及答案詳解參考
- 智慧指揮調(diào)度中心建設(shè)方案
- DB37∕T 4126-2020 漁船安全操作規(guī)范
- 造林技術(shù)規(guī)程樣本
- 非靜脈曲張上消化道出血的內(nèi)鏡管理指南解讀課件
- 2025年國(guó)防科工局機(jī)關(guān)公開(kāi)遴選公務(wù)員筆試模擬題及答案
- 2024-2025學(xué)年山東省濟(jì)南市天橋區(qū)八年級(jí)(上)期末語(yǔ)文試卷(含答案解析)
- (高清版)DB44∕T 724-2010 《廣州市房屋安全鑒定操作技術(shù)規(guī)程》
- 2025職業(yè)健康培訓(xùn)測(cè)試題(+答案)
- 《實(shí)踐論》《矛盾論》導(dǎo)讀課件
- 老年病康復(fù)訓(xùn)練治療講課件
- DB4201-T 617-2020 武漢市架空管線容貌管理技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論