Skriftsprog
Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den
version , der blev gennemgået den 12. november 2021; checks kræver
7 redigeringer .
Scriptsprog ( scriptsprog, scriptsprog ; engelsk scriptsprog ) - et scriptsprog på højt niveau ( engelsk script ) - korte beskrivelser af de handlinger, som systemet udfører. Forskellen mellem programmer og scripts er ret sløret. Et script er et program, der beskæftiger sig med færdige softwarekomponenter [1] , som, når de er indlæst, ikke er afhængige af den fortsatte tilstedeværelse/fravær af en forbindelse til netværket i deres arbejde .
Ifølge John Oosterhout , forfatter til Tcl -sproget , kan sprog på højt niveau opdeles i systemprogrammeringssprog og scriptsprog . Han kaldte også sidstnævnte limsprog eller systemintegrationssprog . _ _ _ Scripts fortolkes normalt snarere end kompilerede [2] , selvom scriptsprog får JIT-kompilere én efter én [3] [4] [5] .
I en snævrere forstand kan et scriptsprog forstås som et specialiseret sprog til at udvide mulighederne for en kommandoskal eller teksteditor og operativsystemadministrationsværktøjer [6] .
Klassifikation
Programmeringssprog generelt og scriptsprog i særdeleshed kan klassificeres på mange forskellige måder.
Med hensyn til hastighed kan scriptsprog opdeles i dynamiske parsingsprog ( sh , COMMAND.COM ) og prækompilerede sprog ( Perl ). Dynamiske parsingssprog læser instruktioner fra en programfil i de mindst nødvendige blokke og udfører disse blokke uden at læse yderligere kode. Forkompilerede sprog oversætter hele programmet til bytekode og udfører det derefter. Nogle scriptsprog har mulighed for at kompilere et program i farten til maskinkode (såkaldt JIT-kompilering ).
Efter applikation kan sprog groft opdeles i tre typer [7] :
- kommando-scenarie;
- anvendte scenarier;
- universelle scenarier.
Kommando-scriptsprog
Dukkede op tilbage i 1960'erne for at styre opgaver i operativsystemer. Af datidens sprog er JCL til OS/360 bedst kendt . Denne klasse inkluderer batch -sprog ( eng. batch-sprog ) og kommandoskal -sprog , såsom sh , csh for Unix . Disse sprog er mest almindeligt anvendt i batchbehandling [7] .
For eksempel har AppleScript-sproget i MacOS-operativsystemet en Script Editor, der giver dig mulighed for at optage handlinger, som de udføres af brugeren i systemet, i en scriptfil (tekstfil) og formatere den som et eksekverbart program. Denne tilgang tillader en ikke-programmerende bruger at komponere simple scripts [8] .
Indlejrede (anvendt scripting) sprog
Scriptsprog af denne type begyndte at dukke op i 1980'erne, da interaktiv kommunikation med operativsystemet blev mulig på industrielle personlige computere. I en klient-server-arkitektur fungerede sådanne sprog på klientsiden af softwaren [7] .
Generelle sprog
Denne type scriptsprog er bedst kendt (især når den anvendes til webprogrammering ). Sprog af denne type er dukket op siden 1990'erne [7] .
Det skal bemærkes, at mange af sprogene i denne kategori har bredere anvendelser end blot scriptsprog, såsom JavaScript, som i nogle tilfælde kan køre på serveren.
Kritik
Skaberen af Java, James Gosling , henviste dynamiske programmeringssprog (ved at nævne PHP og Ruby) til rollen som scriptsprog, der genererer websider, men som er uegnede til brug i en bredere niche af applikationer på grund af skalerbarhed og ydeevne problemer [9] . Tilhængere af dynamiske sprog lod ikke kritik ubesvaret på alle punkter, især om hans bestræbelser på at præsentere moderne dynamiske sprog som blot "scripted" [10] .
Plugins og scripts
For at skrive brugerdefinerede udvidelser kan både scripts (i nogle programmers terminologi " makroer ") og plug- ins (uafhængige moduler skrevet på kompilerede sprog ; i nogle programmer kaldes de "hjælpeprogrammer", "eksportører", "drivere") blive brugt.
Scriptsproget er nyttigt i følgende tilfælde:
- Hvis du vil sikre programmerbarhed uden risiko for at destabilisere systemet. Da scripts i modsætning til plugins fortolkes i stedet for kompilerede, vil et dårligt skrevet script vise en diagnosticeringsmeddelelse i stedet for at forårsage et systemnedbrud . Modeksempler kan for eksempel være JVM og CLR , og hvis det første er udviklet af hensyn til kodeportabilitet (sikkerhed er en bivirkning), så er det andet netop af sikkerhedsmæssige årsager.
- Hvis ekspressiv kode er vigtig.
- For det første, jo mere komplekst systemet er, jo mere kode skal du skrive " fordi det er nødvendigt ". Et script kan flytte noget af denne standardkode (initialisering, destruktion, inter-thread-synkronisering osv.) ind i script-udførelsesmiljøet.
- For det andet kan et scriptsprog have et helt andet programmeringskoncept end hovedprogrammet - for eksempel kan et spil være en monolitisk enkelttrådsapplikation, mens scripts, der styrer karakterer, udføres parallelt eller som coroutiner . Denne tilgang er god ud fra et systemskalerbarhedssynspunkt (scripts afhænger ikke af implementeringen af procedurer, de er skrevet meget hurtigere og nemmere at fejlfinde), men ikke særlig god ud fra et kodekvalitetssynspunkt, da det uundgåeligt fører til dets overlapning.
- En meget mere rationel tilgang er at oprette ressourcefiler (som en mulighed, xml - filer, strukturer, databaser ), der beskriver adfærden "i det væsentlige" (i en deklarativ stil ), som det gøres med andre egenskaber for objekter i spillet (teksturer, modeller, effekter, lyde).
- For det tredje har scriptsproget sit eget domænespecifikke sæt af kommandoer, og en linje script kan gøre det samme som flere dusin linjer i et traditionelt sprog. Det er dog værd at bemærke, at den større udtryksfuldhed af kode i scriptsprog er en konsekvens af deres begrænsninger og/eller nyhed og sammenlign C (1970'erne) og PHP (1990'erne) og/eller Fortran (1950'erne) og Python (1990'erne) upassende.
- Scripts er kendt for deres lave indgangstærskel; selv en lavt kvalificeret programmør kan skrive i et scriptsprog. Dette er både et plus og et minus. På den ene side giver dette dig mulighed for at ansætte billig arbejdskraft (frigør specialister fra rutinearbejde og øger udviklingshastigheden i vid udstrækning ), og på den anden side reducerer det kritisk produktivitet og pålidelighed (på grund af fokus på undervisning i sådanne sprog på løse specifikke problemer og ikke på at forstå essensen af de producerede produkter).
- Problemet med en høj adgangstærskel opstår hovedsageligt i sprog med redundant syntaks ( C++ , C# ) og kan kun løses fuldstændigt ved at opgive dem til fordel for mere succesfulde (hvilket selvfølgelig langt fra altid er muligt). I dette tilfælde fungerer scripts som en palliativ . Faktisk opstod de, da skalerbarheden af C-lignende sprog blev utilstrækkelig til det daglige arbejde, og tærsklen for nytilkomne at komme ind i branchen steg dramatisk.
- Problemet med en stor mængde rutine er generelt set uløseligt, men kan i de fleste tilfælde udjævnes med mere pålidelige yderligere midler, for eksempel automatisk kodegenerering .
- Hvis cross-platform er påkrævet . For eksempel JavaScript - det udføres af browsere under en række forskellige operativsystemer.
- Problemet med cross-platform følger direkte af sprogstandarden: C-standarden specificerer for eksempel "sizeOf (short) <= sizeOf (int) <= sizeOf (long)", men angiver ikke hvilken bitdybde de skal have (applikationsbiblioteker løser dette problem, f.eks. glib ). Moderne ikke-scriptsprog ( Java , C# , Haskell ) er fuldstændig blottet for dette problem netop på grund af god standardisering.
- Scriptsprog bruges til at skrive programmer, der ikke kræver optimalitet og udførelseshastighed. På grund af deres enkelhed er der ofte skrevet små engangs- ("problem") programmer på dem.
- Mange generelle scriptsprog er langsomme nok til, at de ofte kun bruges i kombination med tredjepartsbiblioteker (f.eks . NumPy i kombination med Python).
- Dette er ikke et særlig godt eksempel, eftersom NumPy er baseret på det gamle Fortran MATHLAB- bibliotek , hvis kode, selvom den er tidstestet, uundgåeligt begynder at "rådne" - den blev skrevet til ekstremt primitive enkelttrådede computere med andre flaskehalse (og selvom dette kompenseres ved at optimere compilere og parallelisering på OS-niveau, ydeevne vil gradvist forringes).
- Et mere korrekt eksempel: Lua er et klassisk integreret scriptsprog til generelle formål, der kræver en minimal implementering af C for at køre (hvor der er C, kan Lua arbejde).
- Scriptsprog er også gode til datavisualisering: skabe komplekse grafer og præsentationer samt simple programmer (for eksempel bruges Python i Gnome og Cinnamon grafiske skaller til at skabe applets og små konfigurationsværktøjer).
Plugins har også vigtige fordele.
- Færdiglavede programmer, der er oversat til maskinkode, kører meget hurtigere end scripts, der fortolkes dynamisk fra kildekoden, hver gang de udføres. De fleste programmer er bærbare på kildekodeniveau og kan udføres af den passende sprogfortolker som scripts. Brugen af bytekode ( Java , C# , LLVM ) giver dig mulighed for at gemme, overføre og udføre programmer på en mere effektiv måde end scripts.
- JIT-kompilering giver dig også mulighed for at optimere den overordnede kode til en specifik platform (i fremtiden for en specifik processorfamilie og tilgængelig hardware).
- Fuld adgang til enhver hardware- eller OS-ressource (i scriptsproget skal der være en speciel API skrevet på det kompilerede sprog til dette). Plugins, der fungerer med hardware, kaldes traditionelt drivere .
- Hvis der forventes megen dataudveksling mellem hovedprogrammet og den tilpassede udvidelse, er det nemmere for plug-in'et at levere det.
- Kompilerede programmeringssprog er kendetegnet ved brugen af et stærkt statisk type system, som giver dig mulighed for effektivt at fange fejl og bedre optimere din kode. Brugen af dynamisk skrivning i moderne scripts er mere sandsynligt på grund af tekniske implementeringsfunktioner og historiske årsager. Også statisk typede sprog har potentiale for vækst, nemlig overgangen fra traditionel monomorf typning til polymorf typning . Monomorfismeudvidelser i moderne C-lignende sprog ( overbelastning , ad-hoc polymorfi ) og subtype polymorfi samt parametrisk polymorfi og typeklasser i eksperimentelle sprog (f.eks. Haskell) er ikke tilgængelige for scriptsprog (statisk typning) under kørsel vil føre til et betydeligt tab af ydeevne).
Noter
- ↑ Susie R. Scriptsprog: Python. "PC World", 9, 2001 . Hentet 9. oktober 2012. Arkiveret fra originalen 17. januar 2013. (ubestemt)
- ↑ Ousterhout, 1998 .
- ↑ LuaJIT . Hentet 9. oktober 2012. Arkiveret fra originalen 2. oktober 2012. (ubestemt)
- ↑ PyPy . Hentet 9. oktober 2012. Arkiveret fra originalen 12. maj 2008. (ubestemt)
- ↑ Joab Jackson (IDG News Service), Facebook frigiver en PHP just-in-time compiler . Hentet 9. oktober 2012. Arkiveret fra originalen 11. juni 2012. (ubestemt)
- ↑ Yu. A. Denisov, Programmering for humaniora, 12. Foredrag: Præsentation af grammatikker
- ↑ 1 2 3 4 5 6 7 Bogatyrev, 2001 .
- ↑ Trofimov, Trofimova, 1997 .
- ↑ James Gosling: "Java er ikke under nogen alvorlig trussel fra PHP, Ruby eller C#" . Hentet 9. oktober 2012. Arkiveret fra originalen 24. oktober 2012. (ubestemt)
- ↑ Ryan Tomayko, Gosling fik ikke notatet . Hentet 9. oktober 2012. Arkiveret fra originalen 18. januar 2012. (ubestemt)
Litteratur
Links
Ordbøger og encyklopædier |
|
---|
I bibliografiske kataloger |
|
---|