❶ 突然想知道,為什麼有的語言需要編譯之後運行,而有的語言則不需要呢 C, ruby 請分析謝謝!
我們用的大部分程序設計語言都是高級語言,高級語言要執行,必須要先變成計算機能識別的匯編語言.將高級語言變成匯編語言的過程叫做翻譯,目前有兩種形式的翻譯方法,一種是編譯,一種是解釋.C就屬於編譯方式,執行前一定先編譯一次.而B語言就是解釋方式,解釋一條執行一條,所以執行先不需要編譯一下.
❷ 在計算機內部,不需要編譯計算機就能夠直接執行的語言是什麼
機器語言,機器只能識別二進制數的代碼
❸ java語言為什麼使用的java虛擬機而不是直接翻譯成機器代碼(即和C語言一樣)
Java語言的一個非常重要的特點就是與平台的無關性。而使用Java虛擬機是實現這一特點的關鍵。一般的高級語言如果要在不同的平台上運行,至少需要編譯成不同的目標代碼。而引入Java語言虛擬機後,Java語言在不同平台上運行時不需要重新編譯。Java語言使用模式Java虛擬機屏蔽了與具體平台相關的信息,使得Java語言編譯程序只需生成在Java虛擬機上運行的目標代碼(位元組碼),就可以在多種平台上不加修改地運行。Java虛擬機在執行位元組碼時,把位元組碼解釋成具體平台上的機器指令執行。 Java虛擬機的使用主體
❹ 編譯型語言和解釋型語言的區別是什麼
編譯型語言和解釋型語言的區別是翻譯的時間點不同。
編譯型語言:編譯型語言在執行之前要先經過編譯過程,編譯成為一個可執行的機器語言的文件,比如exe。
因為翻譯只做一遍,以後都不需要翻譯,所以執行效率高。
解釋型語言:解釋性語言編寫的程序不進行預先編譯,以文本方式存儲程序代碼。
執行時才翻譯執行程序每執行一次就要翻譯一遍。
編譯型語言和解釋型語言的詳細介紹:
對於編譯型語言,開發完成以後需要將所有的源代碼都轉換成可執行程序,比如Windows下的.exe文件,可執行程序裡麵包含的就是機器碼。只要我們擁有可執行程序,就可以隨時運行,不用再重新編譯了,也就是「一次編譯,無限次運行」。
在運行的時候,我們只需要編譯生成的可執行程序,不再需要源代碼和編譯器了,所以說編譯型語言可以脫離開發環境運行。
編譯型語言一般是不能跨平台的,也就是不能在不同的操作系統之間隨意切換。
對於解釋型語言,每次執行程序都需要一邊轉換一邊執行,用到哪些源代碼就將哪些源代碼轉換成機器碼,用不到的不進行任何處理。
每次執行程序時可能使用不同的功能,這個時候需要轉換的源代碼也不一樣。
因為每次執行程序都需要重新轉換源代碼,所以解釋型語言的執行效率天生就低於編譯型語言,甚至存在數量級的差距。
計算機的一些底層功能,或者關鍵演算法,一般都使用C/C++實現,只有在應用層面(比如網站開發、批處理、小工具等)才會使用解釋型語言。
❺ 腳本語言不需要編譯怎麼執行呀
因為大多數腳本都是解釋型語言。
解釋型語言是相對於編譯型語言存在的,源代碼不是直接翻譯成機器語言,而是先翻譯成中間代碼,再由解釋器對中間代碼進行解釋運行。比如Python/JavaScript / Perl /Shell等都是解釋型語言。 解釋型語言:程序不需要編譯,程序在運行時才翻譯成機器語言,每執 行一次都要翻譯一次。因此效率比較低。比如Basic語言,專門有一個解釋器能夠直接執行Basic程 序,每個語句都是執行的時候才翻譯。(在運行程序的時候才翻譯,專門有一個解釋器去進行翻譯,每個語句都是執行的時候才翻譯。效率比較低,依賴解釋器,跨平台性好.)
一個是編譯,一個是解釋。兩種方式只是翻譯的時間不同。編譯型語言寫的程序執行之前,需要一個專門的編譯過程,把程序編譯成為機器語言的文件,比如exe文件,以後要運行的話就不用重新翻譯了,直接使用編譯的結果就行了(exe文件),因為翻譯只做了一次,運行時不需要翻譯,所以編譯型語言的程序執行效率高,但也不能一概而論,部分解釋型語言的解釋器通過在運行時動態優化代碼,甚至能夠使解釋型語言的性能超過編譯型語言。
解釋則不同,解釋性語言的程序不需要編譯,省了道工序,解釋性語言在運行程序的時候才翻譯,比如解釋性basic語言,專門有一個解釋器能夠直接執行basic程序,每個語句都是執行的時候才翻譯。這樣解釋性語言每執行一次就要翻譯一次,效率比較低。解釋是一句一句的翻譯。
❻ 在計算機內部,不需要編譯計算機就能直接執行的語言是什麼
你這個問題提得不是太清楚,如果是指那些無需編譯就可以執行的語言,這些語言叫做「解釋型語言」,它們通過環境中安裝的解釋器、運行時等執行。
如果問無需任何解釋器、運行時等,但也不需要編譯就可以執行的語言,那隻有一種就是機器碼了。實際上編譯後生成的東西就是機器碼。估計你問的不是這個呵呵。
❼ 在計算機內部,不需要編譯計算機就能夠直接執行的語言是什麼
機器語言