http://zh.wikipedia.org/wiki/脚本语言
指令碼語言(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
此類指令碼用於自動化工作控制,即啟動和控制系統程式的行為。大多的指令碼語言直譯器也同時是命令列介面,如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的電腦上的所有應用程式,但實際上這些語言是否被支援還要看應用程式和作業系統本身。當透過鍵盤進行互動時,這些語言也被稱為巨集語言。
具體分類有:
[編輯] 應用程式定製的指令碼語言
許多大型的應用程式都包括根據使用者需求而定製的慣用指令碼語言。同樣地,許多電腦遊戲系統使用一種自訂指令碼語言來表現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
- 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最早是用來產生報告的,現在它已經成了全面成熟的語言。
具體分類:
[編輯] 通用動態語言
一些語言,比如PERL,從一門指令碼語言發展成了更通用的編程語言。由於「直譯執行,電腦記憶體管理,動態」等特性,它們仍被稱為指令碼語言。但它們已經用於應用程式編寫,使用者也不把它們看作指令碼語言。
- APL
- Dylan
- Groovy
- MUMPS (M)
- newLISP
- Nuva
- Perl
- PHP
- Python
- Ruby
- Scheme
- Smalltalk
- SuperCard
- Tcl (Tool command language)
- Lua
[編輯] 擴展/可嵌入語言
少數的語言被設計透過嵌入應用程式來取代應用程式定製的指令碼語言。開發者(如使用C等其它系統語言)包入使指令碼語言可以控制應用程式的hook。這些語言和應用程式定製的指令碼語言是同種用途,但優點在於可以在應用程式之間傳遞一些技能。
具體分類:
- Ch (C/C++ interpreter)
- ECMAScript a.k.a. DMDScript, JavaScript, JScript
- GameMonkeyScript
- Guile
- ICI
- Squirrel
- Lua
- Tcl
- RBScript (REALbasic Script)
- Z-Script
JavaScript直到現在仍然是網頁瀏覽器內的主要編程語言,它的ECMAScript標準化保證了它成為流行的通用嵌入性語言。
Tcl作為一種擴展性語言而創建,但更多地被用作通用性語言,就如同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
[編輯] 參見
Domain-specific programming language
[編輯] 外部連結
- 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 私房菜