M#, czyli recepta na C# szybkie jak C++ i łatwe jak języki dynamiczne
Myliłby się ten, kto uważałby, że w Microsofcie poza Windowsświata nie widzą. Gigant z Redmond prowadzi od lat prace nadeksperymentalnymi systemami operacyjnymi, których owoce czasemznajdują zastosowanie w komercyjnych produktach firmy. Jednym z nichjest system Midori, rozwijany od 2008 roku jako następca Singularity– systemu na bazie mikrojądra o w pełni zarządzanym kodzie.Twórcy Midori postawili na współbieżne przetwarzanie danych i modelbezpieczeństwa bazujący na radykalnej izolacji aplikacji, a efektyich prac znalazły zastosowanie we frameworku .NET i wprowadzonym doVisual Studio 2010 języku F#, który znacząco ułatwiał programowanierównoległe i automatyczną paralelizację aplikacji, wprowadzając m.in.niemożliwość zmian stanów obiektu po jego utworzeniu. Schyłekznaczenia Silverlighta, mającego być idealnym środowiskiemuruchomieniowym dla aplikacji F#, pozostawił związane z Midori pracew cieniu (bo przecież to HTML5 jest najlepszym sposobem na aplikacjewebowe), wygląda jednak na to, że idee zaprezentowane kilka lat temuznów wracają do łask.Joe Duffy, architekt Microsoftu zaangażowany od lat w prace nadMidori, opublikowałna łamach swojego bloga wpis poświęcony nowemu językowiprogramowania, którego ambitne założenia, jeśli zostaną zrealizowane,mogą znacząco wpłynąć na realia tworzenia oprogramowania w tejdekadzie. [img=csharp]Początkowo podział języków programowania w ich pragmatycznymwymiarze był dość oczywisty: z jednej strony mieliśmy języki oogromnej wydajności, takie jak C czy C++, z drugiej językizapewniające dużą produktywność, takie jak (to opinia Duffy'ego –przyp. red.) JavaScript. Pomiędzy nimi znaleźć można było C# czyJavę, zapewniające przyzwoitą wydajność i łatwość programowania.Czasy się jednak zmieniają, i szalony wyścig optymalizacjiJavaScriptu doprowadził do sytuacji, w której mamy dziś całą rodzinędynamicznie typowanych języków programowania, które wydajnościązaczęły dorównywać Javie czy C#. Z kolei samo C++, mimo rozmaitychułatwień dla programistów, bezpieczeństwa typów dostarczać nigdy niebędzie – to język dla ludzi doświadczonych, chcących by ich koddziałał jak najszybciej, nawet za cenę możliwych groźnych błędów.Prace prowadzone w Microsofcie mają jednak przynieść bazujący naC# język programowania ogólnego zastosowania, który pogodzi ogień zwodą. Zapewni z jednej strony bezpieczną typizację i łatwośćprogramowania, z drugiej strony wydajność kodu porównywalną z C++.Otrzymał już on nazwę M#, i z tego co pisze Duffy, będzie on zbioremrozszerzeń dla C#, jedynie w niewielkim stopniu zrywających zkompatybilnością. Dlaczego właśnie C#? Przede wszystkim ze względu nadojrzałość tego języka, zapewniającego zarówno statyczną typizację(co było dla Microsoftu warunkiem koniecznym) jak i obecność takichkonstrukcji jak delegacje, metody anonimowe czy wyrażenia lambda. Niebez znaczenia jednak było to, że język powstaje w Microsofcie, gdziejest wielu świetnych znawców C#, a już pewnie znacznie trudniejznaleźć tam kogoś znającego np. google'owe Go.Analitycy są przekonani, że Microsoft idzie w dobrą stronę: AlHilwa z IDC mówi, że w miarę jak rośnie zaawansowanie automatyzacji,jak zbliżamy się do automatycznych samochodów, sensowne jestoczekiwanie ulepszeń w automatycznej generacji kodu, ma więc też sensspodziewać się, że Microsoft będzie próbował przerzucić pomostpomiędzy produktywnością a wydajnością. Nowy język chwali też AleksBromfield z Google'a, który pracował wcześniej w Redmond przez kilkalat nad M#, podkreślającprzede wszystkim zalety jego modelu błędów, który jest zarównoszybki, jak i bezpieczny i łatwy w użyciu – w przeciwieństwiedo Javy bardziej pomaga niż przeszkadza, jego narzut też ma byćniewielki.Najlepsza wiadomość na koniec – już niebawem M# ma zostaćwydany na wolnej licencji. Zanim to nastąpi, Microsoft chcedopracować kilka ostatnich szczegółów, koniecznych do wprowadzeniatego języka do kompilatora-jako-usługi Roslyn,tak by jego relacja z C# była bardziej elegancka.