腳本語言(Script languages,scripting programming languages,scripting languages)是為了縮短傳統(tǒng)的編寫-編譯-鏈接-運(yùn)行(edit-compile-link-run)過程而創(chuàng)建的,使得本來要用鍵盤進(jìn)行的相互式操作自動(dòng)化的計(jì)算機(jī)編程語言。
此命名起源于一個(gè)腳本“screenplay”,每次運(yùn)行都會(huì)使對(duì)話框逐字重復(fù)。早期的腳本語言經(jīng)常被稱為批處理語言或工作控制語言。雖然現(xiàn)在許多腳本語言都超越了計(jì)算機(jī)簡單任務(wù)自動(dòng)化的領(lǐng)域(簡單的用戶命令序列的指令),成熟到可以編寫精巧的程序,但仍然還是被稱為腳本。幾乎所有計(jì)算機(jī)系統(tǒng)的各個(gè)層次都有一種腳本語言。包括操作系統(tǒng)層,如計(jì)算機(jī)游戲,網(wǎng)絡(luò)應(yīng)用程序,字處理文檔,網(wǎng)絡(luò)軟件等。在許多方面,高級(jí)編程語言和腳本語言之間互相交叉,二者之間沒有明確的界限。
計(jì)算機(jī)語言是為了各種目的和任務(wù)而開發(fā)的,一個(gè)常見任務(wù)就是把各種不同的已有組件連接起來以完成相關(guān)任務(wù)。大多腳本語言共性是:良好的快速開發(fā),高效率的執(zhí)行,解釋而非編譯執(zhí)行,和其它語言編寫的程序組件之間通信功能很強(qiáng)大。
1,shell腳本語言:許多腳本語言用來執(zhí)行一次性任務(wù),尤其是系統(tǒng)管理方面。它可以把服務(wù)組件粘合起來,因此被廣泛用于GUI創(chuàng)建或者命令行,操作系統(tǒng)通常提供一些默認(rèn)的腳本語言,即通常所謂shell腳本語言。一個(gè)Shell腳本主要由原本需要在命令行輸入的命令組成,或在一個(gè)文本編輯器中,用戶可以使用腳本來把一些常用的操作組合成一組序列。
2,通用腳本語言:有些腳本是為了特定領(lǐng)域設(shè)計(jì)的,但通常腳本都可以寫更通用的腳本。在大型項(xiàng)目中經(jīng)常把腳本和其它低級(jí)編程語言一起使用,各自發(fā)揮優(yōu)勢(shì)解決特定問題。腳本經(jīng)常用于設(shè)計(jì)互動(dòng)通信,它有許多可以單獨(dú)執(zhí)行的命令,可以做很高級(jí)的操作,(如在傳統(tǒng)的UNIX shell (sh)中,大多操作就是程序本身。)
DSL語言:(domain-specific programming language,domain-specific language, DSL)領(lǐng)域編程語言
GPL語言?:(general-purpose programming language,general-purpose language, GPL)通用編程語言
3,靈活性及其代價(jià):
A,簡化編程:這些高級(jí)命令簡化了代碼編寫過程。諸如內(nèi)存自動(dòng)管理和溢出檢查等性能問題可以不用考慮。在更低級(jí)或非腳本語言中,內(nèi)存及變量管理和數(shù)據(jù)結(jié)構(gòu)等耗費(fèi)人工,為解決一個(gè)給定問題需要大量代碼,當(dāng)然這樣能夠獲得更為細(xì)致的控制和優(yōu)化。腳本缺少優(yōu)化程序以提速或者降低內(nèi)存的伸縮性。
B,文件體積,腳本文件腳本通常以文本(如ASCII)保存,只在被調(diào)用時(shí)進(jìn)行解釋或編譯,明顯小于如同類C程序文件。
C, 執(zhí)行效率代價(jià):腳本通常是解釋執(zhí)行的,速度可能很慢,且運(yùn)行時(shí)更耗內(nèi)存。
D,在很多案例中,如編寫一些數(shù)十行的小腳本,它所帶來的編寫優(yōu)勢(shì)就遠(yuǎn)遠(yuǎn)超過了運(yùn)行時(shí)的劣勢(shì),尤其是在當(dāng)前程序員工資趨高和硬件成本趨低時(shí)。
4,然而,在腳本和傳統(tǒng)編程語言之間的界限越來越模糊,尤其是在一系列新語言及其集成暢出現(xiàn)時(shí)。在一些腳本語言中,有經(jīng)驗(yàn)的程序員可以進(jìn)行大量優(yōu)化工作。在大多現(xiàn)代系統(tǒng)中通常有多種合適的腳本語言可以選擇,所以推薦使用多種語言(包括C或匯編語言)編寫一種腳本。
通常也是一種shell腳本語言。
此類腳本用于自動(dòng)化工作控制,即啟動(dòng)和控制系統(tǒng)程序的行為。大多的腳本語言解釋器也同時(shí)是命令行界面,如Unix shell和MS-DOS COMMAND.COM。其他如AppleScript?,可以為系統(tǒng)增加腳本環(huán)境,但沒有命令行界面。
具體分類有:4NT ; AppleScript? ; ARexx (Amiga Rexx) ; bash ; csh ; DCL ; JCL ; ksh ; Cmd.exe batch (Windows, OS/2) ; Command.com batch (DOS) ; REXX ; tcsh ; sh ; Winbatch ; Windows PowerShell? ; Windows Script Host ; zsh
GUI出現(xiàn)帶來一種專業(yè)的控制計(jì)算機(jī)的腳本語言。它在用戶和圖形界面,菜單,按鈕等之間互動(dòng)。它經(jīng)常用來自動(dòng)化重復(fù)性動(dòng)作,或設(shè)置一個(gè)標(biāo)準(zhǔn)狀態(tài)。理論上它可以用來控制運(yùn)行于基于GUI的計(jì)算機(jī)上的所有應(yīng)用程序,但實(shí)際上這些語言是否被支持還要看應(yīng)用程序和操作系統(tǒng)本身。當(dāng)通過鍵盤進(jìn)行互動(dòng)時(shí),這些語言也被稱為宏語言。
具體分類有:AutoHotkey?; AutoIt?; Expect
許多大型的應(yīng)用程序都包括根據(jù)用戶需求而定制的慣用腳本語言。同樣地,許多電腦游戲系統(tǒng)使用一種自定義腳本語言來表現(xiàn)NPC(non-player character,non-playable character,non-player class)和游戲環(huán)境的預(yù)編程動(dòng)作。
此類語言通常是為一個(gè)單獨(dú)的應(yīng)用程序所設(shè)計(jì),雖然它們貌似一些通用語言(如QuakeC?, modeled after C),但它們有自定義的功能。
具體分類:Action Code Script ; ActionScript? ; AutoLISP? ; BlobbieScript? [1] ; Emacs Lisp ; Game Maker Language ; HyperTalk? ; IPTSCRAE ; IRC script ; Lingo ; Maya Embedded Language ; mIRC script ; NWscript ; QuakeC? ; UnrealScript? ; Visual Basic for Applications ; VBScript ; ZZT-oop
應(yīng)用程序定制的腳本語言中有一種重要的類別,用于提供WEB頁面的自定義功能。它專業(yè)處理互聯(lián)網(wǎng)通信,使用網(wǎng)頁瀏覽器作為用戶界面。當(dāng)然,大多現(xiàn)代WEB編程語言都比較強(qiáng)大可以做一些通用編程。
具體分類:ColdFusion? (Application Server) ; Lasso ; Miva ; SMX ; IPTSCRAE-一些網(wǎng)絡(luò)開發(fā)團(tuán)隊(duì)用于創(chuàng)建論壇的工具.
具體分類:AWK ; Perl ; sed ; XSLT
一些語言,比如PERL,從一門腳本語言發(fā)展成了更通用的編程語言。由于“解釋執(zhí)行,內(nèi)存管理,動(dòng)態(tài)”等特性,它們?nèi)员环Q為腳本語言。但它們已經(jīng)用于應(yīng)用程序編寫,用戶也不把它們看作腳本語言。
具體分類: APL ; Dylan ; Groovy ; MUMPS ; newLISP ; Nuva ; Perl ; PHP ; Python ; Ruby ; Scheme ; Smalltalk ; SuperCard? ; Tcl (Tool command language)
少數(shù)的語言被設(shè)計(jì)通過嵌入應(yīng)用程序來取代應(yīng)用程序定制的腳本語言。開發(fā)者(如使用C等其它系統(tǒng)語言)包入使腳本語言可以控制應(yīng)用程序的hook。這些語言和應(yīng)用程序定制的腳本語言是同種用途,但優(yōu)點(diǎn)在于可以在應(yīng)用程序之間傳遞一些技能。
具體分類: Ch (C/C++ interpreter) ; ECMAScript a.k.a. DMDScript, Java Script, JScript ; GameMonkeyScript? ; Guile ; ICI ; Squirrel ; Lua ; Tcl ; RBScript (REALbasic Script) ; Z-Script
Java Script直到現(xiàn)在仍然是網(wǎng)頁瀏覽器內(nèi)的主要編程語言,它的ECMAScript標(biāo)準(zhǔn)化保證了它成為流行的通用嵌入性語言。
Tcl作為一種擴(kuò)展性語言而創(chuàng)建,但更多地被用作通用性語言,就如同Python, Perl, Ruby一樣。
BeanShell? (scripting for Java) ; CobolScript? ; Escapade (server side scripting) ; Euphoria ; F-Script ; Ferite ; Groovy ; Gui4Cli ; Io ; KiXtart? ; Mondrian ; Object REXX ; Pike ; Pliant ; REBOL ; ScriptBasic? ; Shorthand Language ; Simkin ; Sleep ; StepTalk? ; Visual DialogScript?
A study of the Script-Oriented Programming (SOP) suitability of selected languages – from The Scriptometer.
Hotscripts.com -A collection of many scripts written in an assortment of languages
OpenSourceScripts.com -A collection of open source scripts
A Slightly Skeptical View on Scripting Languages by Dr. Nikolai Bezroukov
Scripting: Higher Level Programming for the 21st Century by John K. Ousterhout
Are Scripting Languages Any Good? A Validation of Perl, Python, Rexx, and Tcl against C, C++, and Java (PDF) — 2003 study
Free Classified ASP Script Site Software
聯(lián)系客服