Програмирање протоком података

Из Википедије, слободне енциклопедије
Jump to navigation Jump to search

У рачунарском програмирању, рограмирање протоком података  је парадигма програмирања да модели програма су усмерени ка графику  података, да теку између операција, чиме спроводе принципе протока података и архитектуру. Податак-ток програмски језици деле неке карактеристике функционалних језика, и углавном су развијени да би довели неке функционалне концепте на језику више погодан за нумеричку обраду. Неки аутори користе термин параметара уместо податак-ток да би се избегла конфузија са податак-ток рачунарством или податак-ток архитектуром, на основу индетерминистичких парадигми машина. Податак-ток програмирање је пионир Џека Денниса и његових дипломираних студената на МИТ-а 1960.

Својства податак-ток програмских језика[уреди]

Традиционално, програм се моделира као низ операција које се дешавају у одређеном редоследу; ово може бити упућено као низ,[1] процедурално,[2] контрола протока[2] (што значи да програм изабере одређену пут), или императивно програмирање. Програм се фокусира на команде, у складу са фон Нојман[1]:p.3 визију секвенцијалног програмирања, где подаци обично "мирује".[3]

Насупрот томе, податак-ток програмирање наглашава кретање података и модела програма као низ веза. Експлицитно дефинисани улази и излази повезивање операција, које функционишу као црне кутије[4] Операција траје чим сви њени улаза постану важећи.[5] Тако податак-ток језици су суштински паралелни и могу радити добро у великим, децентрализованим система.[1]:p.3[6] [7]

Стање[уреди]

Један од кључних појмова у програмирању је идеја стања, у суштини снимак различитих услова у систему. Већина програмских језика захтевају значајну количину стања информација, које су обично скривене од програмера. Често сам рачунар нема појма који податак кодира трајно стање. Ово је озбиљан проблем, јер стање информација треба да се дели на више процесора у паралелним обрадама машина. Већина језика примора програмера да би додали додатни код да укаже који подаци и делови кода су важни за стање. Овај код има тенденцију да буде скуп у погледу перформанси, као и тешко читљив или дебагован. Експлицитни паралелизам је један од главних разлога за лоше резултате Ентерприсе Јава Беанс при изградњи дата-интензивне, не-ОЛТП апликације.

Где се линеарни програм може замислити као један радник који се креће између задатака (операције), а проток података програма је као низ радника на покретној траци, сваки ради одређени задатак кад год су материјали доступни. Од операције у питању је само доступност улазним подацима, они немају скривена стања да прате, и су сви "спремни" у исто време.

Репрезентација[уреди]

Податак-ток програми су заступљени на различите начине. Традиционални програм је обично представљен као низ текста упутства, који је основан за описивање серијских система цеви података између малих, сингл-сврха алата, процеса и повратка. Податак-ток програми почињу на улаз, можда командне линије параметара, и илуструју како да се подаци користе и модификовани. Проток података је експлицитан, често се визуелно илуструје као линије или цеви.

Што се тиче кодирања, податак-ток програма може се спровести као хеш табела, са јединствено идентификованим улазом, као кључеви, који се користе да се виде савети са упутствима. Када се било која операција заврши, програм скенира списак низа операција док не пронађе прву операцију у којој су сви улази тренутно активни и води га. Када се операција заврши, обично ће излазити подаци, чиме друга операција постаје важећа.

За паралелни рад, само списак треба да се дели; то је стање целог програма. Тако је задатак одржавања стања уклоњен од програмера и дат језичкој компоненти. На машинама са једним процесорским језгром где би имплементација дизајнирана за паралелни рад једноставно увела изнад, ово изнад се може потпуно уклонити помоћу другачијих компоненти.

Историја[уреди]

Пионир податак-ток језика је БЛОДИ (блок дијаграм), развијен од стране Јохана Ларри Келлиа, Јр., Керол Лоцхбаума и Виктора А. Виссотскија за одређивање семплованих система података.[8] БЛОДИ спецификација функционалних јединица (појачала, Гуја, линије за кашњење, итд) и њихове међусобне везе су саставили у једну петљу да ажурира цео систем за један сат.

Више конвенционалних протока података језици су првобитно развили да би паралелно програмирање олакшали. У Берт Сутхерланду је 1966. године  теза, он-лине Графичка Спецификација Рачунар процедура,[9] Сатерленд створена једна од првих графичких протока података у програмским оквирима. Накнадни подаци-ток језици су често развијена у великим суперрачунар лабораторијама. Један од најпопуларнијих је СИСАЛ, развијен у Лавренц Ливерморе националној лабораторији. СИСАЛ личи на већиниујезика извештаја погона, али променљиве треба доделити једном. Ово омогућава преводиоцу да лако идентификује улазе и излазе. Развијен је број огранака Сиса, укључујући САЦ, Сингл Ассигнмент C, који покушава да остане што ближе популарном C програмском језику ако је могуће.

Морнарица Сједињенних Америчких Држава финансирала је развој АЦОС и СПГН (обрада сигнала графичких ознака) са почетком у раним 1980-их. Ово је у употреби на више платформа на терену данас.[10]

Више радикални концепт је Програпх, у коме су програми изграђена као графици на екрану, а променљиве су у потпуности замењене линијама које повезују улазе у излазе. Узгред, Програпх је првобитно написан за Макинтош, који је остао јединствен-процесор до увођења ДаиСтар Генесис МП 1996. године.

Постоје многе хардверске архитектуре оријентисане ка ефикасном спровођењу податак-ток модела програмирања. МИТ означен симбол протока података архитектуре је дизајнирао Грег Пападопулос.

Проток података је предложен као апстракција за одређивање глобалног понашања дистрибуираних компоненти система: уживо дистрибуирани објекати програмског модела, дистрибуирани токови података се користи за чување и комуницирају стања, и као такви, они играју улогу описану у варијаблама, пољима и параметрима у Јава програмским језицима као што су.

Језици[уреди]

Апликациони програмски интерфејс[уреди]

  • DC: Библиотека која омогућава уграђивање у једном смеру податак-ток ограничења у C/C ++ програма. 
  • СистемC: Библиотека за C ++, углавном усмерена на дизајн хардвера. 
  • MDF Библиотека за пајтон у циљу финансијских модела

Види још[уреди]

Референце[уреди]

  1. 1,0 1,1 1,2 Johnston, Wesley M.; J.R. Paul Hanna; Millar, Richard J. (2004). „Advances in Dataflow Programming Languages” (PDF). ACM Computing Surveys. 36: 1—34. doi:10.1145/1013208.1013209. Приступљено 15. 08. 2013. 
  2. 2,0 2,1 2,2 Wadge, William W.; Ashcroft, Edward A. (1985). Lucid, the Dataflow Programming Language (PDF) (illustrated изд.). Academia Press. ISBN 9780127296500. Приступљено 15. 08. 2013. 
  3. ^ Wadge & Ashcroft (1985). стр. 7.
  4. ^ Wadge & Ashcroft (1985). стр. 2.
  5. 5,0 5,1 „Dataflow Programming Basics”. Getting Started with NI Products. National Instruments Corporation. Приступљено 15. 08. 2013. 
  6. ^ Harter, Richard. „Data Flow languages and programming - Part I”. Richard Harter's World. Приступљено 15. 08. 2013. 
  7. ^ „Why Dataflow Programming Languages are Ideal for Programming Parallel Hardware”. Multicore Programming Fundamentals Whitepaper Series. National Instruments Corporation. Приступљено 15. 08. 2013. 
  8. ^ Kelly, John L. Jr., Carol Lochbaum, V. A. Vyssotsky (1961). „A block diagram compiler”. Bell System Tech. J. 40: 669—678. doi:10.1002/j.1538-7305.1961.tb03236.x. 
  9. ^ W.R. Sutherland (1966). „The On-line Graphical Specification of Computer Procedures”. MIT. 
  10. ^ Underwater Acoustic Data Processing, Y.T. Chan

Литература[уреди]

Спољашње везе[уреди]