Smalltalk
Smalltalk je objektově orientovaný, dynamicky napsaný, přemítavý programovací jazyk navrhl u oxeroxovat PARC Alan Kay, Dan Ingalls, Ted Kaehler, Adele Goldbergová, a jiní během sedmdesátých lét, ovlivnil Sketchpad a Simula. Jazyk byl obecně uvolněn jako Smalltalk-80 a byl široce použitý protože. Smalltalk je v pokračujícím aktivním vývoji, a sbíral loajální společenství uživatelů kolem toho.
Historie
Smalltalk byl vynalezen skupinou výzkumníků vedl o Alana Kaye u oxeroxovat Palo Alto výzkumné centrum; Alan Kay navrhl systém, který Dan Ingalls splnil. První implementace, známý jako Smalltalk-71, byl vytvořen v nemnoho rán na sázce, že programovací jazyk založený na myšlence na procházení zprávy vdechl Simula mohl být realizován v “straně kódu”. Pozdnější verze vlastně užitá na výzkum je nyní známá jako Smalltalk-72. Jeho syntax a prováděcí model byli velmi odlišní od moderní Smalltalk, tolik tak že to mohlo být považováno za různý jazyk.
Po významných revizích který se mrazil některé stránky executional sémantiky k výkonu zisku, verze známá jako Smalltalk-76 byl vytvořen. Tato verze přidala dědičnost, představoval syntax hodně bližší k Smalltalk-80, a mělo vývojové prostředí představovat většinu z nástrojů nyní známých Smalltalkers.
Smalltalk-80 dodal metaclasses, něco který pomůže se udržovat “všechno je objekt” sdělení pravdivý tím, že sdruží vlastnosti a chování ke třídám jednotlivce (například, podporovat různé způsoby, jak vytvořit příklady). Smalltalk-80 byla první verze vyrobená dostupný ven z PARC, nejprve jako Smalltalk-80 verze 1, daný malému množství společností (Hewlett-Packard, Apple počítač, Tektronix, a DEC) a univerzity (UC Berkeley) pro “kolegiální recenzi” a implementaci na jejich platformách. Pozdnější (v roce 1983) obecná dostupnostní implementace, známý jako Smalltalk-80 verze 2, byl propuštěn jako obraz (platforma-nezávislý soubor s definicemi objektu) a virtuální strojová specifikace.
Dva současně populárních Smalltalk implementací jsou potomci těch originál Smalltalk-80 obrazy. Kvičet je otevřená zdrojová implementace odvozena z Smalltalk-80 verze 1 způsobem Applea Smalltalk. VisualWorks je odvozen z Smalltalk-80 verze 2 způsobem Smalltalk-80 2.5 a ObjectWorks (oba produkty ParcPlace systémů, xeroxový PARC průvodní důsledek společnost se tvořila přinést Smalltalk k trhu). Jako zajímavé spojení mezi generacemi, v roce 2002 Vassili Bykov realizoval Hobbes, virtuální stroj, který funguje Smalltalk-80 uvnitř VisualWorks. (Dan Ingalls později ported Hobbes kvičet).
IBM ukázal, že VisualAge Smalltalk bude podporovaný společností partnera (a VisualAge implementors) konkretizace. Cincom, umění objektu, drahý kámen a jiní prodavači pokračují prodávat Smalltalk prostředí. Otevřený kvičet implementace má relativně aktivní společenství vývojářů, včetně mnoho z originálního Smalltalk společenství. GNU Smalltalk je osvobodit (GPL) realizaci Smalltalk od GNU projektu. Tam je dokonce Smalltalk kříž-kompilátor [1] pro PalmPilot který běží na Windows (ačkoli to zdá se, že vývoj může stagnovali v uplynulých letech).
Tam je také high-performance JITted modulární Smalltalk implementace navržený pro psát nazvaný S # (S-ostrý) který podporuje prodloužený dialekt Smalltalk.
Více nedávno, Python a Ruby reimplemented některé Smalltalk nápady s více C/Java-jako syntax. (Od jeho původů jako vyučovací jazyk, standardní Smalltalk syntax používá interpunkci ve způsobu více jako angličtina než tradiční kódovací jazyky.)
Objektově orientované programování
Jak v jiných objektově orientovaných jazycích, centrální pojetí v Smalltalk je to objekt. Objekt je vždy příklad třída. Třídy jsou “modrotisky” to popisovat vlastnosti a chování jejich příkladů. Například, třída okna by deklarovala, že okna mají vlastnosti takový jako popiska, pozice a zda okno je viditelné nebo ne. Třída by také deklarovala, že příklady podporují operace takový jako otevření, uzavření, pohybování a úkryt. Každý zvláštní Window objekt by měl jeho vlastní hodnoty těch vlastností, a každý je by byl schopný vykonávat operace definované jeho třídou.
Smalltalk objekt může dělat přesně tři věci:
- Držte stát jako (odkazy na jiné objekty).
- Přijměte zprávu od sebe nebo další objekt.
- V běhu zpracování zpráva, posílat zprávy sobě nebo jinému namítají.
Stát objekt myslí si je vždy soukromý k tomu objektu. Jiné objekty mohou dotazovat nebo měnit ten stát jen tím, že pošle žádostem (zprávy) k objektu dělat tak. Nějaká zpráva může být poslána k nějakému objektu: když zpráva je přijata, přijímač stanoví zda ta zpráva je vhodná.
Smalltalk je ' čistý ' OO jazyk, znamenat to na rozdíl od Javy a C + + není tam žádný rozdíl mezi objekty a primitivními typy. V Smalltalk, primitivní hodnoty takový jak celá čísla, booleans a charaktery jsou také objekty, v pocitu, že oni jsou příklady korespondenčních tříd. Programátor může měnit tyto třídy přidat nové chování k jejich příkladům -- například, realizovat struktury nové kontroly -- nebo dokonce změnit jejich aktuální chování. Tento fakt je shrnut v obyčejně slyšené frázi “v Smalltalk všechno je objekt”. Být ' čistý ' OOP je oxymorón v Smalltalk, protože není tam žádný objekt orientace programovací, to je prostě (skutečný) objekt programovací, žádná orientace, jen namítá.
Protože všechno je objekt, třídy sám jsou také objekty. Každá třída je příklad metaclass té třídy. Metaclasses podle pořadí být také objekty, a jsou všechny příklady třídy nazvané ' Metaclass je. Bloky kódu (vidí dolů) být také objekty.
Odraz
Smalltalk je plně přemítavý systém, splnil v sobě. Smalltalk poskytuje oba strukturální a výpočetní odraz. Smalltalk je strukturálně přemítavý systém jehož struktura je definována Smalltalk objekty. Třídy a metody, které definují systém jsou sám namítá a úplně část systému že oni pomohou vymezit. Smalltalk kompilátor kompiluje textový zdrojový kód do objektů metody, typicky příklady CompiledMethod. Tito jsou přidáni ke třídám tím, že uloží je v třídním metodovém slovníku. Díl hierarchie třídy, která definuje třídy může přidat nové třídy k systému. Systém je rozšířen běžícím Smalltalk kódem, který vytváří nebo obnovuje třídy a metody. Tímto způsobem Smalltalk systém je “žijící” systém, nosit schopnost rozšířit sebe u provozní.
Od tříd jsou sám objekty, oni mohou být kladené otázky takový jak “jaké metody vy splníte?” nebo “jaká pole/místa/proměnné příkladu dělají vy vymezíte?”. Tak objekty mohou snadno být vyšetřeny, kopírovaný, (de) serializoval a tak na s generickým kódem to platí o nějakém objektu v systému.
Smalltalk také poskytuje výpočetní odraz, schopnost pozorovat výpočetní stav systému. V implementacích odvozených z originálu Smalltalk-80 aktuální aktivace metody je dostupná jako objekt jmenovaný přes klíčové slovo, thisContext. Tím, že pošle zprávy k thisContext aktivace metody může položit otázky jako “kdo poslal tuto zprávu mně”. Tyto faclities umožní realizovat co-rutiny nebo Prolog-jako ústupek bez modifikovat virtuální stroj.
Když objekt je poslal zprávu že to neuskuteční virtuální stroj pošle objekt doesNotUnderstand: zpráva se reification zprávy jako argument. Zpráva (další objekt, příklad Zpráva) obsahuje selector zprávy a Pole (informatika) jeho argumentů. V interaktivním Smalltalk systému standardní implementace doesNotUnderstand: je jeden to otevře chybové okno oznamovat chybu uživateli. Přes toto a přemítavá zařízení uživatel může zkoušet kontext ze kterého omyl se objevil, obnovovat kód obtěžování, a pokračovat, všichni uvnitř systému, používat Smalltalk je přemítavá zařízení.
Ještě jeden důležité použití doesNotUnderstand: je intervence. Jeden může vytvořit třídu, která nedefinuje nějaké metody jiný než doesNotUnderstand: a nezdědí od nějaké jiné třídy. Příklady této třídy účinně pochopí žádné zprávy. Tak pokaždé zpráva je poslána k těmto příkladům oni vlastně být poslán doesNotUnderstand:, od této doby oni prosí ve zprávě posílat proces. Takové objekty jsou nazývány zastoupeními. Splněním doesNotUnderstand: přiměřeně jeden může vytvořit distribuované systémy kde zastoupení předají zprávy přes síť k jiným Smalltalk systémům (zařízení obyčejný v systémech jako CORBA a RMI ale nejprve propagoval v Smalltalk v 80-tých letech), trvalé systémy kde změny ve státě jsou psány k databázi a jako.
Syntax
Smalltalk syntax je poněkud minimalista, umístěný na jediný hrst deklarací a vyhrazených slov. Ve skutečnosti, jen pět klíčových slov je rezervováno v Smalltalk: pravdivý, falešný, nula, self a výborný. Jediné vestavěné jazykové contructs jsou zpráva posílá, domácí cvičení, metoda vratná a doslovná syntax pro některé namítá. Zbytek jazyka, včetně struktur kontroly pro podmíněné ohodnocení a iterace, je realizován nad těmi standardní Smalltalk třídní knihovnou. (Pro výkon implementace důvodů mohou rozpoznávat a zpracovávat jako specialita někteří těch zpráv; nicméně, toto je jen optimalizace, ne hardwired do syntaxe jazyka).
Literals
Následující příklady objasní nejvíce obyčejné objekty, které mohou být psány jako doslovné hodnoty v Smalltalk metodách.
Čísla. Následující seznam objasní některé ty možnosti
42 - 42 123.45 1.2345e2 16rA000 2r10010010
Poslední dva záznamy jsou binární a hexadecimální číslo, příslušně. Číslo dříve ' r ' je základ nebo základ. Základ nemusí být síla dva; například 36rSMALLTALK je platné číslo (pro zvědavý, rovný 80738163270632 desetině).
Charaktery jsou psány tím, že předchází jim s dolarovým znaménkem:
$
Řetězce jsou sledy charakterů uzavřených v jediných uvozovkách:
' ahoj svět '
Zahrnout citaci do řetězce, zdvojnásobit to.
Dva se rovnat řetězcům (řetězce jsou se rovnat jestliže oni obsahují všechny stejné charaktery) moci být různé objekty bydlet v různých místech v paměti. Kromě řetězců, Smalltalk má třídu charakteru objekty sekvence volaly Symbol. Symboly jsou zaručil být jedinečný -- tam moci být ne dva se rovnat symbolům, které jsou různé objekty. Protože to, symboly jsou velmi laciné porovnat a jsou často užité na artefakty jazyka takový jako zpráva selectors (vidí dolů).
Symboly jsou psány jak # následovaný charaktery. Například:
# foo
Sady:
# (1 2 3 4)
definuje soubor čtyř celých čísel.
A minule ale ne nejméně, bloky
[... Nějaký kód smalltalk...]
Bloky jsou vysvětleny v detailu dále v textu.
Mnoho Smalltalk dialektů uskuteční další syntaxes pro jiné objekty, ale ones nahoře být chléb a máslo podporované všemi.
Deklarace proměnné
Dva druhy proměnné obyčejně používaly v Smalltalk jsou proměnné příkladu a dočasné proměnné. Jiné proměnné a příbuzná terminologie závisí na zvláštní implementaci. Například, VisualWorks má prvotřídní sdílené proměnné a namespace sdílené proměnné, zatímco Squeak a mnoho jiných implementací má proměnné třídy, proměnné kaluže a globální proměnné.
Dočasné proměnné deklarace v Smalltalk jsou proměnné deklarované uvnitř metody (vidí dolů). Oni jsou deklarováni nahoře metody, zatímco jména se oddělila prostory a přiložený svislými čárami. Například:
| index |
deklaruje dočasnou proměnnou jmenoval index. Rozmanité proměnné mohou být deklarovány uvnitř jednoho souboru barů:
| indexovat samohlásky |
deklaruje dvě proměnné: index a samohlásky.
Domácí cvičení
Proměnná dostane hodnotu přes ': = ' syntax. Tak:
samohlásky: = ' aeiou '
Přiřadí řetězec ' aeiou ' k předtím prohlásil samohlásky za proměnnou. Řetězec je objekt (sled charakterů mezi jedinými citacemi je syntax pro doslovné řetězce), vytvořený kompilátorem u kompilovat čas.
Zprávy
Zpráva je nejvíce základní jazykový pojem v Smalltalk. Dokonce struktury kontroly jsou realizovány, zatímco zpráva posílá. Následování příkladů pošle zprávu ' faktoriál ' k číslu 42.
42 faktoriálu
V této situaci 42 je volala zpráva přijímač, zatímco ' faktoriál ' je zpráva selector. Přijímač reaguje na zprávu vrácením hodnoty (pravděpodobně v tomto případě faktoriál 42). Kromě jiného, výsledek zprávy může být přidělen do proměnné:
aRatherBigNumber: = 42 faktoriálu
“faktoriál” nahoře je co je voláno unární zpráva protože jen jeden objekt, přijímač, je zaujatý. Zprávy mohou nést další objekty jak argumenty, takto:
2 raisedTo: 4
V tomto výrazu dva objekty jsou zahrnovány: 2 jako přijímač a 4 jako argument zprávy. Výsledek zprávy, nebo v Smalltalk jazyce, odpověď je předpokládaný, že je 16. Takové zprávy jsou volány zprávy klíčového slova. Zpráva může mít více argumentů, používat následující syntax:
' ahoj svět ' indexOf: $ l startingAt: 6
(který poněkud zřejmě odpoví indexu charakteru ' l ' v řetězci přijímače, zahájení pátrání od indexu 6). Selector této zprávy je “indexOf: startingAt:”, sestávat ze dvou kusů, nebo klíčová slova.
Takové prokládání klíčových slov a argumenty velmi zlepší čitelnost kódu, protože argumenty jsou vysvětleny jejich předchozími klíčovými slovy. Například výraz vytvořit používání obdélníku C + + nebo Java-jako syntax:
nový obdélník (10, 20, 100, 200);
kde to je nejasné který argument je který -- je to (odešel, vrchol, pravý, dolní část) nebo (odešel, pravý, vrchol, dolní část), nebo (odešel, vrchol, šířka, výška)? -- v Smalltalk se stojí:
Obdélník odešel: 10 vrcholu: 20 pravý: 100 dolní části: 200
Přijímač v tomto případě je “obdélník”, třída a odpověď budou nový příklad třídy se specifikovanými parametry.
Konečně, většina speciality (non-abecední) charaktery mohou být používány, zatímco co je voláno binární zprávy. Tito dovolí matematické a logické operátory být zapsán jejich tradiční forma:
3 + 4
který pošle zprávu “+” k přijímači 3 s 4 vypadal jako argument. Podobně,
3 > 4
je zpráva “>” posílal k 3 s argumentem 4 (odpověď kterého bude falešná).
Upozornění, to Smalltalk jazyk sám nezahrnuje smysl těch operátorů. Výsledek nahoře je jen definovaný jak přijímač zprávy (v tomto případě Number příklad) reaguje na zprávy “+” a “>”.
Postranní účinek tohoto mechanismu je přetěžování operátora. Zpráva “>” moci také být rozuměl pod jinými objekty, dovolovat použití výrazů formy “> b” porovnat je.
Výrazy
Výraz může zahrnovat násobek zpráva posílá. V tomto případě výrazy jsou rozloženy podle jednoduchého pořadí priority. Unární zprávy mají nejvyšší přednost, následovaný binárními zprávami, následovaný zprávami klíčového slova. Například:
3 faktoriál + 4 faktoriál mezi: 10 a: 100
je ohodnocen takto:
3 obdrží zprávu “faktoriál” a odpoví 6 4 obdrží zprávu “faktoriál” a odpoví 24 6 obdrží zprávu “+” s 24 jako argument a odpovědi 30 30 obdrží zprávu “mezi: a:” s 10 a 100 jako argumenty a odpovědi pravdivý
Odpověď poslední zprávy posílat je výsledek celého výrazu.
Parentheses moci změnit pořadí ohodnocení když potřebovaný. Například,
(3 faktoriál + 4) faktoriál mezi: 10 a: 100
bude měnit význam tak že výraz nejprve vypočítá “3 faktoriál + 4” poddajný 10. To 10 pak dostane druhou “faktoriálovou” zprávu, poddajný 3628800. 3628800 pak přjímá “mezi: a:”, odpovídat falešný.
Si všimnout toho protože význam binárních zpráv není hardwired do Smalltalk syntaxe, všichni je být zvažován mít se rovnat prioritě a být oceněný jednoduše od odešel spravit. Protože to význam Smalltalk používání výrazů binární zprávy mohou být odlišné od jejich “tradičního” výkladu:
3 + 4 * 5
je ohodnocen jak “(3 + 4) * 5”, produkovat 35.
Unární zprávy mohou být připoutaný tím, že napíše jim jednoho po jiném:
3 faktoriálový faktoriálový žurnál
který pošle “faktoriál” k 3, pak “faktoriál” k výsledku (6), pak “žurnál” k výsledku (720), producting výsledek 2.85733.
Série výrazů může být psána jak v následování (hypotetického) příkladu, každý končit obdobím. Tento příklad nejprve vytvoří nový příklad třídy Window, uloží to v proměnné, a pak pošle dvě zprávy k tomu.
| okno | okno: = okno nový. popiska okna: ' ahoj '. okno otevřený.
Jestliže série zpráv jsou poslány ke stejnému přijímači jak v příkladě nahoře, oni mohou také být psáni jak kaskáda s jednotlivcem zprávy se oddělily středníky:
Okno nová popiska: ' ahoj '; otevřený
Toto přepsání časnějšího příkladu jako jediný výraz se vyhne potřebě uložit nové okno v dočasné proměnné. Podle obvyklých precedenčních pravidel, unární zpráva “nový” je poslán nejprve, a pak “popiska:” a “se otevřít” být poslán k odpovědi “nový”.
Bloky kódu
Blok kódu může být vyjádřen jako doslovný objekt. Toto je dosáhl s hranatými závorkami:
[: params |]
Kde: params je seznam parametrů kód může brát. Toto znamená to Smalltalk kód:
[: x | x + 1]
je ekvivalent k:
f (x) = x + 1
Technicky, výsledný blokový objekt je uzavření. To může (kdykoli) zpřístupňovat proměnné jeho vložení lexikální scopes. Bloky jsou první třída. To je, odkazy na bloky mohou být vypadal jako argumenty, se vrátil jako hodnoty, nebo skladoval jako stát, úplně jako nějaké jiné objekty. Bloky mohou být žádal, aby vykonal jejich kód tím, že pošle je “hodnota “- zpráva (s jedním argumentem pro každý parametr v bloku).
Doslovná reprezentace bloků byla inovace, která dovolila jistý kód být významně čitelnější; to dovolilo algoritmy zahrnovat iteraci být kódovaný v jasné a výstižné cestě. Kód to odkázaný typicky být psán se smyčkami v některých jazyky mohou být psány výstižně v Smalltalk používat bloky, někdy v jediné řadě.
positiveAmounts: = allAmounts výběrový: [: amt | amt isPositive]
Poznamenat, že toto je velmi blízko příbuzné funkčnímu programování, wherein vzory počítání (tady výběr) být odstraněn do vyšší-nařídí funkce. Například, zpráva výběrový: na sbírce je ekvivalent k vyšší-objednávat funkci filtr na vhodném functor.
Struktury kontroly
Smalltalk kontrolní struktury jsou pozoruhodně chybějící od syntaxe jazyka. Tito jsou místo toho splnil jako zprávy poslané k objektům. Například, podmíněné provádění je realizováno ifTrue poslání zprávy: k booleovskému objektu, s blokem kódu být vykonán jestliže a jediný jestliže booleovský je pravdivý jako argument zprávy.
Dodržování kodexu demonstruje toto:
vyplývat: = > b ifTrue: [' větší '] ifFalse: [' méně je]
Bloky jsou také používány realizovat uživatelsky definované kontrolní struktury, enumerators, návštěvníci, připojitelné chování a mnoho jiných vzorů. Například:
| aString samohlásky | aString: = ' toto je řetězec '. samohlásky: = aString výběrový: [: aCharacter | aCharacter isVowel].
V poslední řadě, řetězec je poslal zprávu výběrový: s tvrzením, že je blok kódu doslovný. Blok kódu doslovný bude být používán jako funkce predikátu, která by měla odpovědět pravdivý jestliže a jediný jestliže prvek řetězce by měl být zahrnut ve sbírce charakterů, které uspokojí test reprezentovaný blokem kódu, který je argument k “výběrový:” zpráva.
Objekt řetězce reaguje na “výběrový:” zpráva tím, že opakuje přes jeho členy (tím, že pošle sebe zpráva “dělat:”), hodnotit výběr blok (“aBlock”), jakmile se každou postavou to obsahuje jako argument. Když ocenil (tím, že je poslal zprávu “hodnota: každý”), blok výběru (odkazoval se na parametrem “aBlock”, a definovaný blokem doslovný “[: aCharacter | aCharacter isVowel]”), odpoví booleovský, který je pak poslán “ifTrue:”. Jestliže booleovský je objekt pravdivý, charakter je přidán k řetězci být vrácen. Protože “výběrový:” metoda je definována v abstraktní třídě Collection, to může také být používáno jako toto:
| aPoint obdélníků | obdélníky: = OrderedCollection s: (obdélník odešel: 0 pravý: 10 vrcholu: 100 dolní části: 200) s: (obdélník odešel: 10 pravý: 10 vrcholu: 110 dolní části: 210). aPoint: = bod x: 20 y: 20. kolize: = obdélníky vyberou: [: aRect | aRect containsPoint: aPoint].
Třídy
Toto je akciová třídní definice:
Podtřída objektu: # MessagePublisher instanceVariableNames: ' ' classVariableNames: ' ' poolDictionaries: ' ' kategorie: ' Smalltalk příklady
Často, většina z této definice bude vyplněná životním prostředím.
Metody
Když objekt dostane zprávu, lícování metody jméno zprávy je použil. Dodržování kodexu definuje metodu publikovat, a tak vymezí co se stane, když tento objekt přjímá ' publikovat ' zpráva.
vydávat přehlídku přepisu: ' ahoj, svět! '
Poznamenat, že pár zprávy s metodou je dělán objektem u provozní (zatímco v mnoha jazycích toto je určováno statically u kompilovat čas).
Instantiating třídy
Dodržování kodexu:
MessagePublisher nový
vytvoří (a návraty) nová konkretizace MessagePublisher třídy. Toto je typicky zadal proměnné:
publikovatel: = MessagePublisher nový
Nicméně, to je také možné poslat zprávu dočasnému, anomymnímu objektu:
MessagePublisher nový publikovat
Ahoj příklad světa
V dodržování kodexu, zpráva “přehlídka:” je poslán k objektu “přepis” s String doslovný ' ahoj, svět! ' jako jeho argument. Zaříkávání “přehlídka:” metoda způsobí charaktery jeho argumentu (řetězec doslovný ' ahoj, svět! ') být vystaven v přepisu (“konzolové”) okno.
Přehlídka přepisu: ' ahoj, svět! '.
Poznamenejte, že Transcript okno by potřebovalo být otevřený v rozkazu vidět výsledky tohoto příkladu.
Obraz-založená trvalost
Nejvíce populární programovací systémy oddělí kód programu (ve formě definic třídy, funkcí nebo procedur) od státu programu (takový jako objekty nebo jiné formy dat aplikace). Oni načtou kód programu když aplikace je odstartována a nějaký předchozí aplikační stát musí být obnoven výslovně od konfiguračních souborů nebo jiných zdrojů dat.
Smalltalk systémy, nicméně, nerozlišují mezi aplikací data (namítají) a kód (řadí). Ve skutečnosti, třídy jsou objekty sám. Proto většina Smalltalk systémů uloží celý aplikační stát (zahrnovat jak třídu tak non-objekty třídy) v souboru obrazu. Obraz může pak být načten Smalltalk interpretem obnovit Smalltalk systém k dřívějšímu stavu.
Jiné jazyky, které modelují kód aplikace jako forma dat, takový jako Lisp, často používat obraz-založená trvalost také.
Smalltalk obrazy jsou podobné výpisům z paměti a obecně dávají stejné užitky, takový jako zpomalené nebo vzdálené ladění s plným přístupem ke státu aplikace u doby chyby.
Úroveň přístupu
Všechno v Smalltalk je dostupný pro modifikaci od uvnitř odladěného programu. Toto znamená to, například, Ide může být měněn v vtokové soustavě, bez restartovat to. V některých implementacích, syntaxi jazyka nebo odvozu odpadu implementace může také být měněna bezmyšlenkovitě.
Jen-v-kompilace času
Smalltalk programy jsou obvykle kompilovány k bytecode, který je pak interpretován virtuálním strojem nebo dynamicky se přenesl do stroje-kód domorodce. Tento mechanismus byl adoptován jazyky takový jako Java a C #.
Implementace
- Ambrai Smalltalk, vidět http://www.ambrai.com/
- Bistro
- Cincom Smalltalk, vidět Cincom Smalltalk internetové stránky
- ObjectStudio a VisualWorks, vidět Cincom Smalltalk internetové stránky, Wiki, Cincom Smalltalk blog.
- Dolphin Smalltalk, vidět http://www.object-arts.com/content/navigation/home. html
- F-skript
- Drahý kámen/S, vidět http://www.gemstone.com/products/smalltalk/
- GNU Smalltalk, vidět http://www.gnu.org/software/smalltalk/smalltalk. html
- IBM VisualAge pro Smalltalk, vidět http://www.ibm.com/software/awdtools/smalltalk/, http://www.instantiations.com/VAST/
- OSVM malý Smalltalk pro vložená zařízení, vidět http://www.esmertec.com/solutions/M2M/
- LSW vize-Smalltalk, vidět http://www.lesser-software.com/lswvst. htm
- Přivlastnit si Smalltalk které útoky na Palm pilota, vidět http://www.pocketsmalltalk.com/
- S #, vidět http://www.ssharp.org
- Smalltalk MT, vidět http://www.objectconnect.com/
- Smalltalk/X, vidět http://www.exept.de/exept/english/Smalltalk/frame_uebersicht. html
- Kvičet, vidět http://www.squeak.org/
- StepTalk (mluví Smalltalk jazykem nad cílem-C provozní)
- Strongtalk
- Susie: Psát používání Smalltalk interpretového stroje vidět http://sourceforge.net/projects/susie/
- Kousky historie -- Smalltalk-76 implementace jako jávský applet.
Knihy
- Stahovatelné knihy o Smalltalk povolení trvaly přijímat těchto sázek volně dostupný.
- Programando ošidí Smalltalk - Un ambiente de objetos vivos Booka ve španělštině palubou Diega Gomeze.
