ОгњенИвановиц/Превод2
Модел програмирања је модел извршавања повезан са API-јем или одређеним обрасцем кода. У овом стилу у игри су заправо два модела извршења: модел извршења основног програмског језика и модел извршења програмског модела. Пример је Spark где је Java основни језик, а Spark је програмски модел. Извршење може бити засновано на ономе што изгледа као позив библиотеке. Други примери укључују библиотеку POSIX Threads и Хадооп-ов MapReduce.[1] У оба случаја, модел извршења програмског модела се разликује од оног у основном језику на којем је код написан. На пример, програмски језик C нема улогу у свом моделу извршавања за унос/излаз нити улогу нити. Али таква функција се може позвати из C синтаксе, упућивањем онога што изгледа као позив нормалној C библиотеци.
Оно што разликује модел програмирања од нормалне библиотеке је то што се функција позива не може разумети у смислу језика на којем је програм написан. На пример, функција позива у POSIX библиотеку нити не може се разумети у смислу C језика. Разлог је тај што позив позива извршни модел који се разликује од модела извршавања језика. Ово позивање модела екстерног извршавања је дефинишућа карактеристика програмског модела, за разлику од програмског језика.
У паралелном рачунарству, модел извршења често мора да изложи карактеристике хардвера да би постигао високе перформансе. Велика количина варијација у паралелном хардверу узрокује истовремену потребу за слично великим бројем модела паралелног извршавања. Непрактично је правити нови језик за сваки модел извршења, стога је уобичајена пракса позивати се на функције модела паралелног извршавања преко API-ја. Дакле, већина напора у програмирању се ради преко модела паралелног програмирања, а не паралелних језика. Терминологија око таквих модела програмирања тежи да се фокусира на детаље хардвера који је инспирисао модел извршења, а у том изолованом свету формира се погрешно уверење да је модел програмирања само за случај када је модел извршења блиско усклађен са карактеристикама хардвера. [2]
Референце
уреди- ↑ IBM. „What is MapReduce“.
- ↑ Barcelona Supercomputing Center. „COMP Superscalar Programming Model“.