-
21. Data: 2013-06-05 18:05:08
Temat: Re: non-tree paradigms
Od: A.L. <a...@a...com>
On Wed, 05 Jun 2013 16:43:22 +0200, bartekltg <b...@g...com>
wrote:
>W dniu 2013-06-04 21:38, A.L. pisze:
>
>> Czy przypadkiem to nie to co sie nazywa "coroutines"? Albo "procedury
>> symetryczne"?...
>
>Hmm, wygl?da, ?? koncepcja do?? popularna,
>a nigdy mi si? o uszy nie obi?a.
>
Pierwszy jezyk ktory to mial to Simula 67
>Do czego to si? przydaje (poza 'patrzcie, inaczej wielow?tkowo??
>zrobi?em').
Na przykald wlasnie do programowania symulacji.
Ogolnie, do "cooperative multitasking". Programowanai
"quasi-wielowatkowego" w ktorym "watki" (korutyny) nie sa pod kontrola
systemu operacyjnego a pod kontrola programisty
A.L.
-
22. Data: 2013-06-05 19:31:36
Temat: Re: non-tree paradigms
Od: firr kenobi <p...@g...com>
ok, przecztalem i chyba zrozumialem o co
chodzi, ogolnie w kontekscie tematu watku
mozna powiedziec ze te coroutines sa jak
najbardziej apropos ale raczej tez nie
wyczerpuja calosci tematu
tak czy owak pojecie bardzo proste i
ew przydatne, OIDR koprocedura to po
prostu taka procedura ktora wywoluje
inne procedury nie tylko przy pomocy
call ale rowniez przy pomocy jump (goto)
a() //procedura
{
b();
}
a() //koprocedura
{
goto b;
}
jest to ciekawe i daje dodatkowe
mozliwosci ale tez rozwala drzewiasty
paradygmat, nieodmiennie ciekawe,
trzeba to przemyslec
-
23. Data: 2013-06-05 20:21:41
Temat: Re: non-tree paradigms
Od: firr kenobi <p...@g...com>
>
> jest to ciekawe i daje dodatkowe
> mozliwosci ale tez rozwala drzewiasty
> paradygmat, nieodmiennie ciekawe,
> trzeba to przemyslec
szkoda ze w c nie ma globalnego goto
bo wtedy by mozna z grubsza robic w c takie
kowywołamia aczkolwiek pewnie warto by
tez podkrecic skladnie do jumpowania
pelnych naglowkofw funkcji wraz z argumentami (a nie tylko label)
(z auto byloby chyba sporo problemóf ale
register i static by chyba działało)
i tak nadal nie bardzo mi wiadomo co takie
jumpy moga dawac koderowi ale ja bym
w c2 to jednak raczej udostepnił -
temat jednakze faktycznie nie jest taki
malutki tj wydaje sie ze te mechanizmy
"non-tree" to istotnie dosyc rozległa
dziedzina zachaczajaca moze skomplikowaniem np o skomplikowanie
tamatu wielowatkowosci itp (?, ciezko
ocenic )
-
24. Data: 2013-06-05 20:26:55
Temat: Re: non-tree paradigms
Od: bartekltg <b...@g...com>
W dniu 2013-06-05 18:05, A.L. pisze:
> On Wed, 05 Jun 2013 16:43:22 +0200, bartekltg <b...@g...com>
> wrote:
>
>> W dniu 2013-06-04 21:38, A.L. pisze:
>>
>>> Czy przypadkiem to nie to co sie nazywa "coroutines"? Albo "procedury
>>> symetryczne"?...
>>
>> Hmm, wygl?da, ?? koncepcja do?? popularna,
>> a nigdy mi si? o uszy nie obi?a.
>>
>
> Pierwszy jezyk ktory to mial to Simula 67
>
>> Do czego to si? przydaje (poza 'patrzcie, inaczej wielow?tkowo??
>> zrobi?em').
>
> Na przykald wlasnie do programowania symulacji.
>
> Ogolnie, do "cooperative multitasking". Programowanai
> "quasi-wielowatkowego" w ktorym "watki" (korutyny) nie sa pod kontrola
> systemu operacyjnego a pod kontrola programisty
Jest tu jakaś przewaga nad zrobieniem wielu obiektów
(w polach mają to, co było w zmiennych lokalnych tamtych
coroutines) z metodą zrob_krok_symulacji()?
W elegantszy sposób jedna dluższa metoda może być częściej
przerywana przez szybką (obiektowo trzeba by długą coprocedurę
podzielić na mniejsze fragmenty) ale to zysk nieco estetyczny.
coroutines dluga()
{
//coś robię
yield cośtam
//znow coś robię
yield cośtam
// robię innego
yield cośtam
}
dluga::wykonaj()
{
static i;
i=(i+1)mod 3
switch (i)
case 0:
//coś robię
break;
case 1:
//znow coś robię
break;
case 2:
// robię innego
return; //powrot do costam
}
pzdr
bartekltg
-
25. Data: 2013-06-05 20:31:16
Temat: Re: non-tree paradigms
Od: bartekltg <b...@g...com>
W dniu 2013-06-05 20:21, firr kenobi pisze:
> szkoda ze w c nie ma globalnego goto
Jest.
https://en.wikipedia.org/wiki/Setjmp.h
pzdr
bartekltg
-
26. Data: 2013-06-05 20:42:49
Temat: Re: non-tree paradigms
Od: firr kenobi <p...@g...com>
W dniu środa, 5 czerwca 2013 20:31:16 UTC+2 użytkownik bartekltg napisał:
> W dniu 2013-06-05 20:21, firr kenobi pisze:
>
>
>
> > szkoda ze w c nie ma globalnego goto
>
>
>
> Jest.
>
>
>
> https://en.wikipedia.org/wiki/Setjmp.h
>
>
to nie jest globalne goto, z tego co
pamietam (nie uzywam tego za czesto)
to dziala tylko w tył po calltracku
goto mozna by pewnie wykonac przez
makro czy tam funkcje i wstawki z jmp w asmie pod dowolny label (ktorego adres jest
ztcp dowolnie dostepny ) - ale nie jestem pewien no i nie jest to wbudowane
void goto(void* label)
{
asm
{
jmp label;
}
}
ilustracja bo nie jestem pewien czy
to da sie tak napisac (i pozniej
wywolac na dowolnym labelu) nie pamietam
szczegółow (ale fajnie by bylo jakby sie dalo)
-
27. Data: 2013-06-05 20:45:15
Temat: Re: non-tree paradigms
Od: firr kenobi <p...@g...com>
>
> coroutines dluga()
> {
> //coś robię
> yield cośtam
> //znow coś robię
> yield cośtam
> // robię innego
> yield cośtam
> }
>
i jak ta funkcja powyzej mialaby dzialac
bo nie zrozumialem, w szczegolnosci jak
miaoby dzialc tutaj to yield ?
-
28. Data: 2013-06-05 20:49:49
Temat: Re: non-tree paradigms
Od: bartekltg <b...@g...com>
W dniu 2013-06-05 20:45, firr kenobi pisze:
>>
>> coroutines dluga()
>> {
>> //coś robię
>> yield cośtam
>> //znow coś robię
>> yield cośtam
>> // robię innego
>> yield cośtam
>> }
>>
>
> i jak ta funkcja powyzej mialaby dzialac
> bo nie zrozumialem, w szczegolnosci jak
> miaoby dzialc tutaj to yield ?
Poczytaj linki, które pojawiły się w wątku.
Zapytaj wiki, co znaczy to dziwne słowo na 'c',
przeczytaj artykuł.
pzdr
bartekltg
-
29. Data: 2013-06-05 21:04:42
Temat: Re: non-tree paradigms
Od: A.L. <a...@a...com>
On Wed, 05 Jun 2013 20:26:55 +0200, bartekltg <b...@g...com>
wrote:
>
>Jest tu jaka? przewaga nad zrobieniem wielu obiektów
>(w polach maj? to, co by?o w zmiennych lokalnych tamtych
>coroutines) z metod? zrob_krok_symulacji()?
>
>
Korutyny mozan zasymulowac w jezyku bez korutyn (kupa papierow na ten
temat). ja sam to zrobilem pzred laty w Fortranie IV. Ale to jest
technicznie i uzytkowo dosyc upierdliwe, wiec lepiej jest meic
wbudowany mechanizm.
A.L.
-
30. Data: 2013-06-05 21:12:34
Temat: Re: non-tree paradigms
Od: bartekltg <b...@g...com>
W dniu 2013-06-05 21:04, A.L. pisze:
> On Wed, 05 Jun 2013 20:26:55 +0200, bartekltg <b...@g...com>
> wrote:
>
>>
>> Jest tu jaka? przewaga nad zrobieniem wielu obiektów
>> (w polach maj? to, co by?o w zmiennych lokalnych tamtych
>> coroutines) z metod? zrob_krok_symulacji()?
>>
>>
>
> Korutyny mozan zasymulowac w jezyku bez korutyn (kupa papierow na ten
> temat). ja sam to zrobilem pzred laty w Fortranie IV. Ale to jest
> technicznie i uzytkowo dosyc upierdliwe, wiec lepiej jest meic
> wbudowany mechanizm.
Jasne. Ale pytanie było o jakiś przykład użycia korutyn,
którego nie da się _prosto_ zastąpić czymś innym.
pzdr
bartekltg