完善資料讓更多小伙伴認(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ě),且依賴(lài)于具體機(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ě)不依賴(lài)計(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)放源碼 )。混合型語(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的范例,教程。 使用AAuto開(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ǔ)言。
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),是用來(lái)定義計(jì)算機(jī)程序的形式語(yǔ)言。它是一種被標(biāo)準(zhǔn)化的交流技巧,用來(lái)向計(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ì)排名,越來(lái)越多的公司對(duì)掌握 Python 技能的開(kāi)發(fā)者感興趣。同時(shí)從關(guān)注編程語(yǔ)言流行度的 PYPL 排行榜來(lái)...
Julia真有這么神?你做好學(xué)習(xí)一門(mén)新編程語(yǔ)言的準(zhǔn)備了嗎?
我們想要一種擁有自由許可的開(kāi)源語(yǔ)言。我們想要它擁有 C 的速度與 Ruby 的靈活。它要容易理解,像 Lisp 一樣真正地支持宏,但也要有像 Matla...
2018-08-13 標(biāo)簽:c語(yǔ)言編程語(yǔ)言機(jī)器學(xué)習(xí) 3.7萬(wàn) 0
最難的5種編程語(yǔ)言盤(pán)點(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)來(lái)描述機(jī)器人動(dòng)作的方法...
LabVIEW的優(yōu)勢(shì)體現(xiàn)在以下幾個(gè)方面
LabVIEW提供了無(wú)比強(qiáng)大的分析、處理VI庫(kù)及許多專(zhuān)業(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)演變而來(lái)的,具有形象、直觀、實(shí)用等特點(diǎn),電氣技術(shù)人員容易接受,是目前...
分享幾個(gè)根據(jù)源代碼自動(dòng)畫(huà)流程圖的工具軟件
小伙伴們平時(shí)閱讀別人的代碼,或者編寫(xiě)技術(shù)文檔時(shí),經(jīng)常需要畫(huà)流程圖,如果有工具軟件能夠根據(jù)源代碼自動(dòng)繪制流程圖,那將極大提升我們的效率。接下來(lái),就介紹幾款...
麒麟 990 系列揭秘:突破物理極限的第二代 7nm 工藝立即下載
類(lèi)別:單片機(jī) 2021-12-22 標(biāo)簽:芯片單片機(jī)物聯(lián)網(wǎng)
STM32定時(shí)器三種中心對(duì)齊計(jì)數(shù)模式簡(jiǎn)介立即下載
類(lèi)別:單片機(jī) 2021-12-08 標(biāo)簽:編程語(yǔ)言人工智能javascript
單片機(jī)AT89C51--6.數(shù)碼管顯示(含動(dòng)態(tài),靜態(tài))立即下載
類(lèi)別:單片機(jī) 2021-11-25 標(biāo)簽:單片機(jī)編程語(yǔ)言89C51單片機(jī)
如何無(wú)壓力入門(mén)C語(yǔ)言,c語(yǔ)言入門(mén)經(jīng)典資料免費(fèi)下載立即下載
類(lèi)別:C語(yǔ)言|源代碼 2018-07-12 標(biāo)簽:C語(yǔ)言編程語(yǔ)言
可以在Arduino Playground上找到有關(guān)通過(guò)pySerial向Arduino讀寫(xiě)數(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)稱(chēng),和Mathematica、Maple并稱(chēng)為三大數(shù)學(xué)軟件。它在數(shù)學(xué)類(lèi)科技應(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年熱門(mén)編程語(yǔ)言排行榜,你的語(yǔ)言上榜沒(méi)?
我們?cè)L問(wèn)了幾個(gè)可信度較高的語(yǔ)言索引網(wǎng)站,同時(shí)還深入到 Indeed 和 Glassdoor 等全球門(mén)戶(hù)網(wǎng)站,試圖收集數(shù)據(jù),以總結(jié)出全球最受歡迎的語(yǔ)言是哪...
matlab怎樣編寫(xiě)函數(shù)并調(diào)用函數(shù)
MATLAB和Mathematica、Maple并稱(chēng)為三大數(shù)學(xué)軟件。它在數(shù)學(xué)類(lèi)科技應(yīng)用軟件中在數(shù)值計(jì)算方面首屈一指。MATLAB可以進(jìn)行矩陣運(yùn)算、繪制函...
強(qiáng)類(lèi)型和弱類(lèi)型的語(yǔ)言有什么區(qū)別
強(qiáng)類(lèi)型語(yǔ)言也稱(chēng)為強(qiáng)類(lèi)型定義語(yǔ)言。是一種總是強(qiáng)制類(lèi)型定義的語(yǔ)言,要求變量的使用要嚴(yán)格符合定義,所有變量都必須先定義后使用。弱類(lèi)型語(yǔ)言也稱(chēng)為弱類(lèi)型定義語(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)份額來(lái)說(shuō)安卓的占有率是極高的高達(dá)80%,而蘋(píng)果才20%。(2018年數(shù)據(jù))...
單片機(jī)屬于什么專(zhuān)業(yè)_學(xué)單片機(jī)需要什么基礎(chǔ)知識(shí)
單片機(jī)(Microcontroller)屬于電子工程專(zhuān)業(yè)。它是一種集成了微處理器核心、存儲(chǔ)器、輸入輸出端口和各種外圍設(shè)備接口的微型計(jì)算機(jī)系統(tǒng),常用于各種...
編輯推薦廠商產(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 |