Przyszłość programowania

Przetwarzanie równoległe, rozproszenie, otwartość i bezpieczeństwo stają się najważniejszymi wyzwaniami dla programistów. Coraz mniej aplikacji stanowi jednolitą, autonomiczną całość, zdolną funkcjonować na "informacyjnej wyspie" komputera wyposażonego w system operacyjny i urządzenia peryferyjne.

Przyszłość programowania

Średnio raz na dekadę ogłaszana jest śmieć tradycyjnego programowania i koniec zawodu programisty. Dwadzieścia lat temu miało to się stać dzięki nowej generacji narzędzi CASE, potem dzięki frameworkom pozwalającym intencję analityka zawartą w diagramach przełożyć natychmiast na kod, niedawno zaś dzięki środowiskom dającym możliwość stosowania tzw. mashupów aplikacyjnych.

Dzisiaj jednak nikt już nie ogłasza śmierci języka programowania jako narzędzia ani tekstu jako sposobu wyrażania zamysłu inżyniera oprogramowania. Mimo różnych pomysłów i narzędzi - diagramów, opisu intencji, sieci semantycznych - podstawowym sposobem wyrazu pozostaje opis tekstowy, napisany wedle reguł składni danego języka. Znane przysłowie mówi, że jeden obrazek wart jest tyle, co tysiąc słów - w programowaniu nadal kilka linijek kodu z powodzeniem zastępuje tysiąc obrazów.

Ewolucja języków programowania wydaje się posuwać wolno, i do tego nie zawsze w jednym kierunku, raczej w nawracających cyklach, w rytmie trendów, prądów i mód. Na przykład, po etapie silnie ustrukturalizowanych, silnie typowanych języków programowania (C++, C, Java) mamy etap słabych typów (PHP, Ruby); po czasie rozbudowanych, zintegrowanych, komercyjnych środowisk IDE, wyposażonych w biblioteki, mamy czas lekkich, prostych środowisk, na dodatek udostępnianych każdemu i za darmo poprzez otwarte źródła.

Naprawdę zmieniają się tylko wyzwania w programowaniu. Czas powiedzieć, jak wyglądają one dziś, AD 2010.

Współbieżność

Fundamentalne zmiany dla programowania przychodzą ze świata technologii sprzętowych i sieciowych. Jest nią zbliżający się koniec działania prawa Moore’a i nadejście świata określanego multicore.

Współczesne architektury komputerów rzadko oferują programiście komfort, który miał on jeszcze kilka lat temu - traktowania maszyny jako dostępnej wyłącznie dla swojego programu, zaś ciągu programu jako liniowej sekwencji funkcji, pętli i warunków. Rzeczywistość, w jakiej żyje dzisiejszy autor oprogramowania, to wielordzeniowe architektury, w której to rzeczywistości każde zadanie musi być rozpisane na niezależne "głosy", umiejętnie synchronizujące swoje działanie oraz zapewniające równoległy dostęp do zasobów i rozwiązanie problemów z nim związanych (wyścig, deadlock, transakcje, itd.). Współczesne środowiska programistyczne w ograniczonym stopniu wspierają budowę takich rozwiązań, zaś uczelnie wyższe i kursy programistyczne na razie jeszcze nie traktują programowania równoległego jak tematu głównego nurtu, a raczej jako niszowe zastosowanie dla potrzeb superkomputerów.

Tymczasem, mikroprocesory osiągnęły swoje bariery technologiczne, związane nie tyle ze stopniem miniaturyzacji, co z problemem odprowadzania ciepła. Przyspieszenie dotychczasowych aplikacji oraz zwiększanie ich funkcjonalności nie jest możliwe bez zwiększenia prędkości, a to wymaga architektur wielordzeniowych. Tymczasem, zgodnie z prawem Amdahla, mnożenie liczby rdzeni bez przebudowy algorytmów niekoniecznie prowadzi do zwiększania prędkości.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200