腳本語言(Script language,scripting language,scripting programming language)是為了縮短傳統的編寫-編譯-連結-運作(edit-compile-link-run)過程而建立的計算機程式設計語言。此命名起源于一個腳本“screenplay”,每次運作都會使對話框逐字重複。早期的腳本語言經常被稱為批次處理語言或工作控制語言。一個腳本通常是解釋運作而非編譯。腳本語言通常都有簡單、易學、易用的特性,目的就是希望能讓程式設計師快速完成程式的編寫工作。而宏語言則可視為腳本語言的分支,兩者也有實質上的相同之處。
雖然許多腳本語言都超越了計算機簡單任務自動化的領域,成熟到可以編寫精巧的程式,但仍然還是被稱為腳本。幾乎所有計算機系統的各個層次都有一種腳本語言。包括作業系統層,如計算機遊戲,網絡應用程式,字處理文檔,網絡軟體等。在許多方面,進階程式設計語言和腳本語言之間互相交叉,二者之間沒有明确的界限。
目錄
|
源起與目的
腳本語言(Scripting language)是電腦程式設計語言,是以也能讓開發者藉以編寫出讓電腦聽命行事的程式。以簡單的方式快速完成某些複雜的事情通常是創造腳本語言的重要原則,基于這項原則,使得腳本語言通常比 C語言、C++語言 或 Java 之類的系統程式設計語言要簡單容易,也讓腳本語言另有一些屬于腳本語言的特性:
- 文法和結構通常比較簡單
- 學習和使用通常比較簡單
- 通常以容易修改程式的“解釋”作為執行方式,而不需要“編譯”
- 程式的開發産能優于執行效能
一個腳本可以使得本來要用鍵盤進行的互相式操作自動化。一個Shell腳本主要由原本需要在指令行輸入的指令組成,或在一個文本編輯器中,使用者可以使用腳本來把一些常用的操作組合成一組序列。主要用來書寫這種腳本的語言叫做腳本語言。很多腳本語言實際上已經超過簡單的使用者指令序列的指令,還可以編寫更複雜的程式。
定義
計算機語言是為了各種目的和任務而開發的,一個常見任務就是把各種不同的已有元件連接配接起來以完成相關任務。大多腳本語言共性是:良好的快速開發,高效率的執行,解釋而非編譯執行,和其它語言編寫的程式元件之間通信功能很強大。
許多腳本語言用來執行一次性任務,尤其是系統管理方面。它可以把服務元件粘合起來,是以被廣泛用于GUI建立或者指令行,作業系統通常提供一些預設的腳本語言,即通常所謂shell腳本語言。
腳本通常以文本(如ASCII)儲存,隻在被調用時進行解釋或編譯。
有些腳本是為了特定領域設計的,但通常腳本都可以寫更通用的腳本。在大型項目中經常把腳本和其它低級程式設計語言一起使用,各自發揮優勢解決特定問題。腳本經常用于設計互動通信,它有許多可以單獨執行的指令,可以做很進階的操作,(如在傳統的Unix shell (sh)中,大多操作就是程式本身。)
這些進階指令簡化了代碼編寫過程。諸如記憶體自動管理和溢出檢查等性能問題可以不用考慮。在更低級或非腳本語言中,記憶體及變量管理和資料結構等耗費人工,為解決一個給定問題需要大量代碼,當然這樣能夠獲得更為細緻的控制和優化。腳本缺少優化程式以提速或者降低記憶體的伸縮性。
綜上所述,腳本程式設計速度更快,且腳本檔案明顯小于如同類C程式檔案。這種靈活性是以執行效率為代價的。腳本通常是解釋執行的,速度可能很慢,且運作時更耗記憶體。在很多案例中,如編寫一些數十行的小腳本,它所帶來的編寫優勢就遠遠超過了運作時的劣勢,尤其是在目前程式員工資趨高和硬體成本趨低時。
然而,在腳本和傳統程式設計語言之間的界限越來越模糊,尤其是在一系列新語言及其內建常出現時。在一些腳本語言中,有經驗的程式員可以進行大量優化工作。在大多現代系統中通常有多種合适的腳本語言可以選擇,是以推薦使用多種語言(包括C或者彙編語言)編寫一種腳本。
腳本語言分類
工作控制語言和shell
Shell 腳本
此類腳本用于自動化工作控制,即啟動和控制系統程式的行為。大多的腳本語言解釋器也同時是指令行界面,如Unix shell和MS-DOS COMMAND.COM。其他如AppleScript,可以為系統增加腳本環境,但沒有指令行界面。
具體分類有:
- 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 腳本
GUI出現帶來一種專業的控制計算機的腳本語言。它在使用者和圖形界面,菜單,按鈕等之間互動。它經常用來自動化重複性動作,或設定一個标準狀态。理論上它可以用來控制運作于基于GUI的計算機上的所有應用程式,但實際上這些語言是否被支援還要看應用程式和作業系統本身。當通過鍵盤進行互動時,這些語言也被稱為宏語言。
- AutoHotkey
- AutoIt
- Expect
應用程式定制的腳本語言
許多大型的應用程式都包括根據使用者需求而定制的慣用腳本語言。同樣地,許多電腦遊戲系統使用一種自定義腳本語言來表現NPC(non-player character,non-playable character,non-player class)和遊戲環境的預程式設計動作。
此類語言通常是為一個單獨的應用程式所設計,雖然它們貌似一些通用語言(如QuakeC, modeled after C),但它們有自定義的功能。
具體分類:
- Action Code Script
- ActionScript
- AutoLISP
- BlobbieScript [1]
- Emacs Lisp
- Game Maker Language
- HyperTalk
- IPTSCRAE
- IRC script
- Lingo
- Matlab Embedded Language
- Maya Embedded Language
- mIRC script
- NWscript
- QuakeC
- UnrealScript
- Visual Basic for Applications
- VBScript
- ZZT-oop
WEB程式設計腳本
應用程式定制的腳本語言中有一種重要的類别,用于提供WEB頁面的自定義功能。它專業處理網際網路通信,使用網頁浏覽器作為使用者界面。當然,大多現代WEB程式設計語言都比較強大可以做一些通用程式設計。
- ColdFusion (Application Server)
- Lasso
- Miva
- SMX
- IPTSCRAE-一些網絡開發團隊用于建立論壇的工具
文本處理語言
處理基于文本的記錄是腳本語言最早的用處之一。如Unix's awk最早是設計來幫助系統管理者處理調用UNIX基于文本的配置和LOG檔案。Perl最早是用來産生報告的,現在它已經成了全面成熟的語言。
- Awk
- Perl
- sed
- XSLT
通用動态語言
一些語言,比如Perl,從一門腳本語言發展成了更通用的程式設計語言。由于“解釋執行,記憶體管理,動态”等特性,它們仍被稱為腳本語言。但它們已經用于應用程式編寫,使用者也不把它們看作腳本語言。
- APL
- Dao
- Dylan
- Groovy
- Lua
- MUMPS (M)
- newLISP
- Nuva
- PHP
- Python
- Ruby
- Scheme
- Smalltalk
- SuperCard
- Tcl (Tool command language)
擴充/可嵌入語言
少數的語言被設計通過嵌入應用程式來取代應用程式定制的腳本語言。開發者(如使用C等其它系統語言)包入使腳本語言可以控制應用程式的hook。這些語言和應用程式定制的腳本語言是同種用途,但優點在于可以在應用程式之間傳遞一些技能。
- Ch (C/C++ interpreter)
- ECMAScript 亦稱 DMDScript, JavaScript, JScript
- GameMonkeyScript
- Guile
- ICI
- RBScript (REALbasic Script)
- Squirrel
- Tcl
- Z-Script
其它
- BeanShell (scripting for Java)
- CobolScript
- Escapade (server side scripting)
- Euphoria
- F-Script
- Ferite
- 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
- 學習 Shell Scripts 鳥哥的 Linux 私房菜
常見的腳本語言
- C Shell
- JavaScript
- CSS