2461
Vývoj / Re:Ideálny programovací jazyk
« kdy: 16. 05. 2019, 19:19:45 »Je potřeba dívat se na to v historickém kontextu. Java vypadá tak, jak vypadá, kvůli rozhodnutím z minulosti (primitivní typy, boxing/unboxing...) a držení zpětné kompatibility. To není kritika, byl to prostě historický výjoj. Kdyby se dělala Java znovu od nuly, určitě by vypadala jinak než teď. Stejně jako by vypadalo jinak i C, kdyby se dělalo znovu od nuly. Ale obojí je nereálné, Java i C jsou etablované jazyky a nová Java ani nové C nebude, existující kód nikdo přepisovat nechce.Kdybyste si nalistoval diskusi asi tak pět stran zpět, psal jsem tam to samé :-) Teda až na to, že nesouhlasím, že pravidla jsou složitá – jsou naopak velmi jednoduchá, když se porovnávají primitivní typy, porovnávají se hodnoty (nic jiného porovnat nejde), když se porovnávají objektové typy, porovnávají se reference (protože objekt je pro Javu blackbox, neví nic o tom, jestli existuje něco jako hodnota toho objektu).
Jenomže ten historický vývoj nutně vedl ke kompromisům v designu jazyka, Java (stejně jako C(++)) si s sebou táhne spoustu špatných věcí z minulosti. A tahkle je to taky potřeba vnímat, operátor == je v Javě neintuitivní a špatně použitelný, snadno vznikne chyba. Takže je potřeba každému nováčkovi říct "Hele, dávej si pozor na operátor ==, protože nefunguje tak, jak bys čekal, dělají se v tom často chyby. Někdy to porovnává hodnoty, jindy reference, záleží na kontextu, pravidla jsou složitá. Radši to vůbec nepoužívej, když nebudeš muset". No a to je všechno, není potřeba to nějak víc řešit.


