DEV Community

Turdıbek Jumabaev
Turdıbek Jumabaev

Posted on

“SELF-HOSTING” KOMPILYATORLAR

Python tiliniń 64.6%ı Pythonda, Typescript tiliniń 99.8%ı Typescriptte jazılģan. Bul qızıq jaģday, qalayınsha taza tildi jaratıw ushın ózinen paydalanıw múmkin?
Házir bul sorawģa juwap alamız…

Logikalıq jaqtan ilajsiz bolģan jaģday, X payda bolıwdan aldın, jańa X’ti qalayınsha X’te jazıw múmkin? Bıraq azģana oylanıp qaralsa bunıń ilaji bar. Mısal ushın siz birinshi “robot jasawshı” robottı islep shıģarasız. Keyin ol ózine uqsaģan “robot jasawshı” robotlardı islep shıģaradı. Onan keyin “robot jasawshı robot, robot jasawshı robot tárepinen jasalģan” degen filosofiya payda boladı. Dáslepki qádem áhamiyetli, birinshi robottı siz jasaysız. Nátiyjede eski hám kúshsiz nárseden paydalanıp, kúshliregin islep shıģarıw imkaniyatı payda boladı. Ózin-ózi jaza alatuģın yaģıniy “self-hosting” kompilyatorlarda da usı jaģday.

Kóz aldıńızģa keltiriń, ele hesh qanday programmalastırıw tilleri jaratılmaģan, sizde Assemblerde kod jazıwdan basqa ilaj joq. Qandayda bir proyektti 0 den baslap Assemblerde jazıp shıģıw uzaq dawam etedi. Demek sizge qolay programmalastırıw tili kerek. Bıraq taza programmalastırıw tilin tolıq Assemblerde jazıw durıs pikir emes, sebebi júdá kóp miynet hám waqıt ketedi. Sizde jaqsı ideya bar. Jaratıp atırģan programmalastırıw tilińizdiń 1-versiya kompilyatorın, 1–2 ay ishinde Assemblerde jazıp shıģasız. Bul versiya júda ápiwayı boladı hám keyingileri ushın tiykar waziypasın atqaradı, tilidiń tiykarģı xarakterlerin, operacion sistema hám yad penen islesiw kónlikpelerinde qánshedur kólemde óz ishine aladı. Demek 1-versiya tayyar hám onda kod jazıw múmkin. Endi jańa kompilyatordıń 1-versiyası hámde Assembler járdeminde kompilyatordın 2-versiyanın jaratıwımız múmkin. Eger jańalanıwlar usılay dawam etse, jaratıp atırģan tilimizde Assemblerdiń úlesi 0% ģa umtılıp baradı. Nátijede, qaysıdur versiyada tilińizdi tolıq óz-ózinde jazıp qoyasız. Joqarda aytıp ótilgen TypeScript aldın JavaScript járdeminde jaratılģan edi. Jańa kompilyatordı, eski versiyada jazıw sıyaqlı processlerdiń bárshesi “bootstrapping” dep ataladı.

Hár bir programmalastırıw tili qaysıdur tilge tiykarlanıp jaratılģan boladı. Mısal ushın Python, C tiline, C tili bolsa ALGOL, BSPL hám B tillerine tiykarlanģan, hámmesi eń aqırında Assemblerge, Assembler bolsa 0 hám 1 lerge tiykarlanģan.

Top comments (0)