Skriptspråk

Skriptspråk är inom datavetenskap en benämning på "små"[1] högnivåspråk inriktade på specialiserade uppgifter inom redan befintliga miljöer, i motsats till systemspråk[2], som används för programmering av tillämpningsprogram. Det finns ingen exakt avgränsning mellan systemspråk och skriptspråk, men skriptspråk är ofta interpreterande programspråk som använder dynamisk typning.

Skriptspråkens källkod kallas skript och tolkas av en befintlig exekveringsmiljö, ofta tillgänglig för flera operativsystem, vilket gör skript portabla. Användningsområden för skriptning inkluderar systemanrop via skalprogram, automatisering av repetitiva uppgifter inom program[3], interaktion med andra programspråk[4], webbutveckling[5], definiering av spelmekanik[6] samt grafiska användargränssnitt.

Historia

Under 1970-talet dök det upp små, enkla programspråk för Unix som gjorde det enklare för användaren att starta flera program med ett enda kommando, ofta också med villkorssatser som tog hänsyn till omständigheterna. Ett av de första skriptspråken var Bourne.[källa behövs]

Ett annat språk som dök upp inom samma period var Awk, ett språk speciellt anpassat för att enkelt kunna söka i och analysera stora textmassor (exempelvis systemloggar) med reguljära uttryck. Den första versionen av Perl, som släpptes 1987, var starkt influerat av Awk och följdes snart av Tcl och Python.

Sedan dess har språken utvecklats ständigt för att mer och mer likna fullfjädrade programspråk utom i vissa avgörande avseenden. Idag[när?] kan det mesta skrivas i ett skriptspråk som tidigare endast kunnat skrivas i C (programspråk), ALGOL eller liknande systemprogramspråk.

Jämförelse mellan skriptspråk och systemspråk

Prestanda

Teoretiskt sett är systemprogramspråken C och C++ överlägsna skriptspråken när det gäller snabbhet och minneskrav för program, på grund av skriptspråkens interpreterade natur. Dock finns det en större varians i systemprogramspråkens prestanda beroende på skicklighetsnivån hos programmeraren. Stora, avancerade program brukar vara olämpliga att göra i skriptspråk, eftersom kraven på prestanda och effektiv minneshantering ökar.

Programvaruutveckling

Eftersom skriptspråken är mer uttrycksfulla än systemprogramspråken och en sedan länge accepterad tumregel[7] säger att en programmerares produktivitet mätt i antal kodrader är oberoende av programspråket, är skriptspråken teoretiskt sett överlägsna systemprogramspråken avseende utvecklingstid. Den högre abstraktionsnivån förhindrar också många buggar som annars är vanliga vid utveckling i systemprogramspråken, vilket än mer bidrar till en snabbare utveckling då testningen inte tar lika lång tid.

Vid utveckling av stora program kan skriptspråkens dynamiska typning innebära att antalet buggar ökar om fler personer arbetar med samma program. Dynamisk typning innebär att en variabel kan användas till flera syften och missförstånd programmerare emellan kan lätt uppstå. Det är dessutom den typ av fel som kompileringen inte upptäcker utan som ses först vid test.

Portabilitet

Skript blir portabla genom användandet av en befintlig exekveringsmiljö, medan ett kommersiellt program vanligen levereras som en kompilerad exekverbar fil som är bunden till en viss datorarkitektur. Exempel på portabla systemprogramspråk finns, till exempel Java.

Exempel på skriptspråk

Typiska skriptspråk är de som tillhandahålls av kommandotolkar, såsom skalprogram till Unix. Andra exempel på skriptspråk är:

Källor

  1. ^ David Hemmendinger. ”Computer scripting language” (på engelska). Encyclopædia Britannica. Arkiverad från originalet den 25 april 2016. https://web.archive.org/web/20160425225434/https://www.britannica.com/technology/computer-scripting-language. Läst 27 januari 2018. ”Computer scripting language, a “little” computer language intended to solve relatively small programming problems that do not require the overhead of data declarations and other features needed to make large programs manageable.” 
  2. ^ J.K. Ousterhout (1998). ”Scripting: higher level programming for the 21st Century” (på engelska). Computer (IEEE) 31 (3): sid. 23-30. doi:10.1109/2.660187. ISSN 0018-9162. http://ieeexplore.ieee.org/document/660187/. Läst 28 januari 2018. ”System programming languages were designed for building data structures and algorithms from scratch, starting from the most primitive computer elements. Scripting languages are designed for gluing. They assume the existence of a set of powerful components and are intended primarily for connecting components”. 
  3. ^ ”ADOBE PHOTOSHOP SCRIPTING” (på engelska). Arkiverad från originalet den 17 september 2017. https://web.archive.org/web/20170917064927/https://www.adobe.com/devnet/photoshop/scripting.html. Läst 27 januari 2018. 
  4. ^ ”The Java Scripting API” (på engelska). Java documentation. Arkiverad från originalet den 27 februari 2017. https://web.archive.org/web/20170227194141/https://docs.oracle.com/javase/8/docs/technotes/guides/scripting/prog_guide/api.html. Läst 27 januari 2018. 
  5. ^ ”Working with Scripting Languages” (på engelska). Microsoft. Arkiverad från originalet den 15 december 2014. https://web.archive.org/web/20141215224706/https://msdn.microsoft.com/en-us/library/ms525153(v=vs.90).aspx. Läst 27 januari 2018. 
  6. ^ ”Scripting” (på engelska). Unity Manual. 2017. Arkiverad från originalet den 11 september 2016. https://web.archive.org/web/20160911174505/http://docs.unity3d.com/Manual/ScriptingSection.html. 
  7. ^ Lutz Prechelt (2000). ”An Empirical Comparison of Seven Programming Languages” (på engelska). Computer 33 (10): sid. 23–29. doi:10.1109/2.876288. ISSN 0018-9162. Arkiverad från originalet den 8 augusti 2017. https://web.archive.org/web/20170808095253/https://www.openfoundry.org/of/download/pyzope/1.0.0/article.pdf. Läst 24 februari 2018. ”This check relies on an old rule of thumb, which says that programmer productivity measured in lines of code per hour is roughly independent of the programming language.”.