編程語言

解析

  • 全部機器都有一張操做命令清單,你能夠控制它,比如電水壺的開和關,這種操做命令的總和就是計算機的機器語言(machine language)
  • 機器語言中加法命令多是11001101,彙編語言把它改爲了add,它們只能讓計算機作簡單的事。一個操做所須要的代碼越多,越不免出現bug,也越南發現它們
  • 高級語言,簡便了編程。高級語言還有一個優勢,它使得程序具備可移植性,面對不一樣計算機的機器語言並不是徹底相同,重寫編譯器,可以使得高級語言程序通用
  • 編譯器,自己就是一個程序,將簡便方式書寫的程序轉變成硬件能夠理解的語言。
  • 解釋器,實時地將代碼解釋爲響應的機器語言,而後一行行運行。編譯器,一般是將整個程序所有翻譯成機器語言,而後在運行。
  • 編譯器處理的語言代碼叫源碼,翻譯以後產生的機器代碼叫目標代碼。顧客購買的軟件每每是目標代碼,難懂,至關於加密。
  • C語言是一種低層次語言,接近硬件,堪稱可移植的彙編語言。低層次語言效率更高,大多數OS使用C編寫的,因爲硬件愈來愈快,使用低層次語言的需求正在減小。
  • 靜態類型語言和動態類型語言,變量類型是否必須明確,哪一個好,值得討論。
  • 如今好像每隔一段時間就能聽到一種新出現的語言,這是編程語言的戰爭也是編程語言的文藝復興,並不矛盾,文藝復興時期就是存在不少戰爭的。不少歷史學家認爲戰爭是文藝復興的副產品。當時,歐洲活力旺盛可能就是由於它分紅許多互相競爭的小國,它們互相毗鄰,因此思想能夠傳遞,可是它們又相互獨立,使得獨裁沒法遏制創新的發展。中國古代,顯然是獨裁,遏制發展。
    咱們應該慶幸,活在一個編程語言的文藝復興時代.

編譯型語言

C、C++,編譯器->本地機器代碼java

解釋型語言

javaScript/shell/python,經過解釋器執行python

java經過JVM執行,有點兼顧,或者叫虛擬機語言吧shell

區別(python/java)

python java java(JIT)
python解釋器 java編譯器 java編譯器
- JVM JVM
- 解釋器 -
C C++ -
C編譯器 C++編譯器 JIT編譯器

-----------彙編語言-------------
------------彙編器--------------
-----------機器語言-------------
-------------硬件--------------編程

JIT:just in time compiler,即時編譯,JIT試運行時環境的一部分,它把解釋型語言的可執行文件程序集轉換到原生可執行代碼.jvm


java源碼級編譯器:

源代碼
詞法分析器
Token流
語法分析器
語法樹(抽象)
語義分析器
註解抽象語法樹
字節碼生成器
JVM字節碼(class文件)編程語言

JVM Execution Engine:

JVM字節碼(class文件)
JIT編譯器 字節碼解釋器優化

JIT編譯器

機器無關優化
中間代碼
機器相關優化
中間代碼
寄存器分配器
中間代碼
目標代碼生成器
目標代碼加密

相關文章
相關標籤/搜索