( geza42 | 2020. 03. 25., sze - 20:01 )

De persze ezt egyik komoly nyelvnél se így csinálják, hanem készítenek egy referencia implementációt

Csak hogy egy triviális ellenpéldát mondjak: C++. Ott van papíron a C++20 nyelv specifikálva (ISO szabvány lesz belőle hamarosan, hasonlóan a korábbi C++98/03/11/14/17-hez), de még nincs egy teljes implementáció se készen. Papíron definiálják a nyelvet. Az teljesen mindegy, hogy van-e implementáció, vagy sem, ettől a nyelv készen van (és btw., elképesztő mennyiségű meló van mögötte).

 

Továbbá, egy rakat dolgot nem tudsz referenciaimplementációval definiálni. Pl., hol látszik az egy ref.implementációnál, hogy C++-ban mi az undefined/implementation-defined behavior? Szerintem elég sok nyelvre igaz, hogy egy referenciaimplementáció nem tud minden információt tartalmazni a nyelvről. További példa. Java-ban hogyan kell működnie a garbage collectornak? Pont úgy, ahogy az oracle-s java-ban működik, vagy el lehet tőle térni? Ezt csakis egy specifikáció tudja megmondani, a ref. impl. kevés hozzá.

 

Egy programozási nyelvnek amúgy csak egy kis része a szintaxis. Van még egy csomó minden, amit egy specifikációnak tartalmaznia kell, hogy az alapján lehessen implementációt csinálni belőle (a szintaxis mögé ugye oda kell tenni a szemantikát, hogy mi mit csinál).