Skriptovací jazyk - Scripting language

Skriptovací jazyk nebo skriptovací jazyk je programovací jazyk pro runtime systém , který automatizuje provádění úkolů, které by jinak mohly být prováděny individuálně lidským operátorem. Skriptovací jazyky jsou obvykle interpretovány za běhu, nikoli kompilovány .

Primitivy skriptovacího jazyka jsou obvykle elementární úkoly nebo volání API a skriptovací jazyk jim umožňuje kombinovat je do více programů. Prostředí, které lze automatizovat pomocí skriptování zahrnují aplikační software , textové editory , webové stránky , operační systém skořápky , vestavěné systémy a počítačové hry . Na skriptovací jazyk lze pohlížet jako na jazyk specifický pro doménu pro konkrétní prostředí; v případě skriptování aplikace je také známý jako jazyk rozšíření . Skriptovacím jazykům se také někdy říká velmi programovací jazyky na vysoké úrovni, protože někdy fungují na vysoké úrovni abstrakce nebo jako řídicí jazyky , zejména pro jazyky pro řízení úloh na sálových počítačích.

Termín skriptovací jazyk je také používán v širším smyslu, jmenovitě pro obecné označení dynamických programovacích jazyků na vysoké úrovni ; některé jsou přísně interpretované jazyky , zatímco jiné používají formu kompilace. V této souvislosti výraz skript označuje malý program v takovém jazyce; obvykle obsaženy v jednom souboru a ne větší než několik tisíc řádků kódu.

Spektrum skriptovacích jazyků se pohybuje od malých po velké a od vysoce specifických pro konkrétní doménu až po univerzální programovací jazyky . Jazyk může začít jako malý a vysoce specifický pro doménu a později se může vyvinout v přenosný a univerzální jazyk; naopak, jazyk pro obecné účely může později vyvinout speciální dialekty specifické pro danou doménu.

Některé známé příklady:

  • Bash , interpretovaný skriptovací jazyk pro použití v operačních systémech a prostředích Unix a Unix .
  • PowerShell , skriptovací jazyk pro použití v operačních systémech Microsoft Windows .
  • sed a AWK , dva jazyky pro zpracování textu používané hlavně v prostředích podobných Unixu.
  • Perl , jazyk pro zpracování textu, který se později vyvinul do jazyka pro obecné účely, se také používá jako jazyk rozšíření pro různé aplikace.
  • Python , skriptovací jazyk pro obecné účely, používaný také jako rozšiřující jazyk.
  • Tcl , skriptovací jazyk pro unixová prostředí, populární v 90. letech pro vytváření GUI aplikací.
  • JavaScript (později: ECMAScript ), původně velmi malý, vysoce doménový jazyk, omezený na běh ve webovém prohlížeči pro dynamickou úpravu zobrazované webové stránky, který se později vyvinul v široce přenosný univerzální programovací jazyk.
  • Visual Basic for Applications , jazyk rozšíření specificky pro aplikace Microsoft Office .
  • Lua , jazyk navržený pro použití jako rozšířený jazyk pro aplikace obecně a jako takový jej používá mnoho různých aplikací.
  • Lisp , řada jazyků pro všeobecné použití a rozšiřujících jazyků pro konkrétní aplikace, např. Emacs Lisp , pro editor Emacs .
  • Některé herní systémy byly značně rozšířeny o funkčnost skriptováním rozšíření pomocí vlastních jazyků, zejména virtuálního světa Second Life (pomocí Linden Scripting Language ) a Trainz franšízy železničních simulátorů (pomocí TrainzScript). V některých hrách, jako je Wesnoth , uživatelé hrají vlastní varianty hry definované skripty přispívanými uživateli.

Charakteristika

Typické skriptovací jazyky jsou zamýšleny jako velmi rychlé pro učení a zápis, ať už jako krátké soubory zdrojového kódu, nebo interaktivně ve smyčce read -eval -print (REPL, language shell). To obecně znamená relativně jednoduchou syntaxi a sémantiku ; obvykle se „skript“ (kód napsaný ve skriptovacím jazyce) spouští od začátku do konce jako „skript“ bez explicitního vstupního bodu .

Například je neobvyklé charakterizovat Javu jako skriptovací jazyk kvůli její dlouhé syntaxi a pravidlům, které třídy existují v jakých souborech, a není přímo možné spouštět Javu interaktivně, protože zdrojové soubory mohou obsahovat pouze definice, které je nutné vyvolat externě hostitelskou aplikací nebo spouštěčem aplikací .

public class HelloWorld {
    public void printHelloWorld() {
        System.out.println("Hello World");
    }
}

Tento kus kódu určený pro tisk „Hello World“ nedělá nic jako main () se není deklarována v HelloWorld třídy, i když nižší než ta, by bylo užitečné.

public class HelloWorld {
    public void printHelloWorld() {
        System.out.println("Hello World");
    }
    public static void main(String[] args) {
        printHelloWorld();
    }
}

Ve výše uvedeném příkladu je definován main, a tak jej lze vyvolat spouštěčem, i když to stále nelze provést interaktivně. Naproti tomu Python umožňuje definici některých funkcí v jednom souboru, nebo se funkcím zcela vyhnout a použít imperativní programovací styl, nebo jej dokonce použít interaktivně.

print("Hello World")
print "Hello World"  # Python 2.7 or earlier

Tento jeden řádek kódu Pythonu vytiskne „Hello World“; zde není vyžadováno žádné deklarativní prohlášení jako main () .

Skriptovací jazyk je obvykle interpretován ze zdrojového kódu nebo bajtkódu . Naproti tomu softwarové prostředí (interpret), pro které jsou skripty napsány, je obvykle psáno v kompilovaném jazyce a distribuováno ve formě strojového kódu .

Skriptovací jazyky mohou být navrženy pro použití koncovými uživateli programu -vývoj pro koncové uživatele - nebo mohou být pouze pro interní použití vývojáři, takže mohou psát části programu ve skriptovacím jazyce. Skriptovací jazyky obvykle používají abstrakci , což je forma skrývání informací , aby uživatelům ušetřily podrobnosti o typech interních proměnných, ukládání dat a správě paměti .

Skripty jsou často vytvářeny nebo upravovány osobou, která je provádí, ale jsou také často distribuovány, například když jsou velké části her napsány ve skriptovacím jazyce, zejména ve hře Google Chrome T-rex.

Dějiny

Počáteční sálové počítače (v 50. letech 20. století) byly neinteraktivní, místo toho používaly dávkové zpracování . IBM Job Control Language (JCL) je archetyp jazyků používaných k řízení dávkového zpracování.

První interaktivní skořápky byly vyvinuty v šedesátých letech minulého století, aby umožňovaly dálkový provoz prvních systémů pro sdílení času , a tyto používaly skripty prostředí , které řídily spouštění počítačových programů v rámci počítačového programu, shellu. Calvin Mooers ve svém jazyce TRAC je obecně uznáván jako vynálezce nahrazování příkazů , schopnost vkládat příkazy do skriptů, které při interpretaci vkládají do skriptu řetězec znaků. Multics tyto aktivní funkce nazývá . Louis Pouzin napsal raný procesor pro příkazové skripty s názvem RUNCOM pro CTSS kolem roku 1964. Stuart Madnick na MIT napsal skriptovací jazyk pro CP/CMS IBM v roce 1966. Původně tento procesor nazýval COMMAND, později pojmenovaný EXEC . Multics zahrnoval odnož CTSS RUNCOM, také nazývaný RUNCOM. EXEC byl nakonec nahrazen EXEC 2 a REXX .

Jazyky jako Tcl a Lua byly speciálně navrženy jako skriptovací jazyky pro obecné účely, které lze integrovat do jakékoli aplikace. Jiné jazyky, jako například Visual Basic for Applications (VBA), poskytovaly silnou integraci s automatizačními zařízeními základního systému. Vkládání takových obecných skriptovacích jazyků místo vývoje nového jazyka pro každou aplikaci mělo také zjevné výhody, protože vývojáře aplikací zbavilo nutnosti kódovat překladač jazyků od nuly a uživateli umožnilo uplatnit dovednosti získané jinde.

Některý software obsahuje několik různých skriptovacích jazyků. Moderní webové prohlížeče obvykle nabízejí jazyk pro zápis rozšíření do samotného prohlížeče a několik standardních vestavěných jazyků pro ovládání prohlížeče, včetně JavaScriptu (dialektu ECMAScriptu ) nebo XUL .

Typy

Skriptovací jazyky lze rozdělit do několika různých typů se značným stupněm překrývání mezi těmito typy.

Jazyky lepidla

Skriptování je často v kontrastu se systémovým programováním , jako v Ousterhoutově dichotomii nebo „ programování ve velkém a programování v malém “. V tomto pohledu je skriptování kód lepidla , propojování softwarových komponent a jazyk specializovaný pro tento účel je jazyk lepidla . Plynovody a skriptování prostředí jsou archetypálními příklady jazyků lepidla a Perl byl původně vyvinut, aby plnil stejnou roli. Vývoj webu lze považovat za použití lepicích jazyků, propojení mezi databází a webovým serverem . Pokud je však ve skriptu napsáno značné množství logiky, je lépe charakterizováno jako jednoduše další softwarová součást, nikoli „lepidlo“.

Jazyky lepidel jsou zvláště užitečné pro psaní a údržbu:

  • vlastní příkazy pro příkazový shell;
  • menší programy než ty, které jsou lépe implementovány v kompilovaném jazyce;
  • „wrapper“ programy pro spustitelné soubory, jako dávkový soubor, který přesouvá nebo manipuluje se soubory a dělá jiné věci s operačním systémem před nebo po spuštění aplikace, jako je textový procesor, tabulka, databáze, assembler, kompilátor atd .;
  • skripty, které se mohou změnit;
  • Rychlý vývoj aplikace řešení nakonec implementováno v jiném, obvykle kompilovaném, jazyce.

Příklady jazyků lepidla:

Jako jazyky lepidla mohou sloužit jazyky makra vystavené komponentám operačního systému nebo aplikace. Patří mezi ně Visual Basic for Applications , WordBasic , LotusScript , CorelScript , Hummingbird Basic, QuickScript, Rexx, SaxBasic a WinWrap Basic . Za lepicí jazyky lze považovat i jiné nástroje, jako je AWK , stejně jako jakýkoli jazyk implementovaný pomocí Windows Script Host engine (VBScript, JScript a VBA ve výchozím nastavení ve Windows a motory třetích stran včetně implementací Rexx, Perl, Tcl, Python, XSLT, Ruby, Modern Pascal, Delphi a C). Většina aplikací může přistupovat a používat součásti operačního systému prostřednictvím objektových modelů nebo vlastních funkcí.

Další zařízení, jako jsou programovatelné kalkulačky, mohou mít také jazyky lepidla; operační systémy PDA, jako je Windows CE, mohou mít k dispozici nativní makra nebo nástroje třetích stran pro makra, které spojují aplikace dohromady, kromě implementací běžných jazyků lepidel-včetně Windows NT , DOS a některých unixových prostředí , Rexx, Modern Pascal, PHP a Perl. V závislosti na verzi operačního systému je k dispozici WSH a výchozí skriptovací nástroje (VBScript a JScript).

Programovatelné kalkulačky lze v jazycích lepidla programovat třemi způsoby. Například Texas Instruments TI-92 lze ve výchozím nastavení z výroby naprogramovat v jazyce příkazového skriptu. Začlenění skriptovacího a lepicího jazyka Lua do řady kalkulaček TI-NSpire lze považovat za jeho nástupce. Primární integrované programovací jazyky na vysoké úrovni většiny grafických kalkulaček (nejčastěji základní varianty, někdy deriváty Lisp a méně často C deriváty) v mnoha případech mohou spojovat funkce kalkulačky-například grafy, seznamy, matice atd. K dispozici jsou implementace komplexnějších základních verzí třetích stran, které mohou být blíže variantám uvedeným v tomto článku jako jazyky lepidla-a jsou zmíněny také pokusy implementovat Perl, Rexx nebo různé skořápky operačního systému na grafických kalkulačkách TI a HP. Křížové kompilátory C na bázi PC pro některé stroje TI a HP používané s nástroji, které převádějí mezi skripty C a Perl, Rexx, AWK a shell na Perl, Modern Pascal, VBScript do az Perlu umožňují napsat program v lepidlovém jazyce pro případnou implementaci (jako kompilovaný program) na kalkulačce.

Jazyky editoru

Řada textových editorů podporuje makra napsaná buď pomocí jazyka maker zabudovaného do editoru, např. The SemWare Editor (TSE), vi vylepšené (VIM), nebo pomocí externí implementace, např. XEDIT , nebo obojí, např. KEDIT . Někdy jsou pod kryty použity textové editory a editační makra k poskytování dalších aplikací, např. FILELIST a RDRLIST v CMS .

Jazyky a skořápky řízení úloh

Z automatizace řízení úloh , která se týká spouštění a řízení chování systémových programů, vyrostla velká třída skriptovacích jazyků . (V tomto smyslu by se o skořápkách dalo uvažovat jako o potomcích IBM JCL neboli Job Control Language , který byl použit právě k tomuto účelu.) Mnoho interpretů těchto jazyků slouží jako tlumočníci příkazového řádku , jako je Unix shell nebo MS-DOS COMMAND.COM. Jiné, například AppleScript, nabízejí k vytváření skriptů použití příkazů podobných angličtině.

GUI skriptování

S příchodem grafických uživatelských rozhraní se vyvinul specializovaný druh skriptovacího jazyka pro ovládání počítače. Tyto jazyky spolupracují se stejnými grafickými okny, nabídkami, tlačítky atd., Jako by to dělal lidský uživatel. Dělají to simulací akcí uživatele. Tyto jazyky se obvykle používají k automatizaci akcí uživatelů. Těmto jazykům se také říká „ makra “, pokud je ovládání prováděno pomocí simulovaných stisknutí kláves nebo kliknutí myší, stejně jako klepání nebo stisknutí na dotykové obrazovce.

Tyto jazyky by v zásadě mohly být použity k ovládání jakékoli aplikace GUI; ale v praxi je jejich použití omezené, protože jejich použití vyžaduje podporu aplikace a operačního systému . Z tohoto omezení existuje několik výjimek. Některé skriptovací jazyky GUI jsou založeny na rozpoznávání grafických objektů podle jejich pixelů na obrazovce . Tyto skriptovací jazyky GUI nezávisí na podpoře operačního systému nebo aplikace.

Pokud GUI poskytuje příslušná rozhraní, jako v prostředí IBM Workplace Shell , lze pro psaní skriptů GUI použít obecný skriptovací jazyk, např. OREXX .

Jazyky specifické pro aplikaci

Aplikačně specifické jazyky lze rozdělit do mnoha různých kategorií, tj. Mezi samostatné jazyky aplikací (spustitelné) nebo interní jazyky specifické pro konkrétní aplikace (postscript, xml, gscript jako některé z široce distribuovaných skriptů, respektive implementovaných Adobe, MS a Google), mezi jinými patří idiomatický skriptovací jazyk přizpůsobený potřebám uživatele aplikace. Podobně mnoho počítačových herních systémů používá vlastní skriptovací jazyk k vyjádření naprogramovaných akcí postav, které nejsou hráči, a herního prostředí. Jazyky tohoto druhu jsou určeny pro jedinou aplikaci; a přestože se mohou povrchně podobat konkrétnímu obecnému jazyku (např. QuakeC , podle vzoru C), mají vlastní funkce, které je odlišují. Emacs Lisp , přestože je plně formovaným a schopným dialektem Lispu , obsahuje mnoho speciálních funkcí, díky nimž je nejužitečnější pro rozšíření editačních funkcí Emacsu. Skriptovací jazyk pro konkrétní aplikaci lze zobrazit jako programovací jazyk pro konkrétní doménu specializovaný na jednu aplikaci.

Jazyky rozšíření/vložení

Řada jazyků byla navržena za účelem nahrazení skriptovacích jazyků specifických pro aplikaci jejich vložením do aplikačních programů. Aplikační programátor (pracující v jazyce C nebo jiném systémovém jazyce) obsahuje „háčky“, kde může skriptovací jazyk ovládat aplikaci. Tyto jazyky mohou být technicky ekvivalentní jazyku rozšíření pro konkrétní aplikaci, ale když aplikace vloží „společný“ jazyk, uživatel získá výhodu v možnosti přenášet dovednosti z aplikace do aplikace. Obecnější alternativou je jednoduše poskytnout knihovnu (často knihovnu C), kterou může jazyk pro obecné účely použít k ovládání aplikace, aniž by došlo ke změně jazyka pro konkrétní doménu.

JavaScript začínal jako a především stále je jazykem pro skriptování ve webových prohlížečích ; Standardizace jazyka jako ECMAScript jej však proslavila jako obecně použitelný vložitelný jazyk. Zejména implementace Mozilla SpiderMonkey je integrována do několika prostředí, jako je Yahoo! Widget Engine . Další aplikace vkládání implementace ECMAScript patří Adobe produkty Adobe Flash ( ActionScript ) a Adobe Acrobat (pro skriptovací PDF soubory).

Tcl byl vytvořen jako rozšiřující jazyk, ale začal se používat častěji jako univerzální jazyk v rolích podobných Pythonu , Perlu a Ruby . Na druhou stranu byl Rexx původně vytvořen jako jazyk pro řízení úloh, ale je široce používán jako rozšiřující jazyk i jako jazyk pro obecné účely. Perl je jazyk pro všeobecné účely, ale měl dialekt Oraperl (1990), skládající se z binárního souboru Perl 4 s integrovaným rozhraním Oracle Call Interface . Od té doby však byl nahrazen knihovnou (Perl Module), DBD :: Oracle .

Jiné složité a na úkoly orientované aplikace mohou zahrnovat a vystavovat vestavěný programovací jazyk, aby jejich uživatelé měli větší kontrolu a poskytli jim více funkcí, než jaké mohou být dostupné prostřednictvím uživatelského rozhraní, bez ohledu na to, jak je to sofistikované. Například nástroje pro tvorbu obsahu Autodesk Maya 3D obsahují nástroj Maya Embedded Language nebo Blender, který k naplnění této role používá Python .

Některé další typy aplikací, které vyžadují rychlejší přidávání funkcí nebo cykly ladění a spouštění (např. Herní motory ), také používají integrovaný jazyk. Během vývoje jim to umožňuje rychlejší prototypování funkcí a volnější vyladění, aniž by uživatel musel mít důvěrné znalosti o vnitřním fungování aplikace nebo ji po každém vyladění znovu sestavit (což může zabrat značné množství času) . Skriptovací jazyky používané pro tento účel sahají od běžnějších a slavnějších Lua a Python po méně známé, jako jsou AngelScript a Squirrel .

Ch je další možnost skriptování kompatibilní s C pro průmysl, kterou lze vložit do aplikačních programů C/C ++.

Viz také

Reference

Další čtení

externí odkazy