完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>
標(biāo)簽 > 編程語(yǔ)言
編程語(yǔ)言俗稱“計(jì)算機(jī)語(yǔ)言”,種類非常的多,總的來(lái)說(shuō)可以分成機(jī)器語(yǔ)言、匯編語(yǔ)言、高級(jí)語(yǔ)言三大類。電腦每做的一次動(dòng)作,一個(gè)步驟,都是按照已經(jīng)用計(jì)算機(jī)語(yǔ)言編好的程序來(lái)執(zhí)行的,程序是計(jì)算機(jī)要執(zhí)行的指令的集合,而程序全部都是用我們所掌握的語(yǔ)言來(lái)編寫的。
編程語(yǔ)言(programming language),是用來(lái)定義計(jì)算機(jī)程序的形式語(yǔ)言。它是一種被標(biāo)準(zhǔn)化的交流技巧,用來(lái)向計(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í)是用來(lái)控制提花織布機(jī)及自動(dòng)演奏鋼琴的動(dòng)作。在電腦領(lǐng)域已發(fā)明了上千不同的編程語(yǔ)言,而且每年仍有新的編程語(yǔ)言誕生。很多編程語(yǔ)言需要用指令方式說(shuō)明計(jì)算的程序,而有些編程語(yǔ)言則屬于聲明式編程,說(shuō)明需要的結(jié)果,而不說(shuō)明如何計(jì)算。
編程語(yǔ)言的描述一般可以分為語(yǔ)法及語(yǔ)義。語(yǔ)法是說(shuō)明編程語(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ǔ)言”,種類非常的多,總的來(lái)說(shuō)可以分成機(jī)器語(yǔ)言、匯編語(yǔ)言、高級(jí)語(yǔ)言三大類。電腦每做的一次動(dòng)作,一個(gè)步驟,都是按照已經(jīng)用計(jì)算機(jī)語(yǔ)言編好的程序來(lái)執(zhí)行的,程序是計(jì)算機(jī)要執(zhí)行的指令的集合,而程序全部都是用我們所掌握的語(yǔ)言來(lái)編寫的。所以人們要控制計(jì)算機(jī)一定要通過(guò)計(jì)算機(jī)語(yǔ)言向計(jì)算機(jī)發(fā)出命令。 目前通用的編程語(yǔ)言有兩種形式:匯編語(yǔ)言和高級(jí)語(yǔ)言。
編程語(yǔ)言(programming language),是用來(lái)定義計(jì)算機(jī)程序的形式語(yǔ)言。它是一種被標(biāo)準(zhǔn)化的交流技巧,用來(lái)向計(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í)是用來(lái)控制提花織布機(jī)及自動(dòng)演奏鋼琴的動(dòng)作。在電腦領(lǐng)域已發(fā)明了上千不同的編程語(yǔ)言,而且每年仍有新的編程語(yǔ)言誕生。很多編程語(yǔ)言需要用指令方式說(shuō)明計(jì)算的程序,而有些編程語(yǔ)言則屬于聲明式編程,說(shuō)明需要的結(jié)果,而不說(shuō)明如何計(jì)算。
編程語(yǔ)言的描述一般可以分為語(yǔ)法及語(yǔ)義。語(yǔ)法是說(shuō)明編程語(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ǔ)言”,種類非常的多,總的來(lái)說(shuō)可以分成機(jī)器語(yǔ)言、匯編語(yǔ)言、高級(jí)語(yǔ)言三大類。電腦每做的一次動(dòng)作,一個(gè)步驟,都是按照已經(jīng)用計(jì)算機(jī)語(yǔ)言編好的程序來(lái)執(zhí)行的,程序是計(jì)算機(jī)要執(zhí)行的指令的集合,而程序全部都是用我們所掌握的語(yǔ)言來(lái)編寫的。所以人們要控制計(jì)算機(jī)一定要通過(guò)計(jì)算機(jī)語(yǔ)言向計(jì)算機(jī)發(fā)出命令。 目前通用的編程語(yǔ)言有兩種形式:匯編語(yǔ)言和高級(jí)語(yǔ)言。
語(yǔ)言種類
匯編語(yǔ)言
匯編語(yǔ)言的實(shí)質(zhì)和機(jī)器語(yǔ)言是相同的,都是直接對(duì)硬件操作,只不過(guò)指令采用了英文縮寫的標(biāo)識(shí)符,更容易識(shí)別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫出來(lái)。匯編程序通常由三部分組成:指令、偽指令和宏指令。匯編程序的每一句指令只能對(duì)應(yīng)實(shí)際操作過(guò)程中的一個(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)過(guò)程而創(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ù)十行的小腳本,它所帶來(lái)的編寫優(yōu)勢(shì)就遠(yuǎn)遠(yuǎn)超過(guò)了運(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)過(guò)轉(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#看起來(lái)與Java有著驚人的相似;它包括了諸如單一繼承、界面、與Java幾乎同樣的語(yǔ)法,和編譯成中間代碼再運(yùn)行的過(guò)程。但是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í)的缺乏程度)來(lái)結(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ǔ)言。它支持過(guò)程化程序設(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)( 開放源碼 )。混合型語(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ā)帶來(lái)很大的方便(請(qǐng)參考快手范例 -》 多線程 )。
AAuto的標(biāo)準(zhǔn)庫(kù)基本使用純AAuto源碼實(shí)現(xiàn),并且全部開源,標(biāo)準(zhǔn)庫(kù)提供了大量的簡(jiǎn)化編程的常用函數(shù),涉及到軟件開發(fā)的方方面面,極大的簡(jiǎn)化了桌面軟件開發(fā)過(guò)程。
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ǔ)言帶來(lái)的巨大方便,較之傳統(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ù)?!×硗猓珹Auto提供了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)單)的通過(guò)拖拉控件創(chuàng)建程序。
哪些語(yǔ)言比 C 更適合編程入門
覺得曾文正公說(shuō)的好,凡是你做起來(lái)心有余力的事,你都能做好;要想在一個(gè)領(lǐng)域里做什么事都能心有余力甚至游刃有余,你最好能對(duì)這個(gè)領(lǐng)域有一個(gè)系統(tǒng)性的思考,怎樣能有一個(gè)系統(tǒng)性的思考?你必須經(jīng)歷足夠多的事情,思考足夠多的問題,戰(zhàn)勝足夠多的困難,那么在這個(gè)過(guò)程中有一個(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ì)模式一類的書看過(guò)還不如不看,并不能讓自己思路清晰。這個(gè)問題困惑我好久,還有一個(gè)問題,一些人望而生畏的內(nèi)核源碼,匯編語(yǔ)言,我卻能甘之如飴,我也同樣不理解別人為什么那么懼怕這些東西。想了好久,觀察了好久,才發(fā)現(xiàn)一些人搞不好計(jì)算機(jī)是因?yàn)椴慌?,另一些人搞不好?jì)算機(jī)是因?yàn)闆]有找到方向,沒有好的工具幫他去抓住計(jì)算機(jī)的本質(zhì)。而我屬于后者,為什么我會(huì)有這樣的情況出現(xiàn),因?yàn)槲覐膩?lái)不喜歡遞歸,學(xué)數(shù)據(jù)結(jié)構(gòu)的時(shí)候接觸過(guò)遞歸,但卻被教導(dǎo)遞歸是一個(gè)沒有效率的東西,于是以為遞歸是一個(gè)壞東西。這種偏見持續(xù)很多年,殊不知用遞歸來(lái)執(zhí)行計(jì)算機(jī)程序沒有效率,卻不意味著用遞歸來(lái)思考問題也沒有效率。
計(jì)算機(jī)的本質(zhì)是什么?我覺得一個(gè)叫周思博的大牛說(shuō)的非常好,總共只有三樣?xùn)|西:指針,遞歸和lambda演算,指針在操作系統(tǒng)中起決定性的作用,操作系統(tǒng)通過(guò)指針把一切管理的井井有條;
遞歸是證明和算法的核心,而證明和使用算法解決問題是我們發(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ǔ)言這門課,沒有講過(guò)程序設(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)單一些。
講這么多,我只是想說(shuō)明一個(gè)道理,找到一個(gè)正確的路徑很重要。我通過(guò)Java來(lái)理解C,你感覺是不是很好笑?但如果我學(xué)過(guò)程序語(yǔ)言原理的話就不會(huì)如此,如果更幸運(yùn)地學(xué)過(guò)SICP的話,我也許在本科階段就能夠?qū)τ?jì)算機(jī)入門。所以,想這樣回答樓主的問題,你覺得C語(yǔ)言無(wú)聊是什么原因覺得無(wú)聊?如果你是遇到了困難,想偷懶,想繞過(guò),而推脫到C語(yǔ)言身上,那這就是一個(gè)心理問題,你不應(yīng)該放棄,C語(yǔ)言已經(jīng)夠簡(jiǎn)單了,你也付出了初始階段的努力,現(xiàn)在的問題是幫助你突破瓶頸的,你換一個(gè)語(yǔ)言還要從頭再來(lái)。而如果你是覺得C語(yǔ)言不能表達(dá)你的思想,那你可以嘗試換一下,向SICP里那樣使用函數(shù)式語(yǔ)言。
C語(yǔ)言作為一種歷史悠久的編程語(yǔ)言,自其誕生以來(lái),一直在軟件開發(fā)領(lǐng)域扮演著重要角色。它以其高效、靈活和可移植性強(qiáng)的特點(diǎn),成為了系統(tǒng)級(jí)編程的首選語(yǔ)言之一。
gawk程序是Unix中原始awk程序的GNU版本。gawk程序讓流編輯器邁上了一個(gè)新的臺(tái)階,它提供了一種編程語(yǔ)言而不只是編輯器命令。
Orin是一款高度集成、高性能的車載計(jì)算平臺(tái),由英偉達(dá)推出,并采用了英偉達(dá)自家的Volta架構(gòu)GPU和其他高級(jí)處理器技術(shù)。關(guān)于Orin芯片的編程語(yǔ)言支持...
FPGA(現(xiàn)場(chǎng)可編程邏輯門陣列)的編程涉及特定的硬件描述語(yǔ)言(HDL),其中Verilog和VHDL是最常用的兩種。以下是一個(gè)FPGA編程語(yǔ)言(以Ver...
Python作為一種高級(jí)編程語(yǔ)言,提供了多種并發(fā)編程的方式,其中多線程與多進(jìn)程是最常見的兩種方式之一。在本文中,我們將探討Python中多線程與多進(jìn)程的...
PLC(可編程邏輯控制器)的基本指令是PLC編程語(yǔ)言的基本元素,用于描述PLC如何根據(jù)輸入信號(hào)的狀態(tài)控制輸出信號(hào)的變化,從而實(shí)現(xiàn)對(duì)機(jī)械設(shè)備的控制。PLC...
PLC(可編程邏輯控制器)的編程語(yǔ)言多種多樣,但其中最為常用和廣泛認(rèn)知的三種主要編程語(yǔ)言是梯形圖語(yǔ)言(Ladder Diagram, LD)、結(jié)構(gòu)化文本...
LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一種圖形化編程語(yǔ)言,由美國(guó)國(guó)家...
2024-09-04 標(biāo)簽:LabVIEW數(shù)據(jù)采集編程語(yǔ)言 509 0
什么是labview?labview編寫的程序由哪幾部分組成?
LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一種圖形化編程語(yǔ)言,由美國(guó)國(guó)家...
2024-09-04 標(biāo)簽:LabVIEW數(shù)據(jù)采集編程語(yǔ)言 447 0
C語(yǔ)言嵌入式系統(tǒng)編程修煉之一:背景篇立即下載
類別:電子資料 2023-11-17 標(biāo)簽:嵌入式系統(tǒng)C語(yǔ)言編程語(yǔ)言
基于TCPIP網(wǎng)絡(luò)的遠(yuǎn)程智能物聯(lián)網(wǎng)系統(tǒng)立即下載
類別:物聯(lián)網(wǎng) 2023-05-11 標(biāo)簽:物聯(lián)網(wǎng)虛擬儀器TCP
在現(xiàn)代工業(yè)自動(dòng)化領(lǐng)域,PLC控制系統(tǒng)因其可靠性、靈活性和易于編程而成為核心組件。選擇合適的PLC系統(tǒng)不僅能夠提高生產(chǎn)效率,還能降低維護(hù)成本。 1. 應(yīng)用...
2024-11-08 標(biāo)簽:編程語(yǔ)言PLC控制系統(tǒng)工業(yè)自動(dòng)化 102 0
隨著物聯(lián)網(wǎng)(IoT)和智能設(shè)備的發(fā)展,ARM開發(fā)板因其低功耗、高性能和靈活性而受到開發(fā)者的青睞。 C語(yǔ)言 C語(yǔ)言是一種高效、靈活的編程語(yǔ)言,廣泛應(yīng)用于嵌...
2024-11-05 標(biāo)簽:物聯(lián)網(wǎng)硬件編程語(yǔ)言 225 0
單片機(jī)(Microcontroller Unit,MCU)編程是指為單片機(jī)編寫程序的過(guò)程,這些程序控制單片機(jī)的行為和功能。單片機(jī)廣泛應(yīng)用于嵌入式系統(tǒng),如...
微控制器單元(Microcontroller Unit,簡(jiǎn)稱MCU)是嵌入式系統(tǒng)的核心,廣泛應(yīng)用于各種電子產(chǎn)品中。隨著技術(shù)的發(fā)展,MCU編程語(yǔ)言和開發(fā)環(huán)...
2024-11-01 標(biāo)簽:mcu嵌入式系統(tǒng)編程語(yǔ)言 333 0
原生鴻蒙系統(tǒng)正式發(fā)布,余承東宣布不依賴國(guó)外核心技術(shù)
在近日的發(fā)布會(huì)上,華為消費(fèi)者業(yè)務(wù)CEO余承東自豪地宣布:“基于OpenHarmony全新打造的原生鴻蒙系統(tǒng)正式發(fā)布!今后,華為的所有設(shè)備開機(jī)畫面都將展示...
2024-10-23 標(biāo)簽:操作系統(tǒng)編程語(yǔ)言余承東 265 0
第三屆OpenHarmony技術(shù)大會(huì)——編譯器與編程語(yǔ)言分論壇(10月12日)議程速遞
2024-10-11 標(biāo)簽:編程語(yǔ)言編譯器OpenHarmony 126 0
Swift 6.0引領(lǐng)編程語(yǔ)言新趨勢(shì)
近日,蘋果公司公布了一系列重磅消息:推出iOS/iPadOS 18和macOS 15 Sequoia等操作系統(tǒng)更新,以及Swift編程語(yǔ)言的全新版本——...
在現(xiàn)代軟件開發(fā)中,JavaScript已成為一種廣泛使用的編程語(yǔ)言,在web前端開發(fā)、后端開發(fā)、移動(dòng)應(yīng)用端開發(fā)等領(lǐng)域中都有它的身影。在本文中,將從Jav...
字節(jié)跳動(dòng)發(fā)布豆包MarsCo智能開發(fā)工具
在數(shù)字時(shí)代的浪潮中,編程已成為推動(dòng)科技進(jìn)步和創(chuàng)新的核心動(dòng)力。為了助力國(guó)內(nèi)開發(fā)者更高效、智能地進(jìn)行編程工作,字節(jié)跳動(dòng)公司近日發(fā)布了全新的智能開發(fā)工具——豆...
2024-07-01 標(biāo)簽:編程語(yǔ)言代碼字節(jié)跳動(dòng) 619 0
在近日舉辦的WAVE SUMMIT大會(huì)上,百度公司震撼發(fā)布了全新的智能代碼助手——“文心快碼”。這款基于百度文心大模型的強(qiáng)大工具,結(jié)合了海量的編程數(shù)據(jù),...
編輯推薦廠商產(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 |