Hlavní navigace

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

  • Článek je starý, nové názory již nelze přidávat.
  • 16. 3. 2004 0:05

    Jirka (neregistrovaný)

    Jsem první!!! A mimochodem, tenhle Smalltalk je opravdu príma věcička.. :-)

  • 16. 3. 2004 1:56

    Franta Bezradný (neregistrovaný)

    Kéž bych měl v C# + .NET taky k dispozici všechny zdrojáky :-(((.
    Zlatej Squeak Smalltalk.

  • 16. 3. 2004 8:12

    vcef (neregistrovaný)

    Ve Firefoxu 0.8 vyleza text clanku z sedeho boxu - konce radek to proste nezalomi. Blbe se to cte - udelejte s tim nekdo neco :-)

  • 16. 3. 2004 8:29

    zoul (neregistrovaný)

    jak nahradit šablony, delegáty, přetěžovat operátory, používat makra, prostory jmen, spřátelené funkce, násobnou dědičnost, rozhraní, výjimky, dokonalou typovou kontrolu?

    Fakt nechce autor zabrzdit s takovymi prupovidkami? Vsechny vyjmenovane veci k necemu konkretnimu jsou. Nadsene vykrikovat ze je Smalltalk nepotrebuje je jako rikat ze PHP je super protoze nepotrebuje deklarovat promenne a nemusite se tudiz hadat s prekladacem/interpretem.

    T.

  • 16. 3. 2004 9:10

    rpa (neregistrovaný)

    Najprv si je treba uvedomit, ze ked programujes v smalltalku tak doprogramovavas ci uz nove classy alebo metody do uz existujuceho systemu (ziaden main apod..). Vsetky metody a instancne premenne maju public viditelnost, rozhrania ti vobec netreba, kedze nieje typova kontrola. Vynimky samozrejme su, classa Exception. Co sa tyka namespaceov tak tiez existuju len si to treba z nejakeho squeak archivu stiahnut (alebo sa spytajte v mailing liste)a importnut, tym padom nie si odkazany na defaultny Smalltalk dictionary, ale samozrejme zalezi na tom na co to potrebujes, tj. ci sa to neda riesit cez pooldictionary. Nasobna dedicnost je na tom podobne, ak to nieje urobene mozes si to vyskusat cvicne nakodovat (treba len porozumiet tomu co sa deje ked sa povie ze sa posle nejaka sprava objektu. To je ale asi na dlhsie ale mozes si pozriet classy Behavior, MethodDictionary, ClassBehavior, Class)

    Roman

  • 16. 3. 2004 9:22

    Pavel Křivánek (neregistrovaný)

    Ano, všechny tyhle věci mají svůj nezpochybnitelný účel. Nicméně není třeba, aby se zabudovávaly přímo do jazyka, popřípadě lamentovat, že je můj jazyk nemá a čekat, až je jeho autoři do vašeho jazyka doplní.

    Šablony nejsou ve Smalltalku potřeba, protože nemá statickou typovou kontrolu. Pokud máte například nějakou kolekci (třeba pole), můžete si do ní uložit objekt libovolné třídy. Pokud budete chtít množinu přípustných objektů nějak omezit, nic vám v tom nebrání. Navíc není žádný problém předat jako parametr nějaké metody třeba třídu a v těle metody pak z ní vytvářet instance bez toho, abyste při psaní této metody věděli, o jakou konkrétní třídu se jedna.

    Místo delegátů lze víceméně použít symboly pro selektory funkcí.

    Smalltalk nemá operátory, má binární zprávy. Na rozdíl od jiných jazyků nemá pevně vyhrazenou množinu operátorů, se kterou lze v omezené míře pracovat.

    Makra nemají ve Smalltalku žádnou obdobu. Jen by narušovaly strukturu jazyka a díky jeho pružnosti nejsou zapotřebí.

    Místo běžných prostorů jmen má Squeak k dispozici tzv. Environments a sdílené slovníky.

    Násobnou dědičnost a rozhraní do značné míry nahrazuje dynamická typová kontrola. Implementaci rozhraní lze mimoto do Squeaku doplnit dodatečně dle potřeby. Navíc objekty mohou libovolně reagovat na situaci, kdy nerozumí nějaké zprávě a nějak ji zpracovat, předat dál apod.

    Výjimky nejsou součástí jazyka, nicméně Smalltalk je samozřejmě má a v míře, která si v ničem nezadá s ostatními moderními jazyky. viz http://www.comtalk.net/Squeak/50.

    O typové kontrole už řeč byla v jednom z minulých dílů.

  • 16. 3. 2004 15:49

    deda.jabko (neregistrovaný)

    souhlasim s autorem predchoziho prizpevku, ze clanek zacina provaktivnim konstatovanim, ze smalltalk nepotrebuje "šablony, delegáty, přetěžovat operátory, používat makra, prostory jmen, spřátelené funkce, násobnou dědičnost, rozhraní, výjimky, mít dokonalou typovou kontrolu" proc taky? jazyk bez toho muze existovat...

    na druhou stranu tento aparat vyrazne usetruje praci - tim ze znacnou cast problemu je schopny odhalit uz v dobe kompilace, pripadne inteligentne oznamit, ze je neco spatne - a ne ze se "syntakticka" chyba projevi tim, ze se program jednou za cas chova divne

    to bych tady mohl klidne tvrdit, ze lisp (nebo muj oblibeny scheme) je mnohem mocnejsi nez java, c#, c++, smalltalk,... protoze vetsina vlastnosti techto jazyku jde v lispu implementovat pomoci cca desitky funkci

  • 16. 3. 2004 18:44

    Pavel Křivánek (neregistrovaný)

    Tady na sebe naráží dva naprosto odlišné koncepty.

    C++ a jiné OO kompilované jazyky chápou objekt jako množinu dat, nad nimiž je přípustná určitá množina operací. Pokud chcete s objektem pracovat, potřebujete vědět, jaké operace použít. Pokud selžete při výběru operací, získáte špatná data. Drtivou většinu omezení musíte provádět v době kompilace. Když chcete takovémuto jazyku dodat patřičnou mocnost a použitelnost, zákonitě skončíte u velmi komplikovaného návrhu. Když jej budete budete chtít zjednodušit, musíte se některých vlastností vzdát.

    Smalltalk využívá jiný přístup. Objekty jsou skutečně objekty. Ony rozhodují o svých schopnostech. Jste schopni pracovat pouze s živými objekty. Když chcete, aby vykonaly nějakou operaci, musíte jim o tom říci a je jen na nich, co s tím udělají. Pokud pracujete s objektem, o němž chybně předpokládáte, že implementuje ty a ty operace, odmítne vás.

    Ač se to na první pohled nemusí zdát, dynamická typová kontrola ve výsledku vede k dokonalejšímu zapouzdření a tedy k lepší bezpečnosti. Kontrola se přesouvá tam, kde má ve skutečně smysl - do doby běhu programu. Smalltalk vlastně ani nic jiného nezná. Celý Smalltalk je jedna velká už přes dvacet let běžící aplikace, která za běhu upravuje sama sebe, přičemž se občas uspí.

    Tyto dva přístupy tady existují a je jen na vás, jaký zvolíte, jaký bude pro konkrétní situaci výhodnější. Když se podíváte na seriál o Mercury, bude vás autor přesvědčovat, že dokonalá statická typová kontrola je ta nejlepší možná cesta.

    Nedá se mluvit o mocnosti, tu mají stejně všichni na úrovni Turingova stroje, nicméně s klidným svědomím mohu prohlásit, že Smalltalk je výkonnější jazyk/prostředí, než C++, C#, Java. Nabízí to stejné, co tyto jazyky při stejné a mnohdy menší složitosti zápisu (aniž by se jeho strukturou od nich výrazně lišil, jako to dělá Lisp) a nabízí ještě hodně navíc a to při zachování až zarážející jednoduchosti.

  • 16. 3. 2004 9:33

    Pavel Křivánek (neregistrovaný)

    Ještě jsem opomněl spřátelené funkce :-)

    Když chcete, aby vaše třída pracovala korektně třeba se třídou Number, není nic snazšího, než jednoduše upravit třídu Number.

  • 16. 3. 2004 9:53

    martin (neregistrovaný)

    Nemam moc jasnou predstavu, jak by takova uprava vypadala, ale napada me otazka:
    Kolik aplikaci pokazim, kdyz si upravim tridu Number?
    Co kdyz nekdo taky potrebuje upravy tridy Number, ale jine, nekompatibilni?

  • 16. 3. 2004 10:17

    Zbyněk Křivka (neregistrovaný)

    Toto je podle mého názoru asi nejpalčivější (v současnosti) problém Squaeku. A to je to, že je to v principu jednouživatelský systém a tudíž každý má svou image, do které si může vrtat jak chce a že to bude nekompatibilní s ostatními ho netrápí.

    V praxi je to tak, že se do tak důležitých tříd jako Number dělají takové zásahy, aby se rozhraní nezměnilo, tj. pouze se přidávají nové metody (tj. schopnost porozumět novým zprávám) a případně se upravují, tak aby zvládaly i to co předtím (jak to udělat patří mezi pokročilejší postupy a pravděpodobně se to dočtete později nebo případně na www.comtalk.net).

    Pro budoucnost Squeaku jako hojně používaného nástroje bude potřeba se s těmi Environmenty a jinými namespace-like technikami poprat a vyrobit nějakej super-hack, kterej nebude porušovat krásu současného prostředí a přitom nám dá požadované výhody pro praxi.

    Ale potenciál tu je a doufám v zdárné řešení.

  • 16. 3. 2004 10:17

    Pavel Křivánek (neregistrovaný)

    Smalltalk nezná priority operátorů, což je jeden z hlavních důvodů, proč se spřátelené funkce zavádí. Nicméně úpravy v ostatních i systémových třídách se dělají poměrně běžně.

    Zde je třeba si uvědomit jednu podstatnou skutečnost. Smalltalk sice sloužil jako operační systém, dá se tak používat, nicméně to v současnosti NENÍ operační systém. Je to vývojový nástroj, který používá zcela opačný přístup k tvorbě programů, než je tomu u jeho kolegů běžné.

    Když začnete psát svoji aplikaci, už ji máte hotovou. Celý Smalltalk je vaše aplikace. Vy ji doplníte o funkčnost, kterou od ní nově požadujete s tím, že můžete využívat statisíce již napsaných řádků kódu, pomocí jí samé se v ní přehrabovat, a v okamžiku, kdy její vývoj ukončíte, odstraníte věci, které pro její účel nejsou podstatné, uzamknete ji pro další úpravy a předáte zákazníkovi.

    Trochu jiná situace je, pokud váš program poskytnete dalším vývojářům ve zdrojovém formátu, aby ji používali ve svých projektech. Samozřejmě je velmi vhodné jim o vašich úpravách běžných tříd dát vědět a co nejvíce se jim vyhnout.

  • 16. 3. 2004 21:24

    bela (neregistrovaný)

    > Kdy zanete psát svoji aplikaci, u ji máte hotovou. Celý Smalltalk je
    > vae aplikace. Vy ji doplníte o funknost, kterou od ní nov poadujete s
    > tím, e mete vyuívat statisíce ji napsaných ádk kódu, pomocí jí samé se
    > v ní pehrabovat, a v okamiku, kdy její vývoj ukoníte, odstraníte vci,
    > které pro její úel nejsou podstatné, uzamknete ji pro dalí úpravy a
    > pedáte zákazníkovi.
    >
    to je prima. lze zajit az tak, ze z celeho prostredi (aplikace)
    ted udelam demona co se pousti z radky a bezi na pozadi ? nebo sem to spatne pochopil...

  • 16. 3. 2004 22:36

    Pavel Křivánek (neregistrovaný)

    Squeak dokáže běžet na pozadí. Lze jej použít i pod Windows jako NT službu a velmi často se tak činí, pokud hraje roli např. webového serveru. Tyto možnosti jsou závislé na schopnostech virtuálního stroje.

    Jiná otázka je, nakolik se vám podaří osekat image na co nejmenší velikost. V tomto směru má Squeak opravdu co dohánět. Komerční implementace Smalltalku jsou na tom podstatně lépe. Teoreticky je sice možné image značně redukovat, ale v praxi se příliš veliké zásahy neprovádějí.

  • 17. 3. 2004 10:42

    OldFrog (neregistrovaný)

    Primlouvam se za to, aby i tyto prakticke cinnosti byly v serialu ramcove popsany - pripadne "zamknuti" a nasledna distribuce hotoveho programu, nastaveni jako sluzby ve WinNT a daemona na UNIXu, srovnani s komercnimi implementacemi Smalltalku.

  • 18. 3. 2004 10:55

    Milan Čermák (neregistrovaný)

    Dovolím si srovnání Squeaku a Cincom VisualWorks, které běžně používám. Podle mě je Squeak určen spíše k výuce a všemožným demonstracím, čemuž odpovídá jeho prostředí. Ne že by se v něm nedalo programovat, ale vyžaduje to velkou změnu v myšlení. Osobně si myslím, že Squeak je průkopníkem nových přístupů v používání počítačů a internetu.
    Oproti tomu Cincom VisualWorks poskytuje konvenčnější vývojové prostředí, které se lépe integruje do existujících systémů. Obsahuje mnoho programátorských nástrojů (pro testování, pro refaktoring). Existuje mnoho balíků (ať už v distribuci nebo ve veřejném repozitáři) podporujících existující technologie (XML, SOAP, atd).

    Jen tak mimochodem: Když jsem se učil C++, objekty jsem nepochopil. To přišlo až se Smalltalkem. Teď abych byl schopen dělat v C++, musel jsem si do něj naimplementovat některé základní věci (jako třeba heterogenní kolekce).

  • 15. 5. 2004 13:23

    druidkin (neregistrovaný)

    "The main problem for the C++ community today is to use Standard C++ in the way it was intended rather than as a glorified C or a poor man's Smalltalk."
    - Bjarne Stroustrup (inventor of C++), "Getting From The Past To The Future",
    p. 23 C++ Report, SIGS Nov/Dec 1999 Vol1 No.10

    Ale máš pravdu, aj ja som sa až zo Smalltalku dozvedel, čo je objekt a potom používal C++ ako "poor man's Smalltalk". Časom sa to trochu upravilo.

    Nevýhoda Smalltalku je, že keď ho spoznáš, budeš celý život na zvyšok len nadávať.