• Artykuły
  • Forum
  • Ciekawostki
  • Encyklopedia
  • Deklaratywne aspekty programowania wielordzeniowego, Austin, USA

    29.11.2010. 16:26
    opublikowane przez: Redakcja Naukowy.pl

    Dnia 23 stycznia 2011 r. w Austin, USA, odbędzie się konferencja pt. "Deklaratywne aspekty programowania wielordzeniowego".

    Wielu producentów chipów wybiera wielordzeniowość jako sposób na zapewnienie wydajności swoim procesorom do zastosowań biurowych, przemysłowych i mobilnych. Ten nowy trend może zakończyć się fiaskiem w perspektywie długoterminowej, jeżeli najpopularniejsze aplikacje nie będą w stanie pracować równolegle, wykorzystując dziesiątki a nawet setki wątków oferowanych przez sprzęt.

    Architektury wielordzeniowe różnią się w znaczący sposób od swoich poprzedników z pamięcią dzieloną. Na przykład komunikacja w celu obliczenia wskaźnika prędkości przesyłu prawdopodobnie będzie lepsza, co pozytywnie wpłynie na wydajność. W ujęciu bardziej ogólnym architektury wielordzeniowe wprowadzają kilka nowych wymiarów zmienności zarówno pod względem zapewnienia wydajności, jak i spójności architekturowej, takich jak model pamięci, które mogą pozostać nieustabilizowane jeszcze przez kilka etapów rozwoju produktu.

    To będą szóste z serii warsztatów mających na celu badanie pomysłów w zakresie projektowania języka programowania deklaratywnego, który zdecydowanie uprości programowanie architektur wielordzeniowych oraz w sposób ogólny silnie powiązanych architektur równoległych.

    Za: CORDIS

    Czy wiesz ĹĽe...? (beta)
    Programowanie deklaratywne — rodzina paradygmatów programowania, które nie są z natury imperatywne. W przeciwieństwie do programów napisanych imperatywnie, programista opisuje warunki, jakie musi spełniać końcowe rozwiązanie (co chcemy osiągnąć), a nie szczegółową sekwencję kroków, które do niego prowadzą (jak to zrobić). Programowanie deklaratywne często traktuje programy jako pewne hipotezy wyrażone w logice formalnej, a wykonywanie obliczeń jako ich dowodzenie. Programowanie deklaratywne jest szczególnym przedmiotem zainteresowania naukowców, gdyż dzięki minimalizacji lub eliminacji skutków ubocznych może znacząco uprościć tworzenie programów współbieżnych. Paradygmat programowania deklaratywnego obejmuje szeroką gamę języków programowania i bardziej szczegółowych paradygmatów podrzędnych. Brute force and ignorance, BFI (pol. "brutalna siła i ignorancja") - popularne określenie techniki programowania używane przez producentów oprogramowania. Sposób kodowania nie zwracający uwagi na to, czy te same problemy zostały już wcześniej rozwiązane w bardziej elegancki sposób. Metoda typowa dla programistów przywiązanych do dogmatycznych metod programowania, charakterystyczna dla "larwalnego" etapu kodowania, z którego wielu programistów nigdy nie wyrasta. Programowanie logiczne (nazywane także programowaniem w logice lub programowaniem w języku logiki) to będąca odmianą programowania deklaratywnego metoda programowania, w której program podawany jest jako pewien zestaw zależności, a obliczenia są dowodem pewnego twierdzenia w oparciu o te zależności.

    OpenMP (ang. Open Multi-Processing) – wieloplatformowy interfejs programowania aplikacji (API) umożliwiający tworzenie programów komputerowych dla systemów wieloprocesorowych z pamięcią dzieloną. Może być wykorzystywany w językach programowania C, C++ i Fortran na wielu architekturach, m.in. Unix i Microsoft Windows. Składa się ze zbioru dyrektyw kompilatora, bibliotek oraz zmiennych środowiskowych mających wpływ na sposób wykonywania się programu. Atrybut rozmieszczenia zmiennej w pamięci, to atrybut nadawany zmiennej w kodzie źródłowym, modyfikujący sposób rozmieszczenia przez translator danej zmiennej w pamięci operacyjnej. Atrybuty rozmieszczenia definiowane są w składni określonego języka programowania, lub przez jego konkretną implementację.

    Programowanie komputerów to proces projektowania, tworzenia, testowania i utrzymywania kodu źródłowego programów komputerowych lub urządzeń mikroprocesorowych (mikrokontrolery). Kod źródłowy jest napisany w języku programowania, z użyciem określonych reguł, może on być modyfikacją istniejącego programu lub czymś zupełnie nowym. Programowanie wymaga dużej wiedzy i doświadczenia w wielu różnych dziedzinach, jak projektowanie aplikacji, algorytmika, struktury danych, znajomość języków programowania i narzędzi programistycznych, wiedza nt. kompilatorów, czy sposób działania podzespołów komputera. W inżynierii oprogramowania, programowanie (implementacja) jest tylko jednym z etapów powstawania programu. Programista, zwany też potocznie koderem to osoba, która tworzy programy komputerowe w pewnym języku programowania. Termin ten może odnosić się także do specjalisty w jednej dziedzinie programowania. Większość programistów zna co najmniej kilka języków programowania (np. C, C++, Java), lecz specjalizuje się tylko w wybranych z nich. Nazwa głównego języka jest często dodawana do nazwy stanowiska, np. programista C++, aby podkreślić specjalizację.

    Programowanie uogólnione (lub generyczne, z ang. generic programming) – jeden z paradygmatów programowania. Programowanie uogólnione pozwala na pisanie kodu programu bez wcześniejszej znajomości typów danych, na których kod ten będzie pracował. Obecnie wiele języków programowania ma możliwość wykorzystywania uogólnień, np. C++, D, Java oraz Haskell. Common Lisp (często skracane do CL) – dialekt języka programowania Lisp, stworzony przez ANSI (X3.226-1994) jako specyfikacja, nie implementacja. Istnieje kilka implementacji, zarówno zamkniętych, jak i dostępnych jako FOSS. Common Lisp jest wieloparadygmatowym językiem programowania ogólnego przeznaczenia, skupiającym się na programowaniu funkcyjnym, pozwalając jednak stosować obiektowość, co daje programiście dużą swobodę.

    Programowanie funkcyjne (lub programowanie funkcjonalne) – filozofia i metodyka programowania będąca odmianą programowania deklaratywnego, w której funkcje należą do wartości podstawowych, a nacisk kładzie się na wartościowanie (często rekurencyjnych) funkcji, a nie na wykonywanie poleceń.

    Smalltalk jest w pełni obiektowym, reflektywnym językiem programowania z dynamicznym typowaniem. Umożliwia to w praktyce zupełnie inny sposób programowania od tego, do jakiego są przyzwyczajeni programiści używający współczesnych języków obiektowych (np. Java), które rozwinęły się z wcześniejszych języków proceduralnych takich jak C, czy Pascal.

    Ezoteryczny język programowania – język programowania tworzony w celu badania i demonstracji niekonwencjonalnych technik programistycznych oraz metod programowania. Zazwyczaj nie jest on przeznaczony do pisania rzeczywistych aplikacji. Języki tego typu są popularne wśród hackerów oraz entuzjastów programowania. Termin ezoteryczny służy do odróżnienia ich od pozostałych języków.

    Dodano: 29.11.2010. 16:26  


    Najnowsze