Řešení je jednoduché, najmout lidi, kteří budou vyvíjet pro Windows (jen částečně fungující programy), které budou pod nějakou opravdu svobodnou licencí a z ní to může kdokoliv už opsat. Otázkou zůstává jestli je od Microsoftu co opisovat :D
Podobné narážky na kvalitu MS věcí jsou trochu (možná trochu víc) mimo mísu. Zvlášť platforma .NET je jednou z nejkvalitnějších, nejvymakanějších a nejpoužitelnějších se kterými jsem se kdy setkal a můžu ji jen chválit (a to jako dřívější zarytej linuxář a javista a fanda opensource věcí).
Bez ohledu co si myslím o Microsoftu, tohle mohu potvrdit. .NET knihovny jsou velmi kvalitní a možná je to aktuálně nejlepší framework na světě.
Je to velmi zajímavé, protože někdy MS vypustí do světa dost špatné věci. Spíše jde ale v těchto případech o chyby architektury a marketingových mágů.
Jo, ty knihovny nejsou až tak špatný, jen ty jazyky jsou děsný. A i když svůj oblíbený propojím s .NETem (což jde), pořád ještě tu je impedance mismatch co do runtimu. Ten .NETový není žádná sláva, kdysi jsem byl nadšený z toho, že tu konečně máme vícejazykové prostředí, jenže ono se nakonec ukázalo, že pro .NET se dají rozumně psát jen kompilátory jazyků, které jsou funkčně identické s C# (žádná vícenásobná dědičnost, žádný vícenásobný dispatch, žádné ukládání heapu, žádná dynamická redefinice tříd s přizpůsobitelnou aktualizací instancí, žádné restartovatelné výjimky - jen namátkou jmenuju věci, u kterých mě opravdu nenapadá, jak je efektivně implementovat bez zásahu do zdrojáků .NETího VM). Takže to prostředí stejně nikdy nebude stačit všem a nativních kompilátorů se nezbavíme. ;-)
Veci, ktere v .Net nejsou je spousta, z tech skutecne potrebnych tam nechybi vsak temer nic. To co jste vyjmenoval jsou takrka, z pohledu .Net, nepodstatne feature. Nektere terminy mi ani nic nerikaji ;).
- Vicenasobna dedicnost: Objekt muze dedit z jedne tridy a z neomezeneho poctu rozhrani (ISwissArmyKnife, yay). Zavadet vicenasobnou dedicnost je imho zbytecnost a urcite bych to nechapal jako chybu VM.
- Multiple dispatch: Nevim co je na pretezovani metod nedostacujiciho.
- Ukladani heapu: Specifikujte trochu blize. Pokavad to nejde v managed prostredi, tak mame P/Invoke.
- Dynamicka redefinice trid: Ale ano, mame TypeBuilder, AssemblyBuilder atd. Aktualizace instanci je pak uz jen pouze na vas.
- Restartovatelne vyjimky: Nevim co si pod timto mam predstavit.
"- Ukladani heapu: Specifikujte trochu blize. Pokavad to nejde v managed prostredi, tak mame P/Invoke."
Tipol by som, ze tym bolo myslene nieco stylu coroutines/continuations v Python/Ruby, ale tiez len odhadujem (tam bol nejaky pokus ohackovat to cez fiber api ale nejak to udajne odislo do vecnych lovist)
"- Restartovatelne vyjimky: Nevim co si pod timto mam predstavit."
Zrejme nieco v style retry keyword v Ruby (tiez hadam)?
Coroutines/continuations sice nemame, ale mame generatory(yield) a ono hrube a nepravem nenavidene GOTO :)
V restartovatelnych vyjimkach nejak nevidim zadne pozitivum :/
Nicmene, pokud jsou dane feautres implementovany v Pythonu/Ruby, tak by nebylo od veci se podivat na .Neti implementace techto jazyku, IronPython a IronRuby, zda tam to neni nejak osetrene. I bych tipoval, ze ano, a prave proto je MSIL kod vygenerevoany temito dvema kompilatory nekompatibilni s C# a pravdepodobne i zbytkem zakladnich jazyku.
No, to ses s moc platformama nesetkal. :-) Ale "enterprajs sféra" má tendenci stavět na tak primitivních věcech, že pokud Tě sem vítr zavál odtamtud, tak se tomu nedivím. (Já samozřejmě chápu potřeby a omezení velkých firem, ale to neznamená, že to jsou potřeby a omezení platná pro všechny. :-))