Názor k článku ML – funkcionální jazyk s revolučním typovým systémem od fortran1986 - No ono práveže najprv sa novinky dostávali skôr...

  • Článek je starý, nové názory již nelze přidávat.
  • 10. 2. 2022 9:25

    fortran1986

    No ono práveže najprv sa novinky dostávali skôr do F# (napr async expressions tam boli možno o 5 - 10 rokov skôr ako v C# async / await). Ale v poslednej dobe mi príde F# už dosť odladený a konzervatívny a prevratné novinky tam pridávajú ešte neskôr ako do C# a väčšinou tam pridávajú len drobné vylepšenia, ktoré si bežný programátor ani nevšimne (ja si what's new pri každej verzii prejdem lebo občas sa tam nájde niečo zaujímavé). F# je jednoducho dosť komplexný jazyk (je to také C++ medzi funkcionálnymi jazykmi s obrovským množstvom možností, kľúčových slov a podporovaných paradigiem) a novinky sa do neho pridávajú dosť ťažko a každá nová vlastnosť sa musí poriadne premyslieť aby bola spatne kompatibilná a preto sú často skôr v C#. Napríklad keď prišiel Swift od Apple, C#čko z neho okopoírovalo string interpolations zatiaľ čo do F# sa dostali až omnoho neskôr (cca o rok) https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/interpolated-strings, takže donedávna sme v F# (pri formátovaní reťazcov) ešte boli odkázaní na sprintf (ktoré ale typovo checkoval compiler). Mimochodom F# je spolu s inperatívnym C++ moj najobľúbenejší jazyk ale keď som si pozeral OCaml, tak ten mi prišiel omnoho konzistentnejší. OCaml má úplne inú OOP syntax, ktorá imho lepšie zapadá do prostredia jazykov z rodiny ML. (A má aj kopu ďalších vecí napríklad generické moduly, akurát žiaľ Ocaml má na druhej strane omnoho slabšie vývojárske tooly ako F#). F# musel kompletne prekopať OOP keďže musel robiť komromisy kôli .NETu a napriklad podpora interfaces je doslova divná. Ak chcem používať interface tak to musím pretypovať na interface typ čo je divné. Taktiež virtuálne metódy tam majú dosť divnú syntax treba si ich zadefinovať ako abstraktné atď.