Scriptsprog
Et scripting- eller scriptsprog er et programmeringssprog, der understøtter scripts. Scripts er normalt korte computerprogrammer, der udfører trin, som en person kan udføre et ad gangen. Dette automatiserer et arbejde for at gøre det nemmere og mere pålideligt. Et scriptingsprog er ofte et enklere sprog og lettere at lære end andre sprog, men kan stadig gøre mange ting.
Scripts kan køre inde i et andet program, f.eks. i en webbrowser eller Microsoft Excel. De kan også være en shell, der kører fra en kommandolinjeinterface og foretager kald til operativsystemet (OS). Shell'en betragtes som interaktiv - brugeren kan vælge, hvad han/hun vil skrive, og shell'en reagerer på kommandoen. Disse kan bruges til at styre opgaver på mainframes og servere.
Nogle siger, at et scriptingsprog skal være bundet til en bestemt anvendelse. Andre bruger en bredere definition og medtager programmeringssprog til generelle formål, som fortolkes og ikke kompileres. Generelt betyder, at det kan bruges på mange forskellige måder til forskellige ting. Nogle generelle sprog (f.eks. Java) har varianter, der kan scriptes (Javascript). Der er ingen specifikke regler for, hvad der er eller ikke er et scriptingsprog.
Eksempler
Nogle almindelige eksempler på scriptingsprog:
- Bash og C shell, som styresprog til Unix- eller Unix-lignende styresystemer
- Scripts, der kører inde i et andet program, kaldes et udvidelsessprog. Webbrowsere tillader flere typer scripts, herunder ECMAScript (JavaScript) eller XUL. Google-hjemmesiden bruger f.eks. JavaScript. Visual Basic for Applications anvendes i Microsoft Office. Lua er et sprog, der er lavet specielt som et udvidelsessprog og kan bruges i mange programmer.
- Spil med scripting-udvidelser omfatter den virtuelle verden Second Life og Trainz Railroad-simulatorer. I andre spil som Wesnoth er mange af de spil, der faktisk spilles, scripts skrevet af andre brugere.
- Tekstbehandlingssprog sed og AWK
- Generelle formål: Perl, Tcl og Python er programmeringssprog på højt niveau (tættere på menneskesprog end på maskinkode), som kan bruges til mange forskellige ting. Nogle af disse sprog blev først udviklet til et bestemt formål og blev derefter ændret til generelle sprog.
Egenskaber
De fleste scriptingsprog er lavet til at være lette at lære. De kan ofte enten være korte filer med kildekode eller indtastes én kommando ad gangen i en kommandolinjeinterface, som har en "read-eval-print"-sløjfe (REPL, sprogskal). Dette betyder normalt et simpelt sæt af kommandoer. Der er måske ikke funktioner eller en main, det kører bare fra start til slut. Hvis noget ikke virker, kan en programmør foretage hurtige ændringer og køre det igen. Dette gør et scriptingsprog godt til at lave en hurtig prototype for at se, om en idé virker.
De fleste kalder f.eks. ikke Java for et scriptingsprog på grund af dets lange syntaks og regler om, hvilke klasser der findes i hvilke filer, og fordi Java ikke kan udføres interaktivt i en REPL. Det har brug for filer med kildekode, og de kan kun indeholde definitioner, som skal bruges af et værtsprogram eller en programstarter. (Java er ikke det samme som JavaScript).
Men Python giver valgmuligheder - funktioner kan lægges i en fil, det kan køres uden funktioner og bruge imperativ programmeringsstil, eller endda bruges interaktivt (skriv og kør en linje ad gangen).
print ("Hello World")
Denne ene linje Python-kode udskriver "Hello World"; der er ikke brug for nogen main()-funktion eller andet.
Et scriptingsprog fortolkes normalt fra kildekode eller bytekode. Der er dog noget, der skal køre scriptet (fortolke det), så computeren forstår det. Dette er et program eller noget i operativsystemet. Det er ofte skrevet i et kompileret sprog og distribueres i maskinkodeform (som en eksekverbar fil, der ikke giver mening for mennesker).
Scripting-sprog kan være designet til at blive brugt af de personer, der bruger et program - slutbrugerudvikling. Andre gange kan de være udviklet af programmører til deres eget brug. Scriptingsprog anvender ofte abstraktion, en form for informationsskjuler. Det betyder, at brugerne ikke behøver at kende detaljerne om variabeltyper, datalagring og hukommelsesstyring.
Skripter laves eller ændres ofte af den person, der udfører dem, men nogle deles eller sælges til andre. F.eks. når store dele af spil er skrevet i et scriptingsprog. Nogle gange kan et script kompileres, før andre bruger det. Når det er kompileret, kører det hurtigere og har ikke brug for et andet program for at køre det. Og det forhindrer slutbrugerne i at ændre koden.
Historie
De tidlige mainframe-computere (i 1950'erne) var ikke interaktive, men brugte scripts gemt i batchfiler. IBM's Job Control Language (JCL) er et almindeligt eksempel på et scriptingsprog, der bruges til at styre batchbehandling.
De første interaktive shells blev lavet i 1960'erne for at hjælpe fjernbetjening af de første time-sharing-systemer. Disse brugte shell-scripts, som kan køre computerprogrammer i et computerprogram, shell'en. Calvin Mooers i sit TRAC-sprog får generelt æren for at have opfundet kommandosubstitution. Dette gør det muligt for kommandoer at ændre scriptet (selvmodificerende kode). Multics kalder disse aktive funktioner for aktive funktioner. Louis Pouzin skrev en tidlig processor til kommandoscripts kaldet RUNCOM til CTSS omkring 1964. Stuart Madnick fra MIT skrev et scriptingsprog til IBM's CP/CMS i 1966. Han kaldte oprindeligt denne processor COMMAND, senere kaldet EXEC. Multics indeholdt en udløber af CTSS RUNCOM, som også blev kaldt RUNCOM. EXEC blev med tiden erstattet af EXEC 2 og REXX.
Sprog som Tcl og Lua blev fra starten udviklet til at være generelle scriptsprog, som kunne bruges i alle programmer. Andre sprog som Visual Basic for Applications (VBA) kunne gøre meget af det samme, men skulle kun fungere i bestemte programmer. Hvis man bruger et generelt scriptingsprog i stedet for at lave et nyt sprog til hvert enkelt program, er det normalt lettere for både den person, der skriver programmet, og den bruger, der skriver scripts.
Typer af scriptingsprog
Limning af sprog
Scripting bruges undertiden til at forbinde forskellige programmer. Dette kaldes limekode, og et sprog, der er udviklet til dette formål, er et limesprog. Pipelines og shell-scripting er almindelige eksempler på limsprog. Men hvis en masse logik er skrevet i en scriptfil, er det bedre at betragte den som blot et andet softwareprogram og ikke som "lim".
Limsprog er især nyttige til at skrive og vedligeholde:
- brugerdefinerede kommandoer til en kommandoskærm;
- mindre programmer end dem, der er bedre implementeret i et kompileret sprog;
- "wrapper"-programmer, der gør nogle automatiserede ting før eller efter kørslen af et program som f.eks. et regneark, en database, en compiler osv..;
- scripts, der kan ændre sig ofte;
Eksempler på limsprog:
- AppleScript
- awk
- JCL
- Lua
- m4
- Perl
- Unix Shell-scripts (ksh, csh, bash, sh og andre)
- VBScript
- Sprog for arbejdsgange
- Windows PowerShell
- XSLT
Enheder som f.eks. programmerbare regnemaskiner kan også have deres egne limsprog. Texas Instruments TI-92 kan f.eks. som standard programmeres med et kommandoscriptsprog. TI-NSpire-regnemaskinen forstår Lua-sproget. Andre forstår en slags Basic-sprog, eller måske Lisp eller noget andet.
Jobstyringssprog og shells
Denne gruppe er kommet fra automatiseringen af jobkontrol, som vedrører start og kontrol af systemprogrammers adfærd, med udgangspunkt i IBM's JCL. Mange af disse sprogs fortolkere fungerer også som kommandolinjetolkere, f.eks. Unix-shell eller MS-DOS COMMAND.COM. Andre, såsom AppleScript, tilbyder brug af engelsk-lignende kommandoer til at opbygge scripts.
GUI-scripting
Når man bygger grafiske brugergrænseflader, er det nødvendigt at have en måde at teste dem på. Der blev udviklet specialiserede scriptingsprog til at styre grafiske vinduer, menuer, knapper osv. ligesom en menneskelig bruger ville gøre det. Mange gange kan disse bruges til at kopiere præcis det, som et menneske gør (bevæger musen, klikker eller skriver på et tastatur). Denne handling eller dette sæt af handlinger, der kopieres og huskes, kaldes en makro.
Anvendelsesspecifikke sprog
Mange store programmer indeholder et scriptingsprog, der er udviklet specielt til det pågældende program. Applikationen kan være et spil eller et forretningsprogram. Denne type sprog er lavet til et enkelt program. De ligner et generelt sprog (f.eks. QuakeC, der er modelleret efter C), men de har brugerdefinerede funktioner, der adskiller dem fra andre sprog.
Udvidelse/indlejring af sprog
Det ligner et applikationsspecifikt scriptingsprog, idet det styrer en applikation, men sproget kan bruges i mange applikationer.
JavaScript startede som et sprog til scripting i webbrowsere, men det er nu et generelt sprog, der kan integreres. Det bruges også i f.eks. Adobe-produkter.
Nogle sprog skifter fra den ene type til den anden med tiden, som regel efterhånden som de tilføjer muligheder for at gøre flere ting.
Spørgsmål og svar
Q: Hvad er et scriptingsprog?
A: Et scripting- eller scriptsprog er et programmeringssprog, der understøtter scripts.
Q: Hvad er scripts?
A: Scripts er normalt korte computerprogrammer, der udfører trin, som kunne udføres et ad gangen af en person.
Q: Hvorfor er scripts nyttige?
A: Det automatiserer et job for at gøre det lettere og mere pålideligt.
Q: Er et scripting-sprog svært at lære?
A: Et scriptingsprog er ofte et enklere sprog og lettere at lære end andre sprog, men kan stadig gøre mange ting.
Q: Hvor kan scripts køre?
A: Scripts kan køre inde i et andet program, f.eks. i en webbrowser eller Microsoft Excel.
Q: Hvad er en shell i scriptingsprog, og hvordan bruges den?
A: Det kan også være en shell, der kører fra et kommandolinjeinterface og foretager opkald til operativsystemet (OS). Shellen betragtes som interaktiv - brugeren kan vælge, hvad der skal skrives, og shellen reagerer på kommandoen. Disse kan bruges til at styre jobs på mainframes og servere.
Q: Kan et sprog til generelle formål være et scriptingsprog?
A: Nogle mennesker siger, at et scriptingsprog skal være bundet til en specifik anvendelse. Andre bruger en bredere definition og inkluderer programmeringssprog til generelle formål, som er fortolkede og ikke kompilerede. Generelt betyder, at det kan bruges på mange måder til forskellige ting. Nogle generelle sprog (som Java) har variationer, der kan scriptes. Der er ingen specifik regel for, hvad der er et scriptingsprog, og hvad der ikke er.