Týždeň 2021-21

Kecám. Samozrejme udalosť týždňa bol Build, ale keďže neviem, či všetci moji čitatelia sú .NET pozitívni, tak ten si rozoberieme v .NET okienku. Pre bežných ľudí tu je obchod za 8 miliárd dolárov. Toľko zaplatil Amazon za štúdio Metro-Goldwyn-Mayer Studios. Ak vám to nič nehovorí, tak sú to tie filmy, kde na začiatku v takom zlatom kruhu reve lev.


Toto je sprievodná diskusia k pôvodnej téme na https://blog.vyvojari.dev/vlko-week-2021-21/

Pwned Password súčasťou .NET Foundation
Napríklad si s ním môžete otestovať pri registrácii hash hesla, či nejde o príliš bežné, alebo už niekde uniknuté heslo.

Toto som interne skusal, no vedie k to k nastvanym pouzivatelom. Lebo 90% hesiel, co si schopny vymysliet tam uz niekde su a doslova je to sposob ako si vynutit pouzivame password manazeru.

Ked to zavedies vramci firmy, tak ok.

No externych zakaznikov tym moc nepotesis.

Ohladom tych noviniek v C# - kazda o sama o sebe znie fajn, ale uz sa toho naakumulovalo tolko, ze je toho moc. Kedysi som mohol C# s kludnym svedomim odporucat ako prvy jazyk zaciatocnikom, ale uz nemozem. Tych konceptov je tam privela.

S tym suhlasim, hlavne poslednu dobu sa don pridavaju uzko specializovane prvky jazyka. Hlavne global usings znie ako nieco co ako citatelnost a prehladnost zhorsi. Podobne feature s C#, ktora umoznuje vynechat skracovat new expresions, pride mi to ako nieco co ten jazyk rozbija.

Je super, ze Microsoft pocuva komunitu, ale je plno hlasov co zo C# chcu spravit F#, co sa mne osobne nepaci.

To je uhol pohľadu. Mne sa osobne páči, že jazyk získava črty, ktoré umožňujú jednoducho napísať niečo, čo predtým typovo nešlo, viď pattern matching. Ani nevidím v tom problem, sú časti projektu, na ktorých budú robiť aj juniori a tam pôjdeš štandardným C# a sú časti projektu, kde potrebujem pokročilé črty a viem, že tam bude šahať človek veci znalý.

Pattern Matching je ok. Implicit new expressions je tiez ok, ked sa pouziva z rozumom a je na lavej strane ten typ vyjadreny. Local functions je super. Ale global usings a podobne?

Fakt je, ze stupa kvantita noviniek a ani pri velkej snahe si ich nestiham zapamatat, ale brutalne klesa ich vyuzitie.

Keby radsej spravili nieco uzitocne, napr spravili z Eventov first class citizen, cize by si ho mohol napisat Observable.FromEvent(this.Click);

Ja osobne si myslim, ze uz by aj bol cas na novy .NET jazyk, ktory by mal flexibilnejsi typovy system podobny typescriptu.

Ako napríklad tomuto ja nechápem, prečo musím do každého súboru písať using System; using System.Linq; za mňa global usings už mali byť dávno.

Vyzera to super, az do chvile, ked sa ti bude vlastny nazov triedy bit s niecom co je v System, alebo ked sa ti niekde po update tretostrannej kniznice zacnu bit mena tried v dvoch global usingoch. Za mna to meni koncept izolacie cs suborov.

Co sa tyka new expressions (reagujem na @liero), tak mne na tom vadi to, ze to je uz treti sposob ako zapisat to iste. Plus to podla mna na to neriesi ziaden problem (ved mame na pisanie kodu Visual Studio nie notepad), no znizuje to citatelnost.

Casto robim code review a robim ju rovno v gitlabe, lebo zakazdym si to stahovat k sebe, prepinat si branche a strazit rozrobenu robotu proste spomaluje.

No ked v nejakom kode uvidim pouzite napriklad:

context.item = new(new(), new(), null);

Tak bez toho aby som musel studovat ine zdrojove subory, alebo dokonca extrene kniznice tak nemam sancu zistit co to robi.
To plati aj o global usingoch,

Kod sa pise raz ale cita sa n-krat a tieto fetury znizuju jeho citatlnost a pochopitelnost “na prvy pohlad”.

Podobne ako ta featura, ktora umoznuje napisat program bez Program.Main len tak do suboru, je to super na ukazku, ale co s tym dalej (specialne skriptovacie jazyky na C# si to vyriesili same).

Prave C++,javascript a typescript by mali byt odstrasujuci priklad toho co robi neuvazene pridavanie featur do jazyka.

A co spravil typescript neuvazene?

Typescript beriem tak, ze taky musi byt… lebo musi kopirovat to co sa pouziva v javascripte. Takze to bola skor tranzitivna kritika.

Teraz konkretne ma nepada presny pripad, ale myslim, ze nieco som mal v mapped types, alebo s “tuples”,…