Deklaratív konkurens programozás kémia segítségével

A minap találkoztam ezzel az érdekes videóval.
A Chymyst nevű, nyílt forrású, deklaratív programozást nagyon egyszerűvé tévő könyvtár használata, valamint a segítségével a Chemical machine, vagy más néven Join calculus bemutatása történik.

Használata tényleg roppant egyszerű:
1. Meg kell határozni az egyes molekulákat, amik az információt is hordozzák.
2. Meg kell határozni az egyes kémiai reakciókat; vagyis mely molekulák együttese lép reakcióba és milyen molekulák lesznek az eredményei. Természetesen side effect is történhet a reakció során.

Ezután a rendszerbe tetszőleges sorrendben és időben érkezhetnek az egyes molekulák, amelyek "kémiai" reakciókat indítanak akár egymással párhuzamosan, amelyek új molekulákat hoznak létre és így tovább.

Nagyon érdekes és roppant egyszerű ez a modell!

Bár az adott könyvtár még nem a legjobb hatásfokú, de azért az elvvel mindenképp érdemes megismerkedni, illetve ahol nem kell a nagy teljesítmény ott már most is jól használható.

Hozzászólások

Majd ha lesz DNS alapú számítógépem, kipróbálom rajta :D

Köszi a linket, erre rá fogok nézni!

Még a szakdolgozat témám volt a Higher Order Chemical Language, ami mögött a gamma kalkulus a matematikai formalizmus. A kémiai reakciókból mintázott számítás ötlete bújik meg ott is a háttérben és ahogy nézem az INRIA-bál indult mindkettő, szóval érdekel, hogy ez a Chymyst hogyan viszonyul a HOCL-hez. Az nyilvánvaló, hogy előrébb tart.

A „használata roppant egyszerű” részhez azonban hozzátenném, hogy papírom valóban roppant egyszerű, de amikor a feladatot független elemekké (reakcióképes molekulákká) bontod, az fejben sokszor minden csak nem egyszerű, bár ez jelentős részben abból adódik, hogy a Neumann-féle szekvenciális modellben tanultunk gondolkodni. :)
______________
"If you immediately know the candlelight is fire, the meal was cooked a long time ago."

A „használata roppant egyszerű” részhez azonban hozzátenném

Igen, a probléma ilyetén formába történő lemodellezése nem biztos, hogy egyszerű. Ha viszont már lemodelleztük, akkor a fenti könyvtár segítségével nagyon egyszerű "leprogramozni". Én ez utóbbira gondoltam, hogy egyszerű.

Amit hoz példát, a filozófusok étkezése (megtalálható a Rosetta-n), arra nagyon egyszerű a modell is a problémára. Egyébként a Rosetta-n a JoCaml első megoldása is ezt a módszert használja.

"Dekleratív"

Hol van az Igazsagos Nyelvizom Tybor, amikor szukseg van ra? :(