Daudziem cilvēkiem ir grūtības vai vilšanās saistībā ar programmēšanas valodām, kuras viņi izmanto katru dienu. Daži vēlas, lai lietas tiktu apstrādātas abstraktāk, bet citiem nepatīk tādu funkciju ieviešana, kuras viņi vēlētos, lai tās būtu “standarta”. Neatkarīgi no tā, vai esat IT profesionālis vai vienkārši hobijs, daudzas reizes var rasties vēlme izveidot jaunu programmēšanas valodu.
Soļi
1. solis. Iepazīstieties ar tehnoloģiju
Jūs nevarat izveidot programmēšanas valodu, ja nezināt, kā lietot datoru.
2. solis. Iepazīstieties ar terminoloģiju
Sastādītāji bieži izmanto nepazīstamu terminoloģiju. Pirms turpināt, izlasiet kompilatorus. Noteikti ziniet visu, kas jums jāzina.
3. solis. Izlemiet, kāda problēma tiek atrisināta jūsu valodā
Vai tā risina domēnam raksturīgu problēmu, vai tā ir universāla valoda?
4. solis. Padomājiet par savas valodas semantiku un tās jēdzieniem
- Vai atļausit tiešu rādītāju piekļuvi vai ne?
- Kādi ir jūsu valodas datu veidi?
- Vai tā ir statiska vai dinamiska valoda?
- Kāds ir jūsu atmiņas modelis? Vai izmantosiet atkritumu savācēju vai manuālu atmiņas pārvaldību? (Ja izmantojat atkritumu savācēju, sagatavojieties tā uzrakstīšanai vai pielāgojiet esošo savai valodai.)
- Kā rīkoties ar vienlaicīgumu? Vai jūs izmantosit vienkāršu pavedienu/bloķēšanas modeli vai kaut ko sarežģītāku, piemēram, Lindu vai aktiera modeli? (Tā kā mūsdienās datoriem ir vairāki kodoli.)
- Vai valodā ir iestrādātas primitīvas funkcijas vai viss nāks no bibliotēkas?
- Kāda ir jūsu valodas paradigma vai paradigmas? Funkcionāls? Objektorientēts? Prototips (piemēram, JavaScript)? Uz aspektu orientēts? Uz veidni orientēts? Vai arī kaut kas pilnīgi jauns?
- Kā jūsu valoda saskarsies ar esošajām bibliotēkām un valodām (galvenokārt C)? Šis punkts ir svarīgs, ja veidojat domēnam raksturīgu valodu.
- Visbeidzot, uz dažām atbildēm uz šiem jautājumiem tiks atbildēts otrajā solī, un tas palīdzēs jums atbildēt uz nākamo soli.
5. solis. Iedomājieties dažus konkrētus uzdevumus, kurus kāds vēlētos, lai varētu veikt ar jūsu valodu
Piemēram, "viņi var vēlēties vadīt robotu sekot līnijai" vai "viņi var vēlēties tajā izveidot salīdzinoši pārnēsājamas darbvirsmas programmas" vai "viņi var vēlēties ar to izveidot tīmekļa lietojumprogrammas".
6. solis. Eksperimentējiet ar sintakses idejām (valodas tekstu) iepriekš minētajiem piemēriem
Esiet piesardzīgs, lai saglabātu savu valodu bezkonteksta valodas kategorijā vai kaut ko tajā. Jūsu parsētāja ģenerators, un jūs to novērtēsit vēlāk
7. solis. Izrakstiet sintaksei formālu gramatiku
8. solis. Izlemiet, vai valoda tiks tulkota vai apkopota
Tas nozīmē, ka interpretētajā pasaulē jūsu lietotājs parasti rediģēs jūsu programmu redaktorā un palaidīs to tieši tulkā; apkopotajā pasaulē jūsu lietotājs rediģēs jūsu programmu, apkopos to, saglabās iegūto izpildāmo failu kaut kur un palaidīs to.
9. solis. Uzrakstiet priekšējā gala skeneri un parsētāju vai atrodiet rīku, kas jums to palīdz
Padomājiet arī par to, kā kompilators/tulks brīdinās lietotāju par kļūdainām programmām un sintakses kļūdām
10. solis. Izmantojiet parsētāja informāciju, lai rakstītu objekta kodu vai starpposma attēlojumu
Lieciet parsētājam izveidot AST, pēc tam izveidojiet objekta kodu no AST, izmantojot trīs adreses kodu vai tā lielo brāli SSA, pēc tam izveidojiet simbolu tabulu, lai definētu savas funkcijas, globālos mainīgos utt.
Atkarībā no valodas, iespējams, vēlēsities arī izveidot virtuālas rādītāju tabulas vai informācijas tabulas savām klasēm (lai atbalstītu pārdomas vai RTTI)
11. solis Uzrakstiet izpildītāju vai kodu ģeneratoru, kas visu sasaistīs
12. solis. Lai pārbaudītu valodu, uzrakstiet daudzas pārbaudes programmas
Jūs vēlaties izveidot programmas, kas uzsver jūsu formālās gramatikas slogu, lai redzētu, ka kompilators pieņem visu, kas ir jūsu definīcijā, un noraida visu, kas ir ārpus tās
13. solis. Apsveriet, kā lietotājs atkļūdos savas programmas
14. solis. Ja jūsu valodā tiek izmantota standarta bibliotēka, jūs vēlaties to uzrakstīt
Kopā ar atkritumu savācēju vai citām darbības laika funkcijām, ja jums tas nepieciešams.
Konkrēti, ja rakstāt kompilatoru, jums būs nepieciešams kods, kuru operētājsistēma izpildīs, lai sāktu lietotāja koda darbību (piemēram, piešķirot visus globālos mainīgos)
15. solis. Publicējiet savu valodu kopā ar tās specifikāciju un dažiem piemēriem, ko tajā varat darīt
Neaizmirstiet dokumentēt, kā jūs varat integrēties ar esošajām bibliotēkām, valodām un kā izmantot izpildlaika funkcijas un/vai standarta bibliotēku
Video - izmantojot šo pakalpojumu, daļa informācijas var tikt kopīgota ar pakalpojumu YouTube
Padomi
- Sāciet, izstrādājot savu valodu un nerakstiet nekādus kodus, kamēr neesat apmierināts un esat atbildējis uz visiem (vai vairumam) jautājumiem vai problēmām, kas saistītas ar jūsu dizainu, jo dizainu ir vieglāk mainīt agrāk nekā vēlāk.
- Ziniet savu kompilatora/tulka mērķa platformu (operētājsistēmu un bibliotēkas), galu galā jūs to izmantosit un ar to manipulēsit.
Brīdinājumi
- Padomājiet, vai jums tiešām ir nepieciešama jauna valoda un kas jūsu valodā ir jauns, kas nav citās valodās (tas var būt funkciju kombinācija vai viena funkcija).
- Valodas ir grūti rakstīt, ja nezināt, ko darāt. Tas prasa arī daudz prakses.
- Gatavojieties kādu laiku veltīt valodas noformēšanai, jo, sastādot kompilatoru un nokārtojot dizaina punktu, jums nebūs iespējas mainīt valodu.
- Nemēģiniet savas iezīmes apvienot vairāku valodu savienībā, piemēram, sakot, ka jūsu valoda būs valodu X, valodas Y un valodas Z savienība. Vēsture ir parādījusi, ka šādā veidā radītas valodas nekad nesniegs panākumus, vai visi programmētu PL/1, nevis kaut ko, pamatojoties uz C.