Bir çox insanlar hər gün istifadə etdikləri proqramlaşdırma dillərində çətinlik çəkirlər. Bəziləri işlərin daha mücərrəd şəkildə həll edilməsini istəyir, digərləri isə 'standart' olmaq istədikləri xüsusiyyətləri tətbiq etməyi sevmirlər. İT mütəxəssisi və ya sadəcə bir hobbi olmağınızdan asılı olmayaraq, dəfələrlə özünüzü yeni bir proqramlaşdırma dili yaratmaq istəyə bilərsiniz.
Addımlar
Addım 1. Texnologiya ilə tanış olun
Kompüterdən necə istifadə edəcəyinizi bilmirsinizsə, proqramlaşdırma dili yarada bilməzsiniz.
Addım 2. Terminologiya ilə tanış olun
Tərtibatçılar tez -tez tanımadıqları terminologiyadan istifadə edirlər. Davam etməzdən əvvəl tərtibçilər haqqında oxuyun. Bilməli olduğunuz hər şeyi bildiyinizə əmin olun.
Addım 3. Dilinizin hansı problemi həll etdiyinə qərar verin
Domenə aid bir problemi həll edir, yoxsa ümumi məqsədli bir dildir?
Addım 4. Dilinizin semantikasını və onun anlayışlarını düşünün
- Birbaşa göstərici girişinə icazə verəcəksiniz, ya yox?
- Dilinizin hansı növ məlumatları var?
- Statik və ya dinamik bir dildir?
- Yaddaş modeliniz nədir? Zibil toplayıcıdan və ya əl yaddaş idarəçiliyindən istifadə edəcəksiniz? (Bir zibil toplayıcıdan istifadə edirsinizsə, birini yazmağa hazırlayın və ya mövcud olanı dilinizə uyğunlaşdırın.)
- Paralelliyi necə idarə edəcəksiniz? Sadə bir diş açma/bağlama modeli və ya Linda və ya aktyor modeli kimi daha mürəkkəb bir şey istifadə edəcəksiniz? (Bu gündən bəri kompüterlərdə birdən çox nüvə var.)
- Dilə daxil edilmiş ibtidai funksiyalar varmı, yoxsa hər şey kitabxanadan gələcək?
- Dilinizin paradiqması və ya paradiqması nədir? Funksional? Obyekt yönümlü? Prototip (JavaScript kimi)? Aspekt yönümlü? Şablon yönümlüdür? Yoxsa tamamilə yeni bir şey?
- Diliniz mövcud kitabxanalar və dillərlə necə əlaqə quracaq (əsasən C)? Bir sahəyə xüsusi bir dil qurursanız, bu nöqtə vacibdir.
- Nəhayət, bu sualların cavablarından bəziləri ikinci addımla cavablandırılacaq və növbəti addıma cavab verməyinizə kömək edəcək.
Addım 5. Kiminsə sizin dilinizlə yerinə yetirmək istədiyi bəzi xüsusi vəzifələri düşünün
Məsələn, 'bir robotu bir xətti izləməyə yönəltmək istəyə bilər' və ya 'nisbi olaraq portativ masaüstü proqramları yaratmaq istəyə bilər' və ya 'onunla birlikdə veb tətbiqləri yaratmaq istəyə bilər'.
Addım 6. Yuxarıdakı nümunələr üçün sintaksis fikirləri (dilin mətni) ilə sınaq keçirin
Dilinizi kontekstsiz dil kateqoriyasında və ya içərisində saxlamaq üçün diqqətli olun. Parser generatorunuz və bunu daha sonra qiymətləndirəcəksiniz
Addım 7. Sintaksis üçün rəsmi bir qrammatika yazın
Addım 8. Dilin şərh ediləcəyinə və ya tərtib ediləcəyinə qərar verin
Təfsir olunan dünyada istifadəçinizin ümumiyyətlə proqramınızı bir redaktorda düzəldəcəyini və birbaşa tərcüməçi üzərində işləyəcəyini; tərtib edilən dünyada istifadəçiniz proqramınızı redaktə edəcək, tərtib edəcək, nəticədə icra olunan faylları bir yerdə saxlayacaq və işlədəcək.
Addım 9. Ön uç skanerini və analizini yazın və ya bu işdə sizə kömək edəcək bir vasitə tapın
Ayrıca, tərtibçinizin/tərcüməçinizin istifadəçinizi səhv proqramlar və sintaksis səhvləri barədə necə xəbərdar edəcəyini düşünün
Addım 10. Obyekt kodunu və ya aralıq təsviri yazmaq üçün ayrıştırıcı məlumatlarından istifadə edin
Ayrıştırıcının bir AST yaratmasını, sonra üç ünvan kodundan və ya böyük qardaşı SSA -dan istifadə edərək AST -dən obyekt kodunuzun yaradılmasını, sonra funksiyalarınızı, qlobal dəyişənlərinizi və s.
Ayrıca, dilinizdən asılı olaraq, dərsləriniz üçün virtual əks göstərici cədvəlləri və ya məlumat cədvəlləri də yaratmaq istəyə bilərsiniz (əks və ya RTTI -ni dəstəkləmək üçün)
Addım 11. Hər şeyi bir -birinə bağlayacaq icraçı və ya kod generatoru yazın
Addım 12. Dili yoxlamaq üçün bir çox test proqramı yazın
Tərtibçinizin tərifinizin içərisində olan hər şeyi qəbul etdiyini və xaricində olan hər şeyi rədd etdiyini görmək üçün rəsmi qrammatik yükünüzü vurğulayan proqramlar yaratmaq istəyirsiniz
Addım 13. İstifadəçinin öz proqramlarını necə düzəldəcəyini düşünün
Addım 14. Diliniz standart bir kitabxana istifadə edirsə, onu yazmaq istəyəcəksiniz
Zibil toplayıcısı və ya ehtiyacınız varsa digər iş vaxtı xüsusiyyətləri ilə birlikdə.
Xüsusilə, bir tərtibçi yazsanız, istifadəçi kodunu işə salmaq üçün (məsələn, bütün qlobal dəyişənləri ayırmaq üçün) əməliyyat sisteminin icra edəcəyi koda ehtiyacınız olacaq
Addım 15. Dilinizin xüsusiyyətlərini və nələr edə biləcəyinizə dair bəzi nümunələri dərc edin
Mövcud kitabxanalarla, dillərlə necə inteqrasiya edə biləcəyinizi və iş vaxtı xüsusiyyətlərindən və/və ya standart kitabxanadan necə istifadə edəcəyinizi sənədləşdirməyi unutmayın
Video - Bu xidmətdən istifadə edərək bəzi məlumatlar YouTube ilə paylaşıla bilər
İpuçları
- Dizaynınızı əvvəlcədən dəyişdirmək daha asan olduğundan dizaynınızla əlaqəli bütün suallara və ya problemlərə (və ya əksəriyyətinə) cavab verməyincə dilinizi dizayn edərək başlayın və heç bir kod yazmayın.
- Tərtibçi/tərcüməçi üçün hədəf platformanızı (əməliyyat sistemi və kitabxanaları) bilin, axı bundan istifadə edib manipulyasiya edəcəksiniz.
Xəbərdarlıqlar
- Həqiqətən yeni bir dilə ehtiyacınız olub olmadığını və digər dillərdə olmayan dilinizdə nələrin olduğunu düşünün (Xüsusiyyətlərin birləşməsi və ya tək bir xüsusiyyət ola bilər).
- Nə etdiyinizi bilmirsinizsə, dillər yazmaq çətindir. Bunun üçün də çox təcrübə lazımdır.
- Dil tərtibatına bir az vaxt sərf etməyə hazırlaşın, çünki tərtibçini yazdıqdan və dizayn nöqtəsini keçdikdən sonra dilinizi dəyişdirmək şansınız olmayacaq.
- Dilinizin X dilinin, Y dilinin və Z dilinin birliyi olacağını söyləmək kimi xüsusiyyətlərinizi bir neçə dildə birləşdirməyə çalışmayın. Tarix bizə belə bir şəkildə yaradılan dillərin heç vaxt uğur qazana bilməyəcəyini göstərdi. ya da hər kəs C əsaslı bir şey yerinə PL/1 proqramlaşdıracaq.