Hogy kell saját programozási nyelvet fejleszteni?
Néhány ezer programozási nyelv nincs. Még néhány száz is túlzás. A, jobbára belső használatra készült nyelvek, egy már létező nyelv ilyen-olyan derivátumai, forkjai. Vagy nem is programozási nyelvek (hpgl, LaTex, sgml).
Egy szimplább, procedurális programozási nyelv kifejlesztése nem túlságosan nagy munka. Először meg kell határozni, hogy a nyelv milyen célra készül. Ez lehet általános, vagy speciális.
Ha ez megvan, akkor a nyelv által ismert változók tipusát is ajánlott definiálni, na meg, hogy a nyelv, egyáltalán, ismeri-e majd a konstans fogalmát.
A következő lépés a logikai, aritmetikai operátorok számának és a feladatuknak a meghatározása.
Ezután jön a nyelv logikája. A vezérlő szerkezetek, ciklusok, egyéb nyelvi elemek (function, statement, stb) pontos definíciója. Lényegében a nyelv szintaxisát, annak egzakt (pontos) szabályait (kulcsszavak, szórend, stb) kell létrehoznunk.
A speciális célra készülő nyelvnél persze a nyelvre jellemző sajátosságokat is meg kell alkotni, a szintaxissal együtt. Mi lehet ilyen sajátosság? Bármi. Mondjuk, hogy a nyelv, amit alkotunk, direktben alkalmas bitmanipulációra. A PC architektúrára kifejlesztett nyelvek ugyanis erre nem képesek. Akkor létre kell hoznunk azokat az utasításokat, amik a mi nyelvünket erre alkalmassá teszik.
Ha mindez megvan, akkor az egészet egy mások által is olvasható formában kell (vagy legalábbis ajánlott) kifejezni. Ez a BNF. A Backus-Naur Forma. Ami valami ilyesmi:
<digit> ::= [0-9]
<number> ::= <digit> <digit>
Ez azt határozza meg, hogy a number ami a nyelvben előfordul, digitekból állhat.
A digitek esetében meg azt, hogy azok tartalma m lehet.
<relational_op> ::= "<" | "=" | ">"
Ez meg a relációs (logikai) operátorokhoz rendel hozzá három (<,=,>) karaktert.
A | azt jelenti: vagy.
Ennek végeztével, definíciós szinten, lényegében meg is van az új programozási nyelv. Lehet hozzá írni interpretert, vagy compilert, esetleg virtuális gépet.
Így már lehet tesztelni és megírható hozzá valami "standard" library is, bár utóbbi nem kötelező.
Fentieket a végtelenségig lehet bővíteni. Például egyszerűbb, illetve összetett adatszerkezetek (struktúrák, tömbök) kezelése, file kezelés, egyéb I/O funkciók, más paradigmák, szemétgyűjtés, stb. Bár utóbbi inkább a nyelvi implementáció (compiler, interpreter) sajátja, de be lehet erőltetni az alap-definícióba is.
Az ELTE adatbázisa 232 nyelvet tart nyilván, de ebben benne vannak olyan nyelvek is, amelyek nem programozási, hanem dokumentum-, vagy hardver-leíró nyelvek, netán filterek. Benne vannak olyanok is, amelyek ugyanazon nyelvnek valamilyen szubszetjei.
Saját jogú nyelv talán ha 120 lehet, vagy inkább csak 100.
3: ld.: [link] itt megpróbálták összeszedni az "összes" olyan programnyelvet amire valami hivatkozás van. Ezekben az ilyen "hobby" szinten megmaradt programozási nyelveik is benne vannak, mint ami a kérdésben szerepel. Egy nagyon érdekes lista, de ebből a lényeg:
"An online roster and genealogy of 8945 programming languages from the 18th century to the presen"
Ők 8945 db. programozási nyelvet találtak eddig. És ez a szám folyamatosan növekszik. Nyilván igazad van, hogy ebből néhány 100 az amit ténylegesen használnak/használtak is, de a kérdésben szereplő szinten, 8945-öt lehet megtalálni.
Az a kérdés, mennyire számít a többitől különböző programozási nyelvnek az algol, a cobol, a pascal, az ada vagy C esetenként több mint tíz szubverziója, ami csak egy lehelletnyit tér el a névadójától?
proto C, C, ANSI C, ISO C, C99, C11, C18
Kérdés az is, hogy mennyire számít a többitől különböző programozási nyelvnek az a sokezer kezdemény, faragvány, felébe, harmadába holt kisérlet, amit egyetemisták terveztek - vagy olykor inkább csak tákoltak össze - tanulmányaik során?
Kérdés, mennyire számít programozási nyelvnek az a nagy számú, ezoterikus nyelvek kategóriájába tartozó blődség, mint a brainfuck, lolcode, whitespace, malbolge és társai?
Kérdés, mennyire számítanak önálló programozási nyelvnek azok a nyelvek, amiket egy-egy korabeli nagygépre fejlesztettek ki, majd ugyanezt a gép minden korszerűsített verziójához hozzá igazítottak és ezzel új nevet is kaptak?
Azt nem tudjuk, hogy egyáltalán akar-e?
Nem kizárt, hogy csak a folyamat érdekli.
Amire én reagáltam, az az, amit az első hozzászóló állított. Abban érzékelhető egy olyasféle felhang, hogy "minek is tenné a kérdező?". És megemlíti a "többezer" szerinte létező nyelvet. Erre válaszoltam én, hogy nincs annyi programozási nyelv, mert a 200 féle BASIC nem 200 programozási nyelv, hanem egy nyelv interpreterének 200 féle megvalósítása. Ahogy az ALGOL, COBOL, C, FORTH nyelvek évszámokkal jelölt specifikációi sem kb. harmincöt-negyven nyelvet, hanem csak négyet jelentenek.
Ha tudsz angolul, vess egy pillantást erre:
Itt nagyjából le van írva a folyamata egy programozási nyelv írásának.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!