Keńeytiletuǵın programmalastırıw
Kompyuter iliminde keńeytiletuǵın programmalastırıw — bul programmalastırıw tilin, kompilyatordı hám orınlanıw sistemasın (ortalıǵın) keńeytiw mexanizmlerine itibar qaratatuǵın kompyuter programmalastırıw stili. Bul programmalastırıw stilin qollap-quwatlaytuǵın keńeytiletuǵın programmalastırıw tilleri 1960-jılları aktiv jumıs alıp barılǵan taraw boldı, biraq bul háreket 1970-jılları ekinshi dárejeli bolıp qaldı[1]. Keńeytiletuǵın programmalastırıw XXI ásirde jańadan qızıǵıwshılıq oyatqan temaǵa aylandı[2].
Tariyxıy háreket
Keńeytiletuǵın programmalastırıw tili háreketi menen ádette baylanıstırılatuǵın birinshi maqala — M. Duglas Makilroydıń 1960-jılǵı joqarı dárejeli programmalastırıw tilleri ushın makroslar haqqındaǵı maqalası. Keńeytiwshilik principiniń taǵı bir dáslepki táriypi Bruker hám Morristiń 1960-jılǵı kompilyator-kompilyator haqqındaǵı maqalasıda ushırasadı. Hárekettiń shıńı 1969-jılı hám 1971-jılı ótkerilgen eki ilimiy simpozium menen belgilendi. 1975-jılǵa kelip, Tomas A. Standishtiń[3] háreket haqqındaǵı sholıw maqalası tiykarınan ólimnen keyingi tekseriw edi. Forth bunnan tısqarı boldı, biraq ol tiykarınan itibarǵa alınbadı.
Tariyxıy hárekettiń xarakteri
Ádette kóz aldına keltirilgenindey, keńeytiletuǵın til elementar esaplaw múmkinshiliklerin támiyinleytuǵın tiykarǵı tilden hám sol tiykarǵı tildi ózgertiwge qábiletli meta-tilden ibarat edi. Programma sol waqıtta meta-til ózgertiwlerinen hám ózgertilgen tiykarǵı tildegi kodtan ibarat bolatuǵın edi.
Hárekette qollanılǵan eń kórnekli tildi keńeytiw usılı makros anıqlaması boldı. Grammatikanı ózgertiw de háreket penen tıǵız baylanıslı bolıp, nátiyjede beyimlesiwshi grammatika formalizmleriniń rawajlanıwına alıp keldi. Lisp tili jámiyetshiligi keńeytiletuǵın til jámiyetshiliginen bólek qaldı, anıǵıraq aytqanda, bir izertlewshi baqlaǵanınday,
programmalar hám maǵlıwmatlar tiykarınan almastırılatuǵın hár qanday programmalastırıw tilin keńeytiletuǵın til retinde qarawǵa boladı. ... bunı Lisp-tiń jıllar dawamında keńeytiletuǵın til retinde qollanılıp kelgenliginen ańsat kóriwge boladı[4].
1969-jılǵı konferenciyada Simula keńeytiletuǵın til retinde usınıldı.
Standish tildi keńeytiwdiń úsh klasın táriyipledi, olardı parafraza, ortofraza hám metafraza dep atadı (basqa jaǵdaylarda parafraza hám metafraza awdarma terminleri bolıp tabıladı).
- Parafraza bir múmkinshilikti aldın anıqlanǵan (yamasa anıqlanatuǵın) basqa bir nárse menen qalay almastırıwdı kórsetiw arqalı anıqlaydı. Mısal retinde ol makros anıqlamaların, ádettegi procedura anıqlamaların, grammatikalıq keńeytpelerdi, maǵlıwmat anıqlamaların, operator anıqlamaların hám basqarıw strukturası keńeytpelerin atap ótedi.
- Ortofraza tilge tiykarǵı tildi paydalanıp erisiw múmkin bolmaǵan qásiyetlerdi qosadı, mısalı, aldın kirgiziw/shıǵarıw (I/O) primitivleri bolmaǵan tiykarǵı tilge I/O sistemasın qosıw. Keńeytpeler belgili bir tiykarǵı tilge salıstırǵanda ortofraza retinde túsiniliwi kerek, sebebi tiykarǵı til terminleri menen anıqlanbaǵan qásiyet basqa bir til terminleri menen anıqlanıwı kerek. Bul zamanagóy plaginler túsinigine sáykes keledi.
- Metafraza aldın bar bolǵan ańlatpalar ushın qollanılatuǵın interpretaciya qaǵıydaların ózgertedi. Bul zamanagóy refleksiv programmalastırıw (refleksiya) túsinigine sáykes keledi.
Tariyxıy hárekettiń tamamlanıwı
Standish keńeytiwshilik háreketiniń sátsizligin izbe-iz keńeytpelerdi programmalastırıwdıń qıyınshılıǵı menen baylanıstırdı. Baǵdarlamashı tiykarǵı tildiń átirapında makroslardıń birinshi qabıǵın dúziwi múmkin. Sońınan, eger onıń ústine makroslardıń ekinshi qabıǵı dúzilse, keyingi hár qanday baǵdarlamashı tiykarǵı til menen de, birinshi qabıq penen de jaqsı tanıs bolıwı kerek. Úshinshi qabıq tiykarǵı til menen birge birinshi hám ekinshi qabıqlardı da biliwdi talap etedi hám solay dawam etedi. Baǵdarlamashını tómengi dárejeli detallardan qorǵaw keńeytiwshilik háreketin almastırǵan abstrakciya háreketiniń maqseti boldı.
Simulanıń aldın keńeytiletuǵın retinde usınılǵanına qaramastan, 1975-jılǵa kelip Standishtiń sholıwı ámeliyatta jańa abstrakciyaǵa tiykarlanǵan texnologiyalardı óz ishine almadı (eger ol texnikalıq jaqtan olardı óz ishine alıwı múmkin bolǵan júdá ulıwma keńeytiwshilik anıqlamasın paydalanǵan bolsa da). Kompyuter oylap tabılǵannan baslap sol waqıtqa shekemgi programmalastırıw abstrakciyasınıń 1978-jılǵı tariyxında makroslar haqqında aytılmaǵan hám keńeytiletuǵın tiller háreketiniń bolǵanlıǵı haqqında hesh qanday maǵlıwmat berilmegen. Makroslar abstrakciya háreketine 1980-jıllardıń aqırında (múmkin, gigienalıq makroslardıń payda bolıwı sebepli) sintaksislik abstrakciyalar degen psevdonim beriliwi menen shártli túrde qabıl etildi.
Zamanagóy háreket
Zamanagóy mániste, keńeytiletuǵın programmalastırıwdı qollap-quwatlaytuǵın sistema tómende táriyiplengen barlıq ózgesheliklerdi támiyinleydi.
Keńeytiletuǵın sintaksis
Bul kompilyaciyalanatuǵın derek til(ler)diń jabıq, belgili yamasa statikalıq bolmawı kerekligin ańlatadı. Derek til(ler)ge jańa gilt sózlerdi, túsiniklerdi hám strukturalardı qosıw múmkin bolıwı kerek. Paydalanıwshı anıqlaǵan sintaksisi bar konstrukciyalardı qosıwǵa ruqsat beretuǵın tillerge Rocq,[5] Racket, Camlp4, OpenC++, Seed7, Red, Rebol hám Felix kiredi. Ayırım fundamental hám ishki til ózgeshelikleriniń ózgermeytuǵın bolıwı maqul bolsa da, sistema tek ǵana sol til ózgesheliklerine súyenbewi kerek. Jańaların qosıw múmkin bolıwı kerek.
Keńeytiletuǵın kompilyator
Keńeytiletuǵın programmalastırıwda kompilyator derek kodın binar orınlanatuǵın shıǵısqa aylandıratuǵın monolit programma emes. Kompilyatordıń ózi sonsha keńeytiletuǵın bolıwı kerek, ol haqıyqatında derek tilin hár qanday zatqa awdarıwǵa járdem beretuǵın plaginler jıynaǵı bolıp tabıladı. Mısalı, keńeytiletuǵın kompilyator obyekt kodın, kod hújjetlerin, qayta formatlanǵan derek kodın yamasa basqa qálegen shıǵıstı generaciyalawdı qollap-quwatlaydı. Kompilyatordıń arxitekturası onıń paydalanıwshılarına kompilyaciya processine «ishine kiriwge» hám kompilyaciya processiniń hárbir múmkin bolǵan basqıshında alternativ qayta islew tapsırmaların usınıwǵa ruqsat beriwi kerek.
Tek ǵana derek kodın kompyuterde orınlawǵa bolatuǵın bir nársege awdarıw wazıypası ushın, keńeytiletuǵın kompilyator tómendegilerdi orınlawı kerek:
- ózi funkciyasınıń hár bir aspekti ushın plagin yamasa komponent arxitekturasın paydalanıw
- qaysı til yamasa til variantı kompilyaciyalanıp atırǵanın anıqlaw hám sol tildi tanıw hám tastıyıqlaw ushın sáykes plagindi tabıw
- qálegen derek tillerin sintaksislik hám strukturalıq jaqtan tastıyıqlaw ushın formal til specifikaciyaların paydalanıw
- sáykes tastıyıqlaw plaginin shaqırıw arqalı qálegen derek tillerin semantikalıq jaqtan tastıyıqlawǵa járdem beriw
- paydalanıwshılarǵa hár túrli kod generatorlarınan tańlawǵa ruqsat beriw, solay etip nátiyjedegi orınlanatuǵın kod hár túrli processorlarǵa, operaciyalıq sistemalarǵa, virtual mashinalarǵa yamasa basqa orınlaw ortalıǵına baǵdarlanıwı múmkin.
- qátelerdi generaciyalaw ushın qurallardı hám olarǵa keńeytpelerdi támiyinlew
- abstrakt sintaksis tereginde (AST) jańa túrdegi túyinlerge ruqsat beriw,
- AST túyinlerinde jańa mánislerge ruqsat beriw,
- túyinler arasında jańa túrdegi qabırǵalarǵa ruqsat beriw,
- kirgiziw AST-sın yamasa onıń bólimlerin qanday da bir sırtqı «ótiw» arqalı transformaciyalawdı qollap-quwatlaw
- kirgiziw AST-sın yamasa onıń bólimlerin qanday da bir sırtqı «ótiw» arqalı basqa formaǵa awdarıwdı qollap-quwatlaw
- AST-nı jańa AST-larǵa yamasa basqa kórinislerge transformaciyalaǵanda hám awdarǵanda ishki hám sırtqı ótiwler arasında informaciya aǵımına járdem beriw
Keńeytiletuǵın orınlaw ortalıǵı
Orınlanıw waqtında keńeytiletuǵın programmalastırıw sistemaları tillerge ózi ruqsat etetuǵın operaciyalar jıynaǵın keńeytiwge ruqsat beriwi kerek. Mısalı, eger sistema bayt-kod interpretatorın paydalansa, ol jańa bayt-kod mánislerin anıqlawǵa ruqsat beriwi kerek. Keńeytiletuǵın sintaksis sıyaqlı, ózgermeytuǵın fundamental yamasa ishki operaciyalardıń belgili bir (kishirek) jıynaǵınıń bolıwı maqul. Biraq, jańa yamasa qosımsha minez-qulıqtı qollap-quwatlaw ushın sol ishki operaciyalardı júklew yamasa tolıqtırıw múmkin bolıwı kerek.
Mazmunnıń formadan ajıratılıwı
Keńeytiletuǵın programmalastırıw sistemaları programmalardı qayta islenetuǵın maǵlıwmatlar retinde qarawı kerek. Bul programmalar hár qanday formatlaw informaciyasınan tolıq azat bolıwı kerek. Paydalanıwshılarǵa programmalardı vizual kórsetiw hám redaktorlaw keńeytiletuǵın kompilyator tárepinen qollap-quwatlanatuǵın, programma maǵlıwmatların kóriw yamasa redaktorlaw ushın qolaylı formalarǵa awdarıwshı awdarma funkciyası bolıwı kerek. Álbette, bul eki tárepleme awdarma bolıwı kerek. Bul áhmiyetli, sebebi keńeytiletuǵın programmalardı hár túrli usıllar menen ańsat qayta islew múmkin bolıwı kerek. Derek tilin tek ǵana redaktorlaw, kóriw hám mashina kodına awdarıw ushın paydalanıw maqul emes. Programmalardı qálegen usılda qayta islew derek kirgiziwin onıń qalay qayta isleniwiniń (formatlanıwı, saqlanıwı, kórsetiliwi, redaktorlanıwı hám t.b.) specifikaciyalarınan ajıratıw arqalı ańsatlastırıladı.
Derek tilin debaglawdı qollap-quwatlaw
Keńeytiletuǵın programmalastırıw sistemaları programmalardı orınlanatuǵın etiw ushın qanday keńeytpeler yamasa transformaciyalardan ótkenine qaramastan, olardı dáslepki derek tili konstrukciyaların paydalanıp debaglawdı qollap-quwatlawı kerek. Eń áhmiyetlisi, orınlanıw waqtındaǵı maǵlıwmatlardı tek ǵana strukturalarda yamasa massivlerde kórsetiw múmkin dep esaplawǵa bolmaydı. Debagger, yamasa durısıraq aytqanda «programma inspektorı», orınlanıw waqtındaǵı maǵlıwmatlardı derek tiline sáykes formalarǵa kórsetiwge ruqsat beriwi kerek. Mısalı, eger til biznes-process yamasa jumıs aǵımı ushın maǵlıwmat strukturasın qollap-quwatlasa, debagger ushın sol maǵlıwmat strukturasın balıq súyegi diagramması yamasa plagin tárepinen usınılǵan basqa formada kórsetiwi múmkin bolıwı kerek.
Derekler
- ↑ Standish, Thomas A., "Extensibility in Programming Language Design", SIGPLAN Notices 10 no. 7 (July 1975), pp. 18–21.
- ↑ Gregory V. Wilson, "Extensible Programming for the 21st Century", ACM Queue 2 no. 9 (Dec/Jan 2004–2005).
- ↑ Standish, Thomas A., "Extensibility in Programming Language Design", SIGPLAN Notices 10 no. 7 (July 1975), pp. 18–21.
- ↑ Harrison, M.C., in "Panel on the Concept of Extensibility", pp. 53–54 of the 1969 symposium.
- ↑ «Syntax extensions and notation scopes – Coq 8.17.0 documentation». coq.inria.fr. Qaraldı: 25-may 2023-jıl.