Kontentke ótiw

Joqarı dárejeli programmalastırıw tili

Wikipedia — erkin enciklopediya

Joqarı dárejeli programmalastırıw tili — bul kompyuter detallarınan kúshli abstrakciyaǵa iye bolǵan programmalastırıw tili. Tómen dárejeli programmalastırıw tillerinen ayırmashılıǵı, ol tábiyiy til elementlerinen paydalanıwı, qollanıw ushın ańsat bolıwı múmkin yamasa esaplaw sistemalarınıń áhmiyetli tarawların (mısalı, yad basqarıwın) avtomatlastırıwı (yamasa hátte tolıǵı menen jasırıwı) múmkin, bul programma islep shıǵıw processin tómen dárejeli tildi qollanǵanǵa qaraǵanda ápiwayı hám túsinikli etedi. Usınılǵan abstrakciya muǵdarı programmalastırıw tiliniń qanshelli «joqarı dárejeli» ekenligin anıqlaydı[1].

Joqarı dárejeli termini mashina kodı hám assembler tiline tán bolǵan processor apparatlıq támiynatınıń detallarınan abstrakciya dárejesin ańlatadı. Registrlar, yad adresleri hám shaqırıwlar stegi menen islesiw ornına, joqarı dárejeli tiller ózgeriwshiler, massivler, obyektler, arifmetikalıq hám logikalıq ańlatpalar, funkciyalar, cikller, aǵımlar, qulıplar hám basqa da kompyuter iliminiń abstrakciyaları menen islesedi, bul durıslıqtı hám qollap-quwatlawdı ańsatlastırıwǵa arnalǵan. Tómen dárejeli assembler tillerinen ayırmashılıǵı, joqarı dárejeli tillerdiń mashinanıń jergilikli opkodlarına tikkeley awdarılatuǵın til elementleri az, yamasa ulıwma joq. Qatarlar menen islesiw, Obyektke baǵdarlanǵan programmalastırıw ózgeshelikleri hám fayldı kirgiziw/shıǵarıw sıyaqlı basqa imkaniyatlar da usınılıwı múmkin. Joqarı dárejeli til mashina detallarınan ajıratılǵan hám bólingen derek kodın jaratıwǵa imkaniyat beredi. Yaǵnıy, assembler hám mashina kodı sıyaqlı tómen dárejeli tillerden ayırmashılıǵı, joqarı dárejeli til kodı baǵdarlamashınıń xabarısız maǵlıwmatlardıń jıljıwına alıp keliwi múmkin. Qaysı kórsetpelerdi orınlawdı basqarıwdıń bir bólimi kompilyatorǵa tapsırıladı.

Tariyxı

1960-jılları «avtokod» termini kompilyatorǵa tiykarlanǵan joqarı dárejeli programmalastırıw tilin súwretlew ushın keń qollanılǵan. Bunday avtokodlardıń belgili mısalları - COBOL hám Fortran.

Kompyuterler ushın proektlestirilgen eń dáslepki joqarı dárejeli programmalastırıw tili Plankalkül bolıp, onı Konrad Cuze islep shıqqan. Degen menen, ol onıń tiri waqtında hesh qashan ámelge asırılmadı hám onıń jetekshi jumısları Ekinshi jer júzilik urıs kesirinen basqa rawajlanıwlardan kóbinese úzilisip qaldı. Soǵan qaramastan, Plankalkül Geync Rutishauzerdiń Superplan tiline hám azıraq dárejede ALGOLdıń rawajlanıwına tásir etti.

Keń tarqalǵan birinshi joqarı dárejeli til Fortran boldı, bul IBM-niń aldıńǵı Avtokod sistemalarınıń mashinaǵa ǵárezsiz evolyuciyası edi. Shama menen sol waqıtta Evropalı hám Amerikalı kompyuter ilimpazlarınıń birlesken komitetleri tárepinen jaratılǵan ALGOL shańaraǵı payda boldı — 1958-jılı ALGOL 58 hám 1960-jılı ALGOL 60. ALGOL rekursiya, leksikalıq kólem astındaǵı ishki funkciyalar hám mánis penen at parametrleri arasındaǵı anıq ayırmashılıq hám olardıń sáykes semantikası sıyaqlı tiykarǵı innovaciyalardı kirgizdi. Ol sonıń menen birge while-do cikl hám if-then-else operatorları sıyaqlı bir neshe strukturalıq programmalastırıw koncepciyalarına jol ashtı hám sintaksisi birinshi ret Bekus-Naur forması (BNF) járdeminde rásmiy túrde anıqlanǵan til boldı.

Sol waqıtta, COBOL jazıwlar (strukturalar dep te ataladı) koncepciyasın tiykarǵı programmalastırıwǵa kirgizdi, al Lisp tolıq ulıwma lyambda abstrakciyasın ámelge asırǵan birinshi til boldı.

Abstrakciya tólemi

Joqarı dárejeli til ulıwma wazıypalardı standartlastıratuǵın, bay qátelerdi sazlawǵa imkaniyat beretuǵın hám arxitekturalıq ǵárezsizlikti saqlaytuǵın imkaniyatlardı usınadı. Ekinshi tárepten, tómen dárejeli til kod jazıwshıdan tómen dárejedegi abstrakciya menen islewdi talap etedi, bul ádette quramalılaw, biraq joqarı dárejeli til menen múmkin bolmaǵan optimallastırıwlarǵa imkaniyat beredi. Tómen dárejeli til ornına joqarı dárejeli tildi qollanǵanı ushın bul abstrakciya tólemi haqıyqat, biraq ámeliyatta tómen dárejeli optimallastırıwlar siyrek jaǵdayda paydalanıwshı tájiriybesi dárejesinde ónimdarlıqtı jaqsılaydı[2][3][4]. Soǵan qaramastan, tez hám nátiyjeli islew kerek bolǵan kod tómen dárejeli tildi paydalanıwdı talap etiwi múmkin, hátte joqarı dárejeli til kod jazıwdı hám oǵan xızmet kórsetiwdi ańsatlastırsa da. Kóp jaǵdaylarda, tiykarınan joqarı dárejeli tilde jazılǵan programmanıń áhmiyetli bólimleri qatań waqıt yamasa yad sheklewlerin qanaatlandırıw ushın assembler tilinde kodlanadı. Joqarı dárejeli til ushın jaqsı proektlestirilgen kompilyator assembler tilinde qol menen kodlanǵan kod penen salıstırǵanda teń dárejede nátiyjeli kod payda ete aladı, hám joqarı dárejeli abstrakciyalar geyde qol menen kodlanǵan assemblerdiń ónimdarlıǵınan asatuǵın optimallastırıwlarǵa imkaniyat beredi[5]. Joqarı dárejeli til belgili bir esaplaw sisteması arxitekturasına ǵárezsiz proektlestirilgenlikten, bunday tilde jazılǵan programma sáykes muwapıq kompilyatorı yamasa interpretatorı bar hár qanday esaplaw kontekstinde isley aladı.

Processor apparatlıq támiynatına tiykarınan baylanıslı bolǵan tómen dárejeli tilden ayırmashılıǵı, joqarı dárejeli tildi jaqsılawǵa boladı, hám eń kóp qollanılatuǵın konstrukciyalardı jaqsılanǵan imkaniyatlar menen biriktiriw maqsetinde basqalardan jańa joqarı dárejeli tiller payda bolıwı múmkin. Mısalı, Scala Java menen keri sáykeslikti saqlaydı. Java-da jazılǵan kod baǵdarlamashı Scala-ǵa ótsede qollanıwǵa jaramlı bolıp qala beredi. Bul ótiw processin ańsatlastıradı hám kod bazasınıń ómirin uzartadı. Kerisinshe, tómen dárejeli programmalar ózleri jazılǵan sistema arxitekturasınan tıs siyrek saqlanıp qaladı.

Salıstırmalı mánisi

«Joqarı dárejeli» hám «tómen dárejeli» terminleri tiykarınan salıstırmalı bolıp, tillerdi bir-birine salıstırǵanda joqarıraq yamasa tómen dárejeli dep aytıwǵa boladı. Geyde C tili kimniń kózqarasına baylanıslı joqarı dárejeli de, tómen dárejeli de esaplanıwı múmkin. Soǵan qaramastan, kópshilik C tiliniń assembler tilinen joqarıraq hám basqa kóplegen tillerden tómen dárejede ekenligine kelisedi.

C tili ańlatpalardı esaplaw, parametrli hám rekursiv funkciyalar, maǵlıwmat tipleri hám strukturaları sıyaqlı konstrukciyalardı qollap-quwatlaydı, bular ádette assembler tilinde yamasa processor tárepinen tikkeley qollap-quwatlanbaydı, biraq C avtoinkrement hám kórsetkish arifmetikası sıyaqlı tómen dárejeli imkaniyatlardı usınadı. Biraq C tilinde shıǵındını jıynaw hám ornatılǵan qatar tipi sıyaqlı basqa tillerde keń tarqalǵan kóplegen joqarı dárejeli abstrakciyalar joq. Brayan Kernigan hám Dennis Ritchidiń «C programmalastırıw tili» (ekinshi basılım) kitabınıń kirisiwinde C tili «júdá joqarı dárejeli emes» til retinde súwretlenedi[6].

Assembler tili mashina kodınan joqarıraq dárejede, biraq ele de processor apparatlıq támiynatına júdá baylanıslı. Degen menen, assembler makroslar, salıstırmalı túrde sheklengen ańlatpalar, turaqlılar, ózgeriwshiler, proceduralar hám maǵlıwmat strukturaları sıyaqlı ayırım joqarı dárejeli imkaniyatlardı usınıwı múmkin.

Mashina kodı kóplegen processorlardıń ishinde qollanılatuǵın mikrokod yamasa mikro-operaciyalardan sál joqarıraq abstrakciya dárejesinde turadı[7].

Orınlanıw rejimleri

Joqarı dárejeli tildiń derek kodı hár túrli usıllar menen qayta isleniwi múmkin, sonıń ishinde:

Kompilyaciyalanǵan
Kompilyator derek kodın basqa kodqa aylandıradı. Geyde, hám dástúrli túrde, kompilyator processor tárepinen interpretaciya etiletuǵın jergilikli mashina kodın payda etedi. Biraq, búgingi kúnde kóplegen orınlanıw modelleri keyinirek programmalıq támiynatta interpretaciya etiletuǵın yamasa orınlanıw waqtında jergilikli kodqa aylandırılatuǵın (JIT kompilyaciyası arqalı) aralıq kórinisti (yaǵnıy, bayt-kod) payda etiwdi óz ishine aladı.
Transpilyaciyalanǵan
Kod kompilyatorı yamasa interpretatorı bar basqa (ádette tómen dárejeli) tildiń derek kodına awdarılıwı múmkin. JavaScript hám C bunday awdarmashılar ushın keń tarqalǵan maqsetler bolıp tabıladı. Mısalı, C hám C++ kodın EiffelStudio IDE-ni paydalanǵanda Eiffel kodınan payda bolǵan dep qarawǵa boladı. Eiffel-de awdarıw procesi transkompilyaciya yamasa transpilyaciya etilgen dep ataladı, al Eiffel kompilyatorı transkompilyator yamasa derekten-derekke kompilyator dep ataladı.
Programmalıq támiynat arqalı interpretaciyalanǵan
Programmalıq támiynat interpretatorı jergilikli mashina kodın payda etpesten derek kodında kodlanǵan háreketlerdi orınlaydı.
Apparatlıq támiynat arqalı interpretaciyalanǵan
Siyrek ushırasatuǵın bolsa da, joqarı dárejeli til kompyuter arxitekturasına iye processor joqarı dárejeli tildi kompilyaciya basqıshısız qayta isley aladı. Mısalı, Burroughs úlken sistemaları ALGOL 60 ushın maqsetli mashinalar bolǵan[8].

Esletpe: bir til qatań túrde tek interpretaciyalanatuǵın yamasa tek kompilyaciyalanatuǵın bolmaydı. Kerisinshe, orınlanıw modeli kompilyatordı yamasa interpretatordı óz ishine aladı hám bir tildiń ózi hár túrli orınlanıw modelleri menen qollanılıwı múmkin. Mısalı, ALGOL 60 hám Fortran ádette kompilyaciya etilgenine qaramastan, olar interpretaciya da etilgen. Usıǵan uqsas, Java bul belgilerdi tillerge emes, al implementaciyalarǵa qollanıwǵa háreket etiwdiń qıyınlıǵın kórsetedi. Java bayt-kodqa kompilyaciya etiledi, ol keyin Java virtual mashinasında (JVM) interpretaciyalanıw yamasa JIT arqalı kompilyaciyalanıw arqalı orınlanadı.

Derekler

  1. «HThreads - RD Glossary». 26-avgust 2007-jılda túp nusqadan arxivlendi.
  2. Surana P (2006). Meta-Compilation of Language Abstractions.. http://lispnyc.org/meeting-assets/2007-02-13_pinku/SuranaThesis.pdf. Retrieved 2008-03-17.
  3. Kuketayev, Argyn «The Data Abstraction Penalty (DAP) Benchmark for Small Objects in Java.». Application Development Trends. 11-yanvar 2009-jılda túp nusqadan arxivlendi. Qaraldı: 17-mart 2008-jıl.
  4. Chatzigeorgiou; Stephanides. Proceedings - 7th International Conference on Reliable Software Technologies - Ada-Europe'2002. Springer, 2002 367 bet. 
  5. Manuel Carro; José F. Morales; Henk L. Muller; G. Puebla; M. Hermenegildo (2006). "High-level languages for small devices: a case study". Proceedings of the 2006 International Conference on Compilers, Architecture and Synthesis for Embedded Systems (ACM). http://www.clip.dia.fi.upm.es/papers/carro06:stream_interpreter_cases.pdf.
  6. Kernighan, Brian W.; Ritchie, Dennis M.. The C Programming Language: 2nd Edition. Prentice Hall, 1988. ISBN 9780131103627. 
  7. Hyde, Randall.. The art of assembly language, 2nd, San Francisco: No Starch Press, 2010. ISBN 9781593273019. OCLC 635507601. 
  8. Chu, Yaohan (1975), „Concepts of High-Level Language Computer Architecture“, High-Level Language Computer Architecture, 1–14-bet, doi:10.1016/b978-0-12-174150-1.50007-0, ISBN 9780121741501 {{citation}}: Unknown parameter |publisher= ignored (járdem)