動態語言檢視原始碼討論檢視歷史
動態語言 |
中文名: 腳本語言 外文名: Scripting language 別 名: 動態語言 類 別: 編程語言 |
腳本語言又被稱為擴建的語言,或者動態語言,是一種編程語言,用來控制軟件應用程序,腳本通常以文本(如ASCII)保存,只在被調用時進行解釋或編譯。[1] 腳本語言(Script languages,scripting programming languages,scripting languages)是為了縮短傳統的編寫-編譯-鏈接-運行(edit-compile-link-run)過程而創建的計算機編程語言。雖然許多腳本語言都超越了計算機簡單任務自動化的領域,成熟到可以編寫精巧的程序,但仍然還是被稱為腳本。幾乎所有計算機系統的各個層次都有一種腳本語言。包括操作系統層,如計算機遊戲,網絡應用程序,文字處理文檔,網絡軟件等。在許多方面,高級編程語言和腳本語言之間互相交叉,二者之間沒有明確的界限。一個腳本可以使得本來要用鍵盤進行的相互式操作自動化。一個Shell腳本主要由原本需要在命令行輸入的命令組成,或在一個文本編輯器中,用戶可以使用腳本來把一些常用的操作組合成一組序列。主要用來書寫這種腳本的語言叫做腳本語言。很多腳本語言實際上已經超過簡單的用戶命令序列的指令,還可以編寫更複雜的程序。
目錄
簡介
腳本語言是為了縮短傳統的編寫-編譯-鏈接-運行(edit-compile-link-run)過程而創建的計算機編程語言。 它的命名起源於一個腳本「screenplay」,每次運行都會使對話框逐字重複。早期的腳本語言經常被稱為批量處理語言或工作控制語言。 一個腳本通常是解釋執行而非編譯。腳本語言通常都有簡單、易學、易用的特性,目的就是希望能讓程序員快速完成程序的編寫工作。而宏語言則可視為腳本語言的分支,兩者也有實質上的相同之處。 (概述圖片來源: ) 1、腳本語言(JavaScript、VBscript等)介於HTML和C、C++、Java、C#等編程語言之間。HTML通常用于格式化和鏈接文本。而編程語言通常用於向機器發出一系列複雜的指令。 2、腳本語言與編程語言也有很多相似地方,其函數與編程語言比較相像一些,其也涉及到變量。與編程語言之間最大的區別是編程語言的語法和規則更為嚴格和複雜一些. 3、與程序代碼的關係:腳本也是一種語言,其同樣由程序代碼組成。 4、腳本語言是一種解釋性的語言,例如Python、vbscript、javascript、installshield script、ActionScript等等,它不象c\c++等可以編譯成二進制代碼,以可執行文件的形式存在,腳本語言不需要編譯,可以直接用,由解釋器來負責解釋。 5、腳本語言一般都是以文本形式存在,類似於一種命令。 舉個例子說:如果建立了一個程序,叫aaa.exe,可以打開.aa為擴展名的文件,為.aa文件的編寫指定了一套規則(語法),當別人編寫了.aa文件後,自己的程序用這種規則來理解編寫人的意圖,並作出回應,那麼,這一套規則就是腳本語言。 6、相對於編譯型計算機編程語言:用腳本語言開發的程序在執行時,由其所對應的解釋器(或稱虛擬機)解釋執行。系統程序設計語言是被預先編譯成機器語言而執行的。腳本語言的主要特徵是:程序代碼即是腳本程序,亦是最終可執行文件。腳本語言可分為獨立型和嵌入型,獨立型腳本語言在其執行時完全依賴於解釋器,而嵌入型腳本語言通常在編程語言中(如C、C++、VB、Java等)被嵌入使用。 7、和系統程序設計語言相比:不同是腳本語言是被解釋而系統程序設計語言是被編譯。被解釋的語言由於沒有編譯時間而提供快速的轉換,通過允許用戶運行時編寫應用程序,而不需要耗時的編譯/打包過程。解釋器使應用程序更加靈活,腳本語言的代碼能夠被實時生成和執行。腳本語言通常都有簡單、易學、易用的特性,目的就是希望能讓程序設計師快速完成程序的編寫工作。 快速開發:腳本語言極大地簡化了「開發、部署、測試和調試」的周期過程。 容易部署:大多數腳本語言都能夠隨時部署,而不需要耗時的編譯/打包過程。 同已有技術的集成:腳本語言被Java或者COM這樣的組件技術所包圍,因此能夠有效地利用代碼。 易學易用:很多腳本語言的技術要求通常要低一些,因此能夠更容易地找到大量合適的技術人員。 動態代碼:腳本語言的代碼能夠被實時生成和執行,這是一項高級特性,在某些應用程序里(例如JavaScript里的動態類型)是很有用也是必需的。
缺點
腳本語言不夠全面:它們會要求一門「真正的」編程語言的存在,必須找一個數據庫驅動程序將其內置進腳本語言裡。 腳本語言並不是軟件工程和構建代碼結構的最佳選擇,例如面向對象和基於組件的開發。 腳本語言通常不是「通用」語言,但是能夠根據專門的應用來調整,例如:PHP。 作為批次處理語言或工作控制語言。許多腳本語言用來執行一次性任務,尤其是系統管理方面。DOS、Windows的批處理文件和Unix的shell腳本都屬於這種應用; 作為通用的編程語言存在,如Perl、Python、Ruby等。由於「解釋執行、內存管理、動態」等特性,它們仍被稱為腳本語言。但它們已經用於應用程序編寫,用戶也不把它們看作腳本語言; 許多大型的應用程序都包括根據用戶需求而定製的慣用腳本語言。同樣地,許多電腦遊戲系統使用一種自定義腳本語言來表現NPC(Non-Player Character、Non-Playable Character、Non-Player Class)和遊戲環境的預編程動作。此類語言通常是為一個單獨的應用程序所設計,雖然它們貌似一些通用語言(如Quake C、Modeled After C),但它們有自定義的功能; 網頁中的嵌入式腳本語言。熟知的HTML(Hyper Text Mark-up Language)即超文本標記語言,就是一種腳本語言,它的解釋器就是瀏覽器。JavaScript直到現在仍然是網頁瀏覽器內的主要編程語言,它的ECMAScript標準化保證了它成為流行的通用嵌入式腳本語言。另外,隨着動態網頁技術發展,ASP、JSP、PHP等嵌入網頁的腳本語言正被廣泛使用,不過這些腳本要通過Web Server解釋,而Html則被瀏覽器執行; 腳本語言在系統應用程序中嵌入使用,作為用戶與系統的接口方式。在工業控制領域,PLC編程、組態軟件的腳本語言是擴充組態系統功能的重要手段;在通信平台領域,IVR(自動語音應答)流程編程;Office辦公軟件,提供的宏和VBA;其他應用軟件如ER Studio提供的Basic MacroEditor,用戶可以編寫Sax Basic腳本操作ER圖、生成Access庫、導出Word文檔等擴展功能。
發展情況
腳本技術得益於計算機硬件的加速發展。某些情況下甚至系統程序設計語言也不夠有效,因此不得不用匯編編寫應用程序。而今的機器比1980年的快100~500倍,且仍在以每18個月翻一番的速度增長。計算機性能快速提高,使計算機程序越來越複雜。因此,開發時間已遠比運行時間緊迫。這時,腳本語言作為系統程序設計語言的補充,開始被主要的計算機平台所同時提供。編程語言已經由性能低下的硬件與執行效率之間的矛盾,轉變為快速變化的市場需要與低效的開發工具之間的矛盾,所以腳本語言的發展在軟件開發中有着必然的趨勢。 Shell腳本 此類腳本用於自動化工作控制,即啟動和控制系統程序的行為。大多的腳本語言解釋器也同時是命令行界面,如Unix shell和MS-DOS command。其他如AppleScript,可以為系統增加腳本環境,但沒有命令行界面。 具體分類有: 1.4NT 2.AppleScript 3.ARexx(Amiga Rexx) 4.bash 5.csh 6.DCL 7.JCL 8.ksh 9.Cmd.exe batch(Windows,OS/2) 10.command batch(DOS) 11.REXX 12.tcsh 13.sh 14.Winbatch 15.Windows PowerShell 16.Windows Script Host 17.zsh
GUI腳本
GUI出現帶來一種專業的控制計算機的腳本語言。它在用戶和圖形界面、菜單、按鈕等之間互動。它經常用來自動化重複性動作,或設置一個標準狀態。理論上它可以用來控制運行於基於GUI的計算機上的所有應用程序,但實際上這些語言是否被支持還要看應用程序和操作系統本身。當通過鍵盤進行互動時,這些語言也被稱為宏語言。 具體分類有: 1.AutoHotkey 2.AutoIt 3.Expect
應用程序定製的腳本語言
許多大型的應用程序都包括根據用戶需求而定製的慣用腳本語言。同樣地,許多電腦遊戲系統使用一種自定義腳本語言來表現NPC(non-player character,non-playable character,non-player class)和遊戲環境的預編程動作。 此類語言通常是為一個單獨的應用程序所設計,雖然它們貌似一些通用語言(如QuakeC, modeled after C),但它們有自定義的功能。 具體分類: 1.Action Code Script 2.ActionScript 3.AutoLISP 4.BlobbieScript 5.Emacs Lisp 6.Game Maker Language 7.HyperTalk 8.IPTSCRAE 9.IRC script 10.Lingo 11.Matlab Embedded Language 12.Maya Embedded Language 13.mIRC script 14.NWscript 15.QuakeC 16.UnrealScript 17.Visual Basic for Applications 18.VBScript 19.ZZT-oop
WEB編程腳本
應用程序定製的腳本語言中有一種重要的類別,用於提供WEB頁面的自定義功能。它專業處理互聯網通信,使用網頁瀏覽器作為用戶界面。當然,大多現代WEB編程語言都比較強大可以做一些通用編程。 具體分類: 1.ColdFusion(Application Server) 2.Lasso 3.Miva 4.SMX 5.IPTSCRAE-一些網絡開發團隊用於創建論壇的工具
文本處理語言
處理基於文本的記錄是腳本語言最早的用處之一。如Unix's awk最早是設計來幫助系統管理員處理調用UNIX基於文本的配置和LOG文件。Perl最早是用來產生報告的,現在它已經成了全面成熟的語言。 具體分類: 1.Awk 2.Perl 3.sed 4.XSLT
通用動態語言
一些語言,比如Perl,從一門腳本語言發展成了更通用的編程語言。由於「解釋執行,內存管理,動態」等特性,它們仍被稱為腳本語言。但它們已經用於應用程序編寫,用戶也不把它們看作腳本語言。 1.APL 2.Dao 3.Dylan 4.Groovy 5.Lua 6.MUMPS(M) 7.newLISP 8.Nuva 9.Perl 10.PHP 11.Python 12.Ruby 13.Scheme 14.Smalltalk 15.SuperCard 16.Tcl(Tool command language)
擴展/可嵌入語言
少數的語言被設計通過嵌入應用程序來取代應用程序定製的腳本語言。開發者(如使用C等其它系統語言)包入使腳本語言可以控制應用程序的hook。這些語言和應用程序定製的腳本語言是同種用途,但優點在於可以在應用程序之間傳遞一些技能。 具體分類: 1.Ch(C/C++ interpreter) 2.Dao 3.ECMAScript亦稱DMDScript,JavaScript,JScript 4.GameMonkeyScript 5.Guile 6.ICI 7.Lua 8.RBScript(REALbasic Script) 9.Squirrel 10.Tcl 11.Z-Script JavaScript直到現在仍然是網頁瀏覽器內的主要編程語言,它的ECMAScript標準化保證了它成為流行的通用嵌入性語言。 Tcl作為一種擴展性語言而創建,但更多地被用作通用性語言,就如同Python, Perl, Ruby一樣。
其它
1.BeanShell(scripting for Java) 2.CobolScript 3.Escapade (server side scripting) 4.Euphoria 5.F-Script 6.Ferite 7.Groovy 8.Gui4Cli 9.Io 10.KiXtart 11.Mondrian 12.Object REXX 13.Pike 14.Pliant 15.REBOL 16.ScriptBasic 17.Shorthand Language 18.Simkin 19.Sleep 20.StepTalk 21.Visual DialogScript
常見的腳本語言
C Shell JavaScript Nuva Perl PHP Python Ruby Tcl VBScript CSS
參考來源
[[Category: 800 語言、文學類 ]]