Ateities kalbos?

Pravartu paskaityti apie programavimo kompiuteriams palyginimą su kitais realaus gyvenimo aprašais >>>>>

Ateitis yra neišvengiama be mažyčių programyčių vadinamų „skriptais“. Įvairioms firmoms besiveržiant į Voratinklio glėbį, jie pateikia labai pigų ir greitai realizuojamą būdą kurti dinaminius WWW puslapius. Lyginant su įprastinėmis kalbomis, pvz., C/C++, jie turi nemažai pranašumų. „Scenarijų“ kalbas lengva išmokti ir apie jas gausu kuo įvairiausios informacijos visais klausimais. Ir kuo beprogramuotume („Rexx“, „Perl“, Tcl arba „Python“), visada rasite „įsikirtusių“ į tą reikalą ir pasiekusių paslapčių gelmę bet kurioje iš tų kalbų.

Tad kas yra „skriptai“?

Dažniausiai tai mažos programos skirtingus terpės komponentus sujungiančios į visumą. Tikrąjį darbą atlieka kuris nors komponentas (pvz., DBVS), o skriptai tik perduoda duomenis ir valdo veiksmų seką. Programuotojui nereikia daug laiko sugaišti “žemo lygio” problemoms spręsti ir jis gali daugiau dėmesio skirti uždavinio sprendimui. Pavyzdžiui, C programuotojas turi daug dėmesio skirti atminties valdymo programavimui – ir tai yra didžiausias jo klaidų šaltinis. “Scenarijų” kalbos tokias funkcijas automatizuoja.

Žinoma, C kalba parašytos programos gali būti vykdomos net 2 kartus greičiau. Tačiau, iš kitos pusės, tokią pat programą C kalba galima parašyti dukart greičiau. O kartais, jei CGI lėtina greitaveiką, galima parinkti tinkamesnį “Web” serverį, pvz., IBM firmos “GoServe” terpėje “Rexx” interpretatorius iškviečiamas to paties proceso, kuris aptarnauja TCP/IP protokolą, atskiroje gijoje (thread), todėl “Rexx” programos vykdomos net 10 kartų greičiau.

Scenarijų kalbos ypač patrauklios, kai reikia turėti programą, kuri dažnai kinta arba reikia sujungti į visumą kelių komponentų darbą. Jos mažiau tinka programoms, kurioms vykdymo greitis ypač svarbus.

Laimei, Voratinklyje nėra gyvybiškos reikmės nepaprastai greitaveikai. Daugiau dėmesio yra skiriama WWW svetainės struktūrai, kurios puslapiai turi bendrus elementus, pvz., firmos logotipą, tą patį puslapio tvarkinį ir t.t. Tačiau tokių puslapių automatizavimui nėra daug priemonių. Vienas jų - nuo 1994-ųjų populiarūs SSI (Server Side Includes) principai. Jie vis dar populiarūs ir dabar, tačiau savo pajėgumu neprilygsta “skriptams”. SSI atrodo taip (kito HTML failo įtraukimui):

   <HTML>
   <!--#include logo_ir_adresas.html>
   </HTML>

Pastaba: primenu, kad <!-- … --> konstrukcija reiškia komentarą HTML kalboje.

Kokias kitas technologijas gali pasirinkti “Web” programuotojas?

  1. DHTML dar nenusistovėjo. Nėra garantijų, kad WWW svetainės lankytojo naršyklė jį supranta, o “Microsoft” ir “Netscape” vis dar “pešasi” dėl jo pateikimo.
  2. “Scriplets” yra “Microsoft” technologija, veikianti tik IE 4.0 versijoje, nors žadama, kad netrukus bus realizacija ir serverio pusėje.
  3. “Servlets” yra Java programos serveryje, kurioms pranašaujama nebloga ateitis. Tačiau šiuo metu išmokti “skriptus” kurti yra lengviau ir jais naudotis paprasčiau.
  4. Serverio API. Tiek “Microsoft”, tiek “Netscape” numato C kalbos sąsajas su savo “Web” serveriais (ISAPI ir NSAPI). Tai priemonė didelei greitaveikai, tačiau tas sąsajas nelengva įsisavinti.
  5. Specializuoti serveriai. MS “Site Server”, “Netscape” firmos “Enterprise Server” ir “Web Site Pro” suteikia priemones kredito kortelių apdorojimui, valiutos konvertavimui, tranzakcijų saugumui ir t.t.
  6. XML kol kas vis dar eksperimentinėje būsenoje ir jo vieta – ateityje. “Perl” jau planuoja XML plėtinius, kaip ir Tcl (pvz., Steve Ball siūlo TclXML paketą, turintį galimybę analizuoti XML dokumentus.

Bet mums rūpi skriptai…

Kurią kalbą rinktis praktiškai neturi reikšmės. Visas jas lengva išmokti ir visos turi beveik tas pačias galimybes. Tad daug svarbesni “socialiniai” veiksniai – pažįstamų patarimai, galimybė konsultuotis ir t.t. Kiti veiksniai yra subtilesni.

Metų metais CGI buvo beveik sutapatinta su 1987-ais Larry Walt sukurta “Perl” (Practical Extraction Report Language) kalba. Ji pradžioje buvo skirta didelių tekstinės informacijos failų skaitymui, kai kurių veiksmų atlikimui ir ataskaitų generavimui palengvinti. Tad šioje kalboje ypatingas dėmesys buvo skirtas informacijos paieškai pagal nurodytą šabloną. Dabar ji Internete garsėja kaip ideali priemonė skirtingų programų ir duomenų bazių bendram naudojimui "suklijuojant" jas į vientisą sprendimą. Ir, kas nemažiau svarbu, "perl" (kaip ir "Linux") yra nemokama.

Ir tikrai, - naudojant "Perl" yra sukurtos didžiosios pasaulio svetainės (pvz., “Yahoo”, ar “Excite”). Viskonsine (Wiskonsin Electric Power) “Perl” kalba (kartu su “Fortran”) realizuotas projektas branduolinio kuro valdymui – prognozėms, finansų apskaitai, el.gamybos ataskaitoms vyriausybei ir kt. Tad jei norite koja kojon žengti plačiai išmintu vieškeliu, rinkitės “Perl”, kurį naudoja beveik visi “Unix” serveriai.

Tačiau “Perl” nėra privaloma ir kitos kalbos turi prieš ją pranašumų. Jei jūsų serveris tviska žydra spalva, pagalvokite apie “Rexx”, kuri veikia visose IBM operacinėse terpėse. Ir būtų keista, jei IBM žiemos Olimpiados metu AIX terpėje būtų išsivertusi be “Rexx” kalbos.

Tcl (Tool Command Language) kalba yra naudojama “Travelocity”, c|net ir “MilliCent” svetainėse. Ji nuostabiai tinka plyšiui tarp “Web” ir duomenų bazių užpildyti. Ją išmokti lengviau nei “Perl” ir ji tinka daugiakalbėms programoms kurti, nes tenkina “Unicode” standartus. Ji priimtina kuriant grafines sąsajas (GUI) ir kai reikia tinklo valdymo galimybių. Tuo labiau, kad ją gaunate su daugeliu produktų (pradedant routeriais ir baigiant SGML PĮ tiekėju DynaBook firma). Ją Berkeley UC sukūrė John Ousterhoat, kuris vėliau perėjo į “Sun” firmos “Sun Script” padalinį, pardavinėjantį Tcl produktus (iš ten galima atsisiųsti ir Tcl).

Tcl kalbą iliustruosime darbuotojų HTML puslapio šablonu:

    [Asmuo “Jonas Skendelis, redaktorius“ “vartiklis@vartiklis.lt”]
    Jonas Skendelis yra Vartiklio redaktorius.

Šiame šablone panaudota “Asmuo” procedūra Tcl kalba atrodytų:

    proc Asmuo {vardas {email { } } }  {
      # komentaras: email nėra būtinas parametras
         set html "<p><b>T:$vardas"
         if { [string length $email] } {
         append html "<a href=\"mailto:$email\">$vardas</a>"
      } else {
         append html "$vardas"
      }
      append html "</b><br>"
      return $html
    }

Tad su šia Tcl procedūra ankstesnis HTML šablonas būtų pertvarkytas į tokį HTML fragmentą:

    <p><b><a href="mailto:vartiklis@vartiklis.lt">Jonas Skendelis, redaktorius</a><br>

    Jonas Skendelis yra Vartiklio redaktorius.

Skaitykite platesnį įvada į Tcl kalbą >>>>>

O “Python”, kurį sukūrė Guido van Rossum, yra darbo arkliukas didelėms ir sudėtingoms programoms kurti – savotiškas konkurentas C/C++ ir Java kalboms (ją naudojo “Four11”, “Infoseek” ir “Musi-Cal” www svetainės). Ją rinktis verta galvojant apie ateitį ir dirbant grupėje. Ji greita kaip ir “Perl”, paprasta kaip Tcl ir galinga kaip „Java“ ar C/C++.

Naujose naršyklėse realizuota „JavaScript“ kalba (jos alternatyva VBScript užsiangažavęs tik „Microsoft” IE kiaute). Tačiau kartu su jomis dažnai reikia mokytis ir kitų „skriptų“ kalbų. Dar kitos kalbos (PHP, Forth, „Guile“, „Frontier“) naudojamos tik turint specialius tikslus.

„Skriptai“ nėra vien tik žaisliukai. Visos „skriptų“ kalbos leidžia sąveiką su duomenų bazėmis, failais, Java bibliotekomis, tinklo protokolais ir t.t. O didžiausias jų privalumas – kaina. Daugelį paketų galima atsisiųsti ir naudoti veltui. Sąnaudos tėra tik priežiūrai ir apmokymui. O „Perl“ yra toks populiarus, kad firmos net nemato prasmės teikti jo palaikymo paslaugas.

Po mikroskopu

Kalba Privalumai Trūkumai Informacijos šaltiniai
JavaScript Naršyklėms – tarsi standartas. Lengva išmokti. Veikia IIS 4.0 serverio pusėje. Tinka naudoti (beveik vien tik) kliento pusėje interpretuojamame WWW puslapyje. https://developer.mozilla.org/
en-US/docs/Web/JavaScript?redirectlocale=en-US&redirectslug=JavaScript
VBScript Plati “Visual Basic” brolija. Veikia IIS 4.0 serverio pusėje. Naudojamas vien tik “Microsoft” terpėse. http://www.microsoft.com/
shttp://msdn.microsoft.com/en-us/library/t0aew7h6(v=vs.84).aspx
Metacard Lengva išmokti neprogramuotojui Mažas naudotojų kiekis. http://www.metacard.com
Perl Dominuoja Voratinklyje. Turi daug specializuotų plėtinių. Neįpatingos priemonės darbui GUI, “Windows” ir MacOS aplinkose. http://www.perl.org
Python Paprasta daugiaplatformė kalba. Mažas naudotojų kiekis. http://www.python.org
Rexx Geras sąryšis su IBM operacinėmis terpėmis ir “mainframe”. Turi mažiau galimybių nei „Perl“, Tcl ar „Python“. http://www.rexxla.org
Tcl Paprasta sintaksė. Galima išplėsti. Lengva išmokti. Gremėzdiškos aritmetinės ir kitos įprastinės išraiškos http://www.activestate.com/activetcl

REXX

Rexx () - Mike Cowlishaw’o iš IBM 1982 m. sukurta interpretacinė (scripting) programavimo kalba, kuri galėtų būti naudojama bet kurioje sistemoje. Taip pat manyta, kad ji galėtų būti supaprastintas PL/I variantas. Pirminis jos tikslas buvo pakeisti EXEC ir EXEC 2. Tad ji yra tokių kalbų kaip Tcl ir Python pirmtakas. Su laiku IBM ją įtraukė į daugelį savo sistemų, naudojamų tiek „meinfreimuose“, tiek personaliniuose kompiuteriuose. Egzistuoja tiek komercinės, tiek nemokamos šios kalbos realizacijos. Ypatingą populiarumą įgavo „AmigaOS“ (įskaitant paskutinę versiją 3.2 išleistą 2021 m.).

Programos REXX kalba pavyzdys:

#!/usr/local/bin/regina
nm = "Jonai"
queue "Labas," nm
nm = "Petrai"
queue "Sudie," nm
pull msg
say msg
pull msg
say msg
exit

Ji pateikia:
Labas, Jonai
Sudie, Petrai

Pastaba: programa vykdyta nemokamu „Regina for Windows 2000“ interpretatoriumi.

Tiesiog - Java
Ruby on Rails
Didžiųjų duomenų mitas
Programavimo kalbų istorija
"JavaScript" pradžiamokslis
Anotacijos Java kalboje
Lyginant su gimtąja kalba
Džonas Bakas – FORTRAN tėvas
Programavimas Unix aplinkoje
Programavimo kalbų klegesys
Lambda išraiškos – Java į naują lygį
Įvadas į Perl kalbą: Kas naudoja Perl?
Pirmasis „Java“ įskiepis Lietuvoje
Pitonas, kandantis sau uodegą
AWK kalba - sena ir nuolat aktuali
Dygios JavaScript eilutės
Vaizdi rašysena - VB Script
Java 8: Optional prieš null
ASP patarimų liūnas
Dygios JavaScript eilutės
Unix komandinės eilutė
AdvancedHTML skyrius
Vartiklis