什么是腳本語言
編輯腳本語言是一種編程語言,一個特殊的運行時環境,它可以自動執行的任務的; 這些任務也可以由人工操作員一個接一個地執行。腳本語言通常是解釋性的,而不是編譯性的。
基元通常是基本任務或API調用,并且該語言允許將它們組合成更多程序。可以通過腳本進行自動化環境包括軟件應用,網頁一中的網頁瀏覽器中,使用的炮彈的操作系統(OS)、嵌入式系統,以及眾多的游戲。腳本語言可以被視為特定環境的領域特定語言。在編寫應用程序腳本的情況下,它也稱為擴展語言。腳本語言有時也稱為非常高級的編程語言,因為它們以較高的抽象水平運行,或者稱為控制語言,特別是對于大型機上的作業控制語言。
術語“腳本語言”也被寬松地用于指代動態?高級?通用語言,例如Perl、PowerShell、Python和Tcl,術語“腳本”通常用于小型程序。這些語言中的某些最初是為在特定環境中使用而開發的,后來又發展為可移植的特定于域或通用的語言。相反,許多通用語言都具有用作腳本語言的方言。本文從狹義的角度針對特定環境討論腳本語言。
腳本語言的范圍從很小的,高度特定領域的語言到用于腳本的通用編程語言。用于特定環境的腳本語言的標準示例包括:Bash,用于Unix或類Unix?操作系統;ECMAScript(JavaScript),用于Web瀏覽器和Visual Basic for Applications,用于Microsoft Office應用程序。Lua是一種設計并廣泛用作擴展語言的語言。一些游戲系統,特別是“?第二人生”?虛擬世界和Trainz系列的Railway模擬器,已經通過腳本擴展(Linden腳本語言和TrainzScript)在功能上進行了廣泛擴展。在其他游戲中Wesnoth,玩家玩的各種實際游戲是其他用戶編寫的腳本。
腳本語言特性
編輯典型的腳本語言旨在作為簡短的源代碼文件或以交互方式在讀取-評估-打印循環(REPL,語言外殼)中進行學習和編寫。這通常意味著相對簡單的語法和語義;通常,“腳本”(用腳本語言編寫的代碼)作為“腳本”從頭到尾執行,沒有明確的入口點。
腳本語言通常從源代碼或字節碼解釋。相反,編寫腳本的軟件環境通常以編譯語言編寫并以機器代碼形式分發。
腳本語言可以設計為供程序的最終用戶使用(即最終用戶開發),也可以僅供開發人員內部使用,以便他們可以用腳本語言編寫程序的某些部分。腳本語言通常使用抽象(一種信息隱藏形式)為用戶節省內部變量類型,數據存儲和內存管理的詳細信息。
腳本通常是由執行它們的人創建或修改的,但它們也經常被分發,例如,當大部分游戲是用腳本語言編寫時。
語言類型
編輯編輯器語言
許多文本編輯器支持使用內置在編輯器中的宏語言或使用外部實現(例如XEDIT或兩者)編寫的宏。有時,在后臺使用文本編輯器和編輯宏來提供其他應用程序,例如CMS中的?FILELIST和RDRLIST?。
作業控制語言和外殼
作業控制的自動化已經發展出一大類腳本語言,這涉及啟動和控制系統程序的行為。這些語言的許多解釋器兼用作命令行解釋器,例如Unix shell或MS-DOS?COMMAND.COM
。其他語言(例如AppleScript)提供了類似英語的命令來構建腳本。
GUI腳本
隨著圖形用戶界面的出現,一種用于控制計算機的專用腳本語言應運而生。這些語言與相同的圖形窗口、菜單、按鈕等交互作用,人類用戶可以使用。他們通過模擬用戶的操作來做到這一點。這些語言通常用于自動執行用戶操作。當通過模擬按鍵或鼠標單擊以及在觸摸激活的屏幕上點擊或按下控制時,此類語言也稱為“?宏?”。
這些語言原則上可以用來控制任何GUI應用程序。但是,實際上,它們的使用受到限制,因為它們的使用需要應用程序和操作系統的支持。此限制有一些例外。一些GUI腳本語言基于從其顯示屏幕像素識別圖形對象的基礎。這些GUI腳本語言不依賴于操作系統或應用程序的支持。
特定于應用程序的語言
特定于應用程序的語言可以分為許多不同的類別,即基于獨立的應用程序語言(可執行)或內部特定于應用程序的語言(postscript、xml、gscript作為一些廣泛分布的腳本,分別由Adobe、MS和Google實施),其中包括適應應用程序用戶需求的慣用腳本語言。同樣,許多計算機游戲系統使用自定義腳本語言來表達非玩家角色和游戲環境的編程動作。這類語言是為單個應用程序設計的。并且,盡管它們從表面上看起來類似于特定的通用語言(例如QuakeC,以C建模),但它們具有區分它們的自定義功能。特定于應用程序的腳本語言可以視為專用于單個應用程序的特定于域的編程語言。
擴展/可嵌入語言
通過嵌入到應用程序中,已設計了多種語言來替換特定于應用程序的腳本語言。應用程序程序員(使用C或其他系統語言工作)包括“鉤子”,腳本語言可以控制應用程序。這些語言在技術上可能等效于特定于應用程序的擴展語言,但是當應用程序嵌入“通用”語言時,用戶將獲得能夠在應用程序之間轉移技能的優勢。一個更通用的替代方法是簡單地提供一個通用語言可以用來控制應用程序的庫(通常是C庫),而無需修改特定領域的語言。
JavaScript始于并且現在仍然是Web瀏覽器內腳本編寫的語言;?但是,作為ECMAScript的語言的標準化使其成為通用的可嵌入語言。特別是,Mozilla實現SpiderMonkey嵌入在多個環境中,例如Yahoo!。小部件引擎。嵌入ECMAScript實現的其他應用程序包括Adobe產品Adobe Flash(ActionScript)和Adobe Acrobat(用于腳本化PDF文件)。
Tcl是作為一種擴展語言創建的,但是在與Python,Perl和Ruby相似的角色中,它被更頻繁地用作通用語言。另一方面,Rexx最初是作為作業控制語言創建的,但被廣泛用作擴展語言和通用語言。Perl是一種通用語言,但是使用了Oraperl(1990)方言,該方言由一個Perl?4二進制文件和一個Oracle Call Interface編譯而成。但是,此后已被庫(Perl模塊)DBD :: Oracle取代。
其他復雜且面向任務的應用程序可以合并并公開嵌入式編程語言,以允許其用戶進行更多的控制,并為他們提供比通過用戶界面可提供的功能更多的功能,而不管它們多么復雜。例如,Autodesk Maya?3D創作工具嵌入了MEL腳本語言,或者嵌入了使用Python填充此角色的Blender。
需要更快的功能添加或調整和運行周期的某些其他類型的應用程序也使用嵌入式語言。在開發過程中,這使他們可以更快地原型化功能并更自由地進行調整,而無需用戶深入了解應用程序的內部工作原理或在每次調整后進行重建(這可能會花費大量時間) 。用于此目的的腳本語言范圍從更常見,更著名的Lua和Python到鮮為人知的語言(例如AngelScript和Squirrel)。
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/111916/