腳本語言

腳本語言Script languagescripting languagescripting programming language)是為了縮短傳統的編寫-編譯-鏈接-運行(edit-compile-link-run)過程而創建的計算機編程語言。此命名起源于一個腳本“screenplay”,每次運行都會使對話框逐字重復。早期的腳本語言經常被稱為批次處理語言或工作控制語言。一個腳本通常是解釋運行而非編譯。腳本語言通常都有簡單、易學、易用的特性,目的就是希望能讓程式設計師快速完成程式的編寫工作。而宏語言則可視為腳本語言的分支,兩者也有實質上的相同之處。

雖然許多腳本語言都超越了計算機簡單任務自動化的領域,成熟到可以編寫精巧的程序,但仍然還是被稱為腳本。幾乎所有計算機系統的各個層次都有一種腳本語言。包括操作系統層,如計算機游戲,網絡應用程序,字處理文檔,網絡軟件等。在許多方面,高級編程語言和腳本語言之間互相交叉,二者之間沒有明確的界限。

目錄

  • 1 源起與目的
  • 2 定義
  • 3 腳本語言分類
    • 3.1 工作控制語言和shell
    • 3.2 GUI 腳本
    • 3.3 應用程序定制的腳本語言
    • 3.4 WEB編程腳本
    • 3.5 文本處理語言
    • 3.6 通用動態語言
    • 3.7 擴展/可嵌入語言
    • 3.8 其它
  • 4 參見
  • 5 外部鏈接
  • 6 常見的腳本語言

源起與目的

腳本語言(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
  • Perl
  • PHP
  • Python
  • Ruby
  • Scheme
  • Smalltalk
  • SuperCard
  • Tcl (Tool command language)

擴展/可嵌入語言

少數的語言被設計通過嵌入應用程序來取代應用程序定制的腳本語言。開發者(如使用C等其它系統語言)包入使腳本語言可以控制應用程序的hook。這些語言和應用程序定制的腳本語言是同種用途,但優點在于可以在應用程序之間傳遞一些技能。

具體分類:

  • Ch (C/C++ interpreter)
  • Dao
  • ECMAScript 亦稱 DMDScript, JavaScript, JScript
  • GameMonkeyScript
  • Guile
  • ICI
  • Lua
  • RBScript (REALbasic Script)
  • Squirrel
  • Tcl
  • 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 私房菜

常見的腳本語言

  • C Shell
  • JavaScript
  • Nuva
  • Perl
  • PHP
  • Python
  • Ruby
  • Tcl
  • VBScript
  • CSS

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450882.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450882.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450882.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java Agent

一、什么是 Java Agent ? 籠統地來講,Java Agent 是一個統稱,該功能是 Java 虛擬機提供的一整套后門。通過這套后門可以對虛擬機方方面面進行監控與分析。甚至干預虛擬機的運行。 Java Agent 又叫做 Java 探針,Java Agent 是在 …

JDK 1.8 官網下載地址(linux / windows)

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 JDK 1.8 官網下載地址: JDK 1.8 官網下載地址(linuxwindows) 上面連接可以直接點擊,連接…

跟著太白老師學python day11 可迭代對象和迭代器

如果對象的屬性中有__iter__屬性就說明是可迭代的,容器類的數據類型都是可迭代對象 如果對象的屬性中既有__iter__屬性也有__next__屬性,就說明這個對象是迭代器 如何判斷一個函數是不是可迭代的,是不是迭代器 方法一 s 123 print(__iter__ …

攪局者奇虎360:特供機背后的周式隱憂

摘要:從未涉足制造,將來也“絕不參與制造”的360,卻聲稱要進軍智能手機。從未涉足制造,將來也“絕不參與制造”的360,卻聲稱要進軍智能手機。 5月4日晚間,“長達半年的思考”后,奇虎360董事長周…

數據結構基礎入門知識

數據結構基礎入門知識 ------ 數據結構:理解和練習《異類-不一樣的成功啟示錄》IP/26 192IP/25 128IP/24192.12864 3216 2 1 NTP:時間同步服務器高手都是最仔細的,嚴謹的 telnet 查看某個端口是否可用,是否是開啟狀態的要有探索冒險的精神 --…

Linux下安裝jdk8步驟詳述

見:https://www.cnblogs.com/shihaiming/p/5809553.html 0.下載jdk8 登錄網址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 選擇對應jdk版本下載。(可在Windows下下載完成后,通過文件夾…

用Kotlin擼一個圖片壓縮插件-實戰篇(三)

簡述: 由于個人原因,已經有很長一段時間沒有寫過文章,有句話是那么說的只要開始就不會太晚,所以我們開始《用Kotlin擼一個圖片壓縮插件》系列文章最后一篇實戰篇。實際上我已經把源碼發布到了GitHub,代碼很簡單。有了前兩篇文章的…

后端進階技術總結

1、SDK與API的區別? SDK是Software Development Kit的縮寫,即軟件開發工具包。可以把SDK想象成一個虛擬的程序包,在這個程序包中有一份做好的軟件功能,這份程序包幾乎是全封閉的,通過接口聯通外界,相應的接…

最簡容器化動手小實踐——再戰flappybird

《Flappy Bird》是一名越南開發者所開發的游戲,這款游戲的主要內容是幫助一只小鳥穿越水管的層層阻礙,玩家所需要的只是點擊屏幕從而調整小鳥的高度。而令這款游戲與眾不同的是,這款游戲的難度夸張的驚人,大多數玩家在初次上手之后…

為什么電影電視幀率不取整數?

英文名稱:time code時間碼概念時間碼(time code)是攝像機在記錄圖像信號的時候,針對每一幅圖像記錄的唯一的時間編碼。一種應用于流的數字信號。該信號為視頻中的每個幀都分配一個數字,用以表示小時、分鐘、秒鐘和幀數…

linux下用rpm 安裝jdk

1.下載jdk的rpm安裝包,這里以jdk-7u4-linux-i586.rpm為例進行說明 下載地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 2. 將jdk-7u4-linux-i586.rpm 移動到合適的安裝目錄上,安裝軟件不要在/home路徑下&#xf…

FFT 入門

推薦博客 : https://oi.men.ci/fft-notes/ 卷積的理解 : https://www.zhihu.com/question/22298352?rf21686447 題目鏈接 :http://uoj.ac/problem/34 這是一道模板題。給你兩個多項式,請輸出乘起來后的多項式。輸入格式第一行兩個…

MPEG4視頻壓縮編碼技術詳解

MPEG全稱是Moving Pictures Experts Group,它是“動態圖象專家組”的英文縮寫,該專家組成立于1988年,致力于運動圖像及其伴音的壓縮編碼標準化工作,原先他們打算開發MPEG1、MPEG2、MPEG3和MPEG4四個版本,以適用于不同帶…

oracle orion hugepages_settings.sh(支持OEL 7,4.1內核)

orion需要首先配置hugepage,否則會出現下列錯誤。[rootyyxxdb01 ~]# /opt/app/11.2.0/grid_home/bin/orion -run oltp -testname mytestORION: ORacle IO Numbers -- Version 11.2.0.4.0************************ Large Pages Information *******************Param…

eclipse啟動出現“An Error has Occurred. See the log file”解決方法

見:http://blog.csdn.net/ww130929/article/details/52652222 這段時間開發java的項目,剛開始啟動Eclipse的時候經常遇到這個問題,寫這篇博客來記錄解決方法。 1.刪除工程目錄下的: “.metadata/.plugins/org.eclipse.core.resour…

初識NIO之Java小Demo

Java中的IO、NIO、AIO: BIO:在Java1.4之前,我們建立網絡連接均使用BIO,屬于同步阻塞IO。默認情況下,當有一條請求接入就有一條線程專門接待。所以,在客戶端向服務端請求時,會詢問是否有空閑線程…

RTP協議詳解

RTP協議分析 第1章. RTP概述 1.1. RTP是什么 RTP全名是Real-time Transport Protocol(實時傳輸協議)。它是IETF提出的一個標準,對應的RFC文檔為RFC3550(RFC1889為其過期版本)。RFC3550不僅定義了RTP&#xff0…

線程狀態轉換

一、線程狀態轉換 新建(New) 創建后尚未啟動。 可運行(Runnable) 可能正在運行,也可能正在等待 CPU 時間片。 包含了操作系統線程狀態中的 Running 和 Ready。 阻塞(Blocking) 等待獲取一個排它…

Eclipse中啟動tomcat報錯java.lang.OutOfMemoryError: PermGen space的解決方法

見:http://outofmemory.cn/java/OutOfMemoryError/outofmemoryerror-permgen-space-in-tomcat-with-eclipse 有的項目引用了太多的jar包,或者反射生成了太多的類,異或有太多的常量池,就有可能會報java.lang.OutOfMemoryError: Per…

MPEG-4 AVC/H.264 信息

作者:haibara 來源:pcicp.com 本FAQ由(haibara)翻譯,期間受到kaito_mkid(pcicp)幫助,在此感謝,由于Newbie的關系,如有翻譯錯誤,還請各位指出&…