Ono to bude o něčem jiném. Google je sběratel osobních údajů a prodejce reklamy, Apple je výrobce designové elektroniky. MS je tradičně SW firma, a zřejmě se nechce pouštět do vývoje automobilů nebo vojenských robotů. Chce poskytovat SW platformu, na které partneři takové věci postaví. Protože je dnes na trhu víc rozšířených platforem, dává smysl, aby MS byl tam kde jsou zákazníci (proto například podporuje Linux v Azure cloudu). Cílem je podle mě to aby bylo možné ve VS napsat univerzální aplikaci pro Windows desktop, telefony, XBox, Hololens, a k tomu také pro Android a iOS. A migrace by měla fungovat i opačným směrem: už teď MS umí wizardem migrovat aplikace z iOS na Windows. Taková strategie podle mě dává smysl, je v souladu s vizí MS.
Moje hlavička už je moc malá, aby pobrala jazyky prvotně funkcionální, které přebírají vlastnosti imperativních. Může tedy být vyspělý jak chce.
Protože jsem odkojený Basicem, Pascalem a C, tak budu inklinovat k jazykům, které jdou původně od imperativních a přidávají funkcionální prvky.
Možná, kdybych byl odkojený Erlangem a Haskelem, tak bych teď preferoval OCaml před c#
To je ale taky hodně zkreslený pohled, ačkoliv jiným směrem. Neustálé hledání ideálního jazyka je fajn, ale pokud chce člověk něčeho dosáhnout, tak se musí soustředit na to, co mu jde nejlépe. Akademická znalost všech existujících jazyků většinou není optimálním přístupem. Ignorování jiných rodin jazyků je proto poměrně racionální volba.
Java jednak nebyla už od začátku "dokončená" (např. podpora unsigned typů se neudělala, protože na to nebyl čas, a s postupem času by přidání bylo kvůli zpětné kompatibilitě by větší a větší problém). A jednak usnula na vavřínech – její vývojáři sami přiznávají, že se od JDK 1.5 hodně inspirovali v jiných jazycích, především v C#.
A jestli je nebo není pozadu, to vůbec není vůbec podstatné pro management v enterprase prostředí, který o jejím použití rozhoduje. Např. u nás v některých starších projektech stále musíme trpět s JDK 1.4, a to ještě s ohledem na určitou kompatibilitu s JDK 1.3 kvůli proprietárnímu JVM pro embedded zařízení. Že bychom jako vývojáři rádi alespoň generické typy, v tomhle případě rozhodně není argument. V novějších projektech jsme sice před asi třemi čtyřmi lety "už" přešli na JDK 1.6, a také u ní určitě ještě pár let zůstanem.
Na druhou stranu, sám za sebe bych si také vybral Javu, ale ty důvody jsou jiné (respektive stejné jako u toho managementu) – široká komunita, nespočet volně dostupných knihoven i vývojové infrastruktury, standardizovaná řešení, přenositelnost, a také docela dobrá jistota, že se alepoň v nejbližších (10+) letech nestanu osamělým vyvrhelem na okraji společnosti ;-)
Nahradil kde? Java byla vždycky hodně jednoduchý jazyk, jenže jeho hlavní výhoda je v nástrojích a obrovskému množství volně dostupných knihoven. A visual studio je daleko za javovskými IDE a volně dostupné knihovny taky nic moc. C# má víc konstrukcí pro psaní kódu, ale rozhodně nic zásadního. Naopak spousta věcí je striktně vázaná na windows.
Jinak když už chceš komplexní jazyk, tak bych si vybral Scalu, která běží právě na JVM.
A visual studio je daleko za javovskými IDE
Lze si nainstalovat ReSharper.
C# má víc konstrukcí pro psaní kódu, ale rozhodně nic zásadního.
Třeba hodnotové typy, reifikovaná generika, expression trees (kvůli jejich absenci Jinq a jiné nástroje musí pracovat přímo s bajtkódem, což je komplikovanější), reference ukazující do objektů, ukazatele a vícedimenzionální pole jsou poměrně zásadní.
Jinak když už chceš komplexní jazyk, tak bych si vybral Scalu, která běží právě na JVM.
Scala trpí absencí TCO na JVM. Tj. funkcionální techniky (např. continuation passing style, monády), jenž závisí na TCO, tam jsou komplikovanější a pomalejší (než třeba v F#), neboť musíte ručně používat trampolíny.
Ad visual studio je daleko za javovskými IDE - které "javovské IDE" máte na mysli? V Eclipse dost trpím, je to pro mě jako používat lopatu místo pinzety.
Ad Java byla vždycky hodně jednoduchý jazyk - souhlas, Java byla pěkný jazyk. Bohužel je to mizerná platforma, na které se spousta trivialit nedá udělat, protože to celé musí být multiplatformní, což se sice nakonec povede jen částečně, ale zato je výsledná aplikace všude cizí. Pak je tu samozřejmě nevalný výkon Javy, opožděný příchod 64-bitové verze, a v posledních letech stagnace vývoje a obrovská spousta bezpečnostních problémů.
Ad Naopak spousta věcí je striktně vázaná na windows - co konkrétně je v C# striktně vázané na Windows?
A visual studio je daleko za javovskými IDE
BTW JetBrains pracují na IDE pro C# , zatím se jmenuje Project Rider.