Programavimas

„Java“ scenarijų įvadas, 1 dalis

Ištrauka iš Scenarijai „Java“ kalba: kalbos, pagrindai ir modeliai.

Autorius Dejanas Bosanacas

Išleido Addison Wesley Professional

ISBN-10: 0-321-32193-6

ISBN-13: 978-0-321-32193-0

Visai neseniai „Java“ platformoje scenarijus sujaudino tik „hardcore“, tačiau anksčiau „Sun“ paskatino JRE palaikyti dinamiškai įvestas kalbas, tokias kaip „Python“, „Ruby“ ir „JavaScript“. Šioje dviejų dalių ištraukoje iš būsimo „Java“ scenarijų: kalbos, rėmai ir modeliai (Addison Wesley Professional, 2007 m. Rugpjūtis) Dejanas Bosanacas susiaurina tai, kas daugumą scenarijų kalbų skiria nuo programavimo kalbos, tokios kaip „Java“, tada paaiškina, kodėl scenarijai yra laiko vertas jūsų „Java“ programavimo įgūdžių papildymas.

Įvadas į „Java“ scenarijus: kalbos, rėmai ir modeliai

Pagrindinė šios knygos tema yra scenarijų technologijų ir „Java“ platformos sinergija. Apibūdinu projektus, kuriuos „Java“ kūrėjai gali naudoti kurdami galingesnę kūrimo aplinką, ir kai kurias praktikas, dėl kurių scenarijai yra naudingi.

Prieš pradėdamas diskutuoti apie scenarijų taikymą „Java“ pasaulyje, apibendrinu kai kurias scenarijų teorijas ir jų naudojimą informacinių technologijų infrastruktūroje. Tai yra pirmųjų dviejų knygos skyrių tema, ir tai suteikia mums geresnę scenarijų technologijos perspektyvą ir tai, kaip ši technologija gali būti naudinga „Java“ platformoje.

Norėdami pradėti, turime apibrėžti, kokios yra scenarijų kalbos, ir apibūdinti jų ypatybes. Jų ypatybės labai lemia vaidmenis, kuriuose jie galėtų (turėtų) būti naudojami. Šiame skyriuje aš paaiškinu, koks terminas scenarijų kalba reiškia ir aptarti jų pagrindines savybes.

Šio skyriaus pabaigoje aptarsiu scenarijų ir sistemos programavimo kalbų skirtumus ir kaip šie skirtumai juos pritaikys tam tikriems vaidmenims kuriant.

Fonas

Skriptų kalbos apibrėžimas yra neryškus ir kartais nesuderinamas su tuo, kaip scenarijų kalbos naudojamos realiame pasaulyje, todėl pravartu apibendrinti kai kurias pagrindines programavimo ir skaičiavimo sąvokas. Ši santrauka suteikia pagrindą, reikalingą scenarijų kalboms apibrėžti ir aptarti jų ypatybes.

Pradėkime nuo pradžių. Procesoriai vykdo mašinos instrukcijos, kurie naudoja duomenis procesoriaus registruose arba išorinėje atmintyje. Paprasčiau tariant, mašininė instrukcija susideda iš dvejetainių skaitmenų (0s ir 1s) sekos ir yra būdinga konkrečiam procesoriui, kuriuo ji veikia. Mašinos instrukcijas sudaro operacijos kodas - nurodyti procesoriui, kokią operaciją jis turėtų atlikti, ir - operandai duomenys, su kuriais turėtų būti atliekama operacija.

Pvz., Apsvarstykite paprastą operaciją, kaip pridėti registre esančią vertę prie kitame esančios vertės. Dabar įsivaizduokime paprastą procesorių su 8 bitų komandų rinkiniu, kur pirmieji 5 bitai žymi operacijos kodą (tarkime, 00111 registrų vertės pridėjimui), o registrai adresuojami 3 bitų modeliu. Šį paprastą pavyzdį galime parašyti taip:

00111 001 010

Šiame pavyzdyje aš naudojau 001 ir 010, kad adresuočiau procesoriaus pirmuosius ir antruosius registrus (atitinkamai R1 ir R2).

Šis pagrindinis skaičiavimo metodas buvo gerai žinomas dešimtmečius, ir aš tikiu, kad jums jis yra gerai žinomas. Įvairių tipų procesoriai turi skirtingas strategijas, kaip turėtų atrodyti jų instrukcijų rinkiniai (RISC arba CISC architektūra), tačiau programinės įrangos kūrėjo požiūriu vienintelis svarbus faktas yra tai, kad procesorius sugeba vykdyti tik dvejetaines instrukcijas. Nesvarbu, kokia programavimo kalba naudojama, gaunama programa yra procesoriaus vykdomų mašinų instrukcijų seka.

Laikui bėgant kinta tai, kaip žmonės kuria tvarką, kuria vykdomos mašinos instrukcijos. Ši užsakyta mašinų instrukcijų seka vadinama a kompiuterio programa. Kai aparatūra tampa vis prieinamesnė ir galingesnė, vartotojų lūkesčiai didėja. Visas programinės įrangos, kaip mokslo disciplinos, kūrimo tikslas yra sukurti mechanizmus, leidžiančius kūrėjams kurti sudėtingesnes programas tomis pačiomis (ar net mažiau) pastangomis, kaip ir anksčiau.

Konkretus procesoriaus instrukcijų rinkinys vadinamas jo mašinų kalba. Mašinų kalbos priskiriamos pirmosios kartos programavimo kalboms. Tokiu būdu parašytos programos paprastai yra labai greitos, nes yra optimizuotos pagal konkretaus procesoriaus architektūrą. Nepaisant šios naudos, žmonėms sunku (jei net neįmanoma) rašyti didelių ir saugių programų mašinų kalbomis, nes žmonėms nėra gerai sekasi susidoroti su didelėmis 0s ir 1s sekomis.

Bandydami išspręsti šią problemą, kūrėjai pradėjo kurti tam tikrų dvejetainių šablonų simbolius. surinkimo kalbos buvo pristatyti. Asamblėjos kalbos yra antros kartos programavimo kalbos. Nurodymai surinkimo kalbomis yra tik vienu lygiu aukščiau už mašinų instrukcijas, nes jie pakeičia dvejetainius skaitmenis lengvai įsimenamais raktiniais žodžiais, pvz., ADD, SUB ir pan. Tokiu būdu galite perrašyti ankstesnį paprastų instrukcijų pavyzdį surinkimo kalba taip:

PRIDĖTI R1, R2

Šiame pavyzdyje ADD raktinis žodis nurodo komandos operacijos kodą, o R1 ir R2 apibrėžia su operacija susijusius registrus. Net jei stebite tik šį paprastą pavyzdį, akivaizdu, kad surinkimo kalbos žmonėms palengvino programų skaitymą ir sudarė galimybes kurti sudėtingesnes programas.

Nors jos labiau orientuotos į žmogų, tačiau antrosios kartos kalbos procesorių galimybių jokiais būdais neišplečia.

Įveskite aukšto lygio kalbomis, leidžiančius kūrėjams išreikšti save aukštesnio lygio, semantinėmis formomis. Kaip jau spėjote, šios kalbos vadinamos trečios kartos programavimo kalbos. Aukšto lygio kalbos teikia įvairias galingas kilpas, duomenų struktūras, objektus ir pan., Todėl jomis daug lengviau kurti daugybę programų.

Laikui bėgant buvo įvestas įvairus aukšto lygio programavimo kalbų rinkinys, kurio savybės labai skyrėsi. Kai kurios iš šių savybių programavimo kalbas skirsto į scenarijų (arba dinamines) kalbas, kaip matome ateinančiuose skyriuose.

Be to, skiriasi tai, kaip programavimo kalbos vykdomos pagrindiniame kompiuteryje. Paprastai sudarytojai išversti aukšto lygio kalbos konstrukcijas į mašinines instrukcijas, esančias atmintyje. Nors iš pradžių taip parašytos programos buvo šiek tiek mažiau efektyvios nei programos, parašytos surinkimo kalba, nes ankstyvieji kompiliatoriai nesugebėjo efektyviai naudoti sistemos išteklių, tačiau laikui bėgant kompiliatoriai ir mašinos tobulėjo, todėl sistemos programavimo kalbos buvo pranašesnės už surinkimo kalbas. Ilgainiui aukšto lygio kalbos išpopuliarėjo įvairiausiose plėtros srityse, pradedant verslo programomis ir žaidimais, baigiant ryšių programine įranga ir operacinių sistemų diegimu.

Tačiau yra dar vienas būdas aukšto lygio semantinius konstruktus paversti mašininėmis instrukcijomis, ty interpretuoti juos vykdant. Tokiu būdu jūsų programos yra scenarijai, jų pradinė forma, o konstrukcijos vykdymo metu transformuojamos programa, vadinama vertėjas. Iš esmės jūs vykdote vertėją, kuris skaito jūsų programos teiginius ir juos tada vykdo. Paskambino scenarijus arba dinamiškos kalbos, tokios kalbos siūlo dar aukštesnį abstrakcijos lygį, nei siūlo sistemos programavimo kalbos, ir mes jas išsamiai aptarsime vėliau šiame skyriuje.

Šias savybes turinčios kalbos natūraliai tinka tam tikroms užduotims atlikti, pavyzdžiui, procesų automatizavimui, sistemos administravimui ir esamų programinės įrangos komponentų klijavimui; trumpai tariant, bet kur griežta sintaksė ir apribojimai, kuriuos įveda sistemos programavimo kalbos, kliudė kūrėjams ir jų darbams. Įprastų scenarijų kalbų vaidmenų aprašymas yra 2 skyriuje „Tinkamos programos scenarijų kalboms“.

Bet ką visa tai turi bendro su jumis, kaip „Java“ kūrėju? Norėdami atsakyti į šį klausimą, pirmiausia trumpai apibendrinkime „Java“ platformos istoriją. Kadangi platformos tapo įvairesnės, kūrėjams tapo vis sunkiau rašyti programinę įrangą, kuri gali veikti daugumoje turimų sistemų. Štai tada „Sun“ sukūrė „Java“, kuri siūlo paprastumą „parašyk vieną kartą, paleisk bet kur“.

Pagrindinė „Java“ platformos idėja buvo įdiegti virtualų procesorių kaip programinės įrangos komponentą, vadinamą a Virtuali mašina. Turėdami tokią virtualią mašiną galime parašyti ir sukompiliuoti to procesoriaus kodą, o ne konkrečią aparatinės įrangos platformą ar operacinę sistemą. Šio kompiliavimo proceso išvestis vadinama baitkodas, ir jis praktiškai atspindi tikslinės virtualios mašinos mašininį kodą. Vykdant programą, paleidžiama virtuali mašina ir interpretuojamas baitų kodas. Akivaizdu, kad tokiu būdu sukurta programa gali veikti bet kurioje platformoje su įdiegta tinkama virtualia mašina. Šis požiūris į programinės įrangos kūrimą rado daug įdomių naudojimo būdų.

Pagrindinė „Java“ platformos išradimo motyvacija buvo sukurti aplinką lengvai, nešiojamai, tinklą naudojančiai kliento programinei įrangai kurti. Tačiau daugiausia dėl virtualiosios mašinos nustatytų baudų už našumą „Java“ dabar geriausiai tinka serverio programinės įrangos kūrimo srityje. Akivaizdu, kad didėjant asmeninių kompiuterių greičiui, „Java“ rašoma daugiau darbalaukio programų. Ši tendencija tik tęsiasi.

Vienas iš pagrindinių scenarijų kalbos reikalavimų yra turėti vertėją ar kažkokią virtualią mašiną. „Java“ platformoje yra „Java Virtual Machine“ (JVM), kuri leidžia jai būti įvairių scenarijų kalbų priegloba. Šiandien Java bendruomenėje susidomėjimas šia sritimi auga. Yra nedaug projektų, kurie bando „Java“ kūrėjams suteikti tokią pačią galią kaip tradicinių scenarijų kalbos kūrėjai. Taip pat yra būdas paleisti esamą programą, parašytą dinamine kalba, pvz., „Python“, JVM viduje ir integruoti ją su kita „Java“ programa ar moduliu.

Tai ir aptariame šioje knygoje. Programuodami taikome scenarijų metodą, aptardami visas šio požiūrio stipriąsias ir silpnąsias puses, kaip geriausiai naudoti scenarijus programų architektūroje ir kokie įrankiai šiandien yra JVM viduje.

$config[zx-auto] not found$config[zx-overlay] not found