czwartek, 10 kwietnia 2014

BUILD 2014 - przyszłość .NET: wydajność, otwartość, wieloplatformowość

Przyszłość .NET, temat nurtujący wielu od 2011 roku… Jedno wydaje się jasne, że stare dobre czasy z dużą ilością nowych wysokopoziomowych frameworków jakby przeminęły albo zrobiono już tyle, że obecnie wymyślanie kolejnych nowych bibliotek (na desktopa?) nie jest już priorytetem. Priorytetami stały się obecnie zupełnie inne rzeczy takie jak:

  • wydajność (.NET Native, RyuJIT, SIMD) - renesans kodu natywnego i rozwiązań optymalizowanych pod konkretne platformy sprzętowe (to jest zdaje się szersze zjawisko na świecie, bo np. nowy DirectX 12 też pozwala używać niskopoziomowych instrukcji procesorów graficznych, a nie był prekursorem w tym segmencie, może w 2020 przyjdzie np. renesans asemblera?). Zresztą chcąc iść w świat mobilny wydajność to podstawa, a może duże, powolne w stosunku do C++ aplikacje desktopowe .NET także na tym skorzystają
  • otwartość (większa współpraca z klientami i społecznościami, wsłuchiwanie się w zgłaszane oczekiwania, otwarty rozwój kilkunastu projektów w ramach .NET Foundation, otwarte kompilatory - “Roslyn” jako Open Source, tak to nie prima aprilis, ale prawda)
  • wieloplatformowość (współpraca z Xamarin, pamiętam że były nawet prasowe pogłoski o chęci przejęcia tej firmy, ujednolicanie API między różnymi platformami, PCL z obsługą WinRT i XAML,  uniwersalne aplikacje i bilioteki)

Poniżej moje notatki z komentarzami do dwóch prezentacji.

 

The Present and Future of .NET in a World of Devices and Services

Po obejrzeniu zrobiło mi się trochę smutno z uwagi na dużą liczbę ogólników i tylko krótkie demo czegoś ala Resharper, jakby puste slajdy wciśnięte w godzinę prezentacji, by ją czymś zapełnić… Ale już po obejrzeniu kolejnej prezentacji poczułem się lepiej, jak zobaczyłem kilka żywych demonstracji nowych mechanizmów.

image

image

image

image

image

image

image

image

image

image

image

image

image

image

 

The Next Generation of .NET for Building Applications

Ta prezentacja uratowała mój nastrój i podniosła mnie na duchu. Może nie ma fajerwerków, ale pokazane kierunki rozwoju i związane z nimi dema wydają się rozsądne i potrzebne.

.NET Native to pomysł na natywną kompilację kodu .NET, ale z zachowaniem działania zgodnego z CLR. Odchudzony runtime i inkorporacja bibliotek systemowych do skompilowanego kodu mają to zapewnić. Pomysł jest rozwinieciem kompilacji natywnej wprowadzonej do aplikacji Windows Phone 8. Przewiduje się także tutaj udział chmury i urządzenia w optymalizacji kodu.

Innym kierunkiem rozwoju na rzecz optymalizacji jest RyuJIT (kompilacja dynamiczna).

SIMD - kojarzy mi się ze … studiami i architekturą procesorów, jak widać przyszły czasy, kiedy będzie można świadomie pisać kawałki kodu .NET, wiedząc jak je zoptymalizuje procesor.

BTW zbiory Maldenbrota też zagadnienie znane ze studiów… Do szkoły, chodźmy do szkoły. Powrót do rzeczy najbardziej fundamentalnych, jak wydajność, architektura procesora, rodzaje kompilacji, kompilatory itp. A może przy pisaniu całego .NET przez lata, gdzieś te rzeczy faktycznie twórcom uciekły?  W każdym razie niejednemu przeciwnikowi .NET bedzie teraz łatwiej wytrącić argument z ręki o małej wydajności w stosunku do C++.

image

image

image

image

image

image

Kompilacja trwa zauważalnie dłużej. Prezentowane demo prostej aplikacji Contoso 26 sekund.

image

systemowe moduły .NET są włączane do skompilowanej dll-ki, debugowanie aplikacji jak kodu zarządzanego

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

uzupełnienie brakującego .NET API na Windows Store

image

image

image

image

Brak komentarzy: