Nový .NET – promarněná příležitost?

Pokud jste nebyli poslední dva dny kompletně offline, nemohlo vás minout, že Microsoft oznámil “nový .NET” – plně open source (MIT licence), na GitHubu, rozběhatelný na Linuxu a Mac OS, k tomu Visual Studio zdarma atd. I z programátorského pohledu začínají konečně fixovat roky staré bolístky a například ASP.NET 5 bude hezký, moderní stack se vším všudy (příčetný projektový systém, o hodně vylepšený vývojový i deployment model a podobně).

Tohle všechno je paráda, a třeba to Visual Studio zdarma jde podle mě daleko za očekávání, přesto jsem si uvědomil jednu věc, když jsem koukal na parádní integraci C# do Sublime Textu: není to všechno jen svým způsobem promarněná příležitost? C# v Sublime Textu skoro včetně refaktoringu, wow, ale je C# ten jazyk, který dlouhodobě chceme? Je .NET a jeho BCL a jeho konvence a jeho všechno to, co dlouhodobě chceme?

Mám totiž pocit, že svět je už někde trochu jinde, a přesto, že nový ASP.NET bude mít node-like server běžící na Linuxu (cool), koukat na ASP.NET / C# kód je pořád blíž koukání na zastaralou Javu než na něco soudobého. Není to konec světa, a armády zkušených .NET vývojářů toto naopak budou považovat za skvělou až nutnou věc, ale z mého idealistického pohledu byla právě teď příležitost posunout se dál. Kam dál?

Ten směr podle mě v rámci Microsoftu zachycuje TypeScript. Nejde jen o to, že ten jazyk je v řadě ohledů zkrátka dobrý, ale i o to, jak nádherně kombinuje “staré pořádky” s novými přístupy k psaní kódu. V TypeScriptu si dokážu představit zapsanou jak super-enterprise WPF aplikaci, tak JS aplikaci interagující s divokým API jQuery, ale třeba i shell skript (PowerShell je po jazykové stránce taková malá tragédie) atd. TypeScript je zkrátka jedna z nejlepších věcí, co z Microsoftu za poslední roky vypadla, a mohla být tou cestou dopředu.

A tak mě trochu mrzí, že vidím prvotřídní podporu C# v Sublimu, zatímco TypeScript neustále přepisují dokola a na některé důležité funkce se pořád nedostává (mají poměrně malý tým). A svým způsobem by mě mrzelo, kdyby nový .NET znamenal renezanci C# a starých BCL API na úkor TypeScriptu a … a čeho vlastně?

Ano, v mém idealistickém plánu by byla potřeba ještě nějaká modernější náhrada BCL, což je bohužel asi o dost složitější než nahradit jazyk. Ale snít se může, a ačkoliv nevím přesně, jak by měla nová knihovna vypadat, vím jen to, že po přechodu skoro odkudkoliv (Node, ale i PHP) působí BCL moc “enterprisey”. Zjednodušil bych ji, asi hodně modularizoval, ať si klidně balíčky konkurují ala Node/NPM, určitě bych změnil jmennou konvenci na camelCase v souladu se zbytkem světa apod. Současným .NET vývojářům bych nechal současný .NET, ale celý Microsoft vývojářský ekosystém bych pomalu směřoval k něčemu modernějšímu. Že to jde udělat i poměrně nenásilně, ukázal přechod z Win32 / COM na .NET před mnoha lety.

Teď je asi celkem jasné, že se to nestane, minimálně ne během dalších X let. Ano, .NET hodně posunuli dopředu a stává se z něj opět stack, který je sám o sobě zajímavý, ale právě teď byla podle mě příležitost udělat krok ještě o něco větší.

Tak, a teď si za tohle frflání jdu za trest napsat nějaký skript v PowerShellu.

 

13 thoughts on “Nový .NET – promarněná příležitost?
  1. V článku jsem usilovně čekal, co navrhneš jako pokračování, jako další krok, který MS posune za svět C#. Když jsem si přečetl, že to je jak koukat na Javu, řekl jsem si, že to je tvrdé, ale v podstatě pravda.

    A pak jsi napsal, že TypeScript je to řešení.

    To mě hodně zklamalo. TypeScript je jako C#, Java, ActionScript, PHP, JavaScript. Nulový posun kupředu, jen jemné syntaktické odlišnosti. Programátor, který přejde z jednoho C-čkoidního jazyka na druhý, se zajedna nic nenaučí a zadruhé si obvykle moc nepomůže.

    Proč ne F#?

    Je daleko úspornější, než C#. Má víc možností. Programátor se toho naučí mnohem víc. Máme v ČR Tomáše Petříčka, jednoho z největších odborníků na F#.

    Programátor, který z C# přejde na TypeScript, je jako řidič, který z Škody Favorit přejde na Škodu Forman, zatímco ostatní se už dávno prohání v Superbech.

  2. Tohle je otázka názoru, ale TypeScript je podle mě přesně ten middle-ground jazyk, který by mohl přechod umožnit a ještě ne ohrozit (což je IMO případ F# a podobných). Dnešní .NET vývojáři by do ruky dostali něco, co se dá používat velmi podobně jako C#, ale i velmi jinak. No a pak by se vidělo – pokud by po pár letech byla v komunitě tendence jít do něčeho ještě pokročilejšího, proč ne.

    Problém je podle mě spíš na úrovni BCL, resp. v celém stylu vytváření knihoven v Microsoftu. Pokud se např. navrhovaným způsobem změní samotná BCL (camelCase, jednodušší názvy metod apod.), bude pak trochu divně vypadat integrace s Office API, nativními API apod. Zatížené nějakou historií to holt bude vždy, ale osobně bych byl pro, aby se toto obětovalo v zájmu sladění .NETu se stylem dnešního vývoje mimo svět Microsoftu. Zmizela by značná část frikce a MS by mohl uvažovat nejen o tom, jak současné vývojáře neztrácet, ale i jak případně získávat vývojáře nové.

  3. Pekny clanok a dobry postreh. ;) Ano, ten pocit, co popisujes tu iste je.

    Zaroven otazka kam sa dalej posunut od .NETu/BCL/FCL nie je z lahkych. Ako si iste vsetci pamatame, pokusil sa o to Steven Sinofsky a jeho tym, WinRT bol z isteho uhlu pohladu krok zaujimavym smerom, prepojenie stareho sveta (Win32/COM) a noveho WinRT cez metadata a language projection bolo imho genialne. C# sa dal dalej pouzivat, no napriek tomu vsetcii zacali silno kricat, ze im beru .NET, ze chcu svoje stare Windows, … (zle jazyky hovoria, ze aj interne to bolo na povazenie, ked mnoho vysokych manazerov dev divizie odislo s Guthriem do Azuru, ini do XBoxu, ini prec, a dalsi udajne hovorili, ze bud Sinofsky alebo oni…), a Sinofskeho vyrazili, … A pritom to bol zaujimavy pokus, moderne C++ a moderny javascript/typecript nad modernym windows API… co ja viem…

    Ako som pisal, najst novu cestu vpred (najma ak znamena prec od .NETu ako ho teraz pozname), ktora by vyhovovala interne a bola prijata aj kritickou vacsinou zakaznikov (majucich dost legacy kodu) je uloha z tych tazsich…

    Ci je buducnost javascript ako naznacujes (typescript je v podklade javascript, nie?) ? Neviem. Mozno ano, Mohla by byt. Najma ak mame (v language projection) dobru moznost ho prepojit na podkladove API. Uvidime aky bude dalsi vyvoj co sa tyka WinRT a klientskeho programovania pre windows 10.

    Moj pocit z oznameni bol asi taky – co sa tyka noveho server-side stacku (Core .NET, ASP.NET vNext, novy tooling, vsetko open-source, cross-platform,…) to je isto krok dobrym smerom co sa tyka server-side programovania….Z pragmatickeho pohladu je tento novy .NET stack aktualne najlepsia moznost ako pisat web api, ako pisat server-side kod pre web na windows platforme, potazmo velmi konkurencie schopna moznost vseobecne. Teda, ak uz clovek nenechal vsetky tie stare veci za sebou a plne nepresiel do javascript sveta (aj na klientskej aj na serverovej strane). Osobne si myslim, ze stale ma vyznam pisat server-side kod v niecom inom ako js. ;)

    To co zostava velkou otazkou je co s klientskym programovanim (mimo webu) na windows platforme? Veci ako WPF, Windows Forms, pripadne aj dalsie ako WCF, celkovo velky .NET Framework – tychto veci sa vcerajsie oznamenia netykali, o tych nikto nehovoril, ze budu open-source, cross platform, ze budu modernizovane, …

    Co s tymto – to je mozno zasadna otazka. Otazka ohladom buducnosti Windows ako platformy…

    vdaka,
    s.

  4. Blockquote
    je C# ten jazyk, který dlouhodobě chceme?
    Blockquote

    Za mě určitě ano. Jazyk C# je imo to nejlepší, co Microsoft kdy přinesl. A teď konečně dostane pořádnou multiplatformní podporu a .Net open source … wow much free software such win.

    Javascript jsem vždycky bral jako nutné zlo, kde browsery prostě potřebovaly primitivní jazyk, nějakým způsobem se mu podařilo dostat se na server side, což považuju za největší úchylnost v IT světě v posledních letech vůbec. Každopádně opačná otázka: proč type script. C# má anonymní typy, dynamické typy, lambdy, async/await? Co chybí?

  5. Slavo, dobré komentáře. Jak říkáš, najít nějakou dobrou cestu vpřed není žádná sranda.

    Ondro, JS svět je realitou, rostoucí realitou, a TypeScript umí s tímto světem dobře komunikovat. Současně by v pohodě mohl fungovat jako jazyk nad CLR, čímž by obsáhl “vše důležité”. C# je skvělým jazykem na .NETu, ale jeho pokusy propojit ho se zbytkem světa byly vždy trochu kostrbaté a v zásadě nevyšly. TypeScript je v mnoha ohledech modernější, a až do něj přibude async/await, nebude podle mě pro C# moc argumentů.

  6. Nemůžu si pomoci, ale když jsem zprávu četl, velmi mi to připomnělo podobný přechod od uzavřeného softwaru k open source – Adobe Flex.

    Jak všichni víme, nevedlo to k získání nových vývojářů. Právě naopak.

    Je absurdní, když o promarněné příležitosti .NET píše zrovna Borek :)

  7. U Flexu byla situace jiná – Adobe se této technologie v podstatě chtělo zbavit. Rozpustili vnitrofiremní tým, nechali placených pár lidí na Apache projektu (viditelní byli tak dva, tři) a další věc je, že Flex v podstatě nemá a nemůže mít žádný pořádný business model. .NET je něco zcela jiného, oni open sourcují většinou nové věci, což jsou z pohledu MS další a nové investice, i poskytnutí Visual Studia zdarma je investice, u které někdo z finančního oddělení určitě očekává návratnost. Dále mají na svůj ekosystém navázaných několik placených služeb (TFS, Azure) atd., ta situace je prostě úplně jiná.

  8. Rozdílné jmenné konvence .netu vidím jako naprostou malichernost. Tohle přeci nelze považovat za nějaký zásadní konflikt se zbytkem světa ;-)

  9. Je to frikce. Být Microsoftem, snažil bych se každou frikci eliminovat. (BTW PascalCase způsobuje problémy i uvnitř MS ekosystému, viz např. parametry PowerShell skriptů. Prostě je to přežitá konvence a nechal bych ji jen v legacy rozhraních.)

  10. No nechci se hádat, jen mi nepřipadá moc reálné, že by někdo odsoudil technologii na základě toho, že používá PascalCase konvenci. IMHO je to jednorázová mentální změna, nic bolestivého. Jako reálnou překážku bych spíš bral to, že .net je technologie od MS…

  11. Borku, typescript je jen vylepseny javascript (JS) a to proto, ze psat OOP je v JS tezke. Jednodussi je psat v typescriptu a kompilovat to do nynejsiho masove podporovaneho JS. V novejsim EcmaScripu budou i tridy a bude to pohodlnejsi a typescript casem zanikne, protoze nebude potreba dalsi vrstva nad JS. Zatim ma ale Typescript smysl. I kdyz po napsani vetsiho projektu v nem, bych dal prednost radsi cistemu JS.

    Me se syntaxe typescriptu libi taky. Odstraneni dlouheho “function”, zavedeni lamba vyrazu. Je to fajn. Na dotnetu se mi nelibi konvence velkych pocatecnich pismen. Myslim, ze mala jsou mnohem lepsi a pozna to kazdy kdo ma zkusenosti s vice jazyky a ne jen .Net platformou. Na druhou stranu neni to tak hrozne a da se to prekonat, protoze je to mocny jazyk i platforma. Modernejsi nez Java, umoznujici psat jak desktopove tak i webove aplikace rychle. A i samotna rychlost aplikace je slusna. Na C++ s optimalizacema samozrejme nema, ale to nevadi – imperoperabilita je hracka.

    Z clanku jsem pochopil, ze touzis po novem jazyku s lepsi syntaxi. Dle meho nazoru, ale zadny dalsi nevznikne. MS nema potrebu reagovat na nejaky jiny jazyk. Na Javu uz reagoval .Netem a ten je dobry. Problem je jen v ekosystemu, ktery neni moc rozvinuty. Zatimco Java ma na serveru na kazdou vrstvu desitky opensource alternativ (vm, aplikacni servery, middleware, web fw), tak .net ma jen IIS, MS.NET, asp.net (webforms, mvc), coz neni zadna vyhra. Sice jsou tu pokusy s novym opensource .Netem, ale z globalniho hlediska to neni zadna revoluce. MS potreboval mensi verzi .Netu hlavne kvuli cloudu a mobilnimu vyvoji, kde uplne zaspal, kvuli prekladu do nativniho kodu. To by s uplnym .Netem, jehoz knihovny si nesou tuny balastu z historie (COM, System.Web, atd.) nebyl schopen. Takze ono to neni ani prekvapeni, spise dalsi vyvojovy krok Microsoftu vzhledem ke konkurenci. MS potrebuje cloud a aplikace do cloudu a proto i to VS Community Edition. Az bude zase silny, tak se to nejak zlimituje. Je to proste business.

    Novy jazyk by mohl vzniknout pokud by neco mela konkurence, rekneme ve smeru paralelizace. Ale Google same paskvily, takze zatim neni nutnost. Casem ale urcite nejaky lepsi obecny jazyk vznikne. Ale nejprve se zmeni ekosystem a to bude jeste trvat delsi dobu…

  12. PowerShell je po jazykové stránce taková malá tragédie

    Proč? Tím nemyslím, že ne, jen by mě zajímali podrobnosti.

Leave a Reply

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax