[7] Zkuste si překopat specifikaci jazyka a zkuste si překopat implementaci jazyka.
To první je daleko těžší, protože změníte-li jednu věc v pětisetstránkové dokumentaci, většinou musíte k tomu najít příslušné odkazy a souvislosti a hodně přemýšlet, kde se to všude promítne. Po několika takových změnách musíte de facto pečlivě pročíst celou dokumentaci a bedlivě sledovat, kde je potřeba dokumentaci opravit o změny.
To druhé je relativně snadné, 90% změn dosáhnete změnou jedné konstanty v programu, či úpravou několika řádků programu, máte-li imlplementaci dobře udělanou s dobrou architekturou. A ono to tak svádí, je to tak jednoduché a prstíky jsou mršky nenechavé...
Takže souhlasím s Vámi, máte naprostou pravdu, ale přeci jenom je pravda, že opravit oficiální implementaci je mnohonásobně snadnější a i to má velký vliv.
S čím naprosto nesouhlasím je spojování s open source projekty. Ano, odpovědnost open source projektů je většinou nízká, přímo pod bodem mrazu. Ale musíte si uvědomit, že na stvoření domyšleného vlastního programovacího jazyka nemá každý programátor, který včera poprvé napsal Hello world program. Takže potřebujete zkušeného člověka - má-li ten jazyk za něco stát. A tam už jsou jiné zákonitosti.
Ale jinak s Vámi v podstatných myšlenkách souhlasím, v čem se lišíme jsou jen nepodstatné drobnosti.
Jen bych dodal, že každý člověk se vyvíjí a mění názory. Stejně tak jako básníci, jak se učí v českém jazyce procházejí životními zlomy a podstatně tak mění svůj náhled na svojí tvorbu, tak i návrháři jazyků procházejí změnami svých názorů. Je na 100% jisté, že pokud autorovi jazyka dáte možnost vládnout neomezeně nad svým jazykem třeba dvacet let, že ho několikrát zcela překope, a to i tehdy pokud původní verze byla geniálně domyšlená. Je to proto, že každému člověku se v každém období života líbí něco jiného - a nemá to s kvalitou vždy tak moc společné.
Zkrátka, seriózní jazyk poznáte podle toho, že
a) Zachovává zpětnou kompatibilitu co to jenom jde. Pokud se úchýlí přeci jen k nepatrným změnám zpětné kompatibility, je to z velmi vážného důvodu a mnoho měsíců se zvažuje, zda je skutečně, byť i nepatrné porušení zpětné kompatibility opravdu potřeba.
b) Jazyk je dán popisem - tj. normou, nebo standardem - tedy dokumentem, či sadou dokumentů naprosto přesně, do detailu a normativně popisují každý bod jeho chování.
Jazyky, které nezachovávají body a) a b) (Python, Perl, Ruby, ...) se nepoužívají pro vážnější a dlouhodobější projekty, nazývají se "skriptovací", nikoli "programovací".
Představte si třeba, že by někoho napadlo udělat nekompatibilní unix shell. Nebo se rozhodl změnit programovací jazyk C a vývojářům Linux jádra vzkázal: sorry, je mi líto, ale musíte ty milióny řádek kernelu prostě přepsat, protože jsem se dnes špatně vyspal a rozhodl jsem se nekompatibilně změnit syntaxi C. Utopie? V Pythonu, Perlu a Ruby se to obhajuje jako ta nejlepší věc, co se dá udělat.
Přečteno 19 401×
Přečteno 16 940×
Přečteno 13 922×
Přečteno 13 254×
Přečteno 11 237×