Vdaka, na serial o F# som sa velmi tesil.
Mam niekolko veci - k onrazku o .Net platforme, C# vychadza z C++ a nie z Javy (nevola sa java++). C# a Java mali vela spolocneho lebo sa snazili riesit ten isty problem, len C# prisiel trosku neskor a tak sa poucil z chyb, ktore spravili tvorcovia jazyka Java.
> Poznámka: pokud důvěřujete skriptům staženým z internetu a taktéž důvěřujete software firmy Microsoft, může být instalace triviální (jedná se o verzi 6.0.x a nikoli 7.0.x, instalace zabírá zhruba 0,5 GB):
Dotnet SDK sa instaluje normalne cez package manazer, na debiane si treba pridat repo, na Ubuntu je uz v standardnych distribucnych balickoch, takze staci `apt-get install dotnet-sdk-6.0`
Ja chapem, ze sa to mnohhim ludom zdalo podobne, ale ja som od C# 2 robil z oboma a tie jazyky mali viac rozdielov ako spolocnych veci. Ano oba boli OOP, ano obe mali Main, ale to je tak asi vsetko. Do C# od 3/3.5 pribudlo plno funkcionalnych veci (trufol by som si povedat, ze viac ako ma javascript dnes) a ten styl praktickeho programovania nemal s Javou uz spolocne nic.
Ja taky delal v obou a C# proste byla Java obslehnuta do takove podoby, aby to jeste nebylo pravne napadnutelny (tedy nemohl to byt stejny jazyk, tak ok, udelali par vylepseni, ale zkopirovali z javy vsechny nesmysly, ktere se potom postupne opravovaly). Z C++ tam tezko neco najdeme, ale mozna se dam poddat.
Ide to aj s funkciami. Avšak ste obmedzený na jeden súbor, typy musíte definovať na konci súboru. Ide v podstate o to, že kompilátor na pozadí z toho spraví sám triedu a sám vytvorí ten nešťastný public static void Main. Preto som aj hovoril, že sa to dnes už nedá úplne zrejme napraviť. Je to ako keď si zle navrhnete základy domu a potom sa už s tým veľa nedá spraviť.
Ja som tie top-level statements vrelo privítal, je to super vec. Hlavne na kratšie programy, tutoriály, ukážky, testy a pod. Autori C# sa naozaj snažia vylepšiť syntax jazyka. Ale stále tam narážajú na tie základy...
(Mimochodom, v nadchádzajúcej verzii Javy sa ide spraviť obdobná vec.)
Prečo by som mal mať flexibilný jazyk, keď môžem mať reštriktívny? Pojem globálna funkcia je skreslený OOP. Sú funkcie a členské funkcie. Tiež sa nehovorí o "globálnych" triedach. Ideologicky nezmyselné obmedzenie funkcií len na členské funkcie je výdobytok Javy, ktorú C# bohužiaľ ocapal.
Nie je náhoda, že novšie jazyky ako Kotlin, Go, Rust, Swift takýto "výdobytok" neimplementovali. Dokonca aj poondiaty PHP má bežné funkcie. Neexistencia bežných funkcií je veľkou príťažou, ktorú si programátor hneď uvedomí, ak sa venuje dátovej analýze alebo terminálovým aplikáciám. Dátový analytik potrebuje funkcie a typ record. OOP blbiny absolútne nie sú potrebné. To, že programátor nato aby analyzoval dáta musí riešit triedy, public static void Main, a čo je najhoršie, statický kontext, je tragédia. Nie náhodou je práve Python obľúbený v dátovej analýze. Hádajte prečo.
6. 9. 2023, 10:36 editováno autorem komentáře