RSS Feed LinkedIn Google Plus

Turn Based Processing

2013. február 28. csütörtök

Megnéztem Crockford bácsi videóját a Monadokról, küldöm mindenkinek, aki szereti. :)

Szó volt a Monadokról, a turn based programozási nyelvekről,  és a promise-okról, a középsőt szeretném kiemelni. A körökre osztott feldolgozás jellemzői:

  • egy szálon fut (bár JavaScriptben vannak érdekes dolgok), emiatt
    • versenyhelyzet-mentes
    • nincsen deadlock
  • A körökre osztottság alapszabályai:
    • sose várj
    • sose blokkolj
    • gyorsan fejezd be az adott műveletet
  • Események és üzenetek vannak, de szálak, mutexek nincsenek.
  • A fentiek miatt a program meghatározó része az aszinkronitás, de a promise-okkal gördülékenyen kezelhető
  • Ezen az elven működnek:
    • a web böngészők
    • a legtöbb UI keretrendszer (lásd: main loop)
    • több szerver keretrendszer: Elko (Java), Twisted (Python), NodeJS

Persze, vannak hátrányai is, az egyik ilyen, hogy a többszálú programokkal ellentétben minden “kör” esetén a 0-ról épül fel a stack, azaz az időben nem tudunk visszamenni, csak előre. (Más részről viszont sok esetben könnyebb debugolni az esemény alapú szituációt, mint amikor két szál véletlenszerűen összeakad.)

Talán mondanom sem kell, a JavaScript volt az a nyelv, ami elterjesztette a closure használatát, vagyis hogy a külső függvény változóit (lokális hatókörét) a belső függvényből elérhetjük.

A JavaScript jó nyelv. Csak tudni kell használni.


Nincs hozzászólás

Vélemény?

Bocsánat, de a bejegyzéshez egyelőre nem engedélyezett a hozzászólás.