Array ( [0] => 15494379 [id] => 15494379 [1] => cswiki [site] => cswiki [2] => Smalltalk [uri] => Smalltalk [3] => Smalltalk80book.jpg [img] => Smalltalk80book.jpg [4] => [day_avg] => [5] => [day_diff] => [6] => [day_last] => [7] => [day_prev_last] => [8] => [oai] => [9] => [is_good] => [10] => [object_type] => [11] => 1 [has_content] => 1 [12] => [oai_cs_optimisticky] => ) Array ( [0] => {{Infobox - programovací jazyk [1] => | název = Smalltalk [2] => | logo = [3] => | paradigma = [[Objektově orientované programování|objektově orientovaný]] [4] => | vznik = [5] => | autor = [[Alan Kay]], [[Dan Ingalls]], [[Adele Goldberg]] [6] => | vývojář = [[Alan Kay]], [[Dan Ingalls]], [[Adele Goldberg]], [[Ted Kaehler]], [[Diana Merry]], [[Scott Wallace]], [[Peter Deutsch]] a [[Xerox|Xerox PARC]] [7] => | první oznámení = [8] => | první vydání = 1972 [9] => | poslední verze = Smalltalk-80 version 2 [10] => | datum poslední verze = 1980 [11] => | poslední testovací verze = [12] => | datum poslední testovací verze = [13] => | typování = [[Typový_systém#Siln.C3.A9_a_slab.C3.A9_typov.C3.A1n.C3.AD|silná]], [[Typový_systém#Dynamick.C3.A1_typov.C3.A1_kontrola|dynamická]] [14] => | implementace = [[Amber Smalltalk|Amber]], [[Dolphin Smalltalk]], [[Gemstone (databáze)|GemStone/S]], [[GNU Smalltalk]], [[Pharo]], Smalltalk/X, [[Squeak]], [[IBM VisualAge|VA Smalltalk]], [[VisualWorks]] [15] => | dialekty = [16] => | ovlivněno = [[Lisp]], [[Simula 67|Simula]], [[Euler (programovací jazyk)|Euler]], [[IMP (programovací jazyk)|IMP]], [[Planner (programovací jazyk)|Planner]], [[Logo (programovací jazyk)|Logo]], [[Sketchpad]], [[ARPANET|ARPAnet]], [[Burroughův systém|Burroughs B5000]], [[buňka]] [17] => | ovlivnil = [[AppleScript]], [[Lisp|Common Lisp Object System]], [[Dart (programovací jazyk)|Dart]], [[Dylan (programovací jazyk)|Dylan]], [[Erlang (programovací jazyk)|Erlang]], [[Etoys (programovací jazyk)|Etoys]], [[Falcon (programovací jazyk)|Falcon]], [[Go (programovací jazyk)|Go]], [[Groovy]], [[Io (programovací jazyk)|Io]], [[Ioke (programovací jazyk)|Ioke]], [[Java (programovací jazyk)|Java]], [[Lasso (programovací jazyk)|Lasso]], [[Lisaac]], [[Logtalk]], [[NewtonScript]], [[Object REXX]], [[Objective-C]], [[PHP|PHP 5]], [[Perl 6]], [[Python]], [[Ruby]], [[Scala (programovací jazyk)|Scala]], [[Scratch]], [[Self (programovací jazyk)|Self]] [18] => | operační systém = [[Multiplatformní software|multiplatformní]] [19] => | licence = [20] => | web = [21] => }} [22] => '''Smalltalk''' (výslovnost {{IPA2|ˈsmɔ:ltɔ:k}}) je [[interpret (software)|interpretovaný]], dynamicky a striktně typovaný, [[objektově orientované programování|čistě objektový]] [[programovací jazyk]], který v sedmdesátých letech [[20. století]] vyvinuli ve firmě [[Xerox PARC]] [[Alan Kay]], [[Dan Ingalls]], [[Ted Kaehler]] a [[Adele Goldberg]]. Inspiraci čerpali převážně z projektů [[Sketchpad]] a [[Simula 67|Simula]]. [23] => [24] => Přestože se nejedná o nejrozšířenější jazyk pro psaní podnikových aplikací či výuku, je dodnes hojně používán. Právě komunita kolem Smalltalku vyvinula [[extrémní programování]], systém testování programu SUnit (jeho známější verze [[JUnit]] se hojně využívá v Javě), [[Refaktorování|refaktoring]] a [[návrhový vzor|návrhové vzory]]. [25] => [26] => Původní implementace jazyka měla velmi vysoké pořizovací náklady, což bránilo většímu rozšíření mezi amatéry. V současné době se stávají populární jeho [[svobodný software|svobodné]] implementace, např. [[Squeak]], nebo [[Pharo]]. [27] => [28] => == Historie == [29] => Smalltalk vyvinula skupina výzkumníků kolem [[Alan Kay|Alana Kaye]] ve výzkumném centru [[Xerox Palo Alto Research Center]]. Alan Kay navrhl většinu raných verzí Smalltalku, Adele Goldberg napsala většinu dokumentace a Dan Ingalls většinu raných verzí implementoval. První verzi, známou jako Smalltalk-71, vytvořil Alan Kay během několika rán jako sázku, že programovací jazyk založený na myšlence zasílání zpráv, inspirovaném jazykem Simula, lze napsat na „jediné stránce [[zdrojový kód|kódu]]“. Pozdější variantu, která už byla skutečně využívána pro výzkum, dnes známe jako Smalltalk-72, avšak její syntaxe i způsob provádění byly stále velmi odlišné od verzí používaných dnes. [30] => [31] => Smalltalk-80 byla první verze, která opustila PARC, nejprve jako Smalltalk-80 Version 1, ji dostali na přezkoumání a otestování některé vybrané společnosti ([[Hewlett-Packard]], [[Apple Computer]], [[Tektronix]] a [[Digital Equipment Corporation]]) a univerzity ([[Berkeley]]). Smalltalk-80 Version 2 už byla vydaná jako tzv. ''image soubor'' a specifikace [[virtuální stroj|virtuálního stroje]]. [32] => [33] => V současné době jsou velmi populární komerční VisualAge Smalltalk od [[IBM]], [[svobodný software]] [[Squeak]], který má velmi aktivní komunitu vývojářů, včetně mnohých vývojářů původního Smalltalku, a konečně [[překladač]] GNU Smalltalk od [[GNU]], distribuovaný pod licencí [[GNU General Public License|GPL]], jehož vývoj však poslední dobou stagnoval. [34] => [35] => == Objektově orientované programování == [36] => Všechny datové typy jsou Objekt (tak tomu není např. u jazyků [[Java (programovací jazyk)|Java]] nebo [[C++]], které navíc rozlišují primitivní typy), dokonce i blok kódu je objekt. Programátor může měnit chování jakékoli třídy objektů. Může dokonce zaměnit i hodnoty ''true'' a ''false'', pokud to považuje za vhodné. [37] => [38] => Objekt ve Smalltalku umí přesně tři věci: [39] => * Udržet stav (reference na další objekty) [40] => * Obdržet zprávu od jiného objektu nebo od sebe [41] => * V rámci zpracování přijaté zprávy může zaslat zprávu sobě nebo jinému objektu [42] => [43] => Stav objektu je ostatním objektům skryt. Ostatní objekty se však na stav mohou dotazovat zasíláním zpráv. [44] => [45] => == Syntaxe == [46] => Syntaxe jazyka je velmi snadná. Smalltalk má jen těchto pět vyhrazených klíčových slov: true, false, nil, self a super. Jediné vestavěné jazykové konstrukce jsou: zasílání zpráv, přiřazení proměnné, návrat hodnoty z metody a syntaxe literálů pro některé objekty. Vše ostatní, včetně řídicích struktur pro zpracování [[Skok (informatika)|podmínek]] a [[cyklus (informatika)|cyklů]], je jimi tvořeno. [47] => [48] => === Literály === [49] => Následující příklady uvádějí nejpoužívanější objekty, které se ve Smalltalku mohou zapsat jako literál. [50] => [51] => ==== Čísla ==== [52] => [53] => 42 [54] => -42 [55] => 123.45 [56] => 1.2345e2 [57] => 2r10010010 [58] => 16rA000 [59] => Poslední dva příklady jsou čísla ve [[dvojková soustava|dvojkové]] a [[Šestnáctková soustava|šestnáctkové]] [[číselná soustava|číselné soustavě]], kde ''r'' značí základ soustavy (podle anglického slova ''radix'' [ˈreidiks]). Samozřejmě jsou možné i jiné soustavy, například 36rSMALLTALK je platný zápis čísla s hodnotou 80738163270632 ([[Desítková soustava|desítkově]]). [60] => [61] => ==== Znaky ==== [62] => Zápisu znaků předchází znak [[dolar]]u. Příklad: [63] => $A [64] => [65] => [66] => ==== Řetězce ==== [67] => Řetězce jsou uzavřeny mezi [[apostrof]]y. Pro vložení apostrofu se tento zdvojuje. [68] => 'hello world' [69] => 'Scarlet O''Hara' [70] => Dva řetězce jsou si rovny, pokud mají stejné všechny znaky, přestože mají různou adresu v [[elektronická paměť|paměti]] počítače. [71] => [72] => ==== Symboly ==== [73] => Symboly jsou posloupnost znaků, podobně jako řetězce, ale Smalltalk zaručuje, že neexistují dva shodné symboly, které jsou zároveň rozdílné objekty. Pro tuto vlastnost se symboly velmi jednoduše porovnávají, a jsou tedy často používané jako názvy zpráv (viz níže). [74] => [75] => Před zápisem symbolu se uvádí znak # [76] => #foo [77] => [78] => [79] => ==== Pole ==== [80] => Například pole čtyř typů integer: [81] => #(1 2 3 4) [82] => [83] => [84] => ==== Bloky programu ==== [85] => [86] => [ "nějaké příkazy" ] [87] => [88] => [89] => === Deklarace názvů proměnných === [90] => Proměnné se deklarují na začátku bloku, obalené znaky svislé čáry: | [91] => | index slabika | [92] => Tento příklad deklaruje dvě proměnné pojmenované ''index'' a ''slabika''. Typy proměnných se nedeklarují, vše je objekt. [93] => [94] => === Přiřazení proměnné === [95] => Podobně jako v [[Pascal (programovací jazyk)|Pascalu]], proměnné se přiřazují syntaxí := [96] => slabika:= 'la' [97] => [98] => [99] => === Zprávy === [100] => Zasílání zpráv je základní stavební kamen Smalltalku. Následující příklad zašle číslu „42“ zprávu „factorial“ pro výpočet [[faktoriál]]u. [101] => 42 factorial [102] => V tomto případě je objekt „42“ tzv. ''příjemce zprávy'' a název „factorial“ je tzv. ''selektor zprávy''. Příjemce odpoví na zaslání zprávy navrácením hodnoty. Ta může být například uložena do proměnné: [103] => cislo:= 42 factorial [104] => Zpráva „factorial“ je příklad tzv. '''unární zprávy''' neboť je zahrnut jen jeden objekt – ''příjemce''. Pokud mají mít zprávy jako ''argumenty'' další objekty, provádí se to takto: [105] => 2 raisedTo: 4 [106] => Zpráva může mít i více argumentů: [107] => 'hello world' indexOf: $l startingAt: 6 [108] => [109] => [110] => === Výrazy === [111] => Výraz může zahrnovat více zaslání zpráv. V tom případě se zpracovávají v následujícím pořadí: unární zprávy, binární zprávy, ostatní zprávy. [112] => 3 factorial + 4 factorial between: 10 and: 100 [113] => se zpracuje takto: [114] => ((3 factorial) + (4 factorial)) between: 10 and: 100 [115] => Výsledná hodnota příkladu je '''true'''. [116] => [117] => Protože Smalltalk nezachovává prioritu operátorů, výraz: [118] => 3 + 4 * 5 [119] => se implicitně zpracuje jako: [120] => (3 + 4) * 5 [121] => Následující příklad vytvoří novou instanci okna a uloží ji do proměnné window, které pak zašle dvě zprávy. [122] => | window | [123] => window := Window new. [124] => window label: 'Hello'. [125] => window open. [126] => Pokud takto více výrazů pracuje se stejným příjemcem, je možné použít tzv. ''kaskádu'', která se odděluje znakem středník, čímž již není potřeba proměnné z posledního příkladu: [127] => Window new label: 'Hello'; open [128] => [129] => [130] => === Blok kódu === [131] => Blok se uzavírá do hranatých závorek. [132] => [: "parametry" | "příkazy" ] [133] => Kde ''parametry'' je seznam názvů proměnných, které kód přijímá. Například kód pro přičtení hodnoty čísla 1 vypadá následovně: [134] => [:x | x + 1] [135] => Jedná se o jakousi funkci s parametrem. Říká se jí také [[lambda funkce]], [[anonymní funkce]] či (nepřesně) [[closure]], popřípadě [[anonymní objekt]]. Podobný typ funkce je běžný ve [[funkcionální programování|funkcionálním programování]] v jazycích jako [[Lisp]], [[Scheme]] či [[Python]]. [136] => [137] => Tento kód je možné spustit zasláním zprávy s parametrem. [138] => [139] => Zavedením těchto bloků ve Smalltalku je možné zapsat i složitější programy velmi přehledně. Například kód, který vybere ze seznamu jen kladná čísla, by se v ostatních jazycích psal pomocí [[řídicí struktura#Cyklus|cyklů]]. Ve Smalltalku je mnohem přehlednější: [140] => novySeznamKladnychCisel := seznamCisel select: [:jednaHodnota | jednaHodnota isPositive] [141] => [142] => [143] => == Řídicí struktury == [144] => [[Řídicí struktura|Řídicí struktury]] nejsou součástí syntaxe jazyka, namísto toho jsou implementovány jako zprávy zasílané objektům. Například ''podmínka'' je implementována jako zaslání zprávy ifTrue: objektu Boolean, kde argumentem je blok kódu, který se spustí, pokud se jedná o objekt '''true'''. [145] => result := a > b [146] => ifTrue: [ 'promenna a ma vetsi hodnotu' ] [147] => ifFalse: [ 'promenna a ma mensi hodnotu' ] [148] => Programátoři často používají bloky kódu k vytváření nových řídicích struktur, například: [149] => | mujText souhlasky | [150] => mujText := 'This is a string'. [151] => samohlasky := mujText select: [:pismenko | pismenko isVowel]. [152] => Na poslední řádce příkladu přijímá textový objekt mujText zaslanou zprávu ''select:'' s parametrem, kterým je v tomto případě blok kódu. Textový objekt v reakci na zprávu ''select:'' prochází všechny znaky v textu a spouští blok předaný jako parametr. Výsledkem spuštění bloku [:pismenko | pismenko isVowel] je buď '''true''' (v případě, že se jedná o samohlásku) nebo '''false''' v opačném případě. Pokud byl výsledek '''true''', je zkoumaný znak vložen do kolekce, která se nakonec uloží do proměnné samohlasky. [153] => [154] => Protože je metoda select: definována ve třídě Collection, může se použít i takto [155] => | obdelniky bod | [156] => obdelniky := OrderedCollection [157] => with: (Rectangle left: 0 right: 10 top: 100 bottom: 200) [158] => with: (Rectangle left: 10 right: 10 top: 110 bottom: 210). [159] => bod := Point x: 20 y: 20. [160] => kolize := obdelniky select: [:obdelnik | obdelnik containsPoint: bod]. [161] => [162] => [163] => == Třídy == [164] => Takto vypadá definice třídy: [165] => Object subclass: #MessagePublisher [166] => instanceVariableNames: '' [167] => classVariableNames: '' [168] => poolDictionaries: '' [169] => category: 'Smalltalk Examples' [170] => [171] => [172] => === Metody === [173] => Když se objektu zašle zpráva, vyvolá se metoda. Následují kód definuje metodu napsat a tím také definuje, co se stane, když se objektu zašle zpráva ''napsat''. [174] => napsat Transcript show: 'Hello, World!' [175] => Všimněte si, že objekt vyhledá metodu podle zprávy za běhu programu (zatímco mnoho jazyků toto vyhodnocuje v době překladu). [176] => [177] => === Instance třídy === [178] => Následující kód [179] => PisatelZpravy new [180] => vytváří (vrací) novou instanci třídy PisatelZpravy. Většinou se takový objekt uloží do proměnné: [181] => pisatel := PisatelZpravy new [182] => Toto není nutné vždy, je také možné zaslat zprávu objektu, který nebyl uložen do proměnné. Takovému objektu se říká „anonymní objekt“: [183] => PisatelZpravy new napsat [184] => [185] => [186] => == Příklad == [187] => Klasický příklad [[Hello World]] je možné zapsat takto: [188] => Transcript show: 'Hello, world!'. [189] => Objektu Transcript se posílá zpráva ''show:'' s parametrem 'Hello, world!'. Vyvolání metody ''show:'' vypíše na konzoli řetězec, který se předal jako parametr. [190] => [191] => Pozor: okno Transcript se musí nejdřív otevřít, než je mu možné tuto zprávu poslat. [192] => [193] => == Reference == [194] => [195] => {{Citace elektronické monografie [196] => | příjmení = Kay [197] => | jméno = Alan [198] => | autor2 = Stefan Ram [199] => | titul = E-Mail of 2003-07-23 [200] => | url = http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_en [201] => | vydavatel = Stefan Ram [202] => | místo = [[Berlín]] [203] => | datum vydání = 2003-07-23 [204] => | datum aktualizace = [205] => | datum přístupu = 2017-11-01 [206] => | jazyk = en [207] => }} [208] => [209] => [210] => == Externí odkazy == [211] => * {{Commonscat}} [212] => * {{cs}} [http://www.root.cz/serialy/squeak-navrat-do-budoucnosti/ Squeak: návrat do budoucnosti] – seriál na [[Root.cz]] [213] => [214] => {{Programovací jazyky}} [215] => {{Autoritní data}} [216] => [217] => [[Kategorie:Programovací jazyky]] [218] => [[Kategorie:Anglická slova a fráze]] [219] => [[Kategorie:Objektově orientované programovací jazyky]] [] => )
good wiki

Smalltalk

Smalltalk (výslovnost ) je interpretovaný, dynamicky a striktně typovaný, čistě objektový programovací jazyk, který v sedmdesátých letech 20. století vyvinuli ve firmě Xerox PARC Alan Kay, Dan Ingalls, Ted Kaehler a Adele Goldberg.

More about us

About

Expert Team

Vivamus eget neque lacus. Pellentesque egauris ex.

Award winning agency

Lorem ipsum, dolor sit amet consectetur elitorceat .

10 Year Exp.

Pellen tesque eget, mauris lorem iupsum neque lacus.

You might be interested in

,'Alan Kay','Dan Ingalls','Adele Goldberg','Squeak','Lisp','Simula 67','svobodný software','Python','Ted Kaehler','Java (programovací jazyk)','Sketchpad','Pharo'