Programmēšana

Ievads skriptu izveidē Java, 1. daļa

Izraksts no Skriptu izveide Java valodā: valodas, ietvarstruktūras un raksti.

Autors Dejans Bosanaks

Izdevējs Addison Wesley Professional

ISBN-10: 0-321-32193-6

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

Vēl nesen tikai skarbie cilvēki bija satraukti par skriptu izveidi Java platformā, bet tas bija pirms Sun palielināja JRE atbalstu dinamiski drukātām valodām, piemēram, Python, Ruby un JavaScript. Šajā divdaļīgajā fragmentā no gaidāmās Java skriptēšanas: valodas, ietvari un modeļi (Addison Wesley Professional, 2007. gada augusts) Dejans Bosanaks aprobežojas ar to, kas atšķir lielāko daļu skriptu valodu no programmēšanas valodas, piemēram, Java, un pēc tam paskaidro, kāpēc skripti ir laika cienīgs papildinājums jūsu Java programmēšanas prasmju kopai.

Ievads skriptu izveidē Java: valodas, ietvari un raksti

Šīs grāmatas galvenā tēma ir skriptu tehnoloģiju un Java platformas sinerģija. Es raksturoju projektus, kurus Java izstrādātāji var izmantot, lai izveidotu jaudīgāku izstrādes vidi, kā arī dažas no praksēm, kas padara skriptu lietošanu noderīgu.

Pirms sāku apspriest skriptu lietošanu Java pasaulē, es apkopoju dažas teorijas par skriptiem kopumā un to izmantošanu informācijas tehnoloģiju infrastruktūrā. Šī ir tēma pirmajās divās grāmatas nodaļās, un tā dod mums labāku skriptu tehnoloģijas perspektīvu, kā arī to, kā šī tehnoloģija var būt noderīga Java platformā.

Lai sāktu, mums jādefinē skriptu valodas un jāapraksta to īpašības. To īpašības lielā mērā nosaka lomas, kurās tās varētu (vajadzētu) izmantot. Šajā nodaļā es izskaidroju terminu skriptu valoda nozīmē un apspriež to pamatīpašības.

Šīs nodaļas beigās es apspriedu atšķirības starp skriptu un sistēmas programmēšanas valodām un to, kā šīs atšķirības padara tās piemērotas noteiktām lomām attīstībā.

Priekšvēsture

Skriptu valodas definīcija ir neskaidra un dažreiz neatbilst tam, kā skriptu valodas tiek izmantotas reālajā pasaulē, tāpēc ir ieteicams apkopot dažus pamatjēdzienus par programmēšanu un skaitļošanu kopumā. Šis kopsavilkums ir pamats, kas nepieciešams, lai definētu skriptu valodas un apspriestu to īpašības.

Sāksim no sākuma. Procesori izpilda instrukcijas par mašīnu, kas darbojas ar datiem vai nu procesoru reģistros, vai ārējā atmiņā. Vienkāršāk sakot, mašīna instrukcija sastāv no bināro ciparu secības (0s un 1s) un ir raksturīga konkrētam procesoram, kurā tā darbojas. Mašīnas instrukcijas sastāv no darbības kods - pateikt procesoram, kāda darbība tai jāveic, un - operandi kas norāda datus, ar kuriem jāveic darbība.

Piemēram, apsveriet vienkāršo darbību, kā vienā reģistrā esošo vērtību pievienot citā esošajai vērtībai. Tagad iedomāsimies vienkāršu procesoru ar 8 bitu instrukciju kopu, kur pirmie 5 biti apzīmē operācijas kodu (teiksim, 00111 reģistra vērtības pievienošanai), un reģistri tiek adresēti ar 3 bitu modeli. Šo vienkāršo piemēru mēs varam uzrakstīt šādi:

00111 001 010

Šajā piemērā es izmantoju 001 un 010, lai adresētu procesora reģistrus numur viens un attiecīgi (attiecīgi R1 un R2).

Šī skaitļošanas pamatmetode ir bijusi labi pazīstama gadu desmitiem ilgi, un es esmu pārliecināts, ka jūs to labi pārzināt. Dažādu veidu procesoriem ir atšķirīgas stratēģijas attiecībā uz to, kā jāizskatās viņu instrukciju kopām (RISC vai CISC arhitektūra), taču no programmatūras izstrādātāja viedokļa vienīgais svarīgais fakts ir tas, ka procesors spēj izpildīt tikai bināras instrukcijas. Neatkarīgi no tā, kāda programmēšanas valoda tiek izmantota, iegūtā lietojumprogramma ir procesora izpildītu mašīnu komandu secība.

Laika gaitā ir mainījies tas, kā cilvēki izveido mašīnu instrukciju izpildes secību. Šo pasūtīto mašīnu instrukciju secību sauc par a datorprogramma. Tā kā aparatūra kļūst arvien pieejamāka un jaudīgāka, lietotāju cerības pieaug. Viss programmatūras izstrādes kā zinātnes disciplīnas mērķis ir nodrošināt mehānismus, kas ļauj izstrādātājiem izstrādāt sarežģītākas lietojumprogrammas ar tādām pašām (vai pat mazākām) pūlēm kā līdz šim.

Konkrētu procesora instrukciju kopu sauc par tās mašīnu valoda. Mašīnu valodas tiek klasificētas kā pirmās paaudzes programmēšanas valodas. Šādi uzrakstītas programmas parasti ir ļoti ātras, jo tās ir optimizētas konkrētā procesora arhitektūrai. Neskatoties uz šo ieguvumu, cilvēkiem ir grūti (ja ne neiespējami) rakstīt lielas un drošas lietojumprogrammas mašīnu valodās, jo cilvēki neprot tikt galā ar lielām 0s un 1s sekvencēm.

Mēģinot atrisināt šo problēmu, izstrādātāji sāka veidot simbolus noteiktiem bināriem modeļiem, un līdz ar to montāžas valodas tika ieviesti. Asamblejas valodas ir otrās paaudzes programmēšanas valodas. Instrukcijas montāžas valodās ir tikai par vienu līmeni virs mašīnas instrukcijām, jo ​​tās aizstāj bināros ciparus ar viegli atceramiem atslēgvārdiem, piemēram, ADD, SUB un tā tālāk. Tādējādi iepriekšējo vienkāršo instrukciju piemēru montāžas valodā varat pārrakstīt šādi:

PIEVIENOT R1, R2

Šajā piemērā ADD atslēgvārds apzīmē instrukcijas darbības kodu, un R1 un R2 definē operācijā iesaistītos reģistrus. Pat ja jūs novērojat tikai šo vienkāršo piemēru, ir skaidrs, ka montāžas valodas cilvēkiem padarīja programmas vieglāk lasāmas un tādējādi ļāva izveidot sarežģītākas lietojumprogrammas.

Lai gan tās ir vairāk vērstas uz cilvēkiem, tomēr otrās paaudzes valodas nekādā ziņā nepaplašina procesora iespējas.

Enter augsta līmeņa valodas, kas ļauj izstrādātājiem izpausties augstāka līmeņa semantiskās formās. Kā jūs jau nojautāt, šīs valodas tiek dēvētas par trešās paaudzes programmēšanas valodas. Augsta līmeņa valodas nodrošina dažādas jaudīgas cilpas, datu struktūras, objektus un tā tālāk, padarot daudz vieglāku daudzu lietojumprogrammu izveidi ar tām.

Laika gaitā tika ieviests daudzveidīgs augsta līmeņa programmēšanas valodu klāsts, un to īpašības ļoti mainījās. Daži no šiem raksturojumiem klasificē programmēšanas valodas kā skriptu (vai dinamiskās) valodas, kā redzam nākamajās sadaļās.

Atšķirība ir arī tajā, kā programmēšanas valodas tiek izpildītas resursdatorā. Parasti sastādītāji tulkot augsta līmeņa valodas konstrukcijas mašīnu instrukcijās, kas atrodas atmiņā. Lai gan sākotnēji šādā veidā uzrakstītās programmas bija nedaudz mazāk efektīvas nekā asamblejas valodā rakstītās programmas, jo agri kompilatori nespēja efektīvi izmantot sistēmas resursus, laika gaitā kompilatori un mašīnas uzlabojās, padarot sistēmas programmēšanas valodas pārākas par montāžas valodām. Galu galā augsta līmeņa valodas kļuva populāras visdažādākajās attīstības jomās, sākot no biznesa lietojumprogrammām un spēlēm līdz sakaru programmatūrai un operētājsistēmas ieviešanai.

Bet ir vēl viens veids, kā pārveidot augsta līmeņa semantiskās konstrukcijas mašīnu instrukcijās, tas ir, interpretējot tās izpildes laikā. Tādā veidā jūsu lietojumprogrammas atrodas skriptos to sākotnējā formā, un konstrukcijas izpildlaika laikā pārveido programma ar nosaukumu tulks. Būtībā jūs izpildāt tulku, kurš nolasa jūsu lietojumprogrammas paziņojumus un pēc tam tos izpilda. Zvanīja skriptu izveidošana vai dinamiskas valodas, šādas valodas piedāvā vēl augstāku abstrakcijas līmeni nekā tas, ko piedāvā sistēmas programmēšanas valodas, un mēs sīkāk tos apspriežam vēlāk šajā nodaļā.

Valodas ar šīm īpašībām ir dabiski piemērotas noteiktiem uzdevumiem, piemēram, procesu automatizēšanai, sistēmas administrēšanai un esošo programmatūras komponentu salīmēšanai; Īsāk sakot, visur, kur stingra sintakse un ierobežojumi, ko ieviesa sistēmas programmēšanas valodas, traucēja izstrādātājiem un viņu darbavietām. Skriptu valodu parasto lomu apraksts ir uzsvērts 2. nodaļā "Skriptu valodām piemēroti lietojumi".

Bet kāds tam visam sakars ar jums kā Java izstrādātāju? Lai atbildētu uz šo jautājumu, vispirms īsi apkoposim Java platformas vēsturi. Kad platformas kļuva daudzveidīgākas, izstrādātājiem kļuva arvien grūtāk rakstīt programmatūru, kas var darboties lielākajā daļā pieejamo sistēmu. Tas ir tad, kad Sun izstrādāja Java, kas piedāvā vienkāršību "rakstīt vienreiz, palaist jebkur".

Java platformas galvenā ideja bija ieviest virtuālo procesoru kā programmatūras komponentu, ko sauc par a virtuālā iekārta. Kad mums ir šāda virtuālā mašīna, mēs varam rakstīt un apkopot kodu šim procesoram, nevis konkrētai aparatūras platformai vai operētājsistēmai. Tiek saukts šī kompilācijas procesa rezultāts baitkods, un tas praktiski pārstāv mērķētās virtuālās mašīnas mašīnkodu. Kad programma ir izpildīta, tiek palaista virtuālā mašīna un tiek interpretēts baitkods. Ir skaidrs, ka šādā veidā izstrādāta lietojumprogramma var darboties uz jebkuras platformas, kurā ir instalēta atbilstoša virtuālā mašīna. Šī programmatūras izstrādes pieeja atrada daudz interesantu lietojumu.

Galvenā Java platformas izgudrojuma motivācija bija radīt vidi vieglas, pārnēsājamas, tīklu apzinošas klienta programmatūras izstrādei. Bet galvenokārt virtuālās mašīnas ieviesto sodu dēļ Java tagad ir vislabāk piemērota serveru programmatūras izstrādes jomā. Tas ir skaidrs, jo personālo datoru ātrums palielinās, vairāk darbvirsmas lietojumprogrammu tiek rakstītas Java valodā. Šī tendence tikai turpinās.

Viena no skriptu valodas pamatprasībām ir tulks vai kāda veida virtuālā mašīna. Java platforma ir aprīkota ar Java Virtual Machine (JVM), kas ļauj tai būt dažādu skriptu valodu resursdatoram. Java kopienā mūsdienās pieaug interese par šo jomu. Ir daži projekti, kas cenšas nodrošināt Java izstrādātājiem tādu pašu enerģijas izstrādātāju, kāds ir tradicionālajām skriptu valodām. Ir arī veids, kā izpildīt savu esošo lietojumprogrammu, kas rakstīta dinamiskā valodā, piemēram, Python, JVM iekšienē un integrēt to ar citu Java lietojumprogrammu vai moduli.

Tas ir tas, ko mēs apspriežam šajā grāmatā. Mēs izmantojam skriptu pieeju programmēšanai, vienlaikus apspriežot visas šīs pieejas stiprās un vājās puses, kā vislabāk izmantot skriptus lietojumprogrammu arhitektūrā un kādi rīki šodien ir pieejami JVM.

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