Компьютердик программалоодо маалымат агымынын программалоосу-программаны операциялардын ортосунда агып жаткан маалыматтардын багытталган графиги катары моделдештирген программалоо парадигмасы, ошентип маалымат агымынын принциптерин жана архитектурасын ишке ашырат.[1] Маалымат агымын программалоо тилдери функционалдык тилдердин айрым өзгөчөлүктөрүн бөлүшөт жана сандык иштетүүгө ылайыктуу тилге айрым функционалдык түшүнүктөрдү алып келүү үчүн иштелип чыккан. Айрым авторлор маалымат агымын эсептөө же маалымат агымынын архитектурасы менен чаташтырууну болтурбоо үчүн маалымат агымынын ордуна маалымат агымы деген терминди колдонушат. Маалымат агымынын программалоосун 1960-жылдары МТИДЕ Джек Деннис жана анын аспиранттары негиздеген.

Ойлор түзөтүү

Салт боюнча, программа белгилүү бир тартипте болуп жаткан операциялардын сериясы катары моделделет; бул ырааттуу деп атоого болот, [2] процедуралык, [3] <a href="https://en.wikipedia.org/wiki/Control_flow" rel="mw:ExtLink" title="Control flow" class="cx-link" data-linkid="20">control flow</a>[3] (программа белгилүү бир жолду тандаганын көрсөтөт), же императивдик программалоо деп аталат. Программа вон Нейманга ылайык буйруктарга багытталат [2] бул кезде

маалыматтар адатта "эс алууда". [3]

Ал эми маалымат агымынын программалоосу маалыматтардын кыймылын баса белгилейт жана программаларды байланыштардын сериясы катары моделдейт..Ачык аныкталган киргизүүлөр жана чыгаруулар операцияларды бириктирет, алар кара кутучалардай иштейт.[3] Операциянын бардык киргизүүлөрү жарактуу болгондон кийин гана иштейт. Ошентип, маалымат агымынын тилдери табиятынан параллелдүү жана чоң борбордон ажыратылган системаларда жакшы иштей алышат.[2][4] [5]

Компьютердик программалоодогу негизги түшүнүктөрдүн бири - бул системанын ар кандай шарттарынын сүрөтү болгон абал . Көпчүлүк программалоо тилдери жалпысынан программисттен жашырылган мамлекеттик маалыматтын олуттуу көлөмүн талап кылат. Көбүнчө компьютердин өзү кайсы маалымат үзгүлтүксүз абалды коддоорун билбейт. Бул олуттуу көйгөй, анткени мамлекеттик маалымат параллелдүү иштетүү машиналарында бир нече процессорлор аркылуу бөлүштүрүлүшү керек. Көпчүлүк тилдер программистти коддун кайсы маалыматтары жана бөлүктөрү мамлекет үчүн маанилүү экендигин көрсөтүү үчүн кошумча код кошууга мажбурлайт. Бул код аткаруу жагынан кымбат, ошондой эле окуу же мүчүлүштүктөрдү оңдоо кыйынга турат. <a href="https://en.wikipedia.org/wiki/Explicit_parallelism" rel="mw:ExtLink" title="Explicit parallelism" class="cx-link" data-linkid="41">Explicit parallelism</a>, маалыматты көп талап кылган, <a href="https://en.wikipedia.org/wiki/Online_transaction_processing" rel="mw:ExtLink" title="Online transaction processing" class="cx-link" data-linkid="43">OLTP</a> эмес тиркемелерди курууда Enterprise Java Beansначар иштешинин негизги себептеринин бири. 

Эгерде ырааттуу программаны тапшырмалардын (операциялардын) ортосунда жүргөн бир эле жумушчу катары элестетүүгө мүмкүн болсо, анда маалымат агымынын программасы бир катар жумушчуларга окшош монтаждоо линиясы, ар бири белгилүү бир тапшырманы аткарат, эгерде материалдар бар болсо гана.

Операциялар маалыматтардын жеткиликтүүлүгүнө гана байланыштуу болгондуктан, алардын жашыруун абалы жок жана алардын бардыгы бир эле учурда "даяр".

Өкүлчүлүк түзөтүү

Маалымат агымынын программалары ар кандай жолдор менен көрсөтүлөт. Адатта, салттуу программа тексттик көрсөтмөлөрдүн сериясы катары көрсөтүлөт, ал маалыматтарды кабыл алган, иштеткен жана кайтарган кичинекей, бир максаттуу куралдардын ортосунда өткөрүүчү сериялык системаны сүрөттөө үчүн акылга сыярлык. Маалымат агымынын программалары киргизүү менен башталат, балким <a href="https://en.wikipedia.org/wiki/Command_line" rel="mw:ExtLink" title="Command line" class="mw-redirect cx-link" data-linkid="53">command line</a> параметрлер, жана бул маалыматтар кандайча колдонуларын жана кандайча өзгөртүлгөнүн көрсөтөт. Маалыматтардын агымы ачык, көбүнчө сызык же түтүк катары визуалдык түрдө көрсөтүлөт.

Параллелдүү иштөө үчүн тизмени гана бөлүшүү керек; бул бүтүндөй программанын абалы. Ошентип, абалды сактоо милдети программисттен алынып, тилге берилет иштөө убактысы. Бир процессордук ядросу бар машиналарда, анда параллель иштөө үчүн иштелип чыккан ишке ашыруу жөн гана үстүнкү чыгымдарды киргизет, бул үстүнкү чыгымдарды башка иштөө убактысын колдонуу менен толугу менен алып салууга болот.

Кошумча жаңыртуулар түзөтүү

Акыркы маалымат агымынын китепканалары, мисалы: Дифференциалдык/Өз убагында маалымат агымы колдонулган өсүш менен эсептөө маалыматтарды кыйла натыйжалуу иштетүү үчүн.[1][6][7]

Тарых түзөтүү

Маалымат агымынын алгачкы тили БЛОДИ (Блок диаграммасы), 1961-жылы жарыяланган Джон Ларри Келли ,Карол Лохбаум жана Виктор А. Высоцкий көрсөтүү үчүн үлгү алынган маалымат системалары.[8] Функционалдык бирдиктердин (күчөткүчтөр, кошумчалар, кечиктирүү линиялары ж.б.) БЛОДИ спецификациясы.) жана алардын өз ара байланыштары бир циклге бириктирилген, ал бүтүндөй системаны бир сааттык тик үчүн жаңырткан.

1966-жылы докторлук диссертациясында, Компьютердик процедуралардын онлайн графикалык спецификациясы,Bert Sutherlandпараллель программалоону жеңилдетүү үчүн биринчи графикалык маалымат агымынын программалоо алкактарын түздү. Кийинки маалымат агымынын тилдери көбүнчө жалпысынан иштелип чыккан суперкомпьютер лабораториялар. Погол, башкача айтканда, маалыматтарды иштетүүчү Кадимки тил Улуттук коопсуздук кызматы, бир нече файл-файл операцияларынан турган чоң масштабдагы тиркемелерди түзгөн, мисалы, бириктирүү, таңдоо, жыйынтыктоо же трансформациялоо, орто файлдарды түзүүнү же жазууну мүмкүн болушунча жок кылган натыйжалуу код. <a href="https://en.wikipedia.org/wiki/SISAL" rel="mw:ExtLink" title="SISAL" class="cx-link" data-linkid="82">SISAL</a>, маалымат агымынын популярдуу тили <a href="https://en.wikipedia.org/wiki/Lawrence_Livermore_National_Laboratory" rel="mw:ExtLink" title="Lawrence Livermore National Laboratory" class="cx-link" data-linkid="83">Lawrence Livermore National Laboratory</a>, көпчүлүк сүйлөмдөргө негизделген тилдерге окшош, бирок өзгөрмөлөр болушу керек деп бир жолу берилген. Бул компилятор киргизүүлөрдү жана чыгарууларды оңой аныктоого уруксат берет. СИЗАЛДЫН бир катар бутактары иштелип чыккан, анын ичинде: SAC, Single Assignment C, мүмкүн болушунча популярдуу С программалоо тилине жакын болууга аракет кылат.




Америка Кошмо Штаттарынын Аскер-Деңиз Флоту 1980-жылдардын башында ACOS жана SPGN (сигналдарды иштетүү график жазуусу) иштеп чыгууну каржылаган. Бул бүгүнкү күндө талаадагы бир катар платформаларда колдонулуп жатат.[9]

Радикалдуу түшүнүк: Программа, программалар экранда графиктер катары курулат жана өзгөрмөлөр толугу менен киргизүүлөрдү чыгарууларга байланыштырган сызыктар менен алмаштырылат. Программанын башында Макинтош, бир процессор болуп калган Күндүзгү жылдыздын жаралышы 1996-жылы болгон.

Маалымат агымынын программалоо моделдерин натыйжалуу ишке ашырууга багытталган көптөгөн аппараттык архитектуралар бар. [<span title="This information is too vague. (September 2023)">белгисиз</span>] МТИнин белгиси менен белгиленген маалымат агымынын архитектурасы Грег Пападопулос. [<span title="The material near this tag may be giving undue weight to a viewpoint or idea. (September 2023)">ашыкча салмак?</span> ]

  1. 1.0 1.1 The Remarkable Utility of Dataflow Computing (7 March 2020). Цитатанын катасы: Invalid <ref> tag; name "sigops" defined multiple times with different content
  2. 2.0 2.1 2.2 Johnston, Wesley M.; J.R. Paul Hanna. Advances in Dataflow Programming Languages. http://www.cs.ucf.edu/~dcm/Teaching/COT4810-Spring2011/Literature/DataFlowProgrammingLanguages.pdf. Retrieved 15 August 2013.  Цитатанын катасы: Invalid <ref> tag; name "advances" defined multiple times with different content
  3. 3.0 3.1 3.2 3.3 Wadge, William W.; Edward A. Ashcroft (1985). Lucid, the Dataflow Programming Language  (illustrated ed.). Academia Press. ISBN 9780127296500. Retrieved 15 August 2013.  Цитатанын катасы: Invalid <ref> tag; name "lucid" defined multiple times with different content
  4. Data Flow languages and programming - Part I. Richard Harter's World. Текшерилген күнү 15 -август (баш оона) 2013.
  5. Why Dataflow Programming Languages are Ideal for Programming Parallel Hardware. Multicore Programming Fundamentals Whitepaper Series. National Instruments Corporation. Текшерилген күнү 15 -август (баш оона) 2013.
  6. Differential dataflow (5 January 2013).
  7. Differential Dataflow (30 July 2022).
  8. John L. Kelly Jr.. A block diagram compiler. 
  9. Underwater Acoustic Data Processing, Y.T. Chan
  • <a href="https://en.wikipedia.org/wiki/Apache_Beam" rel="mw:ExtLink" title="Apache Beam" class="cx-link" data-linkid="190">Apache Beam</a>: Java/Scala SDK агымдуу (жана партиялык) иштетүүнү бир нече аткаруу кыймылдаткычтары менен бириктирет (Apache Spark, Apache Flink, Google маалымат агымы ж.б.).)
  • <a href="https://en.wikipedia.org/wiki/Apache_Flink" rel="mw:ExtLink" title="Apache Flink" class="cx-link" data-linkid="192">Apache Flink</a>: Жава/Скала китепканасы бул агымдуу (жана топтомдук) эсептөөлөрдү бөлүштүрүлгөн Хадуп (же башка) кластердин үстүндө жүргүзүүгө мүмкүндүк берет
  • <a href="https://en.wikipedia.org/wiki/Apache_Spark" rel="mw:ExtLink" title="Apache Spark" class="cx-link" data-linkid="194">Apache Spark</a>
  • SystemC C++ үчүн китепкана, негизинен аппараттык дизайнга багытталган.
  • TensorFlow: Маалымат агымынын программалоосуна негизделген машинаны үйрөнүү китепканасы.

Ошондой эле караңыз түзөтүү

Калып:Types of programming languages