czwartek, 12 grudnia 2013

C# 6.0 - pierwsze pogłoski

Jaka jest przyszłość C#?  Dziś wpadł mi link http://damieng.com/blog/2013/12/09/probable-c-6-0-features-illustrated przekazany przez kolegę. Mimo, że na oficjalnych blogach nic nie znalazłem, o tyle natrafiłem na streszczenie jednej z rozmów z BUILD 2013:  http://wesnerm.blogs.com/net_undocumented/2013/07/anders-on-c-60-at-build-2013.html.  Jest to odpowiedź na wątpliwości na temat przyszłości C#, .NET i “Roslyn”. Jak wszystko dobrze pójdzie to .NET 5 będzie hulać na “Roslyn”, a C# nabierze nowych właściwości w oparciu o doświadczenia z TypeScript, a także takie języki jak F# czy Scala.

Ale wróćmy do pierwszego linka i rzućmy okiem na prezentowane propozycje składniowe.

1. Primary Constructors

Zapis   public Point(set int x, set int y) lepiej do mnie trafia. Przypomina mi konstrukcję z TypeScript. Czemu składnia nie może być tak prosta jak w tym języku?

2. Readonly auto properties

public int X { get; } = x;

Ta składnia średnio mi się podoba. Jakoś tak nadmiarowo…

3. Static type using statements

using System.Math; ... public double A { get { return Sqrt(Round(5.142)); } }

To jest super. Od zawsze publiczna statyczna metoda wydawała się tak naprawdę metodą poza klasą.

4. Property Expressions

public double Distance => Math.Sqrt((X * X) + (Y * Y));

To też mi się bardzo podoba. Jestem na tak.

5. Method Expressions

public Point Move(int dx, int dy) => new Point(X + dx, Y + dy);

Jakby coś pośredniego między wyrażeniem lambda a metodą z ciałem. Kojarzy się z TypeScript. Jestem na tak.

6. Params for enumerables

Do(someEnum); public void Do(params IEnumerable<Point> points) { ... }

Podzielam obawy zapisane przy tym punkcie. Składnia natomiast jest jasna.

7. Monadic null checking

var bestValue = points?.FirstOrDefault()?.X ?? -1;

Nie trzeba będzie już robić dużo if-ów i pomocniczych zmiennych. Fajna sprawa.

8. Constructor type parameter inference

var x = new MyClass(1, "X");

Znowu uproszczenie dla klas generycznych. Jestem na tak.

9. Inline declarations for out params

int.TryParse("123", out int x);

Też świetna sprawa. Zawsze mi przeszkadzały dwie linijki.

Ciekawe, czy nowy C# trafi do Windows 8.2 (Threshold) ? Nowy Windows ma mieć wersję na smartfony i tablety (połączenie Windows Phone i Windows RT) oraz wersje dla użytkowników stacjonarnych, w której aplikacje Windows Store będą mogły wyświetlać się w normalnym oknie z poziomu pulpitu. Tak więc szykują się ciekawe zmiany zarówno w C#, .NET, jak i w Windows.

niedziela, 1 grudnia 2013

Programista 11/2013: “Windows 8.1 okiem programisty”

Miło poinformować, że mój artykuł o Windows 8.1 został opublikowany w najnowszym świątecznym wydaniu pisma “Programista”. Gazetę można nabyć drogą elektroniczną lub tradycyjnie na półce.

Programista 11/2013 (18)  

To moja trzecia, najdłuższa publikacja na łamach tego pisma. Tym razem spojrzałem wnikliwie na Windows 8.1 zarówno z pozycji ogólnosystemowego Windows Runtime API, z perspektywy aplikacji Windows Store, jak i desktopowych. Najwięcej uwagi poświęciłem oczywiście dwóm światom Windows Store - XAML oraz HTML5. Czynię dużo aluzji do Windows 8, WPF czy Silverlight. Z takim bagażem przeszłości po prostu nie umiem spojrzeć już na najnowsze API inaczej…  W układaniu tekstu pomogły mi zarówno zmigrowane dotychczasowe rozwiązania w XAML i HTML5, jak również zupełnie nowe kawałki kodu. Cieszę, że udało mi się wszystko zrealizować, jak sobie założyłem. Powstał dość szczegółowy i precyzyjny obraz nowego systemu, oczywiście jak na gazetę. Inaczej powstałaby już książka –:) W każdym miejscu stawiałem na sedno sprawy, unikałem powtórzeń i zbytniego przegadania, chyba że trzeba było do czegoś nawiązać…

Zapraszam do lektury!

Hub1  Hub2