百科解釋
腳本語言(s cript language,s cripting language,s cripting programming language)是為了縮短傳統(tǒng)的編寫-編譯-鏈接-運行(edit-compile-link-run)過程而創(chuàng)建的計算機編程語言。此命名起源于一個腳本“screenplay”,每次運行都會使對話框逐字重復(fù)。早期的腳本語言經(jīng)常被稱為批次處理語言或工作控制語言。一個腳本通常是解釋運行而非編譯。腳本語言通常都有簡單、易學(xué)、易用的特性,目的就是希望能讓程序設(shè)計師快速完成程序的編寫工作。而宏語言則可視為腳本語言的分支,兩者也實質(zhì)上的相同之處。
雖然許多腳本語言都超越了計算機簡單任務(wù)自動化的領(lǐng)域,成熟到可以編寫精巧的程序,但仍然還是被稱為腳本。幾乎所有計算機系統(tǒng)的各個層次都有一種腳本語言。包括操作系統(tǒng)層,如計算機游戲,網(wǎng)絡(luò)應(yīng)用程序,字處理文檔,網(wǎng)絡(luò)軟件等。在許多方面,高級編程語言和腳本語言之間互相交叉,二者之間沒有明確的界限。
腳本語言是計算機編程語言,因此也能讓開發(fā)者藉以編寫出讓計算機聽命行事的程序。以簡單的方式快速完成某些復(fù)雜的事情通常是創(chuàng)造腳本語言的重要原則,基于這項原則,使得腳本語言通常比 C語言、C++語言 或 Java 之類的系統(tǒng)編程語言要簡單容易,也讓腳本語言另有一些屬于腳本語言的特性:
語法和結(jié)構(gòu)通常比較簡單
學(xué)習(xí)和使用通常比較簡單
通常以容易修改程序的“解釋”作為執(zhí)行方式,而不需要“編譯”
程序的開發(fā)產(chǎn)能優(yōu)于執(zhí)行效能
一個腳本可以使得本來要用鍵盤進行的相互式操作自動化。一個Shell腳本主要由原本需要在命令行輸入的命令組成,或在一個文本編輯器中,用戶可以使用腳本來把一些常用的操作組合成一組序列。主要用來書寫這種腳本的語言叫做腳本語言。很多腳本語言實際上已經(jīng)超過簡單的用戶命令序列的指令,還可以編寫更復(fù)雜的程序。
計算機語言是為了各種目的和任務(wù)而開發(fā)的,一個常見任務(wù)就是把各種不同的已有組件連接起來以完成相關(guān)任務(wù)。大多腳本語言共性是:良好的快速開發(fā),高效率的執(zhí)行,解釋而非編譯執(zhí)行,和其它語言編寫的程序組件之間通信功能很強大。
許多腳本語言用來執(zhí)行一次性任務(wù),尤其是系統(tǒng)管理方面。它可以把服務(wù)組件粘合起來,因此被廣泛用于GUI創(chuàng)建或者命令行,操作系統(tǒng)通常提供一些默認(rèn)的腳本語言,即通常所謂shell腳本語言。
腳本通常以文本(如ASCII)保存,只在被調(diào)用時進行解釋或編譯。
有些腳本是為了特定領(lǐng)域設(shè)計的,但通常腳本都可以寫更通用的腳本。在大型項目中經(jīng)常把腳本和其它低級編程語言一起使用,各自發(fā)揮優(yōu)勢解決特定問題。腳本經(jīng)常用于設(shè)計互動通信,它有許多可以單獨執(zhí)行的命令,可以做很高級的操作,(如在傳統(tǒng)的Unix shell (sh)中,大多操作就是程序本身。)
這些高級命令簡化了代碼編寫過程。諸如內(nèi)存自動管理和溢出檢查等性能問題可以不用考慮。在更低級或非腳本語言中,內(nèi)存及變量管理和數(shù)據(jù)結(jié)構(gòu)等耗費人工,為解決一個給定問題需要大量代碼,當(dāng)然這樣能夠獲得更為細(xì)致的控制和優(yōu)化。腳本缺少優(yōu)化程序以提速或者降低內(nèi)存的伸縮性。
綜上所述,腳本編程速度更快,且腳本文件明顯小于如同類C程序文件。這種靈活性是以執(zhí)行效率為代價的。腳本通常是解釋執(zhí)行的,速度可能很慢,且運行時更耗內(nèi)存。在很多案例中,如編寫一些數(shù)十行的小腳本,它所帶來的編寫優(yōu)勢就遠遠超過了運行時的劣勢,尤其是在當(dāng)前程序員工資趨高和硬件成本趨低時。
然而,在腳本和傳統(tǒng)編程語言之間的界限越來越模糊,尤其是在一系列新語言及其集成暢出現(xiàn)時。在一些腳本語言中,有經(jīng)驗的程序員可以進行大量優(yōu)化工作。在大多現(xiàn)代系統(tǒng)中通常有多種合適的腳本語言可以選擇,所以推薦使用多種語言(包括C或匯編語言)編寫一種腳本。
工作控制語言和shell
Shell 腳本
此類腳本用于自動化工作控制,即啟動和控制系統(tǒng)程序的行為。大多的腳本語言解釋器也同時是命令行界面,如Unix shell和MS-DOS COMMAND.COM。其他如Apples cript,可以為系統(tǒng)增加腳本環(huán)境,但沒有命令行界面。
具體分類有:
4NT
Apples cript
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 s cript Host
zsh
GUI 腳本
GUI出現(xiàn)帶來一種專業(yè)的控制計算機的腳本語言。它在用戶和圖形界面,菜單,按鈕等之間互動。它經(jīng)常用來自動化重復(fù)性動作,或設(shè)置一個標(biāo)準(zhǔn)狀態(tài)。理論上它可以用來控制運行于基于GUI的計算機上的所有應(yīng)用程序,但實際上這些語言是否被支持還要看應(yīng)用程序和操作系統(tǒng)本身。當(dāng)通過鍵盤進行互動時,這些語言也被稱為宏語言。
具體分類有:
AutoHotkey
AutoIt
Expect
應(yīng)用程序定制的腳本語言
許多大型的應(yīng)用程序都包括根據(jù)用戶需求而定制的慣用腳本語言。同樣地,許多電腦游戲系統(tǒng)使用一種自定義腳本語言來表現(xiàn)NPC(non-player character,non-playable character,non-player class)和游戲環(huán)境的預(yù)編程動作。
此類語言通常是為一個單獨的應(yīng)用程序所設(shè)計,雖然它們貌似一些通用語言(如QuakeC, modeled after C),但它們有自定義的功能。
具體分類:
Action Code s cript
Actions cript
AutoLISP
Blobbies cript [1]
Emacs Lisp
Game Maker Language
HyperTalk
IPTSCRAE
IRC s cript
Lingo
Maya Embedded Language
mIRC s cript
NWs cript
QuakeC
Unreals cript
Visual Basic for Applications
VBs cript
ZZT-oop
web編程腳本
應(yīng)用程序定制的腳本語言中有一種重要的類別,用于提供WEB頁面的自定義功能。它專業(yè)處理互聯(lián)網(wǎng)通信,使用網(wǎng)頁瀏覽器作為用戶界面。當(dāng)然,大多現(xiàn)代WEB編程語言都比較強大可以做一些通用編程。
具體分類:
ColdFusion (Application Server)
Lasso
Miva
SMX
IPTSCRAE-一些網(wǎng)絡(luò)開發(fā)團隊用于創(chuàng)建論壇的工具
Text processing languages
處理基于文本的記錄是腳本語言最早的用處之一。如Unix''''s awk最早是設(shè)計來幫助系統(tǒng)管理員處理調(diào)用UNIX基于文本的配置和LOG文件。PERL最早是用來產(chǎn)生報告的,現(xiàn)在它已經(jīng)成了全面成熟的語言。
具體分類:
AWK
Perl
sed
XSLT
通用動態(tài)語言
一些語言,比如PERL,從一門腳本語言發(fā)展成了更通用的編程語言。由于“解釋執(zhí)行,內(nèi)存管理,動態(tài)”等特性,它們?nèi)员环Q為腳本語言。但它們已經(jīng)用于應(yīng)用程序編寫,用戶也不把它們看作腳本語言。
APL
Dylan
Groovy
MUMPS (M)
newLISP
Nuva
Perl
PHP
Python
Ruby
Scheme
Smalltalk
SuperCard
Tcl (Tool command language)
擴展/可嵌入語言
少數(shù)的語言被設(shè)計通過嵌入應(yīng)用程序來取代應(yīng)用程序定制的腳本語言。開發(fā)者(如使用C等其它系統(tǒng)語言)包入使腳本語言可以控制應(yīng)用程序的hook。這些語言和應(yīng)用程序定制的腳本語言是同種用途,但優(yōu)點在于可以在應(yīng)用程序之間傳遞一些技能。
具體分類:
Ch (C/C++ interpreter)
ECMAs cript a.k.a. DMDs cript, Javas cript, Js cript
onkey_s cript&action=edit&redlink=1" class="new" title="GameMonkey s cript (尚未撰寫)">GameMonkeys cript
Guile
ICI
Squirrel
Lua
Tcl
RBs cript (REALbasic s cript)
Z-s cript
Javas cript直到現(xiàn)在仍然是網(wǎng)頁瀏覽器內(nèi)的主要編程語言,它的ECMAs cript標(biāo)準(zhǔn)化保證了它成為流行的通用嵌入性語言。
Tcl作為一種擴展性語言而創(chuàng)建,但更多地被用作通用性語言,就如同Python, Perl, Ruby一樣。
其它
BeanShell (s cripting for Java)
Cobols cript
Escapade (server side s cripting)
Euphoria
F-s cript
Ferite
Groovy
Gui4Cli
Io
KiXtart
Mondrian
Object REXX
Pike
Pliant
REBOL
s criptBasic
Shorthand Language
Simkin
Sleep
StepTalk
Visual Dialogs cript
C Shell
Javas cript
Nuva
Perl
PHP
Python
Ruby
Tcl
VBs cript