Dark Mode

Predji na sadrzhaj

Smalltalk

S Vikipedije, slobodne entsiklopedije
Smalltalk
Smalltalk
Originalni nazivSmalltalk
Izgovara sesmol tok
Modelobjektno-orijentisani
Pojavio se1972.
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 verzija2.6.2
UticajiLisp, Simula, Logo, Sketchpad
Uticao naObjective-C, Self, Java, PHP 5, Logtalk, Dylan, AppleScript, Lisaac, NewtonScript, Python, Ruby, Groovy, Scala, Perl 6, Common Lisp Objektni Sistem, Falcon, Io, Ioke, Fancy, Dart
Operativni sistemivise-platformski

Smalltalk je objektno-orijentisani[3], dinamicki, reflektivni programski jezik. Jedan je od mnogih objektno-orijentisanih jezika baziranih na programskom jeziku Simula[4]. Rezultat je visegodisnjeg proucavanja softvera koji je pogodan za pravljenje visoko-funkcionalne i interaktivne komunikacije sa operativnim sistemima personalnih racunara. Jedan njegov deo je stvoren za obrazovne svrhe, ali se uglavnom koristi za konstruktivno ucenje. Razvila ga je grupa istrazivaca iz kompanije Xerox PARC[5] na celu sa Alan Kay-om.

Istorija

[uredi | uredi izvor]

Alan Kay je dizajnirao najranije verzije Smalltalk-a, veliki doprinos u dokumentaciji o Smalltalk-u dala je Adele Goldberg, dok je za njegovu implementaciju zasluzan Dan Ingalls. Prva verzija je napravljena 80-tih godina 20.veka i poznata je kao Smalltalk-71. Sa nastankom verzije Smalltalk-80 ovaj programski jezik je po prvi put publikovan. Ona se sastojala od dve podverzije. Prva podverzija Smalltalk-80 Version 1 ustupljena je nekolicini kompanija i univerziteta radi testiranja i implementacije jezika na njihovim platformama, dok je Smalltalk-80 Version 2 predstavljena kao finalna verzija dostupna siroj javnosti. Danas su u svetu programiranja popularne dve implementacije Smalltalk-a, Squeak i VisualWorks, zasnovane upravo na verziji Smalltalk-80.Squeak je open source implementacija izvedena iz Smalltalk-80 Version 1 pomocu Apple Smalltalk-a dok je VisualWorks izvedena iz Smalltalk-80 Version 2 pomocu Smalltalk-80 2.5 i ObjectWorks-a.[6][7]

Znacajan napredak, koji je uticao na sva postojeca okruzenja Smalltalk-a, je upotreba dva veb okvira, Seaside i AIDA/Web.[8][9] Koriscenjem ovih veb okvira pojednostavila se izgradnja slozenih aplikacija. Godine 1998, Smalltalk postaje ANSI-standardizovani jezik i dobija naziv ANSI Smalltalk.

Objektno-orijentisani koncept u Smalltalk-u

[uredi | uredi izvor]

Smalltalk je cist primer objektno-orijentisanog programiranja. Zbog svoje izricitosti po tom pitanju, uocavaju se bitne razlike u odnosu na mejnstrim predstavnike ove paradigme. On ne pravi razliku izmedu vrednosti primitivnih tipova(npr. boolean,int) i klasnih tipova. Svi primitivni tipovi podrzani ovim programskim jezikom predstavljaju objekte njima odgovarajucih klasa. Kao takvi u mogucnosti su da ravnopravno, putem poruka, komuniciraju sa instancama drugih klasa. S obzirom na takvo poimanje primitivnih tipova, programer ima mogucnost da, u okviru njima odgovarajucih klasa, vrsi izmene i dodaje odredene funkcionalnosti ili menja postojece. Posto su sve vrednosti u Smalltalk-u predstavljene objektima, klase su takode objekti. Svaka klasa je instanca neke metaklase, dok su sve metaklase instance klase Metaclass.

Refleksija

[uredi | uredi izvor]

Refleksija je termin koji programeri koriste za programe koji imaju sposobnost da ispituju sopstvenu strukturu (npr. tip podataka ulaznih i izlaznih parametara). Prvenstveno je bila karakteristika interpretiranih jezika kao sto su Smalltalk i Lisp. Refleksija se zasniva na tzv. meta-modelu. Meta-model opisuje sam jezik i koristi se za obilazak, modifikaciju i ispitivanje objekata. Moze se koristiti za pronalazak svih instanci neke strukture podataka (npr. zadatak je naci sve instance klase Metod u meta-modelu). Smalltalk-80 ima potpuno reflektujuci sistem, koji je implementiran unutar samog Smalltalk-a. Klase i metodi koje definisu sistem Smalltalk-a su i sami za sebe objekti. Smalltalk kompilator prevodi izvorni kod objekta metoda koje su obicno instance klase CompiledMethod. Oni se dodaju u klase tako sto se cuvaju u recnik za metode klasa. Sistem se prosiruje pokretanjem Smalltalk-80 koda koji kreira ili definise klase i metode. Jedan deo klasne hijerarhije, koji definise same klase, moze da dodaje nove klase u sistem. Na ovaj nacin Smalltalk-80 sistem je "zivi" sistem, koji ima mogucnost prosirivanja tokom rada. S obzirom da su i same klase objekti, mozemo proveriti koje metode one implementiraju ili koja polja sadrze. Ovime se objekti mogu lako ispitati, kopirati i serijalizovati[10] pomocu generickog koda koji se primenjuje na sve objekte u sistemu. Smalltalk-80 pruza mogucnost posmatranja stanja racunarskog sistema. U jezicima koji su izvedeni iz originalnog Smalltalk-80 moguce je aktivirati metod pomocu objekta cije se ime cuva u pseudo-promenljivi (jedna od sest rezervisanih reci) thisContext.

Inovacije

[uredi | uredi izvor]

Mnoge stvari koje su u danasnjem programiranju podrazumevane, nastale su sa razvojem Smalltalk-a:

  1. Prvi je programski jezik sa integrisanim razvojnim okruzenjem .
  2. Jedan je od prvih programskih jezika sa grafickim okruzenjem koje omogucava komunikaciju pomocu misa.

Napravljen je tako da ne prekida rad programa usled neocekivanog ponasanja. Na primer, ukoliko se objektu posalje poruka koju on ne razume, debager nam nudi opciju da definisemo metod koji odgovara datoj poruci. Smalltalk sadrzi TDD alate koji su jos uvek jedni od najboljih u svetu programiranja.[11] Takode, u Smalltalk-u je podrzana i 'Just in time' kompilacija.

Sintaksa

[uredi | uredi izvor]
Sketch od Smalltalk koda.

Smalltalk u prevodu sa engleskog jezika znaci ' caskanje ' sto ilustruje njegovu jednostavnu sintaksu. Ovaj programski jezik ne sadrzi primitivne tipove (npr. int[12] i boolean) kao ni kontrolne strukture (npr if, for i while petlja). Takode, ne podrzava ni staticke promenljive.

Poruke

[uredi | uredi izvor]

Poruke predstavljaju jednu od fundamentalnih konstrukcija u Smalltalk-u. U sledecem primeru prikazano je kako se poruke zapisuju:

36 sqrt

Ovde 36 prima poruku dok je sqrt selektuje.Rezultat ovog izracunavanja moze da se dodeli nekoj promenljivoj:

koren_sestice := 36 sqrt

Metodi

[uredi | uredi izvor]

Kada odredeni objekat primi poruku poziva se metod koji datoj poruci odgovara. U sledecem primeru definisemo metod ispisi koji odgovara ispisu jednostavne poruke:

ispisi
Transcript show: 'Programiranje u Smalltalku je zabavno!'

Metod moze da sadrzi argumente i da vraca odredenu vrednost:

suma: s1 and: s2
| sum
| sum:= s1 + s2
^sum

Stringovi

[uredi | uredi izvor]

Stringovi u Smalltalk-u su reci izmedu navodnika (' i ').

'Zdravo, svete!'

Za uvodenje citata koristite duple navodnike.

'Rekao sam, ''Zdravo, svete!'' njima.'

Racunanje i matematicke operacije

[uredi | uredi izvor]

Matematicke operacije su krajnje jednostavno definisane postavljanjem elemenata sa kojima se radi i pisanjem operatora kojim se vrsi operacija nad ta dva elementa izraza.

2 + 4

Moguce je koriscenje relacionih operatora i van petlji sto je retkost u danasnjim objektno-orijentisanim jezicima.

3 < 5
6 > 1

Nizovi

[uredi | uredi izvor]

Nizovi se deklarisu pomocu znaka '#':

#(1 2 3 4)

Deklaracija promenljivih

[uredi | uredi izvor]

U Smalltalk-u postoje dva tipa promenljivih, klasne(instancne) i lokalne. Lokalne promenljive se deklarisu na sledeci nacin:

| promenljiva |

Vrednost ove promenljive, ukoliko se eksplicitno ne navede, je nil.

Moguce je i deklarisanje vise promenljivih odjednom:

| promenljiva1 promenljiva2 |

Naredba dodele

[uredi | uredi izvor]

U Smalltalk-u se za dodelu vrednosti koristi znak ':=':

rec := 'zdravo'

Ovom naredbom je promenljivoj rec dodeljena vrednost 'zdravo'.

Instanciranje

[uredi | uredi izvor]

Kreiranje instance klase:

NekaKlasa new

Obicno se novokreirani objekti dodeljuju promenljivama:

promenljiva := NekaKlasa new

Reference

[uredi | uredi izvor]
  1. ^ Dan Ingalls | Computer History Museum
  2. ^ Dr. Adele Goldberg | IT History Society
  3. ^ Uvod u objektno-orijentisano programiranje (OOP): http://www.codeproject.com/Articles/22769/Introduction-to-Object-Oriented-Programming-Concep
  4. ^ Simula: https://web.archive.org/web/20171110174903/http://www.edelweb.de/Simula. Arkhivirano iz originala 10. 11. 2017. g. Pristupljeno 26. 11. 2017. Nedostaje ili je prazan parametar |title= (pomotsh)
  5. ^ About PARC - PARC, a Xerox company
  6. ^ Squeak/Smalltalk
  7. ^ ,,Cincom is the leading provider of commercial Smalltalk in the world[[Kategorija:Botovski naslovi]]". Arkhivirano iz originala 26. 11. 2017. g. Pristupljeno 29. 11. 2017. Sukob URL--vikiveza (pomotsh)
  8. ^ ,,Arkhivirana kopija". Arkhivirano iz originala 09. 07. 2017. g. Pristupljeno 28. 11. 2017.
  9. ^ http://www.aidaweb.si/
  10. ^ Serialization (C# ) | Microsoft Docs
  11. ^ Introduction to Test Driven Development (TDD)
  12. ^ http://whatis.techtarget.com/definition/integer

Dodatna literatura

[uredi | uredi izvor]

Spoljasnje veze

[uredi | uredi izvor]
Smalltalk na srodnim projektima Vikipedije:
Mediji na Ostavi
Podaci na Vikipodacima