gate-value, doer wie schwer einfach sein kann...
Verfasst: 26. Januar 2007, 00:02
also in manchen (event) konstellationen brauch man schon unendlich viele module, für ne vglw. simpleste anforderung:
bspw: is das modul "value" null konfigurierbar, sodas man in der praxis oft nicht ohne die zusatzmodule order, seperator, compair, router, merge, etc. auskommt.
ein modul das ich schmerzlich vermisse ist ne art "value-gate". also ein value-modul das den übermittelten wert solange ausgibt (und danach hält) wie die gate-bedingung erfüllt ist, und erst neue werte erneut ausgibt, wenn die gate-bedingung abermals erfüllt ist. bspw: g = (exakt)1 = wahr. solange 1 bei g anliegt, gilt die bedingung erfüllt und werte am unteren value-port werden simpel durchgeschleift, als wäre nix dazwischen. aber wenn g ungleich 1, wird der port "geschlossen" und letzte wert einfach gehalten. erst ein erneutes öffnen des tores und eine werteänderung DANACH bewirkt einen neuen wert am out.
auf prim brauche ich für diese funktion neben dem value-modul ein compair/eqaul (nur 1 darf öfffnen, ), einen seperator (das compair/equal sendet auch bei rückschalten auf 0 ein event, das das value als trigger interpretiert) einen multiplizierer (damit der triggervorgang auch tatsächlich bei jeder werteänderung stattfindet UND ausgegeben wird) ) und noch mindestens ein order und selbst dann funzt das nur im positiven bereich (oder ich muss umständlich umverdrahten). und das alles für einen ganz simplen "low-level" wunsch.
ich denk mir in core wär das n paar nummern effizienter: ein write/read paar und ein (über aussenkonstante konfiguribares) compair sollten es lösen: es wird erst geschrieben/permanent ausgelesen, NACHDEM und SOLANGE die bedingung erfüllt wurde/ist, ist sie nicht mehr erfüllt wird der letzte wert gehalten. (vielleicht noch simpler über ein multiplizier-modul (solange bedingung erfüllt = multiplikation mit 1 = simples durchlassen. sobald nicht erfüllt, kein rücksprung auf 0, sondern einfach nur halten des wertes). (findet bei multiplikation mit 1 oder 0 tatsächlich ne "berechnung" statt oder wird der offensichtliche wert tatsächlich simple durchgeschleift? was ist cpu-technisch günstiger?? read/write oder pseudo-multiplikation???).
achso, was war eigentlich die frage? krieg ich das wie oben angedacht (read/write/compair) so easy in core hin oder liegen da kriegsentscheidende minenfelder?
ich versuch grad mich da einzudenken_ und siehe da, alles wird nur noch komplizierter:
(das read brauch man, weil write ohne read hochgradig samengestaut wäre aber prinzipiell ohne verbindung nix rausrücken kann, oder?)
die trennung read/write exiztiert, weil der zeitpunkt des einen oder anderen eminent wichtig ist.
beide greifen auf gemeinsamen speicher zu ("dargestellt" über das eigentliche array-"modul"), dessen ausgabewert write bestimmt, deren ausgabezeitpunkt aber von read kontrolliert wird, oder?
"speicher" meint in diesem zusammenhang aber auch nix anderes als bspw. jedes panel-element, oder jedes andere modul, das "einweg" variablen verarbeiten kann (anzahl arrys = 0, arraysize=1) also einen wert pro snap (sofern nicht anders spezifiziert).
wenn das alles richtig, muss ich doch nur sicherstellen das write zum richtigen zeit"punkt" werte empfängt (read empfängt gleichzeitig die lesewerte von write und wird ebenso gleichzeitig über die ausgabewerte von write "getriggert" - ergo: wenn write sihc nicht ändert, read = status quo).
wenn bis hierhin richtig, muss ich also lediglich sicherstellen, das write nur ändereungen empfängt wenn meine gestellte bedingung erfüllt wurde.
hier beginnt die schwirigkeit: das handbuch sagt zum lowlevel write ungefähr folgendes:
ein am OBEREN eingang anliegener wert wird in den speicher geshreiben, sobald ein wert am OBEREN eingang anliegt! ja, aber das gilt es doch gerade zu vermeiden, bzw. nur zuzulassen wenn noch eine weitere bedingung erfüllt ist. (analog gesprochen: nur wenn die tür offen ist, dürfen (können) neue gäste eintreten) --- (für alle anderen auch core-einsteiger: der untere port dient für core-spezifische, sogenannte OBCverbindungen, also reihenfolgen, speicherteilung, etc.)
ja was denn nun? wieviel lowleveler muss ich denn noch gehen? (mit core gehts jedenfalls nicht tiefer und die tatsche das man gäste nur bei offener tür empfangen möchte, (und nur ich habe den schlüssel, der ist in diesem fall exakt 1) muss in core genauuso umständlich wie in prim gelöst wrerden.
also, wenn nichmal diese simple funktion in core umsetzbar ist, bzw. genausoviel kostet wie in prim, ja, wozu der ganze schmuus???
bspw: is das modul "value" null konfigurierbar, sodas man in der praxis oft nicht ohne die zusatzmodule order, seperator, compair, router, merge, etc. auskommt.
ein modul das ich schmerzlich vermisse ist ne art "value-gate". also ein value-modul das den übermittelten wert solange ausgibt (und danach hält) wie die gate-bedingung erfüllt ist, und erst neue werte erneut ausgibt, wenn die gate-bedingung abermals erfüllt ist. bspw: g = (exakt)1 = wahr. solange 1 bei g anliegt, gilt die bedingung erfüllt und werte am unteren value-port werden simpel durchgeschleift, als wäre nix dazwischen. aber wenn g ungleich 1, wird der port "geschlossen" und letzte wert einfach gehalten. erst ein erneutes öffnen des tores und eine werteänderung DANACH bewirkt einen neuen wert am out.
auf prim brauche ich für diese funktion neben dem value-modul ein compair/eqaul (nur 1 darf öfffnen, ), einen seperator (das compair/equal sendet auch bei rückschalten auf 0 ein event, das das value als trigger interpretiert) einen multiplizierer (damit der triggervorgang auch tatsächlich bei jeder werteänderung stattfindet UND ausgegeben wird) ) und noch mindestens ein order und selbst dann funzt das nur im positiven bereich (oder ich muss umständlich umverdrahten). und das alles für einen ganz simplen "low-level" wunsch.
ich denk mir in core wär das n paar nummern effizienter: ein write/read paar und ein (über aussenkonstante konfiguribares) compair sollten es lösen: es wird erst geschrieben/permanent ausgelesen, NACHDEM und SOLANGE die bedingung erfüllt wurde/ist, ist sie nicht mehr erfüllt wird der letzte wert gehalten. (vielleicht noch simpler über ein multiplizier-modul (solange bedingung erfüllt = multiplikation mit 1 = simples durchlassen. sobald nicht erfüllt, kein rücksprung auf 0, sondern einfach nur halten des wertes). (findet bei multiplikation mit 1 oder 0 tatsächlich ne "berechnung" statt oder wird der offensichtliche wert tatsächlich simple durchgeschleift? was ist cpu-technisch günstiger?? read/write oder pseudo-multiplikation???).
achso, was war eigentlich die frage? krieg ich das wie oben angedacht (read/write/compair) so easy in core hin oder liegen da kriegsentscheidende minenfelder?
ich versuch grad mich da einzudenken_ und siehe da, alles wird nur noch komplizierter:
(das read brauch man, weil write ohne read hochgradig samengestaut wäre aber prinzipiell ohne verbindung nix rausrücken kann, oder?)
die trennung read/write exiztiert, weil der zeitpunkt des einen oder anderen eminent wichtig ist.
beide greifen auf gemeinsamen speicher zu ("dargestellt" über das eigentliche array-"modul"), dessen ausgabewert write bestimmt, deren ausgabezeitpunkt aber von read kontrolliert wird, oder?
"speicher" meint in diesem zusammenhang aber auch nix anderes als bspw. jedes panel-element, oder jedes andere modul, das "einweg" variablen verarbeiten kann (anzahl arrys = 0, arraysize=1) also einen wert pro snap (sofern nicht anders spezifiziert).
wenn das alles richtig, muss ich doch nur sicherstellen das write zum richtigen zeit"punkt" werte empfängt (read empfängt gleichzeitig die lesewerte von write und wird ebenso gleichzeitig über die ausgabewerte von write "getriggert" - ergo: wenn write sihc nicht ändert, read = status quo).
wenn bis hierhin richtig, muss ich also lediglich sicherstellen, das write nur ändereungen empfängt wenn meine gestellte bedingung erfüllt wurde.
hier beginnt die schwirigkeit: das handbuch sagt zum lowlevel write ungefähr folgendes:
ein am OBEREN eingang anliegener wert wird in den speicher geshreiben, sobald ein wert am OBEREN eingang anliegt! ja, aber das gilt es doch gerade zu vermeiden, bzw. nur zuzulassen wenn noch eine weitere bedingung erfüllt ist. (analog gesprochen: nur wenn die tür offen ist, dürfen (können) neue gäste eintreten) --- (für alle anderen auch core-einsteiger: der untere port dient für core-spezifische, sogenannte OBCverbindungen, also reihenfolgen, speicherteilung, etc.)
ja was denn nun? wieviel lowleveler muss ich denn noch gehen? (mit core gehts jedenfalls nicht tiefer und die tatsche das man gäste nur bei offener tür empfangen möchte, (und nur ich habe den schlüssel, der ist in diesem fall exakt 1) muss in core genauuso umständlich wie in prim gelöst wrerden.
also, wenn nichmal diese simple funktion in core umsetzbar ist, bzw. genausoviel kostet wie in prim, ja, wozu der ganze schmuus???