Skriptspråk - Scripting language

Ett skriptspråk eller skriptspråk är ett programmeringsspråk för ett körningssystem som automatiserar utförandet av uppgifter som annars skulle utföras individuellt av en mänsklig operatör. Skriptspråk tolkas vanligtvis vid körning snarare än kompileras .

Ett skriptspråks primitiv är vanligtvis elementära uppgifter eller API -anrop, och skriptspråket låter dem kombineras till fler program. Miljöer som kan automatiseras genom scripting inkluderar programvara , textredigerare , webbsidor , operativsystem skal , inbyggda system och dataspel . Ett skriptspråk kan ses som ett domänspecifikt språk för en viss miljö; när det gäller att skripta en applikation är den också känd som ett tilläggsspråk . Scriptspråk kallas också ibland för programmeringsspråk på mycket hög nivå , eftersom de ibland fungerar på en hög abstraktionsnivå, eller som kontrollspråk , särskilt för jobbkontrollspråk på stordatorer.

Begreppet skriptspråk används också i vidare bemärkelse, nämligen att hänvisa till dynamiska programmeringsspråk på hög nivå i allmänhet; vissa är strikt tolkade språk , medan andra använder en form av sammanställning. I detta sammanhang avser termen script ett litet program på ett sådant språk; vanligtvis i en enda fil och inte större än några tusen rader kod.

Spektrumet av skriptspråk sträcker sig från små till stora och från mycket domänspecifika språk till generella programmeringsspråk . Ett språk kan börja som litet och mycket domänspecifikt och senare utvecklas till ett bärbart och allmänt användbart språk; omvänt kan ett allmänt språk senare utveckla särskilda domänspecifika dialekter.

Några välkända exempel:

  • Bash , ett tolkat skriptspråk för användning på Unix och Unix-liknande operativsystem och miljöer.
  • PowerShell , ett skriptspråk för användning på Microsoft Windows -operativsystem.
  • sed och AWK , två textbehandlingsspråk som främst används i Unix-liknande miljöer.
  • Perl , ett textbehandlingsspråk som senare utvecklades till ett allmänt språk, som också används som ett tilläggsspråk för olika applikationer.
  • Python , ett skriptspråk för allmänna ändamål, används också som ett tilläggsspråk.
  • Tcl , ett skriptspråk för Unix-liknande miljöer, populärt på 1990-talet för att skapa GUI-applikationer.
  • JavaScript (senare: ECMAScript ), ursprungligen ett mycket litet, mycket domänspecifikt språk, begränsat till att köras i en webbläsare för att dynamiskt modifiera den webbsida som visas, som senare utvecklades till ett allmänt bärbart allmänt programmeringsspråk.
  • Visual Basic for Applications , ett tilläggsspråk specifikt för Microsoft Office -program.
  • Lua , ett språk som är utformat för att användas som ett tilläggsspråk för applikationer i allmänhet och som sådant används av många olika applikationer.
  • Lisp , en familj av allmänna språk och tilläggsspråk för specifika applikationer, t.ex. Emacs Lisp , för Emacs- redigeraren.
  • Vissa spelsystem har utökats mycket i funktionalitet genom att skripttillägg använder anpassade språk, särskilt Second Life -virtuella världen (med hjälp av Linden Scripting Language ) och Trainz -serien av Railroad -simulatorer (med hjälp av TrainzScript). I vissa spel, som Wesnoth , spelar användare anpassade varianter av spelet som definieras av användarbidrag.

Egenskaper

Typiska skriptspråk är avsedda att vara mycket snabba att lära sig och skriva in, antingen som korta källkodfiler eller interaktivt i en läs -eval -utskriftsslinga (REPL, språkskal). Detta innebär i allmänhet relativt enkel syntax och semantik ; vanligtvis körs ett "skript" (kod skrivet på skriptspråket) från början till slut, som ett "skript", utan någon uttrycklig ingångspunkt .

Till exempel är det ovanligt att karakterisera Java som ett skriptspråk på grund av dess långa syntax och regler om vilka klasser som finns i vilka filer, och det är inte direkt möjligt att köra Java interaktivt, eftersom källfiler bara kan innehålla definitioner som måste åberopas externt av en värdprogram eller programstartare .

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

Denna bit kod för avsikt att skriva ut "Hello World" gör ingenting som main () är inte deklarerats i Helloworld klassen, även om den nedan skulle vara bra.

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

I exemplet ovan är main definierat och så kan detta åberopas av startprogrammet, även om detta fortfarande inte kan utföras interaktivt. Däremot tillåter Python definition av vissa funktioner i en enda fil, eller för att helt undvika funktioner och använda imperativ programmeringsstil , eller till och med använda den interaktivt.

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

Denna enda rad med Python -kod skriver ut "Hello World"; inget deklarativt uttalande som main () krävs här.

Ett skriptspråk tolkas vanligtvis från källkod eller bytekod . Däremot skrivs mjukvarumiljön (tolk) som skripten skrivs för vanligtvis på ett sammanställt språk och distribueras i maskinkodform .

Skriptspråk kan vara utformade för användning av slutanvändare av ett program -slutanvändarutveckling- eller kan endast vara avsedda för internt bruk av utvecklare, så att de kan skriva delar av programmet på skriptspråket. Scriptspråk använder vanligtvis abstraktion , en form av informationsdöljning , för att skona användare detaljerna om interna variabeltyper, datalagring och minneshantering .

Skript skapas eller modifieras ofta av personen som kör dem, men de distribueras också ofta, till exempel när stora delar av spel skrivs på ett skriptspråk, särskilt Google Chrome T-rex-spelet.

Historia

Tidiga stordatorer (på 1950-talet) var icke-interaktiva, istället använde de batchbearbetning . IBM's Job Control Language (JCL) är arketypen för språk som används för att styra batchbearbetning.

De första interaktiva skalen utvecklades på 1960-talet för att möjliggöra fjärrstyrning av de första tidsdelningssystemen , och dessa använde skalskript , som styrde att köra datorprogram i ett datorprogram, skalet. Calvin Mooers på sitt TRAC -språk krediteras i allmänhet för att han uppfann kommandosubstitution , möjligheten att bädda in kommandon i skript som vid tolkning infogar en teckensträng i skriptet. Multics kallar dessa aktiva funktioner . Louis Pouzin skrev en tidig processor för kommandoskript som kallades RUNCOM för CTSS omkring 1964. Stuart Madnick på MIT skrev ett skriptspråk för IBM: s CP/CMS 1966. Han kallade ursprungligen denna processor COMMAND, senare benämnd EXEC . Multics inkluderade en utlösning av CTSS RUNCOM, även kallad RUNCOM. EXEC ersattes så småningom av EXEC 2 och REXX .

Språk som Tcl och Lua var specifikt utformade som skriptspråk för allmänna ändamål som kunde vara inbäddade i alla applikationer. Andra språk som Visual Basic for Applications (VBA) gav en stark integration med automatiseringsfunktionerna i ett underliggande system. Inbäddning av sådana skriptspråk för allmänna ändamål istället för att utveckla ett nytt språk för varje applikation hade också uppenbara fördelar, vilket avlastade applikationsutvecklaren från behovet av att koda en språköversättare från grunden och tillät användaren att tillämpa färdigheter som lärt sig någon annanstans.

En del programvara innehåller flera olika skriptspråk. Moderna webbläsare tillhandahåller vanligtvis ett språk för att skriva tillägg till själva webbläsaren och flera standardinbäddade språk för att styra webbläsaren, inklusive JavaScript (en dialekt av ECMAScript ) eller XUL .

Typer

Skriptspråk kan kategoriseras i flera olika typer, med en avsevärd grad av överlappning bland typerna.

Lim språk

Scripting kontrasteras ofta med systemprogrammering , som i Ousterhouts dikotomi eller " programmering i det stora och programmering i det lilla ". I denna vy är scripting limkod , anslutning av programvarukomponenter , och ett språk som är specialiserat för detta ändamål är ett limspråk . Rörledningar och skalskript är arketypiska exempel på limspråk, och Perl utvecklades ursprungligen för att fylla samma roll. Webbutveckling kan betraktas som en användning av limspråk, gränssnitt mellan en databas och webbserver . Men om en betydande mängd logik skrivs i manus, karakteriseras det bättre som helt enkelt en annan programvarukomponent, inte "lim".

Limspråk är särskilt användbara för att skriva och underhålla:

  • anpassade kommandon för ett kommandoskal;
  • mindre program än de som är bättre implementerade på ett sammanställt språk;
  • "wrapper" -program för körbara filer, som en batchfil som flyttar eller manipulerar filer och gör andra saker med operativsystemet före eller efter att ha kört ett program som en ordbehandlare, kalkylblad, databas, assembler, kompilator, etc.;
  • skript som kan ändras;
  • Snabb applikationsutveckling av en lösning som så småningom implementerades på ett annat, vanligtvis sammanställt, språk.

Limspråksexempel:

Makrospråk som exponeras för operativsystem eller applikationskomponenter kan fungera som limspråk. Dessa inkluderar Visual Basic för applikationer , WordBasic , LotusScript , CorelScript , Hummingbird Basic, QuickScript, Rexx, SaxBasic och WinWrap Basic . Andra verktyg som AWK kan också betraktas som limspråk, liksom alla språk som implementeras av en Windows Script Host- motor (VBScript, JScript och VBA som standard i Windows och tredjepartsmotorer inklusive implementeringar av Rexx, Perl, Tcl, Python, XSLT, Ruby, Modern Pascal, Delphi och C). En majoritet av applikationerna kan komma åt och använda operativsystemets komponenter via objektmodellerna eller sina egna funktioner.

Andra enheter som programmerbara räknare kan också ha limspråk; operativsystemen för handdatorer som Windows CE kan ha tillgängliga makroverktyg från tredje part eller tredjepart som limer samman applikationer, förutom implementeringar av vanliga limspråk-inklusive Windows NT , DOS och några Unix-skal , Rexx, Modern Pascal, PHP och Perl. Beroende på OS -versionen finns WSH och standardskriptmotorerna (VBScript och JScript) tillgängliga.

Programmerbara räknare kan programmeras på limspråk på tre sätt. Till exempel kan Texas Instruments TI-92 som standard programmeras med ett kommandoskriptspråk. Att inkludera skript- och limspråket Lua i TI-NSpire-räknaren kan ses som en efterföljare till detta. De flesta inbyggda högnivåprogrammeringsspråk för de flesta grafräknare (oftast Basic-varianter, ibland Lisp-derivat och mer ovanligt, C-derivat) kan i många fall limma ihop kalkylatorfunktioner-till exempel grafer, listor, matriser etc. Tredjepartsimplementeringar av en mer omfattande grundversion som kan vara närmare de varianter som listas som limspråk i den här artikeln finns tillgängliga-och försök att implementera Perl, Rexx eller olika operativsystemskal på TI- och HP-grafkalkylatorer nämns också. PC-baserade C -tvärkompilatorer för några av TI- och HP-maskinerna som används med verktyg som konverterar mellan C och Perl, Rexx, AWK och skalskript till Perl, Modern Pascal, VBScript till och från Perl gör det möjligt att skriva ett program på ett limspråk för eventuell implementering (som ett kompilerat program) på miniräknaren.

Redaktörsspråk

Ett antal textredigerare stöder makron skriven antingen med hjälp av ett makrospråk inbyggt i redigeraren, t.ex. SemWare Editor (TSE), vi förbättrad (VIM), eller använder en extern implementering, t.ex. XEDIT , eller båda, t.ex. KEDIT . Ibland används textredigerare och redigeringsmakron under omslagen för att tillhandahålla andra applikationer, t.ex. FILELIST och RDRLIST i CMS .

Jobbkontrollspråk och skal

En stor klass med skriptspråk har vuxit fram från automatiseringen av jobbkontroll , som relaterar till att starta och kontrollera beteendet hos systemprogram. (I den meningen kan man tänka sig att skal är ättlingar till IBM: s JCL eller Job Control Language , som användes för just detta ändamål.) Många av dessa språks tolkar fungerar som kommandoradstolkar som Unix-skalet eller MS-DOS COMMAND.COM. Andra, som AppleScript erbjuder användning av engelska-liknande kommandon för att bygga skript.

GUI -skript

Med tillkomsten av grafiska användargränssnitt uppstod ett specialiserat slags skriptspråk för att styra en dator. Dessa språk interagerar med samma grafiska fönster, menyer, knappar och så vidare, som en mänsklig användare skulle. De gör detta genom att simulera en användares handlingar. Dessa språk används vanligtvis för att automatisera användaråtgärder. Sådana språk kallas också " makron " när kontrollen sker genom simulerade knapptryckningar eller musklick, samt genom att trycka eller trycka på en pekskärm.

Dessa språk kan i princip användas för att styra alla GUI -applikationer; men i praktiken är deras användning begränsad eftersom deras användning behöver stöd från applikationen och från operativsystemet . Det finns några undantag från denna begränsning. Vissa GUI -skriptspråk är baserade på att känna igen grafiska objekt från bildskärmens pixlar . Dessa GUI -skriptspråk är inte beroende av stöd från operativsystemet eller applikationen.

När GUI tillhandahåller lämpliga gränssnitt, som i IBM Workplace Shell , kan ett generiskt skriptspråk, t.ex. OREXX , användas för att skriva GUI -skript.

Applikationsspecifika språk

Applikationsspecifika språk kan delas upp i många olika kategorier, det vill säga fristående baserade appspråk (körbara) eller interna applikationsspecifika språk (postscript, xml, gscript som några av de utbredda skripten, respektive implementerade av Adobe, MS och Google). ett idiomatiskt skriptspråk skräddarsytt för applikationsanvändarens behov. På samma sätt använder många datorspelsystem ett anpassat skriptspråk för att uttrycka de programmerade åtgärderna från icke-spelare-karaktärer och spelmiljön. Språk av detta slag är utformade för en enda applikation; och även om de kan ytligt likna ett specifikt allmänt språk (t.ex. QuakeC , modellerat efter C), har de anpassade funktioner som utmärker dem. Emacs Lisp , medan en fullt utformad och kapabel dialekt av Lisp , innehåller många specialfunktioner som gör det mest användbart för att utöka redigeringsfunktionerna för Emacs. Ett applikationsspecifikt skriptspråk kan ses som ett domänspecifikt programmeringsspråk specialiserat på en enda applikation.

Tillägg/inbäddningsbara språk

Ett antal språk har utformats för att ersätta applikationsspecifika skriptspråk genom att vara inbäddbara i applikationsprogram. Applikationsprogrammeraren (som arbetar i C eller ett annat systemspråk) innehåller "krokar" där skriptspråket kan styra applikationen. Dessa språk kan tekniskt motsvara ett applikationsspecifikt tilläggsspråk, men när en applikation bäddar in ett "gemensamt" språk får användaren fördelen att kunna överföra färdigheter från applikation till applikation. Ett mer generiskt alternativ är helt enkelt att tillhandahålla ett bibliotek (ofta ett C-bibliotek) som ett allmänt språk kan använda för att styra programmet, utan att modifiera språket för den specifika domänen.

JavaScript började som och är främst fortfarande ett språk för skript i webbläsare ; standardiseringen av språket som ECMAScript har dock gjort det populärt som ett inbyggbart språk för allmänna ändamål. I synnerhet är Mozilla -implementeringen SpiderMonkey inbäddad i flera miljöer som Yahoo! Widgetmotor . Andra applikationer som bäddar in ECMAScript -implementeringar inkluderar Adobe -produkterna Adobe Flash ( ActionScript ) och Adobe Acrobat (för att skripta PDF -filer).

Tcl skapades som ett förlängningsspråk men har kommit att användas oftare som ett allmänt språk i roller som liknar Python , Perl och Ruby . Å andra sidan skapades Rexx ursprungligen som ett jobbkontrollspråk, men används ofta som ett förlängningsspråk såväl som ett allmänt språk. Perl är ett allmänt språk, men hade dialekten Oraperl (1990), bestående av en Perl 4-binär med Oracle Call Interface kompilerat i. Detta har dock sedan ersatts av ett bibliotek (Perl Module), DBD :: Oracle .

Andra komplexa och uppgiftsorienterade applikationer kan innehålla och exponera ett inbäddat programmeringsspråk för att ge sina användare mer kontroll och ge dem mer funktionalitet än vad som kan vara tillgängligt via ett användargränssnitt, oavsett hur sofistikerat det är. Till exempel bäddar Autodesk Maya 3D -redigeringsverktyg in Maya Embedded Language eller Blender som använder Python för att fylla denna roll.

Vissa andra typer av applikationer som behöver snabbare funktionstillägg eller tweak-and-run-cykler (t.ex. spelmotorer ) använder också ett inbäddat språk. Under utvecklingen tillåter detta dem att prototypa funktioner snabbare och finjustera mer fritt, utan att användaren behöver ha intim kunskap om programmets inre funktion eller att bygga om det efter varje tweak (vilket kan ta en betydande tid) . Skriptspråken som används för detta ändamål sträcker sig från de mer vanliga och mer kända Lua och Python till mindre kända språk som AngelScript och ekorre .

Ch är ett annat C -kompatibelt skriptalternativ för industrin att bädda in i C/C ++ applikationsprogram.

Se även

Referenser

Vidare läsning

externa länkar