腳本語言的特徵以及Python語言的特點

腳本語言的腳本這一說法緣於Unix操作系統,目的是讓其批量的,按照既定的方式去做一些事情,就想照着劇本做事一樣。英文中的script就是劇本的意思,中文對應的詞就是劇本,腳本。腳本就是劇本意思。人們叫着叫着就這樣了,大家都叫腳本語言,沒有人叫劇本語言。所以有人說,我寫了一個腳本,意思是,寫了一個批量的能做某些事的命令,不一定非得是用某種語言寫腳本,也可以只用CMD命令寫一個bat文件,這個也叫做腳本。

腳本語言的“優勢”,其實只在於它不需要事先“編譯”。編譯型語言,這裏用C語言做例子,需要事先進行編譯,編譯成爲二進制碼,然後執行的時候直接讀取二進制碼。這個過程比較快,因爲畢竟讀取二進制要比讀取文本快的多。這種語言像C語言,執行特別快。編譯的時候,生成的是CPU可以直接識別的二進制碼。但是這個編譯的過程,跟硬件關係特別大,因爲要參考硬件來生成二進制碼。這樣就造成了C程序的可移植性特別差,windows平臺編譯的C程序不能在Linux系統運行,甚至同爲windows系統,在A電腦編譯的程序在B電腦都可能不運行,因爲有些小的硬件差異。

像Java,C#這些語言,因爲有了虛擬機(JVM)或者運行時(.NET Runtime)的存在,跟硬件與操作系統的耦合性降低了。但是也需要一個編譯的過程,編譯成爲中間的二進制碼,然後在解釋執行的時候,二進制碼會別虛擬機或者運行時再次轉換爲CPU能夠識別的二進制碼。所以這些面向對象的語言,也需要編譯,但是編譯完事後還不能被CPU識別。這種語言處於編譯型語言與解釋性語言中間,比編譯型語言C語言慢,比解釋型語言javascript快。

腳本語言跟解釋語言有點類似,都不需要事先進行編譯,而是直接讀取文本文件,一邊解釋一邊執行。腳本語言與解釋語言我認爲還是有區別的。解釋語言是說解釋執行的語言,但執行的代碼並不一定是文本格式的。腳本語言的程序是文本文件,並且是解釋執行的。但這兩種區別也有些模糊。反正有點區別,不過你認爲差不多也行,好象現在並不太細分腳本語言與解釋語言。腳本語言泛指單用作簡單編程任務如shell scripts。腳本語言是一種介乎於 HTML 和諸如 JAVA 、 Visual Basic 、 C++ 等編程語言之間的一種特殊的語言,儘管它更接近後者,但它卻不具有編程語言複雜、嚴謹的語法和規則。

有一些腳本語言已經發生了變化,如python,perl已經可以編譯成中間代碼然後執行,這樣的腳本語言已經可以被稱爲編譯型腳本語言。腳本最終執行時並不是二進制文件,僅僅是(依賴於平臺的)解釋結果。我認爲腳本語言一個最特別的地方就是必要有執行平臺(這個平臺是構架在系統平臺上的二進制運行程序)腳本語言和一般語言的差別在於一般語言的編譯和解釋是平臺相關的,而腳本語言可以在文本執行時做到平臺無關(只要該平臺具有相應的功能一致的執行平臺)。

腳本語言與編譯型語言在類型定義上的區別:系統語言通常是強類型和靜態類型定義。這就意味着所有變量的類型要在程序中指定,在編譯時檢查。相反地,腳本語言是最鬆散的類型定義,完全沒有類型聲明,並且在運行時進行動態類型檢查。  

執行上的區別:系統語言的特點是編譯的。程序被編譯成可執行的二進制。另一方面,腳本語言的特點是解釋,也就是,指令被立即執行,不存在一個編譯的中間狀態。這就意味着腳本語言是交互式的(你可以在提示符下敲入命令,並且看到結果),這是另一個巨大的勝利。這樣完全將編譯過程從編輯-編譯-運行循環中去掉了。 

速度上的區別:腳本語言一方面在速度與效率, 一方面在易用性與表示式的強大性之間進行折衷的典型例子。這就使得腳本語言的執行速度比系統語言慢一個數量級。這就是對腳本語言誹謗最多的方面。性能的降低不是真正的問題,因爲思想是用腳本語言來組合組件,這些組件是用象C 這樣的快速系統語言來編寫的。所以所有需要運行快速的東西將因爲是用快速的語言實現的而運行得快速。腳本語言只用於將東西綁在一起,並且這些通常不是性能的瓶頸( 或如果是,你需要重新檢查你的設計)。

 

算機是不能理解高級語言,當然也就不能直接執行高級語言了。計算機只能直接理解機器語言,所以任何語言,都必須將其翻譯成機器語言,計算機才能運行高級語言編寫的程序。

 一、翻譯和解釋的不同

    翻譯的方式有兩種,一個是編譯,一個是解釋。

    兩種方式只是翻譯的時間不同。編譯型語言寫的程序在被執行之前,需要一個專門的編譯過程,把程序編譯成爲機器語言的文件,比如exe文件,以後要運行的話就不用重新翻譯了,直接使用編譯的結果就行了(exe文件),因爲翻譯只做了一次,運行時不需要翻譯,所以編譯型語言的程序執行效率高。

    解釋則不同,解釋性語言的程序不需要編譯,省了道工序,解釋性語言在運行程序的時候才翻譯,比如解釋性basic語言,專門有一個解釋器能夠直接執行basic程序,每個語句都是執行的時候才翻譯。這樣解釋性語言每執行一次就要翻譯一次,效率比較低。

 二、腳本語言

    ①腳本語言(JavaScript,VBscript等)介於HTML和C,C++,Java,C#等編程語言之間

    HTML通常用於格式化和鏈結文本。而編程語言通常用於向機器發出一系列複雜的指令。

    ②腳本語言與編程語言也有很多相似地方,其函數與編程語言比較相象一些,其也涉及到變量。與編程語言之間最大的區別是編程語言的語法和規則更爲嚴格和複雜一些。

    ③與程序代碼的關係:腳本也是一種語言,其同樣由程序代碼組成

    注:腳本語言一般都有相應的腳本引擎來解釋執行。 他們一般需要解釋器才能運行。JAVASCRIPT,ASP,PHP,PERL都是腳本語言。C/C++編譯、鏈接後,可形成獨立執行的exe文件。

    ④腳本語言是一種解釋性的語言

    例如vbscript,javascript,installshield script等等,它不象c/c++等可以編譯成二進制代碼,以可執行文件的形式存在。腳本語言不需要編譯,可以直接用,由解釋器來負責解釋,不過每次都需要翻譯,執行速度慢。

    ⑤腳本語言一般都是以文本形式存在,類似於一種命令

    舉個例子說,如果你建立了一個程序,叫aaa.exe,可以打開.js爲擴展名的文件。

    你爲.js文件的編寫指定了一套規則(語法),當別人編寫了.js文件後,你的程序用這種規則來理解編寫人的意圖,並作出迴應.那麼,這一套規則就是腳本語言。

 

有人說Python不是腳本語言,是高級語言。這個要看個人的理解。比較輕量級的語言。javascript也叫腳本語言,解釋型語言。一行一行的讀入文本然後執行。

解釋型語言也不是說,不關心整個文件,只是從上到下一句一句的執行。首先,瀏覽器的解釋器也是要先掃描一下引入的所有的js文件,如果是function的靜態方法,就緩存起來,然後隨時可以用。這就是爲什麼,var方式定義的方法,必須定義要在執行前邊。而function的方法不用。再者,爲什麼C#先進性編譯的語言,不分參數或者方法書寫的先後順序。因爲有一個編譯的過程,編譯的過程會完成相應的順序排列。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章