完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>
標(biāo)簽 > 編程語(yǔ)言
編程語(yǔ)言俗稱(chēng)“計(jì)算機(jī)語(yǔ)言”,種類(lèi)非常的多,總的來(lái)說(shuō)可以分成機(jī)器語(yǔ)言、匯編語(yǔ)言、高級(jí)語(yǔ)言三大類(lèi)。電腦每做的一次動(dòng)作,一個(gè)步驟,都是按照已經(jīng)用計(jì)算機(jī)語(yǔ)言編好的程序來(lái)執(zhí)行的,程序是計(jì)算機(jī)要執(zhí)行的指令的集合,而程序全部都是用我們所掌握的語(yǔ)言來(lái)編寫(xiě)的。
編程語(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ǔ)言俗稱(chēng)“計(jì)算機(jī)語(yǔ)言”,種類(lèi)非常的多,總的來(lái)說(shuō)可以分成機(jī)器語(yǔ)言、匯編語(yǔ)言、高級(jí)語(yǔ)言三大類(lèi)。電腦每做的一次動(dòng)作,一個(gè)步驟,都是按照已經(jīng)用計(jì)算機(jī)語(yǔ)言編好的程序來(lái)執(zhí)行的,程序是計(jì)算機(jī)要執(zhí)行的指令的集合,而程序全部都是用我們所掌握的語(yǔ)言來(lái)編寫(xiě)的。所以人們要控制計(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ǔ)言俗稱(chēng)“計(jì)算機(jī)語(yǔ)言”,種類(lèi)非常的多,總的來(lái)說(shuō)可以分成機(jī)器語(yǔ)言、匯編語(yǔ)言、高級(jí)語(yǔ)言三大類(lèi)。電腦每做的一次動(dòng)作,一個(gè)步驟,都是按照已經(jīng)用計(jì)算機(jī)語(yǔ)言編好的程序來(lái)執(zhí)行的,程序是計(jì)算機(jī)要執(zhí)行的指令的集合,而程序全部都是用我們所掌握的語(yǔ)言來(lái)編寫(xiě)的。所以人們要控制計(jì)算機(jī)一定要通過(guò)計(jì)算機(jī)語(yǔ)言向計(jì)算機(jī)發(fā)出命令。 目前通用的編程語(yǔ)言有兩種形式:匯編語(yǔ)言和高級(jí)語(yǔ)言。
語(yǔ)言種類(lèi)
匯編語(yǔ)言
匯編語(yǔ)言的實(shí)質(zhì)和機(jī)器語(yǔ)言是相同的,都是直接對(duì)硬件操作,只不過(guò)指令采用了英文縮寫(xiě)的標(biāo)識(shí)符,更容易識(shí)別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫(xiě)出來(lái)。匯編程序通常由三部分組成:指令、偽指令和宏指令。匯編程序的每一句指令只能對(duì)應(yīng)實(shí)際操作過(guò)程中的一個(gè)很細(xì)微的動(dòng)作。例如移動(dòng)、自增,因此匯編源程序一般比較冗長(zhǎng)、復(fù)雜、容易出錯(cuò),而且使用匯編語(yǔ)言編程需要有更多的計(jì)算機(jī)專(zhuān)業(yè)知識(shí),但匯編語(yǔ)言的優(yōu)點(diǎn)也是顯而易見(jiàn)的,用匯編語(yǔ)言所能完成的操作不是一般高級(jí)語(yǔ)言所能夠?qū)崿F(xiàn)的,而且源程序經(jīng)匯編生成的可執(zhí)行文件不僅比較小,而且執(zhí)行速度很快。
腳本語(yǔ)言
腳本語(yǔ)言(Script language,scripting language,scripting programming language)是為了縮短傳統(tǒng)的編寫(xiě)-編譯-鏈接-運(yùn)行(edit-compile-link-run)過(guò)程而創(chuàng)建的計(jì)算機(jī)編程語(yǔ)言。此命名起源于一個(gè)腳本“screenplay”,每次運(yùn)行都會(huì)使對(duì)話框逐字重復(fù)。[1]
早期的腳本語(yǔ)言經(jīng)常被稱(chēng)為批量處理語(yǔ)言或工作控制語(yǔ)言。一個(gè)腳本通常是解釋運(yùn)行而非編譯。
雖然許多腳本語(yǔ)言都超越了計(jì)算機(jī)簡(jiǎn)單任務(wù)自動(dòng)化的領(lǐng)域,成熟到可以編寫(xiě)精巧的程序,但仍然還是被稱(chēng)為腳本。幾乎所有計(jì)算機(jī)系統(tǒng)的各個(gè)層次都有一種腳本語(yǔ)言。包括操作系統(tǒng)層,如計(jì)算機(jī)游戲,網(wǎng)絡(luò)應(yīng)用程序,字處理文檔,網(wǎng)絡(luò)軟件等。在許多方面,高級(jí)編程語(yǔ)言和腳本語(yǔ)言之間互相交叉,二者之間沒(méi)有明確的界限。
腳本編程速度更快,且腳本文件明顯小于如同類(lèi)C程序文件。這種靈活性是以執(zhí)行效率為代價(jià)的。腳本通常是解釋執(zhí)行的,速度可能很慢,且運(yùn)行時(shí)更耗內(nèi)存。在很多案例中,如編寫(xiě)一些數(shù)十行的小腳本,它所帶來(lái)的編寫(xiě)優(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描述的指令稱(chēng)為機(jī)器指令,全部機(jī)器指令的集合構(gòu)成計(jì)算機(jī)的機(jī)器語(yǔ)言,用機(jī)器語(yǔ)言編程的程序稱(chēng)為目標(biāo)程序。只有目標(biāo)程序才能被計(jì)算機(jī)直接識(shí)別和執(zhí)行。但是機(jī)器語(yǔ)言編寫(xiě)的程序無(wú)明顯特征,難以記憶,不便閱讀和書(shū)寫(xiě),且依賴于具體機(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é),編程者也就不需要有太多的專(zhuān)業(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)換方式可將它們分為兩類(lèi):
解釋類(lèi):執(zhí)行方式類(lèi)似于我們?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ǔ)言。
編譯類(lèi):編譯是指在應(yīng)用源程序執(zhí)行之前,就將程序源代碼“翻譯”成目標(biāo)代碼(機(jī)器語(yǔ)言),因此其目標(biāo)程序可以脫離其語(yǔ)言環(huán)境獨(dú)立執(zhí)行,使用比較方便、效率較高。但應(yīng)用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標(biāo)文件(* .obj,也就是OBJ文件)才能執(zhí)行,只有目標(biāo)文件而沒(méi)有源代碼,修改很不方便。
常見(jiàn)語(yǔ)言
C#
C#是微軟公司發(fā)布的一種面向?qū)ο蟮摹⑦\(yùn)行于.NET Framework之上的高級(jí)程序設(shè)計(jì)語(yǔ)言。C#是微軟公司研究員Anders Hejlsberg的最新成果。Csharp(音標(biāo) [∫a:p])(又被簡(jiǎn)稱(chēng)為“C#”)是微軟公司在2000年6月發(fā)布的一種新的編程語(yǔ)言,并定于在微軟職業(yè)開(kāi)發(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ǔ)言開(kāi)發(fā)大型應(yīng)用程序的時(shí)候所需的知識(shí)(或者對(duì)這種知識(shí)的缺乏程度)來(lái)結(jié)束本文,而這正是.NET和C#的一個(gè)主要戰(zhàn)略。以及Windows 2000的一個(gè)“d預(yù)覽版本”,還有MSDN上迅速增多的文檔集子的形式獲得(還沒(méi)有最終定型)。
Basic
BASIC(Beginners‘ All-purpose Symbolic Instruction Code,又譯培基),意思就是“初學(xué)者的全方位符式指令代碼”,是一種設(shè)計(jì)給初學(xué)者使用的程序設(shè)計(jì)語(yǔ)言。BASIC是一種直譯式的編程語(yǔ)言,在完成編寫(xiě)后不須經(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),層次分明,程序易寫(xiě),具有很強(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ǔ)言,編寫(xiě)系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語(yǔ)言,編寫(xiě)不依賴計(jì)算機(jī)硬件的應(yīng)用程序。它的應(yīng)用范圍廣泛,具備很強(qiáng)的數(shù)據(jù)處理能力,不僅僅是在軟件開(kāi)發(fā)上,而且各類(lèi)科研都需要用到C語(yǔ)言,適于編寫(xiě)系統(tǒng)軟件,三維,二維圖形和動(dòng)畫(huà),具體應(yīng)用比如單片機(jī)以及嵌入式系統(tǒng)開(kāi)發(fā)。
C++
C++這個(gè)詞在中國(guó)大陸的程序員圈子中通常被讀做“C加加”,而西方的程序員通常讀做“C plus plus”,“CPP”。 它是一種使用非常廣泛的計(jì)算機(jī)編程語(yǔ)言。C++是一種靜態(tài)數(shù)據(jù)類(lèi)型檢查的、支持多重編程范式的通用程序設(shè)計(jì)語(yǔ)言。它支持過(guò)程化程序設(shè)計(jì)、數(shù)據(jù)抽象、面向?qū)ο蟪绦蛟O(shè)計(jì)、泛型程序設(shè)計(jì)等多種程序設(shè)計(jì)風(fēng)格。
JAVA
Java是一種可以撰寫(xiě)跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,是由Sun Microsystems公司于1995年5月推出的Java程序設(shè)計(jì)語(yǔ)言和Java平臺(tái)(即JavaSE, JavaEE, JavaME)的總稱(chēng)。Java 技術(shù)具有卓越的通用性、高效性、平臺(tái)移植性和安全性,廣泛應(yīng)用于個(gè)人PC、數(shù)據(jù)中心、游戲控制臺(tái)、科學(xué)超級(jí)計(jì)算機(jī)、移動(dòng)電話和互聯(lián)網(wǎng),同時(shí)擁有全球最大的開(kāi)發(fā)者專(zhuān)業(yè)社群。在全球云計(jì)算和移動(dòng)互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java更具備了顯著優(yōu)勢(shì)和廣闊前景。
AAuto
AAuto是專(zhuān)用于桌面軟件快速開(kāi)發(fā)的新一代混合型編程語(yǔ)言 - 具有動(dòng)態(tài)語(yǔ)言輕便、靈活、快速開(kāi)發(fā)的特性,而且又可以同時(shí)支持靜態(tài)類(lèi)型開(kā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//定義類(lèi)
classPOINT{ //類(lèi)點(diǎn)
intx;inty;//“整數(shù)”類(lèi)型x;“整數(shù)”類(lèi)型y
func=function(){ //函數(shù)=函數(shù)()
//動(dòng)態(tài)類(lèi)型
}
}
這種全新的混合編程語(yǔ)言開(kāi)創(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)( 開(kāi)放源碼 )?;旌闲驼Z(yǔ)言讓我們可以體驗(yàn)到激動(dòng)人心的全新編程方式。
AAuto可以將硬盤(pán)目錄,硬盤(pán)文件一鍵嵌入EXE文件,將全部程序包含所有資源生成獨(dú)立的綠色EXE文件,所有文件讀寫(xiě)的相關(guān)函數(shù)自動(dòng)支持,無(wú)需更改代碼,AAuto制作的程序不需要安裝程序,也不需要釋放DLL運(yùn)行庫(kù),AAuto制作的程序都是免安裝綠色軟件。
AAuto屬于類(lèi)C系語(yǔ)言、并且可以自定義一套自己的語(yǔ)法。AAuto在語(yǔ)法風(fēng)格接近流行類(lèi)C系語(yǔ)言。有其他語(yǔ)言基礎(chǔ)的可以輕松上手,學(xué)習(xí)AAuto以后學(xué)習(xí)其他編程語(yǔ)言更可事半功倍。
AAuto支持多線程開(kāi)發(fā),復(fù)雜的多線程開(kāi)發(fā)在AAuto中變得非常簡(jiǎn)單,標(biāo)準(zhǔn)庫(kù)也提供大量簡(jiǎn)化多線程開(kāi)發(fā)的輔助支持庫(kù),為多線程軟件開(kāi)發(fā)帶來(lái)很大的方便(請(qǐng)參考快手范例 -》 多線程 )。
AAuto的標(biāo)準(zhǔn)庫(kù)基本使用純AAuto源碼實(shí)現(xiàn),并且全部開(kāi)源,標(biāo)準(zhǔn)庫(kù)提供了大量的簡(jiǎn)化編程的常用函數(shù),涉及到軟件開(kāi)發(fā)的方方面面,極大的簡(jiǎn)化了桌面軟件開(kāi)發(fā)過(guò)程。
AAuto提供web.form支持庫(kù)( 開(kāi)源 ),可以創(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)開(kāi)發(fā)技術(shù)?!×硗?,AAuto提供了web.layout支持庫(kù),封裝了輕量快速的界面引擎HTMLayout,可以使用傳統(tǒng)的HTML,CSS技術(shù),更加方便的實(shí)現(xiàn)漂亮的界面,而且運(yùn)行,響應(yīng)速度極快,官方也提供了大量HTMLayout的范例,教程?!∈褂肁Auto開(kāi)發(fā)傳統(tǒng)界面也非常的方便,AAuto提供可視化開(kāi)發(fā)工具,可以象VB一樣(實(shí)際上比VB更簡(jiǎn)單)的通過(guò)拖拉控件創(chuàng)建程序。
哪些語(yǔ)言比 C 更適合編程入門(mén)
覺(jué)得曾文正公說(shuō)的好,凡是你做起來(lái)心有余力的事,你都能做好;要想在一個(gè)領(lǐng)域里做什么事都能心有余力甚至游刃有余,你最好能對(duì)這個(gè)領(lǐng)域有一個(gè)系統(tǒng)性的思考,怎樣能有一個(gè)系統(tǒng)性的思考?你必須經(jīng)歷足夠多的事情,思考足夠多的問(wèn)題,戰(zhàn)勝足夠多的困難,那么在這個(gè)過(guò)程中有一個(gè)順手的工具將是起關(guān)鍵性作用的。為什么我們對(duì)一些事能夠堅(jiān)持下去,對(duì)另外一些事卻不能?除了興趣而外,我們?cè)诔跏茧A段的情況也起重要的作用。
回到樓主的問(wèn)題,我們好多學(xué)計(jì)算機(jī)的人總是很難認(rèn)清楚計(jì)算機(jī)的本質(zhì)是什么,個(gè)人感覺(jué)這是和中國(guó)的計(jì)算機(jī)教育有關(guān),和我們自己努不努力關(guān)系反而不大。以我個(gè)人為例,從學(xué)校到工作崗位,一直對(duì)自己都不太自信,因?yàn)榭傆幸粋€(gè)問(wèn)題困擾我,就是遇到一個(gè)實(shí)際問(wèn)題之后,總是沒(méi)有很好的思路,總是不能夠迅速把問(wèn)題分解。一開(kāi)始,以為自己經(jīng)驗(yàn)不足,對(duì)面向?qū)ο蟮乃枷虢佑|太少,但發(fā)現(xiàn)諸如設(shè)計(jì)模式一類(lèi)的書(shū)看過(guò)還不如不看,并不能讓自己思路清晰。這個(gè)問(wèn)題困惑我好久,還有一個(gè)問(wèn)題,一些人望而生畏的內(nèi)核源碼,匯編語(yǔ)言,我卻能甘之如飴,我也同樣不理解別人為什么那么懼怕這些東西。想了好久,觀察了好久,才發(fā)現(xiàn)一些人搞不好計(jì)算機(jī)是因?yàn)椴慌?,另一些人搞不好?jì)算機(jī)是因?yàn)闆](méi)有找到方向,沒(méi)有好的工具幫他去抓住計(jì)算機(jī)的本質(zhì)。而我屬于后者,為什么我會(huì)有這樣的情況出現(xiàn),因?yàn)槲覐膩?lái)不喜歡遞歸,學(xué)數(shù)據(jù)結(jié)構(gòu)的時(shí)候接觸過(guò)遞歸,但卻被教導(dǎo)遞歸是一個(gè)沒(méi)有效率的東西,于是以為遞歸是一個(gè)壞東西。這種偏見(jiàn)持續(xù)很多年,殊不知用遞歸來(lái)執(zhí)行計(jì)算機(jī)程序沒(méi)有效率,卻不意味著用遞歸來(lái)思考問(wèn)題也沒(méi)有效率。
計(jì)算機(jī)的本質(zhì)是什么?我覺(jué)得一個(gè)叫周思博的大牛說(shuō)的非常好,總共只有三樣?xùn)|西:指針,遞歸和lambda演算,指針在操作系統(tǒng)中起決定性的作用,操作系統(tǒng)通過(guò)指針把一切管理的井井有條;
遞歸是證明和算法的核心,而證明和使用算法解決問(wèn)題是我們發(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è)大舌頭,一句話就開(kāi)始兩個(gè)字能聽(tīng)清,而且這個(gè)老師不怎么負(fù)責(zé),什么都敷衍。而我們當(dāng)時(shí)也沒(méi)有程序設(shè)計(jì)語(yǔ)言這門(mén)課,沒(méi)有講過(guò)程序設(shè)計(jì)語(yǔ)言是怎么回事,于是整整一學(xué)期,就搞明白了C語(yǔ)言中“=”是一個(gè)賦值號(hào),而不是數(shù)學(xué)中的等號(hào)。對(duì)C語(yǔ)言稍微有一點(diǎn)認(rèn)識(shí),是從學(xué)Java開(kāi)始的,因?yàn)镴ava老師講話清晰,教學(xué)也比較認(rèn)真,中規(guī)中矩學(xué)了一個(gè)學(xué)期,才算開(kāi)始練習(xí)編程。而整個(gè)本科階段,自己算是連計(jì)算機(jī)的邊都沒(méi)摸到,因?yàn)橛刑嗟囊苫笈c不理解,相對(duì)而言我覺(jué)得數(shù)學(xué)還簡(jiǎn)單一些。
講這么多,我只是想說(shuō)明一個(gè)道理,找到一個(gè)正確的路徑很重要。我通過(guò)Java來(lái)理解C,你感覺(jué)是不是很好笑?但如果我學(xué)過(guò)程序語(yǔ)言原理的話就不會(huì)如此,如果更幸運(yùn)地學(xué)過(guò)SICP的話,我也許在本科階段就能夠?qū)τ?jì)算機(jī)入門(mén)。所以,想這樣回答樓主的問(wèn)題,你覺(jué)得C語(yǔ)言無(wú)聊是什么原因覺(jué)得無(wú)聊?如果你是遇到了困難,想偷懶,想繞過(guò),而推脫到C語(yǔ)言身上,那這就是一個(gè)心理問(wèn)題,你不應(yīng)該放棄,C語(yǔ)言已經(jīng)夠簡(jiǎn)單了,你也付出了初始階段的努力,現(xiàn)在的問(wèn)題是幫助你突破瓶頸的,你換一個(gè)語(yǔ)言還要從頭再來(lái)。而如果你是覺(jué)得C語(yǔ)言不能表達(dá)你的思想,那你可以嘗試換一下,向SICP里那樣使用函數(shù)式語(yǔ)言。
京東金融APP的鴻蒙之旅系列專(zhuān)題 鴻蒙新特性篇:Hello, 倉(cāng)頡 World
作者:京東科技 楊拓 一、倉(cāng)頡介紹 倉(cāng)頡是一種通用編程語(yǔ)言,適用于各種應(yīng)用開(kāi)發(fā),兼顧開(kāi)發(fā)效率和運(yùn)行性能,其優(yōu)勢(shì)如下: 1、高效編程:語(yǔ)法簡(jiǎn)明高效,支持多...
在Python編程語(yǔ)言中,邏輯異或運(yùn)算符并不直接作為一個(gè)內(nèi)置的操作符存在,因?yàn)镻ython更側(cè)重于高級(jí)編程和可讀性,并沒(méi)有直接提供異或運(yùn)算符的簡(jiǎn)寫(xiě)形式用...
串口屏支持哪些編程語(yǔ)言和開(kāi)發(fā)環(huán)境?
串口屏作為一種常用的顯示和交互設(shè)備,支持多種編程語(yǔ)言和開(kāi)發(fā)環(huán)境。以下是對(duì)串口屏支持的編程語(yǔ)言和開(kāi)發(fā)環(huán)境的詳細(xì)歸納:
樹(shù)莓派開(kāi)發(fā)的最佳編程語(yǔ)言選擇
樹(shù)莓派(Raspberry Pi)是一款由英國(guó)樹(shù)莓派基金會(huì)開(kāi)發(fā)的信用卡大小的單板計(jì)算機(jī),它以其低成本、易于編程和靈活性而受到廣泛歡迎。樹(shù)莓派可以用于各種...
2024-11-11 標(biāo)簽:計(jì)算機(jī)編程語(yǔ)言GPIO 426 0
C語(yǔ)言作為一種歷史悠久的編程語(yǔ)言,自其誕生以來(lái),一直在軟件開(kāi)發(fā)領(lǐng)域扮演著重要角色。它以其高效、靈活和可移植性強(qiáng)的特點(diǎn),成為了系統(tǒng)級(jí)編程的首選語(yǔ)言之一。
gawk程序是Unix中原始awk程序的GNU版本。gawk程序讓流編輯器邁上了一個(gè)新的臺(tái)階,它提供了一種編程語(yǔ)言而不只是編輯器命令。
Orin是一款高度集成、高性能的車(chē)載計(jì)算平臺(tái),由英偉達(dá)推出,并采用了英偉達(dá)自家的Volta架構(gòu)GPU和其他高級(jí)處理器技術(shù)。關(guān)于Orin芯片的編程語(yǔ)言支持...
FPGA(現(xiàn)場(chǎng)可編程邏輯門(mén)陣列)的編程涉及特定的硬件描述語(yǔ)言(HDL),其中Verilog和VHDL是最常用的兩種。以下是一個(gè)FPGA編程語(yǔ)言(以Ver...
Python作為一種高級(jí)編程語(yǔ)言,提供了多種并發(fā)編程的方式,其中多線程與多進(jìn)程是最常見(jiàn)的兩種方式之一。在本文中,我們將探討Python中多線程與多進(jìn)程的...
PLC(可編程邏輯控制器)的基本指令是PLC編程語(yǔ)言的基本元素,用于描述PLC如何根據(jù)輸入信號(hào)的狀態(tài)控制輸出信號(hào)的變化,從而實(shí)現(xiàn)對(duì)機(jī)械設(shè)備的控制。PLC...
C語(yǔ)言嵌入式系統(tǒng)編程修煉之一:背景篇立即下載
類(lèi)別:電子資料 2023-11-17 標(biāo)簽:嵌入式系統(tǒng)C語(yǔ)言編程語(yǔ)言
西門(mén)子PLC培訓(xùn)教程 ppt課件立即下載
類(lèi)別:工控技術(shù) 2023-06-28 標(biāo)簽:plc編程語(yǔ)言西門(mén)子PLC
基于TCPIP網(wǎng)絡(luò)的遠(yuǎn)程智能物聯(lián)網(wǎng)系統(tǒng)立即下載
類(lèi)別:物聯(lián)網(wǎng) 2023-05-11 標(biāo)簽:物聯(lián)網(wǎng)虛擬儀器TCP
西門(mén)子PLC的幾種編程語(yǔ)言簡(jiǎn)單介紹立即下載
類(lèi)別:電子資料 2023-04-19 標(biāo)簽:編程語(yǔ)言梯形圖西門(mén)子PLC
哪種編程語(yǔ)言將在AI時(shí)代占據(jù)主流地位?
? ? ? ?在探討未來(lái)哪種編程語(yǔ)言將在AI時(shí)代占據(jù)主流地位時(shí),我們需要回顧歷史,審視當(dāng)前趨勢(shì),并預(yù)測(cè)未來(lái)技術(shù)的發(fā)展方向。AI(人工智能)技術(shù)的快速發(fā)展...
上位機(jī)編程語(yǔ)言選擇 上位機(jī)在自動(dòng)化中的作用
上位機(jī)編程語(yǔ)言選擇 在自動(dòng)化領(lǐng)域,上位機(jī)(Upper Computer)通常指的是與下位機(jī)(如PLC、單片機(jī)等)進(jìn)行通信的計(jì)算機(jī)系統(tǒng)。上位機(jī)在自動(dòng)化系統(tǒng)...
串口通信的開(kāi)發(fā)環(huán)境配置涉及多個(gè)方面,包括選擇編程語(yǔ)言、安裝必要的庫(kù)或驅(qū)動(dòng)程序、配置串口參數(shù)等。以下是一個(gè)基于Python的串口通信開(kāi)發(fā)環(huán)境配置的步驟: ...
2024-11-22 標(biāo)簽:驅(qū)動(dòng)程序編程語(yǔ)言串口通信 244 0
在當(dāng)今這個(gè)技術(shù)日新月異的時(shí)代,編程語(yǔ)言的選擇對(duì)于軟件開(kāi)發(fā)者來(lái)說(shuō)至關(guān)重要。不同的編程語(yǔ)言有著不同的優(yōu)勢(shì)和適用場(chǎng)景,因此,選擇合適的編程語(yǔ)言不僅能夠提高開(kāi)發(fā)...
2024-11-15 標(biāo)簽:軟件開(kāi)發(fā)編程語(yǔ)言C++ 288 0
編程語(yǔ)言的誤區(qū)與常見(jiàn)問(wèn)題
誤區(qū)一:編程語(yǔ)言的選擇 常見(jiàn)問(wèn)題: 初學(xué)者在選擇編程語(yǔ)言時(shí),往往會(huì)被市場(chǎng)上的熱門(mén)語(yǔ)言所吸引,而忽視了自己的實(shí)際需求和興趣。 一些開(kāi)發(fā)者認(rèn)為某種編程語(yǔ)言是...
2024-11-15 標(biāo)簽:編程語(yǔ)言數(shù)據(jù)結(jié)構(gòu)javascript 268 0
人工智能(AI)是計(jì)算機(jī)科學(xué)的一個(gè)分支,它旨在創(chuàng)建能夠執(zhí)行通常需要人類(lèi)智能的任務(wù)的機(jī)器。隨著技術(shù)的進(jìn)步,AI已經(jīng)滲透到我們生活的方方面面,從自動(dòng)駕駛汽車(chē)...
2024-11-15 標(biāo)簽:編程語(yǔ)言人工智能自動(dòng)駕駛 265 0
Python與Java都是目前非常流行的編程語(yǔ)言,它們各有其獨(dú)特的優(yōu)勢(shì)和適用場(chǎng)景。以下是對(duì)這兩種編程語(yǔ)言的對(duì)比: 一、語(yǔ)法和易用性 Python 語(yǔ)法簡(jiǎn)...
NPU(Neural Processing Unit)是一種專(zhuān)門(mén)為深度學(xué)習(xí)和人工智能應(yīng)用設(shè)計(jì)的處理器。NPU支持的編程語(yǔ)言通常與它所集成的平臺(tái)或框架緊密...
2024-11-15 標(biāo)簽:編程語(yǔ)言人工智能深度學(xué)習(xí) 602 0
在現(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)化 277 0
隨著物聯(lián)網(wǎng)(IoT)和智能設(shè)備的發(fā)展,ARM開(kāi)發(fā)板因其低功耗、高性能和靈活性而受到開(kāi)發(fā)者的青睞。 C語(yǔ)言 C語(yǔ)言是一種高效、靈活的編程語(yǔ)言,廣泛應(yīng)用于嵌...
2024-11-05 標(biāo)簽:物聯(lián)網(wǎng)硬件編程語(yǔ)言 330 0
編輯推薦廠商產(chǎn)品技術(shù)軟件/工具OS/語(yǔ)言教程專(zhuān)題
電機(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ī)器視覺(jué) | 無(wú)人機(jī) | 三菱電機(jī) | ST |
伺服電機(jī) | SVPWM | 光伏發(fā)電 | UPS | AR | 智能電網(wǎng) | 國(guó)民技術(shù) | Microchip |
Arduino | BeagleBone | 樹(shù)莓派 | 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 |