1. V čom je OP v jazyku smalltalk čistejšie ako v C# a Jave? A prečo keď je lepšie tak sa nepresadilo?
Smalltalk je čisté, jednoduché objektové programování. Vše je objekt - proměnná, blok kódu, podrpogram, zpráva objektu, cokoli. Neexistuje nic co by nebylo objektem. Díky tomu je to jazyk čistý a velice jednoduchý.
Java ani C# de facto objektové nejsou. Mnoho věcí nejsou v Javě ani C# objekty. Například proměnné typů char, int, a další, které nejsou objekty. Blok kódu není objektem. Metoda třídy není objektem. Podmínkový příkaz není objektem. Cyklus není objektem. Atd. atd. atd. Ve Smalltalku je objektem naprosto všechno - a proto je to logičtější.
De facto při porovnání těchto jazyků je Smalltalk mnohonásobně objektovější než Java/C#. Díky tomu je Smalltalk jednodušší, konzistentnější a mocnější v řadě operací.
Neprosadilo se to proto, že do prosazení Smalltalku nikdo nenalil miliardy dolarů jako v případě Javy Sun nebo C# Microsoft. Představa, že se prosadí lepší, nikoli to čeho se lijí astrnomické sumy - je naivní.
2. Neni to jedno či zavolám metódu, alebo pošlem správu? Akú mi dáva message passing výhodu oproti volaniu metód?
Obojí jsou různé věci, mají různé chování.
a) Poslání zprávy je poslání zprávy - tak jak to v OOP má být. Objektu pošlete zprávu nějakého názvu a parametry. Je na objektu, co s tím udělá.
Objekt u posílání zprávy má jediný vstup/podprogram - kam zaslat zprávu. Je to velice flexibilní a jdou s tím velké kusy. Snadno se tak dělá zasílání zpráv třeba přes počítačovou síť, nebo program může běžet distribuovaně na několika počítačích.
b) Volání metody je pouhé low level volání podprogramu pomocí pointeru. Je to úroveň strojového kódu procesoru. Voláte podprogram (a jen pouhou náhodou ten podprogram má první parameter pointer na data objektu).
Objekt je v tomto případě obrovská kupa vstupů/podprogramů (metod). Každá metoda nezávisle mění objekt a jeho stav. Hůře se nad tím získává kontrola.
Volání metod je úlitba a krok směrem k assembleru a strojovému kódu.
Má zmysel učiť sa smalltalk? čo mi to prinesie oproti bežným objektovým jazykom. Je vývoj v Smalltalku rýchlejší alebo kde je jeho hlavná výhoda.
Zkus to a uvidíš. :-)
Smalltalk je jeden z mála jazyků, který naučím i svou mámu, která o programování nemá moc ponětí. Je to tak jednoduchý a konzistentní jazyk, jak se to málokde jinde povedlo.
Ve Smalltalku se programuje velice rychle, až expresně. Určitě násobně rychleji než v Javě či C#.
Smalltalk je ovšem odlišný. Data a stav dat si ukládá mezi spuštěními. Smalltalk je v podstatě objektová databáze (úložiště), a nad tím luxusní grafické prostředí. Smalltalk mění objekty v této databázi pomocí programovacího jazyka. Jinak řečeno, nezapomíná změny a data. Je to jiný přístup.
Dnes už je Smalltalk dost v pozadí. Pokud očekáváš uplatnění ve firmách, tak to vzdej. Mimochodem:
1) programovací jazyk Ruby není nic jiného než zpackaná a trochu nedomyšlená kopie Smalltalku
2) Programovací jazyk Objective C je kříženec C a Smalltalku