Uz sa tesim na dalsie diely serialu.
Názory k článku
První kroky ve Squeaku
Re: První kroky ve Squeaku
celé vláknoNemají ty screenshoty být takhle? ;-)
http://img24.imageshack.us/img24/252/worldrv.png
Pro udělání screenshotu stačí pravé tlačítko myši na ploše a vybrat export… > PNG file, zbavíš se dekorace okna.
Neuvažovals nad tím věnovat jeden díl tohoto seriálu i zmíněnému Selfu?
Re: První kroky ve Squeaku
celé vláknoAhoj Pavle. Ty sis upravil třídu Integer, že 6*9 vychází 42? :-)
Ale samozřejmě máš pravdu, příště udělám screenshoty bez zbytečných dekorací.
O Selfu se toho dá napsat hodně, určitě se k němu dostanu. Ten jazyk je trošku nešťastně přehlížen, těžko říct proč.
Re: První kroky ve Squeaku
celé vláknoještě uděláme reklamu stařičkému dc :-)
dc -e „6 9*p“
54
Re: První kroky ve Squeaku
celé vláknoAhoj, upravit třídu SmallInteger tak, aby vracela ‚správný‘ výsledek, je jednoduché, ale bohužel násobení optimalizuje přímo interpret, takže i potom je vracen ‚špatný‘ výsledek, protože se metoda pro násobení vůbec nevolá. Volá se jen pokud je kód simulovaný (např. při ladění nebo přímo pomocí ContextPart runSimulated: [6*9]). To by pak k dokonalému efektu vyžadovalo upravit metodu evaluateSelection ;-)
Re: První kroky ve Squeaku
celé vláknoTo bych snad ani nerikal nahlas, ze je nasobeni integeru ve Smalltalku optimalizovane :-) Vzdyt kdyz se v Jave zavadely primitivni datove typy (IMHO strasna blbost), tak se argumentovalo prave tim, ze kdyby se jednalo o objekty, ze by vse bylo pomalejsi a vice narocnejsi na pamet. Me to teda neprislo, proste by se treba 42 chovala jako konstanta tam, kde to ma smysl a objekt jinde.
Re: První kroky ve Squeaku
celé vláknoA ne snad? Objektově orientované programování je z principu méně efektivní pro počítač. Čím více se vzdaluje programovací jazyk od stroje a blíží se k představám vnuceným člověkem, tím neefektivnější. Navíc to není jediné – např. otáčení oken v Morphicu je taky optimalizované – okna zobrazená normálně (tj. neotočená) se obsluhují jinak, než okna natočená o nenulový úhel. A je toho ještě víc – prostě co vypadá krásně teoreticky, obvykle vychází příšerně neefektivně prakticky.
Re: První kroky ve Squeaku
celé vláknoNakonec se objektově-primitivní datové typy (takový dualismus :-) do Javy stejně dostaly díky autoboxingu. Samotný překladač v takovém případě rozhoduje, jak kterou konstrukci přeložit, navíc jsou některé „malé“ integerové konstanty optimalizovány i díky použitému bajtkódu.
Ovšem zajímavé je, že překladač například u Integerů skutečně pracuje s objekty a nezjistí si například, že se využívají jen jako nositelé konstant:
public class Test
{
static {
Integer a1=6;
Integer b1=7;
Integer c1=a1*b1;
int a2=6;
int b2=7;
int c2=a2*b2;
}
}
Se přeloží do tohoto bajtkódu, kde je vidět (v první části) unboxing a autoboxing, kdežto v části druhé jde o přímé operace nad primitivním datovým typem:
static {};
Code:
0: bipush 6
2: invokestatic #2; //Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
5: astore_0
6: bipush 7
8: invokestatic #2; //Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
11: astore_1
12: aload_0
13: invokevirtual #3; //Method java/lang/Integer.intValue:()I
16: aload_1
17: invokevirtual #3; //Method java/lang/Integer.intValue:()I
20: imul
21: invokestatic #2; //Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
24: astore_2
25: bipush 6
27: istore_3
28: bipush 7
30: istore 4
32: iload_3
33: iload 4
35: imul
36: istore 5
38: return
}
Re: První kroky ve Squeaku
celé vláknoByl jsem požádán, jestli bych jednomu klukovi nepomohl, protože z programování má po prvním ročníku střední školy špatnou známku a je to navíc nějaká škola na programování zaměřená. Jsem od něj zjistil, že dělali v Pascalu a dalším ročníku nastupují na C++. Tak jsem se zeptal na pár příkladů, co dělali a co po nich chtěli při zkoušení – třeba měli za úkol nahradit v řetězci všechna slova hvězdičkami krom prvních a posledních písmen těch slov. Prý mu práce s řetězci moc nešla.
Tak jsem se od toho odpíchl a zjistil jsem, že prakticky není schopen sám formulovat podmínky, které ten znak musí splňovat, aby byl prvním či posledním písmenem slova. Zjevně má potíže se základní algoritmizací. Tak jsem si vzpomněl na kolegu z FITu, který mi říkal, jak bych se divil, kolik bakalářů má problém mu třeba jen neformálně popsat recept/algoritmus na vaření párků! Zkusil jsem to a tohle mu naštěstí problémy nedělalo. Takže jsem nahodil Karla a zdálo se, že ten ho celkem bavil a docela mu i šel. Zmínil se, že je škoda, že s tím ve škole nedělali.
Prý u nich s podobnými problémy není zdaleka jediný…
Re: První kroky ve Squeaku
celé vláknoTo je totiž dnes hodně rozšířený problém. Je to dost zajímavé, ale za minulého režimu byli mladí mnohem „počítačově vyspělejší“. Samotnému je mi záhadou, jak se to těm komančům povedlo (s nadsázkou – ti samozřejmě žádné počítače neučili, ale mám na mysli tu dobu), ale i s tím málem, co tu bylo, se povedlo vypěstovat v dětech algoritmické myšlení tak, že do 15 let mohli začít se strojákem, aniž by se v tom totálně ztratily. Možná i proto byl u nás Karel vnímán jako hračka pro malé děti, zatímco byl originálně vytvořen pro studenty VŠ. Vlastně i mezinárodní matematické soutěže naši reprezentanti pravidelně vyhrávali a v různých srovnávacích matematických testech jsme se pravidelně umísťovali na nejlepších místech na světě, zatímco nedávno jsem četl, že naše děti v tomto oboru začaly nevídaně zaostávat a končí spíše jako podprůměrné… Asi to s tím nějak souvisí a bude nutné přehodnotit styl výuky – je to zlé, ale to, co zvládali studenti před 20 lety – v době, kdy mnohokrát ani doma neměli vlastní počítač – už dnešní studenti nezvládají. Někde je chyba.
Re: První kroky ve Squeaku
celé vláknoZa prvé, těch „počítačově vyspělejších“ bylo ale malé procento populace, zbytek byl naopak zcela počítačově negramotný ;-)
Za druhé, počítače byly tak drahé / obtížně sehnatelné, že pokud si ho někdo pořídil, tak se tomu většinou věnoval do hloubky.
A za třetí, počítače byly mnohem jednodušší, hardwarově i softwarově, takže se na nich mnohem lépe pochopily principy.
Re: První kroky ve Squeaku
celé vláknoZa páté – neexistovali žrouti času jako facebook, internet, televizní seriály – takže bylo víc času – a když se člověk dostal k nějaké dokumentaci, tak si ji náležitě vychutnal. K tomu ještě – výuka IT zahrnovala opravdu malé procento populace – vlastně až na výjimky nadšence / pro ty, co nadšenci nebyli nebyl problém výuku ofixloval – tudíž celkový dojem ze studentů musel být zákonitě jiný – (nižší počty studentů IT/nižší počty vysokoškoláků a pravděpodobně i trochu jiný přístup je studiu).
Re: První kroky ve Squeaku
celé vláknoZa sieste vtedy este maso bolo maso, maslo bolo maslo a zelenina bola zelenina.
Okrem toho nie je IT ako IT. Niekto kto nechape stringy asi na matfyz nepojde, podla osobnych skusenost by ma celkom zaujimalo, co robia na FIT 5 rokov?
Re: První kroky ve Squeaku
celé vláknoAd bod 2 – to je pravda, dobře je to například vidět na ruských programátorech, kteří pořád IMHO patří mezi špičku, a ti, když začínali ještě v dobách SSSR, to měli s dostupností techniky ještě horší.
Ale on vlastně i Simonyi začínal na elektronkovém Uralu a kam to dotáhl :-)
Re: První kroky ve Squeaku
celé vláknoK tym medzinarodnym matematickym sutaziam – dovod bol ten, ze sa ich vtedy este ucastnilo malo krajin, hlavne chybali aziati, ktori na tychto sutaziach vsetkych drtia. Ale, nie je to take zle, v iformatike sa stale drzime. Pred nejakymi troma rokmi boli Slovaci v sucte bodov treti v poradi krajin (v ostatnych matfyz olympiadach koncia cechoslovaci najlepsie 20.). Takze, nevidel by som to tak bledo, decka nie su sprostejsie, to len prisla vacsia konkurencia z Ciny:-)

