Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názory k článku
Squeak: návrat do budoucnosti (4)

junix
junix (neregistrovaný)
2. 3. 2004 19:58 Nový

Nizky vyskyt caseOf

celé vlákno

To je celkem logicky, ze by se tahle struktura mela vyskytovat minimalne. Jeji opakovani by se melo eliminovat prave polymorfismem (nebo jeste lepe tady diky tomu, ze chybi kontrola typu, tedy polymorfismus v puvodnim slova smyslu, zasilanim zpravy instancim ruznych trid).

ondrej
ondrej (neregistrovaný)
2. 3. 2004 21:04 Nový

Re: Nizky vyskyt caseOf

celé vlákno

Presne tohle jsem cetl v jedne knizce o Smalltalku: nad kazdym case se zamyslete, jestli tam nahodou misto toho nepatri volani polymorfni metody. Myslim ze je to dost dobry napad pokud se podobne case v programu opakuji a ocekava se pridavani dalsich case-vetvi v budoucnosti. A to samozrejme plati nejen pro Smalltalk.

junix
junix (neregistrovaný)
3. 3. 2004 14:32 Nový

Re: Nizky vyskyt caseOf

celé vlákno

Cau Ondreji, to uz ten smalltalk krome nas nikdo necte? To to muzem zase probrat v non-stopu ;)

ondrej
ondrej (neregistrovaný)
3. 3. 2004 18:01 Nový

Re: Nizky vyskyt caseOf

celé vlákno

aaa to jsi ty :))

junix
junix (neregistrovaný)
3. 3. 2004 18:23 Nový

Re: Nizky vyskyt caseOf

celé vlákno

No jo, jako Ondrej psat nemuzu, to uz jses ty :))

Pavel Tišnovský
Pavel Tišnovský (neregistrovaný)
3. 3. 2004 15:19 Nový

Efektivita neexistence primitivnich datovych typu

celé vlákno

Zdravim a chci se Te zeptat, jak je efektivni (pametove i vykonove) neexistence primitivnich datovych typu, jako je int nebo float.

Toto je totiz jedna z veci, ktera docela zprasila Javu. Tam primitivni datove typy existuji i se svymi operacemi, ale pokud s timto typem chci delat neco navic (napriklad prevest na retezec), musi se pouzit obalujici objekt.

(Java je v tomto ohledu docela zvlastni, neumoznuje sice pretezovat operatory, ale sama je vnitrne pretezuje, napriklad +. To je stejne jako Pascal, ten neumoznoval vytvorit funkci s promennym poctem parametru a sam mel zabudovany write a writeln).

Pavel Křivánek
Pavel Křivánek (neregistrovaný)
3. 3. 2004 16:11 Nový

Re: Efektivita neexistence primitivnich datovych typu

celé vlákno

Práce s byty, integery, floaty a poli nad těmito typy je velmi silně optimalizována - jak na úrovni objektové paměti, tak při jejich zpracovávání. Takže přestože primitivní typy ve Squeaku nejsou, výkonnostně se jim výše zmíněné typy minimálně blíží. Mimoto je celá řada operací kvůli rychlosti vykonávána primitivními metodami.

Optimalizace Squeaku jsou vůbec kapitola sama pro sebe. Např. díky tomu, že ifTrue: caseOf: apod. jsou optimalizovány na úrovni bytekódu pomocí skoků, je tyto metody možno dokonce úplně smazat bez toho, aby se to na funkčnosti prostředí nějak zásadně projevilo.

ondrej
ondrej (neregistrovaný)
3. 3. 2004 19:55 Nový

Re: Efektivita neexistence primitivnich datovych t

celé vlákno

O optimalizaci jazyku podobnych Smalltalku zde:
http://research.sun.com/self

Zbyněk
Zbyněk (neregistrovaný)
3. 3. 2004 23:53 Nový

Re: Efektivita neexistence primitivnich datovych t

celé vlákno

BTW: na této stránce je mimo jiné k dispozici jazyk ještě odvazovější než právě probíraný Smalltalk, a to SELF. Je to beztřídní jazyk, který poučku, že kromě objektu a posílání zpravy nepotřebuji už nic, dotáhl do naprosté/zběsilé čistoty. Já osobně sem bohužel v selfu ještě nic neudělal (i když asi dvakrát sem jej pustil ve škole) a to především proto, že vývoj selfu je uzavřen v SUNu (není tak dynamický jako u Squeaku) a navíc je jenom na platformy k nímž český programátor moc často nesedá (tedy MacOS a SPARC se Solarisem).
Každopádně zajímavý odkaz - akorát jsou ty články už hodně odborné.

Jarda
Jarda (neregistrovaný)
8. 3. 2004 11:49 Nový

Re: Efektivita neexistence primitivnich datovych typu

celé vlákno

Mno, zprasila.. uvedom si, ze Java byla puvodne delana pro pidipocitadla, a ta by objektovy overhead pravdepodobne neutahla. A ono i dneska maji imho sve opodstatneni, prece jen stale jsou lide, kteri se snazi, aby jim aplikace behaly co nejrychleji a nezraly vic pameti, nez je nutne.. ;)

Co se operatoru tyce, + neni napriklad, + (spolu s +=) je jedina vyjimka. Samozrejme ze to tam vubec dat nemuseli, a programatori dbali cistoty by meli zajiste radost. Na druhou stranu by to nepotesilo ty, ktere nebavi skladat stringy prez append().append().append().append().append().append() ...

Pavel Tišnovský
Pavel Tišnovský (neregistrovaný)
8. 3. 2004 15:39 Nový

Re: Efektivita neexistence primitivnich datovych t

celé vlákno

No, ja osobne pisu vetsinu aplikaci v C/C++, a dost dbam na pametove a rychlostni parametry programu.

Prave proto jsem se ptal, jak je udelana optimalizace zakladnich objektovych typu ve SmallTalku, kdyz v Jave existuji pravdepodobne kvuli rychlosti primitivni datove typy a operatory. Mimochodem, v Jave jde o vsechno jine, nez o rychlost a male naroky na pamet :-(.

btw, pro spojovani retezcu se snad daji pouzit i dalsi paznaky, nemusi to byt zrovna plus. Java spoustu paznaku, narozdil od C/C++ nepouziva.

Zbyněk
Zbyněk (neregistrovaný)
8. 3. 2004 23:46 Nový

Re: Efektivita neexistence primitivnich datovych typu

celé vlákno

Jen poznamenávám, že ve Smalltalku se konkatenují řetězce (ale dokonce kolekce obecně) pomocí zprávy , (čárka). Tedy stejně jako věty v souvětí :-).
Např: 'ahoj', 'světe ', obj asString, '!'.

nemo
nemo (neregistrovaný)
3. 3. 2004 20:05 Nový

skoky

celé vlákno

Umoznuje tedy Smalltalk nepodminene skoky? Ne ze by to bylo neco pekneho, ale kdyz uz se o tom zminujete...

Pavel Křivánek
Pavel Křivánek (neregistrovaný)
4. 3. 2004 8:52 Nový

Re: skoky

celé vlákno

Jediné dva možné způsoby změny toku řízení programu ve Smalltalku jsou zavolání zprávy a návrat ze zpracování zprávy. Smalltalk nemá ani podmíněné skoky, natož nepodmíněné. Používá je pouze bytekód.

Aby to nebylo tak jednoduché, tak si můžete zkusit třeba:

Transcript show: 'a'.
thisContext jump: -7.

(moc se nedivte, pokud tím odstřelíte VM)

Zasílat nově přidané příspěvky e-mailem