✔ 最佳答案
程式語言(programming language),又稱程式設計語言(program design language,簡稱PDL),是一組用來定義電腦程式的語法規則。它是一種被標準化的交流技巧,用來向電腦發出指令。一種電腦語言讓程式設計師能夠準確地定義電腦所需要使用的資料,並精確地定義在不同情況下所應當採取的行動。
概論程式語言原本是被設計成專門使用在電腦上的,但它們也可以用來定義算法或者資料結構。正是因為如此,程式設計師才會試圖使程式代碼更容易閱讀。程式語言往往使程式設計師能夠比使用機器語言更準確地表達他們所想表達的目的。對那些從事電腦科學的人來說,懂得程式語言是十分重要的,因為在當今所有的計算都需要程式語言才能完成。在過去的幾十年間,大量的程式語言被發明、被取代、被修改或組合在一起。儘管人們多次試圖創造一種通用的程式語言,卻沒有一次嘗試是成功的。之所以有那麼多種不同的程式語言存在的原因是,編寫程式的初衷其實也各不相同;新手與老手之間技術的差距非常大,而且有許多語言對新手來說太難學;還有,不同程式之間的運行成本(runtime cost)各不相同。有許多用於特殊用途的語言,只在特殊情況下使用。例如,PHP專門用來顯示網頁;Perl更適合文字處理;C語言被廣泛用於作業系統和編譯器的開發(所謂的系統編程)。高階語言的出現使得電腦程式語言不再過度地倚賴某種特定的機器或環境。這是因為高階語言在不同的平台上會被編譯成不同的機器語言,而不是直接被機器執行。最早出現的程式語言之一FORTRAN的一個主要標的,就是實作平台獨立。雖然大多數的語言可以既可被編譯(compiled)又可被解譯(interpreted),但大多數僅在一種情況下能夠良好運行。在一些編程系統中,程式要經過幾個階段的編譯,一般而言,後階段的編譯往往更接近機器語言。這種常用的使用技巧最早在1960年代末用於BCPL,編譯程式先編譯一個叫做「0代碼」的轉換程式(representation),然後再使用虛擬器轉換到可以運行於機器上的真實代碼。這種成功的技巧之後又用於Pascal和P-code,以及Smalltalk和二進制碼,雖然在很多時候,中間過渡的代碼往往是解譯,而不是編譯的。如果所使用的翻譯的機制是將所要翻譯的程式代碼作為一個整體翻譯,並之後運行內部格式,那麼這個翻譯過程就被成為編譯。因此,一個編譯器是一個將人可閱讀的程式文字(叫做原始碼)作為輸入的資料,然後輸出執行檔(object code)。所輸出的執行檔可以是機器語言,由電腦的中央處理器直接運行,或者是某種模擬器的二進制代碼。如果程式代碼是在運行時才即時翻譯,那麼這種翻譯機制就被稱作解譯。經解譯的程式運行速度往往比編譯的程式慢,但往往更具靈活性,因為它們能夠與執行環境互相作用。
特點每一種程式語言可以被看作是一套包含語法、詞彙和含義的正式規範。這些規範通常包括:資料和資料結構 指令及流程控制 參照機制和重用 設計哲學 程式語言不成文規定:識別字(Identifier)命名常規 大多數被廣泛使用或經久不衰的語言,擁有負責標準化的組織,經常會晤來創造及發佈該語言的正式定義,並討論擴充功能或貫徹現有的定義。
圖片參考:
http://imgcld.yimg.com/8/n/HA00607298/o/701108120098213873441830.jpg
Home screen displayed by Samsung Nexus S with Google, running Android 2.3 "Gingerbread"
圖片參考:
http://imgcld.yimg.com/8/n/HA00607298/o/701108120098213873441831.jpg
The Android Emulator default home screen (v1.5).
程式語言
Android是執行於Linux kernel之上,但並不是GNU/Linux。因為在一般GNU/Linux裏支援的功能,Android大都沒有支援,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic取代Glibc、以Skia取代Cairo、再以opencore取代FFmpeg等等。Android為了達到商業應用,必須移除被GNU GPL授權證所約束的部份,例如Android將驅動程式移到userspace,使得Linux driver與Linux kernel徹底分開。bionic/libc/kernel/ 並非標準的kernel header files。Android的kernel header是利用工具由Linux kernel header所產生的,這樣做是為了保留常數、資料結構與巨集。
圖片參考:
http://imgcld.yimg.com/8/n/HA00607298/o/701108120098213873441842.jpg
參考: 目前Android的Linux kernel控制包括安全,記憶體管理,行程管理,網絡堆疊,驅動程式模型等。下載Android源碼之前,先要安裝其構建工具Repo來初始化源碼。Repo是Android用來輔助Git工作的一個工具。