Shumë njerëz kanë vështirësi ose frustrime me gjuhët e programimit që përdorin çdo ditë. Disa duan që gjërat të trajtohen në mënyrë më abstrakte, ndërsa të tjerëve nuk u pëlqen zbatimi i veçorive që ata dëshirojnë të ishin 'standarde'. Pavarësisht nëse jeni një profesionist i TI -së ose thjesht një hobi, shumë herë mund të gjeni veten duke dashur të krijoni një gjuhë të re programimi.
Hapa
Hapi 1. Njihuni me teknologjinë
Ju nuk mund të krijoni një gjuhë programimi nëse nuk dini si të përdorni një kompjuter.
Hapi 2. Njihuni me terminologjinë
Shkrimtarët përpilues shpesh përdorin terminologji të panjohur. Lexoni përpiluesit para se të vazhdoni. Sigurohuni që të dini gjithçka që duhet të dini.
Hapi 3. Vendosni se çfarë problemi po zgjidh gjuha juaj
A po trajton një problem specifik të fushës, apo është një gjuhë me qëllime të përgjithshme?
Hapi 4. Mendoni për semantikën e gjuhës tuaj dhe konceptet e saj
- A do të lejoni qasje të drejtpërdrejtë të treguesit apo jo?
- Cilat janë llojet e të dhënave të gjuhës suaj?
- A është një gjuhë statike apo dinamike?
- Cili është modeli juaj i kujtesës? A do të përdorni një grumbullues plehrash ose menaxhim manual të kujtesës? (Nëse përdorni një grumbullues plehrash, përgatituni të shkruani një ose përshtatni një ekzistues në gjuhën tuaj.)
- Si do të trajtohet njëkohshmëria? A do të përdorni një model të thjeshtë fillesë/mbyllës ose diçka më komplekse si Linda apo modeli aktor? (Që në ditët e sotme kompjuterët kanë bërthama të shumta.)
- A ka funksione primitive të ngulitura në gjuhë apo gjithçka do të vijë nga një bibliotekë?
- Cila është paradigma ose paradigmat e gjuhës suaj? Funksionale? I orientuar nga objekti? Prototip (si JavaScript)? Aspekti i orientuar? Orientuar sipas modelit? Apo diçka krejt e re?
- Si do të ndërlidhet gjuha juaj me bibliotekat dhe gjuhët ekzistuese (kryesisht C)? Kjo pikë është e rëndësishme nëse po ndërtoni një gjuhë specifike për domenin.
- Së fundi, disa nga përgjigjet e këtyre pyetjeve do të përgjigjen në hapin e dytë dhe do t'ju ndihmojnë t'i përgjigjeni hapit tjetër.
Hapi 5. Mendoni për disa detyra specifike që dikush do të donte të ishte në gjendje t'i kryejë me gjuhën tuaj
Për shembull, "ata mund të duan të drejtojnë një robot që të ndjekë një linjë" ose "ata mund të duan të krijojnë programe desktopi relativisht të lëvizshëm në të" ose "ata mund të duan të krijojnë aplikacione në internet me të".
Hapi 6. Eksperimentoni me idetë sintaksore (tekstin e gjuhës) për shembujt e mësipërm
Kini kujdes që ta mbani gjuhën tuaj në kategorinë e gjuhëve pa kontekst ose diçka brenda saj. Gjeneratori juaj i analizuesit dhe do ta vlerësoni më vonë
Hapi 7. Shkruani një gramatikë zyrtare për sintaksën
Hapi 8. Vendosni nëse gjuha do të interpretohet ose përpilohet
Do të thotë që në botën e interpretuar përdoruesi juaj zakonisht do të redaktojë programin tuaj në një redaktues dhe do ta ekzekutojë atë drejtpërdrejt në përkthyesin; ndërsa në botën e përpiluar, përdoruesi juaj do të redaktojë programin tuaj, do ta përpilojë atë, do ta ruajë ekzekutuesin që rezulton diku dhe do ta ekzekutojë.
Hapi 9. Shkruani skanerin dhe analizuesin e përparmë ose gjeni një mjet që ju ndihmon me këtë
Gjithashtu, mendoni se si përpiluesi/përkthyesi juaj do të paralajmërojë përdoruesin tuaj për programet e gabuara dhe gabimet sintaksore
Hapi 10. Përdorni informacionin e analizuesit për të shkruar kodin e objektit ose një paraqitje të ndërmjetme
Bëni analizuesin të krijojë një AST, pastaj krijoni kodin tuaj të objektit nga AST duke përdorur kodin e tre adresave ose vëllain e tij të madh SSA, pastaj krijoni një tabelë simboli për të përcaktuar funksionet tuaja, ndryshoret globale, etj.
Gjithashtu, në varësi të gjuhës tuaj, ju gjithashtu mund të dëshironi të krijoni tabela treguese virtuale ose tabela informacioni për klasat tuaja (në mënyrë që të mbështetni reflektimin ose RTTI)
Hapi 11. Shkruani ekzekutuesin ose gjeneratorin e kodit që do të lidhë gjithçka së bashku
Hapi 12. Shkruani shumë programe testimi për të testuar gjuhën
Ju dëshironi të krijoni programe që theksojnë barrën e gramatikës suaj formale në mënyrë që të shihni që përpiluesi juaj pranon gjithçka që është brenda përkufizimit tuaj dhe refuzon gjithçka që është jashtë tij
Hapi 13. Konsideroni se si përdoruesi do të korrigjojë programet e tij
Hapi 14. Nëse gjuha juaj përdor një bibliotekë standarde, ju do të dëshironi ta shkruani atë
Së bashku me një grumbullues plehrash ose veçori të tjera të kohës së funksionimit nëse keni nevojë për të.
Në mënyrë të veçantë, nëse shkruani një përpilues, do t'ju duhet kodi që sistemi operativ do të ekzekutojë në mënyrë që të filloni të ekzekutoni kodin e përdoruesit (për shembull, ndarja e të gjitha variablave globale)
Hapi 15. Publikoni gjuhën tuaj, së bashku me specifikimet për të dhe disa shembuj se çfarë mund të bëni në të
Mos harroni të dokumentoni se si mund të integroheni me bibliotekat, gjuhët ekzistuese dhe si të përdorni veçoritë e ekzekutimit dhe/ose bibliotekën standarde
Video - Duke përdorur këtë shërbim, disa informacione mund të ndahen me YouTube
Këshilla
- Filloni duke hartuar gjuhën tuaj dhe mos shkruani asnjë kod, derisa të jeni të kënaqur dhe të jeni përgjigjur në të gjitha (ose shumicën) e pyetjeve ose problemeve që lidhen me modelin tuaj pasi është më e lehtë të ndryshoni modelin më herët se më vonë.
- Njihni platformën tuaj të synuar (sistemin operativ dhe bibliotekat) për përpiluesin/përkthyesin tuaj, në fund të fundit, ju do ta përdorni dhe manipuloni atë.
Paralajmërimet
- Mendoni nëse keni vërtet nevojë për një gjuhë të re dhe atë që gjuha juaj ka të re që gjuhët e tjera nuk e kanë (Mund të jetë një kombinim i veçorive ose një veçori e vetme).
- Shkrimi i gjuhëve është i vështirë nëse nuk e dini se çfarë po bëni. Duhet gjithashtu shumë praktikë.
- Përgatituni për të kaluar pak kohë në hartimin e gjuhës, pasi nuk do të keni mundësi të ndryshoni gjuhën tuaj pasi të keni shkruar përpiluesin dhe të keni kaluar pikën e projektimit.
- Mos u mundoni të bazoni tiparet tuaja në një bashkim të disa gjuhëve, si të thuash se gjuha juaj do të jetë një bashkim i gjuhës X, gjuhës Y dhe gjuhës Z. Historia na ka treguar se gjuhët e krijuara në një mënyrë të tillë nuk do të gjejnë kurrë sukses, ose të gjithë do të programonin PL/1 në vend të diçkaje të bazuar në C.