Smalltalk
Smalltalk | |
---|---|
![]() Smalltalk | |
Originalni naziv | Smalltalk |
Izgovara se | smol tók |
Model | objektno-orijentisani |
Pojavio se | 1972. |
Autor(i) | Alan Kay,Dan Ingalls[1],Adele Goldberg[2],Ted Kaehler, Diana Merry, Scott Wallace, Peter Deutsch |
Dizajner(i) | Alan Kay, Dan Ingalls, Adele Goldberg |
Aktuelna verzija | 2.6.2 |
Uticaji | Lisp,Simula,Logo,Sketchpad |
Uticao na | Objective-C, Self, Java, PHP 5, Logtalk, Dylan, AppleScript, Lisaac, NewtonScript,Python,Ruby,Groovy,Scala,Perl6, Common Lisp Objektni Sistem,Falcon,Io,Ioke, Fancy,Dart |
Operativni sistemi | više-platformski |
Smalltalkjeobjektno-orijentisani[3],dinamički,reflektivniprogramski jezik.Jedan je od mnogihobjektno-orijentisanihjezika baziranih na programskom jezikuSimula[4].Rezultat je višegodišnjeg proučavanja softvera koji je pogodan za pravljenje visoko-funkcionalne i interaktivne komunikacije sa operativnim sistemimapersonalnih računara.Jedan njegov deo je stvoren za obrazovne svrhe, ali se uglavnom koristi za konstruktivno učenje. Razvila ga je grupa istraživača iz kompanije Xerox PARC[5]na čelu saAlan Kay-om.
Istorija
[уреди|уреди извор]Alan Kay je dizajnirao najranije verzije Smalltalk-a, veliki doprinos u dokumentaciji o Smalltalk-u dala je Adele Goldberg, dok je za njegovu implementaciju zaslužan Dan Ingalls. Prva verzija je napravljena 80-tih godina 20.veka i poznata je kaoSmalltalk-71.Sa nastankom verzijeSmalltalk-80ovaj programski jezik je po prvi put publikovan. Ona se sastojala od dve podverzije. Prva podverzijaSmalltalk-80 Version 1ustupljena je nekolicini kompanija i univerziteta radi testiranja i implementacije jezika na njihovim platformama, dok jeSmalltalk-80 Version 2predstavljena kao finalna verzija dostupna široj javnosti. Danas su u svetu programiranja popularne dve implementacije Smalltalk-a,SqueakiVisualWorks,zasnovane upravo na verzijiSmalltalk-80.Squeak jeopen sourceimplementacija izvedena izSmalltalk-80 Version 1pomoćuApple Smalltalk-adok je VisualWorks izvedena izSmalltalk-80 Version 2pomoćuSmalltalk-80 2.5iObjectWorks-a.[6][7]
Značajan napredak, koji je uticao na sva postojeća okruženja Smalltalk-a, je upotreba dva veb okvira, Seaside i AIDA/Web.[8][9]Korišćenjem ovih veb okvira pojednostavila se izgradnja složenih aplikacija. Godine1998,Smalltalk postaje ANSI-standardizovani jezik i dobija nazivANSI Smalltalk.
Objektno-orijentisani koncept u Smalltalk-u
[уреди|уреди извор]Smalltalk je čist primer objektno-orijentisanog programiranja. Zbog svoje izričitosti po tom pitanju, uočavaju se bitne razlike u odnosu na mejnstrim predstavnike ove paradigme. On ne pravi razliku između vrednosti primitivnih tipova(npr. boolean,int) i klasnih tipova. Svi primitivni tipovi podržani ovim programskim jezikom predstavljaju objekte njima odgovarajućih klasa. Kao takvi u mogućnosti su da ravnopravno, putem poruka, komuniciraju sa instancama drugih klasa. S obzirom na takvo poimanje primitivnih tipova, programer ima mogućnost da, u okviru njima odgovarajućih klasa, vrši izmene i dodaje određene funkcionalnosti ili menja postojeće. Pošto su sve vrednosti u Smalltalk-u predstavljene objektima, klase su takođe objekti. Svaka klasa je instanca neke metaklase, dok su sve metaklase instance klaseMetaclass.
Refleksija
[уреди|уреди извор]Refleksijaje termin kojiprogramerikoriste zaprogramekoji imaju sposobnost da ispituju sopstvenu strukturu (npr. tip podataka ulaznih i izlaznih parametara). Prvenstveno je bila karakteristikainterpretiranih jezikakao što su Smalltalk iLisp.Refleksija se zasniva na tzv.meta-modelu.Meta-model opisuje sam jezik i koristi se za obilazak, modifikaciju i ispitivanje objekata. Može se koristiti za pronalazak svih instanci neke strukture podataka (npr. zadatak je naći sve instance klase Metod u meta-modelu).Smalltalk-80ima potpuno reflektujući sistem, koji je implementiran unutar samog Smalltalk-a. Klase i metodi koje definišu sistem Smalltalk-a su i sami za sebe objekti. Smalltalkkompilatorprevodi izvorni kod objekta metoda koje su obično instance klaseCompiledMethod
.Oni se dodaju u klase tako što se čuvaju u rečnik za metode klasa. Sistem se proširuje pokretanjemSmalltalk-80koda koji kreira ili definiše klase i metode. Jedan deo klasne hijerarhije, koji definiše same klase, može da dodaje nove klase u sistem. Na ovaj načinSmalltalk-80sistem je "živi" sistem, koji ima mogućnost proširivanja tokom rada. S obzirom da su i same klase objekti, možemo proveriti koje metode one implementiraju ili koja polja sadrže. Ovime se objekti mogu lako ispitati, kopirati i serijalizovati[10]pomoćugeneričkog kodakoji se primenjuje na sve objekte u sistemu.Smalltalk-80pruža mogućnost posmatranja stanja računarskog sistema. U jezicima koji su izvedeni iz originalnogSmalltalk-80moguće je aktivirati metod pomoću objekta čije se ime čuva u pseudo-promenljivi (jedna od šest rezervisanih reči)thisContext
.
Inovacije
[уреди|уреди извор]Mnoge stvari koje su u današnjem programiranju podrazumevane, nastale su sa razvojem Smalltalk-a:
- Prvi je programski jezik saintegrisanim razvojnim okruženjem.
- Jedan je od prvih programskih jezika sagrafičkim okruženjemkoje omogućava komunikaciju pomoću miša.
Napravljen je tako da ne prekida rad programa usled neočekivanog ponašanja. Na primer, ukoliko se objektu pošalje poruka koju on ne razume,debagernam nudi opciju da definišemo metod koji odgovara datoj poruci. Smalltalk sadržiTDDalate koji su još uvek jedni od najboljih u svetu programiranja.[11]Takođe, u Smalltalk-u je podržana i'Just in time'kompilacija.
Sintaksa
[уреди|уреди извор]![](https://upload.wikimedia.org/wikipedia/commons/thumb/8/88/Suite_et_r%C3%A9glette.png/220px-Suite_et_r%C3%A9glette.png)
Smalltalk u prevodu sa engleskog jezika znači 'ćaskanje' što ilustruje njegovu jednostavnu sintaksu. Ovaj programski jezik ne sadrži primitivne tipove (npr. int[12]iboolean) kao ni kontrolne strukture (nprif,foriwhilepetlja). Takođe, ne podržava ni statičke promenljive.
Poruke
[уреди|уреди извор]Poruke predstavljaju jednu od fundamentalnih konstrukcija u Smalltalk-u. U sledećem primeru prikazano je kako se poruke zapisuju:
36sqrt
Ovde36prima poruku dok jesqrtselektuje.Rezultat ovog izračunavanja može da se dodeli nekoj promenljivoj:
koren_sestice:=36sqrt
Metodi
[уреди|уреди извор]Kada određeni objekat primi poruku poziva se metod koji datoj poruci odgovara. U sledećem primeru definišemo metodispisikoji odgovara ispisu jednostavne poruke:
ispisi
Transcriptshow:'Programiranje u Smalltalku je zabavno!'
Metod može da sadrži argumente i da vraća određenu vrednost:
suma:s1and:s2
|sum
|sum:=s1+s2
^sum
Stringovi
[уреди|уреди извор]Stringovi u Smalltalk-u su reči između navodnika (' i ').
'Zdravo, svete!'
Za uvođenje citata koristite duple navodnike.
'Rekao sam, ''Zdravo, svete!'' njima.'
Računanje i matematičke operacije
[уреди|уреди извор]Matematičke operacije su krajnje jednostavno definisane postavljanjem elemenata sa kojima se radi i pisanjem operatora kojim se vrši operacija nad ta dva elementa izraza.
2+4
Moguće je korišćenje relacionih operatora i van petlji što je retkost u današnjim objektno-orijentisanim jezicima.
3<5
6>1
Nizovi
[уреди|уреди извор]Nizovi se deklarišu pomоću znaka '#':
#(1234)
Deklaracija promenljivih
[уреди|уреди извор]U Smalltalk-u postoje dva tipa promenljivih, klasne(instancne) i lokalne. Lokalne promenljive se deklarišu na sledeći način:
|promenljiva|
Vrednost ove promenljive, ukoliko se eksplicitno ne navede, jenil
.
Moguće je i deklarisanje više promenljivih odjednom:
|promenljiva1 promenljiva2|
Naredba dodele
[уреди|уреди извор]U Smalltalk-u se za dodelu vrednosti koristi znak ':=':
rec:='zdravo'
Ovom naredbom je promenljivoj rec dodeljena vrednost 'zdravo'.
Instanciranje
[уреди|уреди извор]Kreiranje instance klase:
NekaKlasanew
Obično se novokreirani objekti dodeljuju promenljivama:
promenljiva:=NekaKlasanew
Reference
[уреди|уреди извор]- ^Dan Ingalls | Computer History Museum
- ^Dr. Adele Goldberg | IT History Society
- ^Uvod u objektno-orijentisano programiranje (OOP):http://www.codeproject.com/Articles/22769/Introduction-to-Object-Oriented-Programming-Concep
- ^Simula:http://www.edelweb.de/SimulaАрхивиранона сајтуWayback Machine(10. новембар 2017)
- ^About PARC - PARC, a Xerox company
- ^Squeak/Smalltalk
- ^Cincom is the leading provider of commercial Smalltalk in the world
- ^„Архивирана копија”.Архивирано изоригинала09. 07. 2017. г.Приступљено28. 11. 2017.
- ^http://www.aidaweb.si/
- ^Serialization (C# ) | Microsoft Docs
- ^Introduction to Test Driven Development (TDD)
- ^http://whatis.techtarget.com/definition/integer
Dodatna literatura
[уреди|уреди извор]- Goldberg, Adele(1983).Smalltalk-80: The Interactive Programming Environment.Addison-Wesley.ISBN978-0-201-11372-3.
- Adele Goldberg&Alan Kay,ur. (1976).Smalltalk-72 Instruction Manual(PDF).Palo Alto, California:XeroxPalo Alto Research Center.Pristupljeno11. 11. 2011.
- Goldberg, Adele;Robson, David (1983).Smalltalk-80: The Language and its Implementation(PDF).Addison-Wesley.ISBN978-0-201-11371-6.
- Goldberg, Adele;Robson, David (1989).Smalltalk 80: The Language.Addison-Wesley.ISBN978-0-201-13688-3.
- Kay, Alan C.(mart 1993).„The Early History of Smalltalk”(PDF).ACMSIGPLANNotices.ACM.28(3): 69—95.doi:10.1145/155360.155364.
- Glen Krasner, ur. (1983).Smalltalk-80: Bits of History, Words of Advice.Addison-Wesley.ISBN978-0-201-11669-4.
- Nierstrasz, Oscar; Ducasse, Stéphane; Pollet, Damien; Black, Andrew P. (2009—10-07).Squeak by Example.Kehrsatz, Switzerland: Square Bracket Associates.ISBN978-3-9523341-0-2.Proverite vrednost paramet(a)ra za datum:
|date=
(pomoć) - Nierstrasz, Oscar; Ducasse, Stéphane; Pollet, Damien; Black, Andrew P. (23. 2. 2010).Pharo by Example.Kehrsatz, Switzerland: Square Bracket Publishing.ISBN978-3-9523341-4-0.
- Winston, Patrick Henry (3. 9. 1997).On to Smalltalk.MIT, USA: Addison Wesley.ISBN978-0201498271.
- Brauer, Johannes (2015).Programming Smalltalk - Object-Orientation from the Beginning.Springer.ISBN978-3-658-06823-3.
- „Special Issue on Smalltalk”.BYTE.McGraw-Hill.6(8). avgust 1981.Pristupljeno18. 10. 2013.
- Goldberg, Adele(avgust 1981).„Introducing the Smalltalk-80 System”.BYTE.McGraw-Hill.6(8).Pristupljeno18. 10. 2013.
- Ingalls, Dan(avgust 1981).„Design Principles Behind Smalltalk”.BYTE.McGraw-Hill.6(8).Pristupljeno11. 11. 2011.
- Tesler, Larry(avgust 1981).„The Smalltalk Environment”.BYTE.McGraw-Hill.6(8).Pristupljeno2. 5. 2016.