MTS 2009: Programowanie równoległe

Przyszłość równoległego programowania dla .NET

Przykładowy kod wykorzystujący TPL

Task<double>[] taskArray = new Task<double>[]

{

Task<double>.Factory.StartNew(() => DoComputation1()),

Task<double>.Factory.StartNew(() => DoComputation2()),

Task<double>.Factory.StartNew(() => DoComputation3())

};

double[] results = new double[taskArray.Length];

for(int i = 0; i < taskArray.Length; i++)

results[i] = taskArray[i].Result;

O ile Visual Studio 2010 potraktujemy jako teraźniejszość, to przyszłość rozwoju równoległego oprogramowania dla .NET może stanowić język Axum, wcześniej nazwany "Maestro". Właśnie o nim opowiadał na konferencji Lang.NET w kwietniu tego roku Joshua Phillips, program manager w zespole Parallel Computing Platform w Microsoft. Według niego Axum zapewni znacznie bardziej wydajną pracę programistów, dzięki usunięciu niejawnych zależności czy wprowadzeniu deklaratywnego modelu zarządzania stanem. W podobnym tonie wypowiada się Niklas Gustafsson, architekt pracujący w tym samym zespole. Twierdzi on, że podstawową zasadą Axum będzie wyeliminowanie złożoności do takiego stopnia, że programista będzie tworzył aplikację równoległą nie wiedząc o tym. Od strony technicznej Axum ma opierać się na wykorzystaniu pamięci współdzielonej. W tej chwili język ten znajduje się jeszcze we wczesnej fazie rozwoju, ale jego wczesne wersje już są do pobrania ze stron Microsoftu. Wydaje się, że koncern ten czeka na informację zwrotną od programistów oraz potencjalnych klientów i dopiero na tej podstawie podejmie decyzje o przyszłości tego projektu.

Potencjalny konkurent platformy .NET, a mianowicie Java także rozwija funkcjonalności dla programistów aplikacji równoległych. JDK 5.0 wprowadziło pakiet java.util.concurrent pozwalający na wykorzystanie pewnych elementów gruboziarnistej równoległości. Dopiero przyszła wersja Javy razem z JDK 7.0 planowanymi na początek przyszłego roku dostarczą szerszej gamy funkcjonalności. Ciężko jednoznacznie stwierdzić, czy .NET Framework 4.0, czy może JDK 7.0 oferuje lepsze narzędzia. Na pierwszy rzut oka ich nowe elementy wydają się podobne. Jednakże o ile są ważne funkcje biblioteczne czy bogactwo języka, o tyle rzadko wpływają one na decyzje dotyczące wyboru platformy programistycznej. To z czego należy się cieszyć, to fakt, że programowanie równoległe przestaje być niszą, wchodzi do głównego trendu, a najpoważniejsze platformy programistyczne będą prześcigać się w oferowaniu coraz lepszych narzędzi dla programistów aplikacji wielowątkowych.

Zapraszamy na Microsoft Technology Summit 2009, które odbędzie się w Warszawie w dniach 29-30 września br. Computerworld jest partnerem medialnym tego wydarzenia.


TOP 200