python语言的解释性特点指的是编写的程序不需要编译_解释性与编译型 Python2和python3的区别...
一 基礎:
1.解釋型語言與編譯型語言的區別
首先,我們編程都是用的高級語言(寫匯編和機器語言的大牛除外),計算機不能直接理解高級語言,只能理解和運行機器語言,所以必須要把高級語言翻譯成機器語言,計算機才能運行高級語言所編寫的程序,
說到翻譯其實有兩種:解釋和編譯,兩種翻譯的時間不同而已.
用編譯性語言寫的程序執行之前,需要一個專門的編譯過程,通過編譯系統(不僅僅只是通過編譯器.編譯器只是編譯系統的一部分)把高級語言翻譯成機器語言,把源高級語言程序編譯成機器語言文件,比如windows的exe文件.以后直接運行就可以了,不需要在編譯le,因為翻譯只做了一次,運行時不需要翻譯,所以編程語言的程序執行效率高,但也不能一概而論,
部分解釋性語言的解釋器通過在運行時動態優化代碼,甚至超過編譯型語言.
(1)解釋型語言
解釋則不同,解釋型語言編寫的程序不需要編譯。解釋型語言在運行的時候才翻譯,比如VB語言,在執行的時候,專門有一個解釋器能夠將VB語言翻譯成機器語言,每個語句都是執行的時候才翻譯。這樣解釋型語言每執行一次就要翻譯一次,效率比較低 .
2.二者的利弊
編譯型與解釋型,兩者各有利弊。前者由于程序執行速度快,同等條件下對系統要求較低,因此像開發操作系統、大型應用程序、數據庫系統等時都采用它,像C/C++、Pascal/Object Pascal(Delphi)等都是編譯語言,而一些網頁腳本、服務器腳本及輔助開發接口這樣的對速度要求不高、對不同系統平臺間的兼容性有一定要求的程序則通常使用解釋性語言,如JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。 ? ? ?但隨著硬件的升級和設計思想的變革,編譯型和解釋型語言越來越籠統,主要體現在一些新興的高級語言上,而解釋型語言的自身特點也使得編譯器廠商愿意花費更多成本來優化解釋器,解釋型語言性能超過編譯型語言也是必然的。
3.java和c#
JAVA語言是一種編譯-解釋型語言,同時具備編譯特性和解釋的(其實,確切的說java就是解釋性語言,其所謂編譯過程是將.java文件編譯成平臺無關的字節碼.class文件,并不是向C一樣編譯成可執行文件的機器語言,作為編譯型語言,JAVA程序要被統一編譯成字節碼文件——文件后綴是class。此種文件在java中又稱為類文件。java類文件不能再計算機上直接執行,它需要被java虛擬機翻譯成本地的機器碼后才能執行,而java虛擬機的翻譯過程則是解釋性的。java字節碼文件首先被加載到計算機內存中,然后讀出一條指令,翻譯一條指令,執行一條指令,該過程被稱為java語言的解釋執行,是由java虛擬機完成的。而在現實中,java開發工具JDK提供了兩個很重要的命令來完成上面的編譯和解釋(翻譯)過程。兩個命令分別是java.exe和javac.exe,前者加載java類文件,并逐步對字節碼文件進行編譯,而另一個命令則對應了java語言的解釋(javac.exe)過程。在次序上,java語言是要先進行編譯的過程,接著解釋執行。
C#程序在第一次運行的時候,會依賴其.NET Frameworker平臺,編譯成IL中間碼),然后由JIT compiler翻譯成本地的機器碼執行。從第二次在運行相同的程序,則不需要再執行以上編譯和翻譯過程,而是直接運行第一次翻譯成的機器碼。所以對于C#來說,通常第一次運行時間會很長,但從第二次開始,程序的執行時間會快很多。 ? ?那么,C#為什么要進行兩次“編譯”呢?其實,微軟想通過動態編譯(由JIT compiler工具實現)來實現其程序運行的最優化。如果代碼在運行前進行動態編譯運行,那么JIT compiler可以很智能的根據你本地機器的硬件條件來進行優化,比如使用更好的register,機器指令等等,而不是像原來那樣,build一份程序針對所有硬件的機器跑,沒有充分利用各個機器的條件。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的python语言的解释性特点指的是编写的程序不需要编译_解释性与编译型 Python2和python3的区别...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 服务器监控工具_系统管理员不可错过的 6
- 下一篇: vs2015开发python_VS201