Jeden kamarad to ma nad posteli:
http://images.twibright.com/tns/1bb3.html
Taky ma doma TCP tekutinu:
http://images.twibright.com/tns/1ba7.html
Názory k článku
Učíme trpaslíky počítat podruhé
10. 4. 2008 10:05
Nový
Re: d i g i t a l
celé vlákno
Pekne, ale davam prednost svemu oblibenemu Vimu: http://www.figuiere.net/hub/blog/200407/vim.jpg
mm (neregistrovaný)
10. 4. 2008 10:34
Nový
Re: d i g i t a l
celé vlákno
Jo Digital....
Je mne smutno, kdyz si uvedomim, jak to skoncilo...To byly casy s Digital Unixem 3.2C a 3.2G... :-(
V Praze na Pankraci meli pobocku, pomerne casto jsem tam jezdival. Pekne se to na ni vyjimalo, to co ma kamarad nad posteli....Ale to uz je vic nez 10 let :(
Je mne smutno, kdyz si uvedomim, jak to skoncilo...To byly casy s Digital Unixem 3.2C a 3.2G... :-(
V Praze na Pankraci meli pobocku, pomerne casto jsem tam jezdival. Pekne se to na ni vyjimalo, to co ma kamarad nad posteli....Ale to uz je vic nez 10 let :(
xxx (neregistrovaný)
10. 4. 2008 14:49
Nový
Re: d i g i t a l
celé vlákno
v minulem zamestani byla masinka alpha station 500 s digital unixem, kdyz ji uz prestali kolegove pouzivat a lezela tam chudinka, tak jsem na ni picnul linux a bylo. ach, romanticke mladi.
czario (neregistrovaný)
10. 4. 2008 10:03
Nový
námět
celé vlákno
Pročítal jsem si opět svůj oblíbený seriál a tak mě tak napadlo, že by neuškodilo udělat později jakýsi souhrn s radami, jak zacházet s trpaslíky pro zvýšení jejich efektivity. Tzn pokud někdo programuje ve vyšším programovacím jazyce, který nutně musí používat stejné instrukce procesoru, tak z čeho by měl při programování vycházet a co by měl používat, či čeho by se měl vyvarovat ve svém programu. (třeba něco jako, že pro jednoduché podmínky se má použít boolean a ne nějaký string nebo reálné číslo kde se budou využívat jen 2 čísla)
jinak na to omezení relativních adres si pamatuji ze střední... jsme tam dostali nějaké instrukce, nějaké letmé vysvětlení a starejte se... Pak se nám stávalo, že jsme používali nevhodně relativní skoky, které někam nemohli doskočit a museli jsme je dalším skokem nastavovat. :-)
jinak na to omezení relativních adres si pamatuji ze střední... jsme tam dostali nějaké instrukce, nějaké letmé vysvětlení a starejte se... Pak se nám stávalo, že jsme používali nevhodně relativní skoky, které někam nemohli doskočit a museli jsme je dalším skokem nastavovat. :-)
10. 4. 2008 10:21
Nový
Re: námět
celé vlákno
Proc ne, klidne neco podobneho pripravim. U jsem taky videl par zdrojaku, kde se (i v typovanem jazyce) vesele vsude pouzivaly pouze retezce a semtam se to prevedlo na cisla ci booleany :-)
Ogar (neregistrovaný)
10. 4. 2008 21:32
Nový
Re: námět
celé vlákno
Ano, uz sem taky videl program v nasledujicm stylu (ted uz nevim, ale asi v C++) s promennou typu string:
while (string.length()<320) string+=' '
out << string;
a uz ten clovek nevidi za kazdym +=' ' ten realloc() coz je zase potencialne malloc() + memcpy() + free() :-(
A dalsi oblibena na stejne tema je
strcpy(a,b);
strcat(a,c);
strcat(a,d);
A zase uz ten programator nevidi/nechce videt, ze strcat() uz je cyklus ve stylu:
while (*a) a++;
while (*(a++)=*(b++)); // :-)
tj. vzdy projdu znovu cele pole od zacatku ......
A pak se clovek divi, ze i kdyz jsou pocitace cim dal rychlejsi, tak programy jsou cim dal pomalejsi :-(
Jo holt, za pokrok se plati :-)
while (string.length()<320) string+=' '
out << string;
a uz ten clovek nevidi za kazdym +=' ' ten realloc() coz je zase potencialne malloc() + memcpy() + free() :-(
A dalsi oblibena na stejne tema je
strcpy(a,b);
strcat(a,c);
strcat(a,d);
A zase uz ten programator nevidi/nechce videt, ze strcat() uz je cyklus ve stylu:
while (*a) a++;
while (*(a++)=*(b++)); // :-)
tj. vzdy projdu znovu cele pole od zacatku ......
A pak se clovek divi, ze i kdyz jsou pocitace cim dal rychlejsi, tak programy jsou cim dal pomalejsi :-(
Jo holt, za pokrok se plati :-)
10. 4. 2008 22:56
Nový
Re: námět
celé vlákno
Tak to je ovsem priklad jako noha..
>while (string.length()<320) string+=' '
>out << string;
>
>a uz ten clovek nevidi za kazdym +=' ' ten realloc() coz je zase potencialne malloc() + memcpy() + free() :-(
Jaky? Kazda normalni STL knihovna nealokuje pri kazdem pozadavku na pamet o 1b vetsi pole, ale voli vetsi velikost (a navic sve alokace vetsinou resi pres memory pool).
Schvalne jsem si tenhle tvuj program zkusil s prazdnym stringem na Linuxu (amd64 arch), cely program za svuj beh udelal 10 volani malloc(). Zpozdeni je samozrejme nemeritelne (v obou pripadech time nahlasil user 0m0.000s)...
>strcpy(a,b);
>strcat(a,c);
>strcat(a,d);
A kolik tim promrhas strojoveho casu? Pokud tedy nemas nekolik MB dlouhe stringy ci nespoustis tuhle rutinu milonkrat za vterinu :-)
Tohle jsou takove priklady trochu mimo realitu. Realita je takova, ze programatorska prace je draha a HW je levny. Diky cemuz tu mame jazyky jako C#, Java a podobne, protoze u vetsiny neni zdaleka tak dulezita co nejvyssi rychlost (pokud se bavime rekneme o desitkach procent vykonu), ale spolehlivost a naklady na vyvoj.
A ty priklady, co jsi zde uvedl, jsou zrovna z takove skatulky tech, kterych se znacna cast programatoru naprosto uvedomele dopousti s tim, ze to na vysledny vykon aplikace nema prakticky zadny dopad.
>while (string.length()<320) string+=' '
>out << string;
>
>a uz ten clovek nevidi za kazdym +=' ' ten realloc() coz je zase potencialne malloc() + memcpy() + free() :-(
Jaky? Kazda normalni STL knihovna nealokuje pri kazdem pozadavku na pamet o 1b vetsi pole, ale voli vetsi velikost (a navic sve alokace vetsinou resi pres memory pool).
Schvalne jsem si tenhle tvuj program zkusil s prazdnym stringem na Linuxu (amd64 arch), cely program za svuj beh udelal 10 volani malloc(). Zpozdeni je samozrejme nemeritelne (v obou pripadech time nahlasil user 0m0.000s)...
>strcpy(a,b);
>strcat(a,c);
>strcat(a,d);
A kolik tim promrhas strojoveho casu? Pokud tedy nemas nekolik MB dlouhe stringy ci nespoustis tuhle rutinu milonkrat za vterinu :-)
Tohle jsou takove priklady trochu mimo realitu. Realita je takova, ze programatorska prace je draha a HW je levny. Diky cemuz tu mame jazyky jako C#, Java a podobne, protoze u vetsiny neni zdaleka tak dulezita co nejvyssi rychlost (pokud se bavime rekneme o desitkach procent vykonu), ale spolehlivost a naklady na vyvoj.
A ty priklady, co jsi zde uvedl, jsou zrovna z takove skatulky tech, kterych se znacna cast programatoru naprosto uvedomele dopousti s tim, ze to na vysledny vykon aplikace nema prakticky zadny dopad.
Tomas Z. (neregistrovaný)
10. 4. 2008 12:39
Nový
Re: námět
celé vlákno
Hezký souhrn pracovních postupů (byť na trochu jiné úrovni) jak zacházet s trpaslíky je v draftu Knuthova TAOCP vol. 7 - Bitwise Tricks and Techniques. Úžasné, co se dá všechno s těmito jednoduchými trpaslíky dělat, zvláště když se kombinují logické a aritmetické operace.
Rejpal (neregistrovaný)
11. 4. 2008 5:19
Nový
Re: námět
celé vlákno
To je čtvrtý, ne sedmý svazek. :-) IIRC. ;-)
Tomas Z. (neregistrovaný)
11. 4. 2008 7:52
Nový
Re: námět
celé vlákno
Hm, pravda. Původně jsem napsal 7.1.?, pak jsem si nebyl jist - tak jsem to (špatně) zkrátil na Vol 7. Ale stejně je to dost dobrý čtení do vlaku :)
Pepik (neregistrovaný)
10. 4. 2008 17:00
Nový
Test na nulovost
celé vlákno
IMHO test na nulovost by se dal udělat jednodušeji bez použití pomocného registru operací OR A, A.
10. 4. 2008 17:27
Nový
Re: Test na nulovost
celé vlákno
Šel, stejně tak i pomocí AND A,A nebo dvojité negace. Je to jenom příklad na vysvětlení instrukce CMP, určitě ne ukázka dobrého stylu programování v ASM.
Clock (neregistrovaný)
14. 4. 2008 9:36
Nový
Re: Test na nulovost
celé vlákno
Negace je IIRC na 8 tiku takze dvojita je na 16 a or a,a nebo and a,a jenom na 4 tiky.
Jirka P (neregistrovaný)
14. 4. 2008 17:22
Nový
Příklad smyčky z krokem
celé vlákno
Nechci nic rikat, ale jak mohlo 0xffff-2*cosi vyjit sude? A odkdy je 0xfffe+2 1?
15. 4. 2008 8:21
Nový
Re: Příklad smyčky z krokem
celé vlákno
Omlouvam, se, samozrejme jde o preklep.
15. 4. 2008 8:26
Nový
Re: Příklad smyčky z krokem
celé vlákno
Melo se zacinat od 0xfff1, necham to opravit. Diky za upozorneni.

