完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>
標(biāo)簽 > 編程語(yǔ)言
編程語(yǔ)言俗稱“計(jì)算機(jī)語(yǔ)言”,種類非常的多,總的來說可以分成機(jī)器語(yǔ)言、匯編語(yǔ)言、高級(jí)語(yǔ)言三大類。電腦每做的一次動(dòng)作,一個(gè)步驟,都是按照已經(jīng)用計(jì)算機(jī)語(yǔ)言編好的程序來執(zhí)行的,程序是計(jì)算機(jī)要執(zhí)行的指令的集合,而程序全部都是用我們所掌握的語(yǔ)言來編寫的。
編程語(yǔ)言(programming language),是用來定義計(jì)算機(jī)程序的形式語(yǔ)言。它是一種被標(biāo)準(zhǔn)化的交流技巧,用來向計(jì)算機(jī)發(fā)出指令。一種計(jì)算機(jī)語(yǔ)言讓程序員能夠準(zhǔn)確地定義計(jì)算機(jī)所需要使用的數(shù)據(jù),并精確地定義在不同情況下所應(yīng)當(dāng)采取的行動(dòng)。
最早的編程語(yǔ)言是在電腦發(fā)明之后產(chǎn)生的,當(dāng)時(shí)是用來控制提花織布機(jī)及自動(dòng)演奏鋼琴的動(dòng)作。在電腦領(lǐng)域已發(fā)明了上千不同的編程語(yǔ)言,而且每年仍有新的編程語(yǔ)言誕生。很多編程語(yǔ)言需要用指令方式說明計(jì)算的程序,而有些編程語(yǔ)言則屬于聲明式編程,說明需要的結(jié)果,而不說明如何計(jì)算。
編程語(yǔ)言的描述一般可以分為語(yǔ)法及語(yǔ)義。語(yǔ)法是說明編程語(yǔ)言中,哪些符號(hào)或文字的組合方式是正確的,語(yǔ)義則是對(duì)于編程的解釋。有些語(yǔ)言是用規(guī)格文件定義,例如C語(yǔ)言的規(guī)格文件也是ISO標(biāo)準(zhǔn)中一部份,2011年后的版本為ISO/IEC 9899:2011,而其他語(yǔ)言(像Perl)有一份主要的編程語(yǔ)言實(shí)現(xiàn)文件,視為是參考實(shí)現(xiàn)。
編程語(yǔ)言俗稱“計(jì)算機(jī)語(yǔ)言”,種類非常的多,總的來說可以分成機(jī)器語(yǔ)言、匯編語(yǔ)言、高級(jí)語(yǔ)言三大類。電腦每做的一次動(dòng)作,一個(gè)步驟,都是按照已經(jīng)用計(jì)算機(jī)語(yǔ)言編好的程序來執(zhí)行的,程序是計(jì)算機(jī)要執(zhí)行的指令的集合,而程序全部都是用我們所掌握的語(yǔ)言來編寫的。所以人們要控制計(jì)算機(jī)一定要通過計(jì)算機(jī)語(yǔ)言向計(jì)算機(jī)發(fā)出命令。 目前通用的編程語(yǔ)言有兩種形式:匯編語(yǔ)言和高級(jí)語(yǔ)言。
編程語(yǔ)言(programming language),是用來定義計(jì)算機(jī)程序的形式語(yǔ)言。它是一種被標(biāo)準(zhǔn)化的交流技巧,用來向計(jì)算機(jī)發(fā)出指令。一種計(jì)算機(jī)語(yǔ)言讓程序員能夠準(zhǔn)確地定義計(jì)算機(jī)所需要使用的數(shù)據(jù),并精確地定義在不同情況下所應(yīng)當(dāng)采取的行動(dòng)。
最早的編程語(yǔ)言是在電腦發(fā)明之后產(chǎn)生的,當(dāng)時(shí)是用來控制提花織布機(jī)及自動(dòng)演奏鋼琴的動(dòng)作。在電腦領(lǐng)域已發(fā)明了上千不同的編程語(yǔ)言,而且每年仍有新的編程語(yǔ)言誕生。很多編程語(yǔ)言需要用指令方式說明計(jì)算的程序,而有些編程語(yǔ)言則屬于聲明式編程,說明需要的結(jié)果,而不說明如何計(jì)算。
編程語(yǔ)言的描述一般可以分為語(yǔ)法及語(yǔ)義。語(yǔ)法是說明編程語(yǔ)言中,哪些符號(hào)或文字的組合方式是正確的,語(yǔ)義則是對(duì)于編程的解釋。有些語(yǔ)言是用規(guī)格文件定義,例如C語(yǔ)言的規(guī)格文件也是ISO標(biāo)準(zhǔn)中一部份,2011年后的版本為ISO/IEC 9899:2011,而其他語(yǔ)言(像Perl)有一份主要的編程語(yǔ)言實(shí)現(xiàn)文件,視為是參考實(shí)現(xiàn)。
編程語(yǔ)言俗稱“計(jì)算機(jī)語(yǔ)言”,種類非常的多,總的來說可以分成機(jī)器語(yǔ)言、匯編語(yǔ)言、高級(jí)語(yǔ)言三大類。電腦每做的一次動(dòng)作,一個(gè)步驟,都是按照已經(jīng)用計(jì)算機(jī)語(yǔ)言編好的程序來執(zhí)行的,程序是計(jì)算機(jī)要執(zhí)行的指令的集合,而程序全部都是用我們所掌握的語(yǔ)言來編寫的。所以人們要控制計(jì)算機(jī)一定要通過計(jì)算機(jī)語(yǔ)言向計(jì)算機(jī)發(fā)出命令。 目前通用的編程語(yǔ)言有兩種形式:匯編語(yǔ)言和高級(jí)語(yǔ)言。
語(yǔ)言種類
匯編語(yǔ)言
匯編語(yǔ)言的實(shí)質(zhì)和機(jī)器語(yǔ)言是相同的,都是直接對(duì)硬件操作,只不過指令采用了英文縮寫的標(biāo)識(shí)符,更容易識(shí)別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫出來。匯編程序通常由三部分組成:指令、偽指令和宏指令。匯編程序的每一句指令只能對(duì)應(yīng)實(shí)際操作過程中的一個(gè)很細(xì)微的動(dòng)作。例如移動(dòng)、自增,因此匯編源程序一般比較冗長(zhǎng)、復(fù)雜、容易出錯(cuò),而且使用匯編語(yǔ)言編程需要有更多的計(jì)算機(jī)專業(yè)知識(shí),但匯編語(yǔ)言的優(yōu)點(diǎn)也是顯而易見的,用匯編語(yǔ)言所能完成的操作不是一般高級(jí)語(yǔ)言所能夠?qū)崿F(xiàn)的,而且源程序經(jīng)匯編生成的可執(zhí)行文件不僅比較小,而且執(zhí)行速度很快。
腳本語(yǔ)言
腳本語(yǔ)言(Script language,scripting language,scripting programming language)是為了縮短傳統(tǒng)的編寫-編譯-鏈接-運(yùn)行(edit-compile-link-run)過程而創(chuàng)建的計(jì)算機(jī)編程語(yǔ)言。此命名起源于一個(gè)腳本“screenplay”,每次運(yùn)行都會(huì)使對(duì)話框逐字重復(fù)。[1]
早期的腳本語(yǔ)言經(jīng)常被稱為批量處理語(yǔ)言或工作控制語(yǔ)言。一個(gè)腳本通常是解釋運(yùn)行而非編譯。
雖然許多腳本語(yǔ)言都超越了計(jì)算機(jī)簡(jiǎn)單任務(wù)自動(dòng)化的領(lǐng)域,成熟到可以編寫精巧的程序,但仍然還是被稱為腳本。幾乎所有計(jì)算機(jī)系統(tǒng)的各個(gè)層次都有一種腳本語(yǔ)言。包括操作系統(tǒng)層,如計(jì)算機(jī)游戲,網(wǎng)絡(luò)應(yīng)用程序,字處理文檔,網(wǎng)絡(luò)軟件等。在許多方面,高級(jí)編程語(yǔ)言和腳本語(yǔ)言之間互相交叉,二者之間沒有明確的界限。
腳本編程速度更快,且腳本文件明顯小于如同類C程序文件。這種靈活性是以執(zhí)行效率為代價(jià)的。腳本通常是解釋執(zhí)行的,速度可能很慢,且運(yùn)行時(shí)更耗內(nèi)存。在很多案例中,如編寫一些數(shù)十行的小腳本,它所帶來的編寫優(yōu)勢(shì)就遠(yuǎn)遠(yuǎn)超過了運(yùn)行時(shí)的劣勢(shì),尤其是在當(dāng)前程序員工資趨高和硬件成本趨低時(shí)。
腳本語(yǔ)言是一種解釋性的語(yǔ)言,例如Python[2] 、vbscript,javascript,installshield script,ActionScript等等,它不象c\c++等可以編譯成二進(jìn)制代碼,以可執(zhí)行文件的形式存在。[3]
機(jī)器語(yǔ)言
由于計(jì)算機(jī)內(nèi)部只能接受二進(jìn)制代碼,因此,用二進(jìn)制代碼0和1描述的指令稱為機(jī)器指令,全部機(jī)器指令的集合構(gòu)成計(jì)算機(jī)的機(jī)器語(yǔ)言,用機(jī)器語(yǔ)言編程的程序稱為目標(biāo)程序。只有目標(biāo)程序才能被計(jì)算機(jī)直接識(shí)別和執(zhí)行。但是機(jī)器語(yǔ)言編寫的程序無(wú)明顯特征,難以記憶,不便閱讀和書寫,且依賴于具體機(jī)種,局限性很大,機(jī)器語(yǔ)言屬于低級(jí)語(yǔ)言。
高級(jí)語(yǔ)言
高級(jí)語(yǔ)言是大多數(shù)編程者的選擇。和匯編語(yǔ)言相比,它不但將許多相關(guān)的機(jī)器指令合成為單條指令,并且去掉了與具體操作有關(guān)但與完成工作無(wú)關(guān)的細(xì)節(jié),例如使用堆棧、寄存器等,這樣就大大簡(jiǎn)化了程序中的指令。同時(shí),由于省略了很多細(xì)節(jié),編程者也就不需要有太多的專業(yè)知識(shí)。
高級(jí)語(yǔ)言主要是相對(duì)于匯編語(yǔ)言而言,它并不是特指某一種具體的語(yǔ)言,而是包括了很多編程語(yǔ)言,像最簡(jiǎn)單的編程語(yǔ)言PASCAL語(yǔ)言也屬于高級(jí)語(yǔ)言。
高級(jí)語(yǔ)言所編制的程序不能直接被計(jì)算機(jī)識(shí)別,必須經(jīng)過轉(zhuǎn)換才能被執(zhí)行,按轉(zhuǎn)換方式可將它們分為兩類:
解釋類:執(zhí)行方式類似于我們?nèi)粘I钪械?ldquo;同聲翻譯”,應(yīng)用程序源代碼一邊由相應(yīng)語(yǔ)言的解釋器“翻譯”成目標(biāo)代碼(機(jī)器語(yǔ)言),一邊執(zhí)行,因此效率比較低,而且不能生成可獨(dú)立執(zhí)行的可執(zhí)行文件,應(yīng)用程序不能脫離其解釋器,但這種方式比較靈活,可以動(dòng)態(tài)地調(diào)整、修改應(yīng)用程序。如較早時(shí)期的Qbasic語(yǔ)言。
編譯類:編譯是指在應(yīng)用源程序執(zhí)行之前,就將程序源代碼“翻譯”成目標(biāo)代碼(機(jī)器語(yǔ)言),因此其目標(biāo)程序可以脫離其語(yǔ)言環(huán)境獨(dú)立執(zhí)行,使用比較方便、效率較高。但應(yīng)用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標(biāo)文件(* .obj,也就是OBJ文件)才能執(zhí)行,只有目標(biāo)文件而沒有源代碼,修改很不方便。
常見語(yǔ)言
C#
C#是微軟公司發(fā)布的一種面向?qū)ο蟮摹⑦\(yùn)行于.NET Framework之上的高級(jí)程序設(shè)計(jì)語(yǔ)言。C#是微軟公司研究員Anders Hejlsberg的最新成果。Csharp(音標(biāo) [∫a:p])(又被簡(jiǎn)稱為“C#”)是微軟公司在2000年6月發(fā)布的一種新的編程語(yǔ)言,并定于在微軟職業(yè)開發(fā)者論壇(PDC)上登臺(tái)亮相。C#看起來與Java有著驚人的相似;它包括了諸如單一繼承、界面、與Java幾乎同樣的語(yǔ)法,和編譯成中間代碼再運(yùn)行的過程。但是C#與Java有著明顯的不同,它借鑒了Delphi的一個(gè)特點(diǎn),與COM(組件對(duì)象模型)是直接集成的,而且它是微軟公司.NET windows網(wǎng)絡(luò)框架的主角。 在本文中,我將考察創(chuàng)建一種新計(jì)算機(jī)語(yǔ)言的一般動(dòng)機(jī),并將特別指明是什么原因?qū)е铝薈#的出現(xiàn),然后我將介紹C#和它與Java、C、C++的相似之處。其次我將討論一些存在于Java和C#之間的高層次的、和基礎(chǔ)的差別。我將以衡量在用多種語(yǔ)言開發(fā)大型應(yīng)用程序的時(shí)候所需的知識(shí)(或者對(duì)這種知識(shí)的缺乏程度)來結(jié)束本文,而這正是.NET和C#的一個(gè)主要戰(zhàn)略。以及Windows 2000的一個(gè)“d預(yù)覽版本”,還有MSDN上迅速增多的文檔集子的形式獲得(還沒有最終定型)。
Basic
BASIC(Beginners‘ All-purpose Symbolic Instruction Code,又譯培基),意思就是“初學(xué)者的全方位符式指令代碼”,是一種設(shè)計(jì)給初學(xué)者使用的程序設(shè)計(jì)語(yǔ)言。BASIC是一種直譯式的編程語(yǔ)言,在完成編寫后不須經(jīng)由編譯及連結(jié)等手續(xù)即可執(zhí)行,但如果需要單獨(dú)執(zhí)行時(shí)仍然需要將其建立成執(zhí)行檔。
Pascal
Pascal是一種計(jì)算機(jī)通用的高級(jí)程序設(shè)計(jì)語(yǔ)言。Pascal的取名是為了紀(jì)念十七世紀(jì)法國(guó)著名哲學(xué)家和數(shù)學(xué)家Blaise Pascal。它由瑞士Niklaus Wirth教授于六十年代末設(shè)計(jì)并創(chuàng)立。Pascal語(yǔ)言語(yǔ)法嚴(yán)謹(jǐn),層次分明,程序易寫,具有很強(qiáng)的可讀性,是第一個(gè)結(jié)構(gòu)化的編程語(yǔ)言。
C語(yǔ)言
C語(yǔ)言是一種計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,它既具有高級(jí)語(yǔ)言的特點(diǎn),又具有匯編語(yǔ)言的特點(diǎn)。它由美國(guó)貝爾研究所的D.M.Ritchie于1972年推出,1978年后,C語(yǔ)言已先后被移植到大、中、小及微型機(jī)上,它可以作為工作系統(tǒng)設(shè)計(jì)語(yǔ)言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語(yǔ)言,編寫不依賴計(jì)算機(jī)硬件的應(yīng)用程序。它的應(yīng)用范圍廣泛,具備很強(qiáng)的數(shù)據(jù)處理能力,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語(yǔ)言,適于編寫系統(tǒng)軟件,三維,二維圖形和動(dòng)畫,具體應(yīng)用比如單片機(jī)以及嵌入式系統(tǒng)開發(fā)。
C++
C++這個(gè)詞在中國(guó)大陸的程序員圈子中通常被讀做“C加加”,而西方的程序員通常讀做“C plus plus”,“CPP”。 它是一種使用非常廣泛的計(jì)算機(jī)編程語(yǔ)言。C++是一種靜態(tài)數(shù)據(jù)類型檢查的、支持多重編程范式的通用程序設(shè)計(jì)語(yǔ)言。它支持過程化程序設(shè)計(jì)、數(shù)據(jù)抽象、面向?qū)ο蟪绦蛟O(shè)計(jì)、泛型程序設(shè)計(jì)等多種程序設(shè)計(jì)風(fēng)格。
JAVA
Java是一種可以撰寫跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,是由Sun Microsystems公司于1995年5月推出的Java程序設(shè)計(jì)語(yǔ)言和Java平臺(tái)(即JavaSE, JavaEE, JavaME)的總稱。Java 技術(shù)具有卓越的通用性、高效性、平臺(tái)移植性和安全性,廣泛應(yīng)用于個(gè)人PC、數(shù)據(jù)中心、游戲控制臺(tái)、科學(xué)超級(jí)計(jì)算機(jī)、移動(dòng)電話和互聯(lián)網(wǎng),同時(shí)擁有全球最大的開發(fā)者專業(yè)社群。在全球云計(jì)算和移動(dòng)互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java更具備了顯著優(yōu)勢(shì)和廣闊前景。
AAuto
AAuto是專用于桌面軟件快速開發(fā)的新一代混合型編程語(yǔ)言 - 具有動(dòng)態(tài)語(yǔ)言輕便、靈活、快速開發(fā)的特性,而且又可以同時(shí)支持靜態(tài)類型開發(fā),象靜態(tài)語(yǔ)言那樣使用。AAuto可以直接支持原生DLL,即使是外部EXE進(jìn)程中的函數(shù),也可以使用一句代碼聲明為普通的AAuto函數(shù)對(duì)象(原生call支持),AAuto支持非常多的標(biāo)準(zhǔn)調(diào)用約定,例如 stdcall,cdecl,thiscall,fastcall,regparm(n) 等調(diào)用約定都可以支持。AAuto雖然小,但支持的接口很豐富、可以支持com靜態(tài)動(dòng)態(tài)雙接口,象VBS一樣原生支持com對(duì)象。
用一個(gè)簡(jiǎn)單的代碼演示一下,下面的AAuto代碼定義了一個(gè)結(jié)構(gòu)體:
1
2
3
4
5
6
7//定義類
classPOINT{ //類點(diǎn)
intx;inty;//“整數(shù)”類型x;“整數(shù)”類型y
func=function(){ //函數(shù)=函數(shù)()
//動(dòng)態(tài)類型
}
}
這種全新的混合編程語(yǔ)言開創(chuàng)了一種全新的編程方式,也因?yàn)檫@種語(yǔ)言特性,AAuto可以非常方便的嵌入各種第三方語(yǔ)言,AAuto可以嵌入?yún)R編機(jī)器碼,C語(yǔ)言,Java,PHP,C#,Python,Javascript,VBScript.。。。。。等等數(shù)量眾多的第三方編程語(yǔ)言,方便的互調(diào)函數(shù),并且這些調(diào)用第三方語(yǔ)言的功能模塊都是使用AAuto實(shí)現(xiàn)( 開放源碼 )?;旌闲驼Z(yǔ)言讓我們可以體驗(yàn)到激動(dòng)人心的全新編程方式。
AAuto可以將硬盤目錄,硬盤文件一鍵嵌入EXE文件,將全部程序包含所有資源生成獨(dú)立的綠色EXE文件,所有文件讀寫的相關(guān)函數(shù)自動(dòng)支持,無(wú)需更改代碼,AAuto制作的程序不需要安裝程序,也不需要釋放DLL運(yùn)行庫(kù),AAuto制作的程序都是免安裝綠色軟件。
AAuto屬于類C系語(yǔ)言、并且可以自定義一套自己的語(yǔ)法。AAuto在語(yǔ)法風(fēng)格接近流行類C系語(yǔ)言。有其他語(yǔ)言基礎(chǔ)的可以輕松上手,學(xué)習(xí)AAuto以后學(xué)習(xí)其他編程語(yǔ)言更可事半功倍。
AAuto支持多線程開發(fā),復(fù)雜的多線程開發(fā)在AAuto中變得非常簡(jiǎn)單,標(biāo)準(zhǔn)庫(kù)也提供大量簡(jiǎn)化多線程開發(fā)的輔助支持庫(kù),為多線程軟件開發(fā)帶來很大的方便(請(qǐng)參考快手范例 -》 多線程 )。
AAuto的標(biāo)準(zhǔn)庫(kù)基本使用純AAuto源碼實(shí)現(xiàn),并且全部開源,標(biāo)準(zhǔn)庫(kù)提供了大量的簡(jiǎn)化編程的常用函數(shù),涉及到軟件開發(fā)的方方面面,極大的簡(jiǎn)化了桌面軟件開發(fā)過程。
AAuto提供web.form支持庫(kù)( 開源 ),可以創(chuàng)建web窗體加載網(wǎng)頁(yè)創(chuàng)建web風(fēng)格的軟件界面,網(wǎng)頁(yè)與本機(jī)代碼可以直接交互,在快手工程向?qū)Ю铮吞峁┝?WEB UI 的模板。在使用web窗體時(shí),你能感受到AAuto這種混合語(yǔ)言帶來的巨大方便,較之傳統(tǒng)編程語(yǔ)言,AAuto 可以更快更加方便的創(chuàng)建 WEB UI 程序,在AAuto自帶的范例中,就有一個(gè)多窗口瀏覽器的范例,僅僅使用了一頁(yè)300行源碼就實(shí)現(xiàn)了一個(gè)功能較完整的多窗口網(wǎng)頁(yè)瀏覽器,可以看出使用AAuto極大的簡(jiǎn)化了Web相關(guān)開發(fā)技術(shù)?!×硗?,AAuto提供了web.layout支持庫(kù),封裝了輕量快速的界面引擎HTMLayout,可以使用傳統(tǒng)的HTML,CSS技術(shù),更加方便的實(shí)現(xiàn)漂亮的界面,而且運(yùn)行,響應(yīng)速度極快,官方也提供了大量HTMLayout的范例,教程?!∈褂肁Auto開發(fā)傳統(tǒng)界面也非常的方便,AAuto提供可視化開發(fā)工具,可以象VB一樣(實(shí)際上比VB更簡(jiǎn)單)的通過拖拉控件創(chuàng)建程序。
哪些語(yǔ)言比 C 更適合編程入門
覺得曾文正公說的好,凡是你做起來心有余力的事,你都能做好;要想在一個(gè)領(lǐng)域里做什么事都能心有余力甚至游刃有余,你最好能對(duì)這個(gè)領(lǐng)域有一個(gè)系統(tǒng)性的思考,怎樣能有一個(gè)系統(tǒng)性的思考?你必須經(jīng)歷足夠多的事情,思考足夠多的問題,戰(zhàn)勝足夠多的困難,那么在這個(gè)過程中有一個(gè)順手的工具將是起關(guān)鍵性作用的。為什么我們對(duì)一些事能夠堅(jiān)持下去,對(duì)另外一些事卻不能?除了興趣而外,我們?cè)诔跏茧A段的情況也起重要的作用。
回到樓主的問題,我們好多學(xué)計(jì)算機(jī)的人總是很難認(rèn)清楚計(jì)算機(jī)的本質(zhì)是什么,個(gè)人感覺這是和中國(guó)的計(jì)算機(jī)教育有關(guān),和我們自己努不努力關(guān)系反而不大。以我個(gè)人為例,從學(xué)校到工作崗位,一直對(duì)自己都不太自信,因?yàn)榭傆幸粋€(gè)問題困擾我,就是遇到一個(gè)實(shí)際問題之后,總是沒有很好的思路,總是不能夠迅速把問題分解。一開始,以為自己經(jīng)驗(yàn)不足,對(duì)面向?qū)ο蟮乃枷虢佑|太少,但發(fā)現(xiàn)諸如設(shè)計(jì)模式一類的書看過還不如不看,并不能讓自己思路清晰。這個(gè)問題困惑我好久,還有一個(gè)問題,一些人望而生畏的內(nèi)核源碼,匯編語(yǔ)言,我卻能甘之如飴,我也同樣不理解別人為什么那么懼怕這些東西。想了好久,觀察了好久,才發(fā)現(xiàn)一些人搞不好計(jì)算機(jī)是因?yàn)椴慌Γ硪恍┤烁悴缓糜?jì)算機(jī)是因?yàn)闆]有找到方向,沒有好的工具幫他去抓住計(jì)算機(jī)的本質(zhì)。而我屬于后者,為什么我會(huì)有這樣的情況出現(xiàn),因?yàn)槲覐膩聿幌矚g遞歸,學(xué)數(shù)據(jù)結(jié)構(gòu)的時(shí)候接觸過遞歸,但卻被教導(dǎo)遞歸是一個(gè)沒有效率的東西,于是以為遞歸是一個(gè)壞東西。這種偏見持續(xù)很多年,殊不知用遞歸來執(zhí)行計(jì)算機(jī)程序沒有效率,卻不意味著用遞歸來思考問題也沒有效率。
計(jì)算機(jī)的本質(zhì)是什么?我覺得一個(gè)叫周思博的大牛說的非常好,總共只有三樣?xùn)|西:指針,遞歸和lambda演算,指針在操作系統(tǒng)中起決定性的作用,操作系統(tǒng)通過指針把一切管理的井井有條;
遞歸是證明和算法的核心,而證明和使用算法解決問題是我們發(fā)明計(jì)算機(jī)的起因;lambda演算是計(jì)算機(jī)語(yǔ)言,編譯系統(tǒng)的核心,而他們是我們最基本的工具。
C語(yǔ)言是有用的,它的指針尤為重要,是幫助我們理解計(jì)算機(jī)程序運(yùn)行的基礎(chǔ),但是我當(dāng)初學(xué)C語(yǔ)言確實(shí)費(fèi)了老勁兒,原因卻很搞笑,因?yàn)槲覀兊腃語(yǔ)言老師是個(gè)大舌頭,一句話就開始兩個(gè)字能聽清,而且這個(gè)老師不怎么負(fù)責(zé),什么都敷衍。而我們當(dāng)時(shí)也沒有程序設(shè)計(jì)語(yǔ)言這門課,沒有講過程序設(shè)計(jì)語(yǔ)言是怎么回事,于是整整一學(xué)期,就搞明白了C語(yǔ)言中“=”是一個(gè)賦值號(hào),而不是數(shù)學(xué)中的等號(hào)。對(duì)C語(yǔ)言稍微有一點(diǎn)認(rèn)識(shí),是從學(xué)Java開始的,因?yàn)镴ava老師講話清晰,教學(xué)也比較認(rèn)真,中規(guī)中矩學(xué)了一個(gè)學(xué)期,才算開始練習(xí)編程。而整個(gè)本科階段,自己算是連計(jì)算機(jī)的邊都沒摸到,因?yàn)橛刑嗟囊苫笈c不理解,相對(duì)而言我覺得數(shù)學(xué)還簡(jiǎn)單一些。
講這么多,我只是想說明一個(gè)道理,找到一個(gè)正確的路徑很重要。我通過Java來理解C,你感覺是不是很好笑?但如果我學(xué)過程序語(yǔ)言原理的話就不會(huì)如此,如果更幸運(yùn)地學(xué)過SICP的話,我也許在本科階段就能夠?qū)τ?jì)算機(jī)入門。所以,想這樣回答樓主的問題,你覺得C語(yǔ)言無(wú)聊是什么原因覺得無(wú)聊?如果你是遇到了困難,想偷懶,想繞過,而推脫到C語(yǔ)言身上,那這就是一個(gè)心理問題,你不應(yīng)該放棄,C語(yǔ)言已經(jīng)夠簡(jiǎn)單了,你也付出了初始階段的努力,現(xiàn)在的問題是幫助你突破瓶頸的,你換一個(gè)語(yǔ)言還要從頭再來。而如果你是覺得C語(yǔ)言不能表達(dá)你的思想,那你可以嘗試換一下,向SICP里那樣使用函數(shù)式語(yǔ)言。
java和javaweb和javascript的區(qū)別
Java、JavaWeb和JavaScript是三個(gè)相關(guān)但又有一定差異的編程語(yǔ)言和技術(shù)。本文將詳細(xì)介紹它們的定義、特點(diǎn)、用途和區(qū)別。 Java是一種面向...
2023-11-16 標(biāo)簽:JAVA編程語(yǔ)言javascript 13.0萬(wàn) 0
vb編程語(yǔ)言是做什么用的_VB編程語(yǔ)言有哪些
編程語(yǔ)言(programming language),是用來定義計(jì)算機(jī)程序的形式語(yǔ)言。它是一種被標(biāo)準(zhǔn)化的交流技巧,用來向計(jì)算機(jī)發(fā)出指令。一種計(jì)算機(jī)語(yǔ)言讓...
PLC目前5種標(biāo)準(zhǔn)的編程語(yǔ)言,你知道嗎?
繼電器梯形圖(LD-Ladder Diagram)語(yǔ)言是PLC首先采用的編程語(yǔ)言,也是PLC最普遍采用的編程語(yǔ)言。梯形圖編程語(yǔ)言是從繼電器控制系統(tǒng)原理圖...
編程初學(xué)者應(yīng)該學(xué)習(xí)什么語(yǔ)言好?
此外,根據(jù) Hacker News 招聘趨勢(shì)排名,越來越多的公司對(duì)掌握 Python 技能的開發(fā)者感興趣。同時(shí)從關(guān)注編程語(yǔ)言流行度的 PYPL 排行榜來...
Julia真有這么神?你做好學(xué)習(xí)一門新編程語(yǔ)言的準(zhǔn)備了嗎?
我們想要一種擁有自由許可的開源語(yǔ)言。我們想要它擁有 C 的速度與 Ruby 的靈活。它要容易理解,像 Lisp 一樣真正地支持宏,但也要有像 Matla...
2018-08-13 標(biāo)簽:c語(yǔ)言編程語(yǔ)言機(jī)器學(xué)習(xí) 3.7萬(wàn) 0
最難的5種編程語(yǔ)言盤點(diǎn)(Malbolge/Cow/Brainfuck/INTERCAL/Whitespace)
2018-07-23 標(biāo)簽:編程語(yǔ)言 3.6萬(wàn) 0
機(jī)器人的最佳編程語(yǔ)言是什么?機(jī)器人十大流行編程語(yǔ)言匯總
機(jī)器人的主要特點(diǎn)之一是其通用性,是機(jī)器人具有可編程能力是實(shí)現(xiàn)這一特點(diǎn)的重要手段。機(jī)器人編程必然涉及機(jī)器人語(yǔ)言。機(jī)器人語(yǔ)言是使用符號(hào)來描述機(jī)器人動(dòng)作的方法...
LabVIEW的優(yōu)勢(shì)體現(xiàn)在以下幾個(gè)方面
LabVIEW提供了無(wú)比強(qiáng)大的分析、處理VI庫(kù)及許多專業(yè)的工具包,例如:高級(jí)信號(hào)處理工具包、數(shù)字濾波器設(shè)計(jì)工具包、調(diào)制工具包、譜分析工具包、聲音振動(dòng)工具...
2019-03-20 標(biāo)簽:labview操作系統(tǒng)編程語(yǔ)言 3.1萬(wàn) 0
一、梯形圖LAD ? ??梯形圖語(yǔ)言是從常用的繼電器與接觸器邏輯控制基礎(chǔ)上簡(jiǎn)化了符號(hào)演變而來的,具有形象、直觀、實(shí)用等特點(diǎn),電氣技術(shù)人員容易接受,是目前...
分享幾個(gè)根據(jù)源代碼自動(dòng)畫流程圖的工具軟件
小伙伴們平時(shí)閱讀別人的代碼,或者編寫技術(shù)文檔時(shí),經(jīng)常需要畫流程圖,如果有工具軟件能夠根據(jù)源代碼自動(dòng)繪制流程圖,那將極大提升我們的效率。接下來,就介紹幾款...
麒麟 990 系列揭秘:突破物理極限的第二代 7nm 工藝立即下載
類別:單片機(jī) 2021-12-22 標(biāo)簽:芯片單片機(jī)物聯(lián)網(wǎng)
STM32定時(shí)器三種中心對(duì)齊計(jì)數(shù)模式簡(jiǎn)介立即下載
類別:單片機(jī) 2021-12-08 標(biāo)簽:編程語(yǔ)言人工智能javascript
如何無(wú)壓力入門C語(yǔ)言,c語(yǔ)言入門經(jīng)典資料免費(fèi)下載立即下載
類別:C語(yǔ)言|源代碼 2018-07-12 標(biāo)簽:C語(yǔ)言編程語(yǔ)言
單片機(jī)AT89C51--6.數(shù)碼管顯示(含動(dòng)態(tài),靜態(tài))立即下載
類別:單片機(jī) 2021-11-25 標(biāo)簽:單片機(jī)編程語(yǔ)言89C51單片機(jī)
可以在Arduino Playground上找到有關(guān)通過pySerial向Arduino讀寫數(shù)據(jù)的更多信息,但請(qǐng)注意,這是一項(xiàng)相當(dāng)先進(jìn)的技術(shù)。如果您已經(jīng)...
matlab是什么編程語(yǔ)言?matlab是編程語(yǔ)言嗎
MATLAB是矩陣實(shí)驗(yàn)室(Matrix Laboratory)的簡(jiǎn)稱,和Mathematica、Maple并稱為三大數(shù)學(xué)軟件。它在數(shù)學(xué)類科技應(yīng)用軟件中在...
單片機(jī)編程用什么語(yǔ)言_單片機(jī)編程語(yǔ)言推薦
單片機(jī)編程的語(yǔ)言既可以用C,也可以用匯編。
2018年最適合學(xué)習(xí)的十大最佳編程語(yǔ)言
首先,我要聲明一點(diǎn),本文不是那些所謂的圍繞搜索關(guān)鍵詞、引用量、流行語(yǔ)的“Top 10編程語(yǔ)言排名”,這是一份基于2018年初IT行業(yè)狀況、趨勢(shì)和近期保守...
2017年熱門編程語(yǔ)言排行榜,你的語(yǔ)言上榜沒?
我們?cè)L問了幾個(gè)可信度較高的語(yǔ)言索引網(wǎng)站,同時(shí)還深入到 Indeed 和 Glassdoor 等全球門戶網(wǎng)站,試圖收集數(shù)據(jù),以總結(jié)出全球最受歡迎的語(yǔ)言是哪...
matlab怎樣編寫函數(shù)并調(diào)用函數(shù)
MATLAB和Mathematica、Maple并稱為三大數(shù)學(xué)軟件。它在數(shù)學(xué)類科技應(yīng)用軟件中在數(shù)值計(jì)算方面首屈一指。MATLAB可以進(jìn)行矩陣運(yùn)算、繪制函...
強(qiáng)類型和弱類型的語(yǔ)言有什么區(qū)別
強(qiáng)類型語(yǔ)言也稱為強(qiáng)類型定義語(yǔ)言。是一種總是強(qiáng)制類型定義的語(yǔ)言,要求變量的使用要嚴(yán)格符合定義,所有變量都必須先定義后使用。弱類型語(yǔ)言也稱為弱類型定義語(yǔ)言。...
在這種趨勢(shì)下,Python已經(jīng)成為最大贏家,最可能的原因是統(tǒng)計(jì)編程正從大學(xué)發(fā)展到工業(yè),而Python更容易被業(yè)界接受。此外,從上圖我們可以看出Pytho...
制作手機(jī)上的APP應(yīng)該使用什么編程語(yǔ)言
先我們先聊聊目前主流手機(jī)操作系統(tǒng),目前就兩大陣營(yíng):安卓與IOS。在我國(guó),從市場(chǎng)份額來說安卓的占有率是極高的高達(dá)80%,而蘋果才20%。(2018年數(shù)據(jù))...
單片機(jī)屬于什么專業(yè)_學(xué)單片機(jī)需要什么基礎(chǔ)知識(shí)
單片機(jī)(Microcontroller)屬于電子工程專業(yè)。它是一種集成了微處理器核心、存儲(chǔ)器、輸入輸出端口和各種外圍設(shè)備接口的微型計(jì)算機(jī)系統(tǒng),常用于各種...
編輯推薦廠商產(chǎn)品技術(shù)軟件/工具OS/語(yǔ)言教程專題
電機(jī)控制 | DSP | 氮化鎵 | 功率放大器 | ChatGPT | 自動(dòng)駕駛 | TI | 瑞薩電子 |
BLDC | PLC | 碳化硅 | 二極管 | OpenAI | 元宇宙 | 安森美 | ADI |
無(wú)刷電機(jī) | FOC | IGBT | 逆變器 | 文心一言 | 5G | 英飛凌 | 羅姆 |
直流電機(jī) | PID | MOSFET | 傳感器 | 人工智能 | 物聯(lián)網(wǎng) | NXP | 賽靈思 |
步進(jìn)電機(jī) | SPWM | 充電樁 | IPM | 機(jī)器視覺 | 無(wú)人機(jī) | 三菱電機(jī) | ST |
伺服電機(jī) | SVPWM | 光伏發(fā)電 | UPS | AR | 智能電網(wǎng) | 國(guó)民技術(shù) | Microchip |
Arduino | BeagleBone | 樹莓派 | STM32 | MSP430 | EFM32 | ARM mbed | EDA |
示波器 | LPC | imx8 | PSoC | Altium Designer | Allegro | Mentor | Pads |
OrCAD | Cadence | AutoCAD | 華秋DFM | Keil | MATLAB | MPLAB | Quartus |
C++ | Java | Python | JavaScript | node.js | RISC-V | verilog | Tensorflow |
Android | iOS | linux | RTOS | FreeRTOS | LiteOS | RT-THread | uCOS |
DuerOS | Brillo | Windows11 | HarmonyOS |