Skriptu valoda — definīcija, piemēri un izmantošana
Uzzini, kas ir skriptu valoda — definīcija, praktiski piemēri un izmantošanas veidi automatizācijai, tīmekļa skriptiem, apvalka komandām un Excel.
Skriptu valoda ir programmēšanas valoda, kurā rakstītās programmas parasti sauc par skriptiem. Skripti parasti ir īsas vai vidēja garuma programmas, kas automatizē atkārtotus vai manuālus uzdevumus — darbības, kuras cilvēks varētu veikt pa vienai. Ar skriptu palīdzību darbs tiek ātrāk un precīzāk izpildīts, turklāt to var viegli atkārtot un plānot izpildei.
Kur skripti darbojas
Skripti var darboties dažādos vidēs:
- iebūvēti citās programmās, piemēram, tīmekļa pārlūkprogrammā vai programmā Microsoft Excel (makro skripti);
- kā komandrindas apvalks, kas darbojas no komandrindas saskarnes un veic izsaukumus uz operētājsistēmu (OS);
- serveros un mākoņplatformās, kur tie veic uzdevumus, piemēram, lietotņu izvietošanu, dublēšanu vai datu apstrādi;
- iestrādāti citās aplikācijās vai spēļu dzinējos, lai paplašinātu funkcionalitāti vai automatizētu rīkus.
Apvalks (shell) bieži tiek saukts par interaktīvu, ja lietotājs var tieši ievadīt komandas un saņemt tūlītējas atbildes. Skripti var arī darboties neinteraktīvā režīmā — piemēram, kā automatizēti cron uzdevumi vai sistēmas starta skripti.
Definīcijas un atšķirības
Daži avoti ierobežo jēdzienu “skriptu valoda” līdz valodām, kas ir piesaistītas konkrētai lietošanai vai videi (piemēram, pārlūkprogrammas skripti vai aplikāciju makro valodas). Citi izmanto plašāku definīciju un iekļauj vispārējas nozīmes valodas, kas parasti tiek interpretētas, nevis kompilētas, lai gan robeža nav striktāka — nav konkrētu noteikumu par to, kas ir vai nav skriptu valoda.
Dažreiz vispārējām valodām ir atsevišķi režīmi vai rīki, kas ļauj tās lietot kā skriptu valodas. Piemēram, Java) lietošanai rakstot pilnvērtīgas programmas, bet līdzīgas idejas var īstenot arī ar skripta stila valodām (piemēram, JavaScript tīmeklī). Daudzas modernas valodas (Python, Ruby, Perl, Bash, PowerShell, Lua u.c.) tiek plaši lietotas kā skriptu valodas.
Kā skripti tiek izpildīti
- Skripti parasti izpilda to valodas interpretētājs (interpreter). Interpretētājs lasa skriptu rindu pa rindai un izpilda komandas uzreiz.
- Dažās vidēs skriptus var optimizēt vai pārvērst vidējā kodā (bytecode), ko pēc tam izpilda virtuālā mašīna vai JIT kompilators.
- Unix/Linux sistēmās bieži skripti sākas ar “shebang” rindu, piemēram,
#!/bin/bash, kas norāda, kurš interpretētājs jāizmanto. - Skriptu failiem ir ierastas faila paplašinājuma prakses, piemēram, .sh (Bash), .py (Python), .js (JavaScript), .ps1 (PowerShell), .rb (Ruby) u.c.
Piemēri un tipiski lietošanas gadījumi
- Darba automatizācija: failu apstrāde, dublēšana, pakešu instalēšana, datu pārsūtīšana.
- Tīmekļa skripti: klienta puses (JavaScript) un servera puses (PHP, Node.js, Python) skripti, kas apstrādā lietotāja pieprasījumus.
- Makro skripti birojprogrammatūrā (piemēram, Excel makro), kas automatizē darbplūsmas un atskaites.
- Sistēmu administrēšana un DevOps: izvietošanas skripti, konfigurācijas vadība, monitorings.
- Testēšana un prototipēšana: ātra ideju pārbaude bez pilnas programmatūras izstrādes.
- Iebūvēšana programmās un spēlēs: skriptu valodas (piemēram, Lua) ļauj lietotājiem pielāgot vai paplašināt programmas rīkus.
Priekšrocības
- Ātra izstrāde un prototipēšana — mazāk laika līdz darbam.
- Vienkārša sintakse un zemāka mācīšanās līkne daudziem uzdevumiem.
- Laba sasaistīšana ar citām programmām un sistēmām — viegli izsaukt OS rīkus, strādāt ar failiem un tīkliem.
- Lietderīgi atkārtotām un automatizētām darbībām, kuras nav nepieciešams optimizēt maksimālai ātrdarbībai.
Trūkumi un ierobežojumi
- Dažkārt lēnāka izpilde nekā kompilētām valodām, īpaši intensīvās skaitļošanas vietās.
- Drošības riski — skripti var saturēt bīstamas komandas (piem., dzēst failus vai nopludināt kredenciālus). Tāpēc jāuzmanās, izpildot neuzticamus skriptus.
- Atkarība no interpretētāja vai konkrētas vides versijas, kas var radīt pārnēsājamības problēmas.
Drošība un labā prakse
- Nekad neizpildiet nezināmus skriptus bez pārbaudes.
- Izmantojiet piekļuves kontroli un vajadzības gadījumā palaidiet skriptus ierobežotā lietotāja kontā vai konteinerī.
- Reģistrējiet izpildes žurnālus (logging) un pievienojiet kļūdu apstrādi, lai skripti netiktu pārtraukti neparedzēti.
- Nevietojiet paroles un konfidenciālus datus atklātā tekstā — izmantojiet drošus konfidenciālo datu glabāšanas risinājumus vai vidi.
- Turiet skriptus versiju kontroles sistēmā (piem., Git), lai viegli atgrieztos pie iepriekšējām versijām un izsekotu izmaiņām.
Piemērs (vienkāršs)
Vienkāršs Python skripts, kas izdrukā “Sveiks, pasaule”:
print("Sveiks, pasaule") Vienkāršs Bash skripts, kas izveido dublējuma direktoriju:
#!/bin/bash mkdir -p /home/lietotajs/backup cp /home/lietotajs/dati/* /home/lietotajs/backup/
Kopsavilkums
Skriptu valodas ir noderīgs rīks automatizācijai, prototipēšanai un integrācijai starp programmām un sistēmām. Tie ir īpaši piemēroti uzdevumiem, kur ātrums un elastība izstrādē ir svarīgāki par maksimālu izpildes ātrumu. Tomēr, strādājot ar skriptiem, jāievēro drošības prasības un labas prakses, lai izvairītos no kļūdām un drošības incidentiem.
Piemēri
Daži izplatīti skriptu valodu piemēri:
- Bash un C apvalks kā Unix vai Unix līdzīgu operētājsistēmu vadības valodas.
- Skriptus, kas darbojas citās lietojumprogrammās, sauc par paplašinājuma valodu. Tīmekļa pārlūkprogrammās ir atļauti vairāki skriptu veidi, tostarp ECMAScript (JavaScript) vai XUL. Piemēram, Google sākumlapā tiek izmantots JavaScript. Visual Basic for Applications izmanto Microsoft Office lietojumprogrammā. Lua ir valoda, kas speciāli izveidota kā paplašinājuma valoda, un to var izmantot daudzās lietojumprogrammās.
- Starp spēlēm, kurās ir skriptu paplašinājumi, ir Second Life virtuālā pasaule un Trainz dzelzceļa simulatori. Citās spēlēs, piemēram, Wesnoth, dažādas faktiski spēlētas spēles ir citu lietotāju rakstīti skripti.
- Teksta apstrādes valodas sed un AWK
- Vispārēja lietojuma: Perl, Tcl un Python ir augsta līmeņa programmēšanas valodas (tuvākas cilvēku valodai, nevis mašīnkodam), kuras var izmantot daudzām dažādām vajadzībām. Dažas no šīm valodām vispirms tika radītas konkrētam lietojumam, bet pēc tam tās pārveidoja par vispārējas nozīmes valodām.
Raksturojums
Lielākā daļa skriptu valodu ir veidotas tā, lai tās būtu viegli apgūstamas. Tās bieži vien var būt vai nu īsi faili ar pirmkodu, vai ievadīt pa vienai komandai komandrindas saskarnē, kurā ir lasīšanas-izvērtēšanas-izdrukas cilpa (REPL, valodas apvalks). Tas parasti nozīmē vienkāršu komandu kopumu. Var nebūt funkciju vai galvenās komandas, tā vienkārši darbojas no sākuma līdz beigām. Ja kaut kas nedarbojas, programmētājs var ātri veikt izmaiņas un palaist to vēlreiz. Tāpēc skriptu valoda ir piemērota ātrai prototipa izveidei, lai pārbaudītu, vai ideja darbojas.
Piemēram, vairums cilvēku nesauc Java par skriptu valodu, jo tās sintakse un noteikumi par to, kuras klases kurā failā atrodas, ir gari, kā arī tāpēc, ka Java nevar interaktīvi izpildīt REPL. Tai ir nepieciešami faili ar pirmkodu, un tajos var būt tikai definīcijas, kas jāizmanto galvenajai lietojumprogrammai vai lietojumprogrammas palaišanas programmai. (Java nav tas pats, kas JavaScript).
Taču Python ļauj izvēlēties - funkcijas var ievietot failā, to var palaist bez funkcijām un izmantot imperatīvo programmēšanas stilu vai pat lietot interaktīvi (ievadīt un palaist pa vienai rindai).
drukāt ("Hello World")
Šī viena Python koda rindiņa izdrukā "Hello World"; nav nepieciešama funkcija main() vai kas cits.
Skriptu valoda parasti tiek interpretēta no pirmkoda vai baitkoda. Tomēr skriptu ir kaut kas jāpalaiž (jāinterpretē), lai dators to saprastu. Tā ir lietojumprogramma vai kaut kas operētājsistēmā. Tā bieži vien ir rakstīta kompilētā valodā un izplatīta mašīnkoda formā (kā izpildāms fails, kas cilvēkam nav saprotams).
Skriptu valodas var būt paredzētas, lai tās varētu izmantot cilvēki, kas izmanto programmu - galalietotāja izstrāde. Citos gadījumos tās var veidot programmētāji savām vajadzībām. Skriptu valodās bieži tiek izmantota abstrakcija, kas ir informācijas slēpšanas veids. Tas nozīmē, ka lietotājiem nav jāzina sīkāka informācija par mainīgo tipiem, datu glabāšanu un atmiņas pārvaldību.
Skriptus bieži vien veido vai maina persona, kas tos izpilda, bet daži tiek koplietoti vai pārdoti citiem. Piemēram, ja liela daļa spēļu ir rakstītas skriptu valodā. Dažreiz skriptu var kompilēt, pirms to izmanto citi. Kad tas ir kompilēts, tas darbosies ātrāk, un tā izpildei nav nepieciešama cita lietojumprogramma. Un tas neļauj galalietotājiem mainīt kodu.
Vēsture
Agrīnie mainstreima datori (pagājušā gadsimta 50. gados) nebija interaktīvi, bet izmantoja sērijveida datnēs saglabātus skriptus. IBM Job Control Language (JCL) ir izplatīts skriptu valodas piemērs, ko izmantoja sērijveida apstrādes kontrolei.
Pirmie interaktīvie apvalki tika izveidoti pagājušā gadsimta 60. gados, lai atvieglotu pirmo laika koplietošanas sistēmu tālvadību. Tajos tika izmantoti čaulas skripti, ar kuriem var palaist datorprogrammas datorprogrammā - čaulā. Par komandas aizvietošanas izgudrošanu parasti tiek uzskatīts Kalvins Mūerss savā TRAC valodā. Tas ļauj komandām mainīt skriptu (pašmodificējošs kods). Multics tās sauc par aktīvajām funkcijām. Louis Pouzin ap 1964. gadu uzrakstīja agrīnu komandu skriptu procesoru ar nosaukumu RUNCOM CTSS. Stjuarts Madniks no MIT 1966. gadā uzrakstīja skriptu valodu IBM CP/CMS. Sākotnēji viņš šo procesoru nosauca par COMMAND, vēlāk par EXEC. Multics ietvēra CTSS atvasinājumu RUNCOM, ko arī sauca par RUNCOM. EXEC ar laiku aizstāja EXEC 2 un REXX.
Tādas valodas kā Tcl un Lua jau no paša sākuma tika veidotas kā vispārējas nozīmes skriptu valodas, ko var izmantot jebkurā lietojumprogrammā. Citas valodas, piemēram, Visual Basic for Applications (VBA), varēja darīt daudz ko līdzīgu, bet tām bija jādarbojas tikai ar noteiktām lietojumprogrammām. Vispārējas lietojumprogrammas skriptu valodas izmantošana, nevis jaunas valodas radīšana katrai lietojumprogrammai parasti atvieglo darbu gan lietojumprogrammas rakstītājam, gan lietotājam, kas raksta skriptus.
Skriptu valodu veidi
Līmes valodas
Dažreiz dažādu lietojumprogrammu savienošanai tiek izmantoti skripti. To sauc par "līmēto kodu", un tieši šim nolūkam izstrādāta valoda ir "līmētā valoda". Cauruļvadi un apvalka skriptu rakstīšana ir izplatīti līmējošo valodu piemēri. Taču, ja daudz loģikas ir rakstīts skripta failā, labāk to uzskatīt vienkārši par vēl vienu programmatūras lietojumprogrammu, nevis par "līme".
Līmes valodas ir īpaši noderīgas rakstīšanai un uzturēšanai:
- pielāgotas komandu čaulas komandas;
- mazākas programmas nekā tās, kuras labāk īstenot kompilētā valodā;
- "iesaiņojuma" programmas, kas veic dažas automatizētas darbības pirms vai pēc lietojumprogrammas, piemēram, izklājlapas, datu bāzes, kompilatora utt., palaišanas;
- skripti, kas var bieži mainīties;
Līmes valodas piemēri:
- AppleScript
- awk
- JCL
- Lua
- m4
- Perl
- Unix Shell skripti (ksh, csh, bash, sh un citi)
- VBScript
- Darba plūsmas valoda
- Windows PowerShell
- XSLT
Tādām ierīcēm kā programmējamiem kalkulatoriem var būt arī savas līme valodas. Piemēram, Texas Instruments TI-92 pēc rūpnīcas noklusējuma var programmēt ar komandu skripta valodu. TI-NSpire kalkulators saprot Lua valodu. Citi saprot kādu Basic valodu, varbūt Lisp vai kādu citu.
Darba vadības valodas un čaulas
Šī grupa ir radusies, sākot ar IBM JCL, kas attiecas uz sistēmas programmu palaišanu un darbības kontroli, sākot ar IBM JCL. Daudzi no šo valodu tulkiem darbojas arī kā komandrindas tulki, piemēram, Unix apvalks vai MS-DOS COMMAND.COM. Citas, piemēram, AppleScript, piedāvā izmantot angļu valodai līdzīgas komandas, lai veidotu skriptus.
GUI skriptu rakstīšana
Veidojot grafiskās lietotāja saskarnes, ir nepieciešams veids, kā tās testēt. Tika radītas specializētas skriptu valodas, lai vadītu grafiskos logus, izvēlnes, pogas u. c., tāpat kā to darītu lietotājs. Daudzkārt tās var izmantot, lai kopētu tieši to, ko dara cilvēks (kustina peli, noklikšķina vai raksta uz tastatūras). Šo darbību vai darbību kopiju, kas tiek kopēta un iegaumēta, sauc par makro.
Lietojumprogrammām specifiskas valodas
Daudzās lielās lietojumprogrammās ir iekļauta tieši šai lietojumprogrammai paredzēta skriptu valoda. Šī lietojumprogramma var būt spēle vai biznesa programma. Šāda veida valoda ir paredzēta vienai lietojumprogrammai. Tās izskatās kā vispārējas nozīmes valoda (piemēram, QuakeC, kas veidota pēc C), tām ir pielāgotas funkcijas, kas tās atšķir.
Paplašināšanas/iekļaujamās valodas
Tā ir līdzīga lietojumprogrammai specifiskai skriptu valodai, jo tā kontrolē lietojumprogrammu, taču šo valodu var izmantot daudzās lietojumprogrammās.
JavaScript sākās kā tīmekļa pārlūkprogrammu skriptu rakstīšanas valoda, taču tagad tā ir vispārēja lietojuma valoda, ko var iestrādāt. Tā tiek izmantota arī, piemēram, Adobe produktos.
Dažās valodās laika gaitā notiek pāreja no viena tipa uz citu, parasti tāpēc, ka tiek pievienotas iespējas veikt vairāk darbību.
Jautājumi un atbildes
J: Kas ir skriptu valoda?
A: Skriptu valoda ir programmēšanas valoda, kas atbalsta skriptus.
J: Kas ir skripti?
A: Skripti parasti ir īsas datorprogrammas, kas veic darbības, kuras cilvēks varētu veikt vienu pēc otras.
J: Kāpēc skripti ir noderīgi?
A: Tas automatizē darbu, lai padarītu to vieglāku un uzticamāku.
J: Vai skriptu valodu ir grūti apgūt?
A: Skriptu valoda bieži vien ir vienkāršāka valoda, un to ir vieglāk apgūt nekā citas valodas, tomēr ar to var paveikt daudzas lietas.
J: Kur var palaist skriptus?
A: Skripti var darboties citā programmā, piemēram, tīmekļa pārlūkprogrammā vai Microsoft Excel.
J: Kas ir apvalks skriptu valodās un kā to izmanto?
A: Tās var būt arī čaulas, kas darbojas no komandrindas saskarnes un veic izsaukumus uz operētājsistēmu (OS). Apvalku uzskata par interaktīvu - lietotājs var izvēlēties, ko ievadīt, un apvalks atbild uz komandu. Tās var izmantot, lai kontrolētu darba uzdevumus galvenajos blokos un serveros.
Vai vispārējas nozīmes valoda var būt skriptu valoda?
A: Daži saka, ka skriptu valodai jābūt piesaistītai konkrētam lietojumam. Citi izmanto plašāku definīciju un iekļauj vispārējas nozīmes programmēšanas valodas, kuras tiek interpretētas, nevis kompilētas. Vispārēja lietojuma valoda nozīmē, ka to var izmantot dažādos veidos dažādām lietām. Dažām vispārējas nozīmes valodām (piemēram, Java) ir variācijas, kuras var rakstīt ar skriptu palīdzību. Nav konkrētu noteikumu par to, kas ir vai nav skriptu valoda.
Meklēt