Start  |  Gry  |  Słowniki *  
 : : Menu
Dla początkujących
Dla praktyków
Język
Wersje
Książki
Smalltalk vs. Java
Wiadomości
Linki
FAQ
Pobierz
Co nowego?
Mapa serwisu
Kontakt
Impressum
Księga gości
Po godzinach
Nakarm głodne dziecko - wejdź na stronę www.Pajacyk.pl
 

Czym jest Smalltalk?

Smalltalk jest obiektowo zorientowanym językiem programowania, biblioteką klas i środowiskiem programistycznym w jednym.

Powyższa definicja nie wyjaśnia co w Smalltalku jest takiego szczególnego, co czyni go atrakcyjnym narzędziem w porównaniu na przykład do Javy czy C#, które także są obiektowymi językami programowania, mają bogate biblioteki klas i interaktywne środowiska programistyczne.

Smalltalk jest czysto obiektowym, refleksyjnym językiem programowania z dynamiczną typizacją. Umożliwia to w praktyce zupełnie inny sposób programowania od tego do jakiego są przyzwyczajeni programiści używający języków obiektowych rozwiniętych z proceduralnego języka C.

Pełna obiektowość

Pojęcie "czysto obiektowy" oznacza, ze każda wartość, każda struktura danych jest obiektem i nie istnieje sztuczne rozgraniczenie wartości i obiektów. Przykładowo wyrażenie "26" tworzy instancję klasy SmallInteger, która poprzez hierarchię klas jest pochodną klasy Object. W ten sposób liczba 26 rozumie wszystkie wiadomości, które są w tej hierarchii zdefiniowane i może również implementować nowe metody. Podobnie tablice nie są tworzone przy pomocy specjalnej dedykowanej składni tylko w prosty sposób przez wysłanie do klasy Array odpowiedniej metody tworzącej instancje tej klasy, np. "Array new: 4".

Refleksyjność

Pojęcie "refleksyjny" oznacza, że język Smalltalk jest zaimplementowany w Smalltalku. Obiekty, które ten język definiują same są opisane w tym języku. W szczególności klasy i metody są również obiektami języka Smalltalk. To wyjaśnia także powyższy przykład tworzenia instancji klasy Array - "Array new: 4". Klasa Array sama jest również obiektem, który między innymi implementuje metodę "new:". Użycie obiektów języka Smalltalk do definicji całego języka umożliwia programiście zarówno rozszerzanie funkcjonalności samego języka jak i całego środowiska programistycznego. W takim zakresie jak w systemie Smalltalk nie jest to możliwe w żadnym konwencjonalnym środowisku.

Typy danych

Tak jak każdy język programowania również Smalltalk posiada typy danych - typem danego obiektu jest jego klasa - ale przyporządkowanie typu do danej zmiennej następuje dopiero w czasie działania programu, tzn. typ zmiennej nie musi być deklarowany w czasie implementacji. Każda zmienna może przechowywać obiekty dowolnego typu. Oznacza to między innymi, że do każdej zmiennej można wysłać dowolną wiadomość. W przypadku, gdy obiekt reprezentowany przez tą zmienną nie implementuje danej metody sytuacja taka będzie rozpoznana i wywołana zostanie specjalna metoda doesNotUndestand:.

Środowisko

Całe środowisko programistyczne jest również zaimplementowane w Smalltalku. Kompilator, Debugger, Browser są aplikacjami smalltalkowymi i z reguły są dostępne ich kody źródłowe. Browser jest jednocześnie zintegrowanym edytorem, analizatorem kodu i narzędziem umożliwiającym refactoring kodu o bardzo dużych możliwościach.

Wygoda pracy

Z braku deklaracji typów i refleksyjności wynika jeszcze jedna bardzo interesująca cecha Smalltalka - nie istnieją niepełne definicje klas, ponieważ klasy i metody mogą być kompilowane niezależnie od siebie. Umożliwia to między innymi modyfikacje programu w czasie jego działania, jego jednoczesne testowanie i poprawianie. W razie wystąpienia błędu programista może go poprawić bez konieczności zakończenia pracy programu i ponownego uruchamiania (na przykład bezpośrednio w Debugger). Poszczególne klasy mogą być implementowane równolegle z innymi, w każdej chwili użyte i rozwijane nawet w czasie pracy aplikacji. W ten sposób w każdym momencie już zaimplementowana funkcjonalność danej klasy może zostać przetestowana. Umożliwia to szybki cykl edycji, kompilowania i debuggownia na poziomie kodu źródłowego.

Łatwa i czytelna składnia
Składnia Smalltalka jest zbliżona do języka naturalnego dzięki czemu jest zrozumiała również dla osób nie znających tego języka programowania. Jednocześnie ilość koniecznych do zapamiętania zarezerwowanych słów kluczowych wynosi w Smalltalku tylko 5. Dla porównania popularny język Java posiada aż 56 takich słów.

Trochę techniki

Smalltalk pracuje pod kontrolą maszyny wirtualnej - tzn. pod kontrolą abstrakcyjnego komputera, który może zostać zaimplementowany na różnych platformach. Program Smalltalkowy jest tłumaczony na język tej wirtualnej maszyny, która abstrahuje zasoby konkretnego systemu i dlatego jest on niezależny od platformy docelowej na której będzie uruchamiany.

Koncepcja wirtualnej maszyny i pełna obiektowość Smalltalka umożliwiają automatyczne zarządzanie pamiecią - obiekty smalltalkowe nie muszą być jawnie usuwane z pamięci po zakończeniu ich pracy. W tym celu maszyna wirtulna posiada tak zwany garbage collector, który samodzielnie i efektywnie rozpoznaje, które obiekty nie są już uzywane i odzyskuje zajmowaną przez nie pamięć.

Trochę historii

Smalltalk został rozwinięty w latach 70-tych i 80-tych w laboratoriach firmy Xerox (Xerox Palo Alto Research Center). Język został zaprojektowany tak, aby połączyć dużą czytelność kodu z wszechstronną funkcjonalnością i elastycznością.

W 1988 roku z firmy Xerox została wydzielona firma Parcplace Systems w celu komercyjnego rozpowszechnienia języka. W 1995 z firm Parcplace Systems i Digitalk powstała firma Parcplace-Digitalk, która w 1997 roku zmieniła nazwę na ObjectShare. W 1999 technologia VisualWorks Smalltalk została zakupiona przez firmę Cincom, która przejęła również całą grupę programistów rozwijających język Smalltalk.

Smalltalk był pierwszym konsekwentnie obiektowo zorientowanym językiem i drugim językiem z elementami obiektowymi po języku Simula dla którego zostały wymyślone podstawowe koncepcje programowania obiektowego. Smalltalk był źródłem koncepcji dla tak dzisiaj oczywistych rozwiązań jak systemy okien, obsługa myszką, iteraktywne środowisko programistyczne i technik takich jak maszyna wirtualna i garbage collector, które wiele lat później znalazły zastosowanie również w językach Java i C#.

Środowisko Smalltalk mimo ponad 20 lat swojego istnienia odniosło sukces dopiero pod koniec lat 90-tych, ponieważ wcześniejsze komputery były zbyt wolne, żeby zapewnić zadowalającą wydajność aplikacji tworzonych w tym języku. Dopiero pojawienie się silniejszych komputerów pozwoliło na powszechniejsze użycie języków opartych na koncepcji maszyny wirtualnej takich jak Smalltalk czy późniejsze środowisko Java.

Siła Smalltalka

Powyżej opisane cechy języka i środowiska Smalltalk powodują, ze środowisko to pokazuje swoje mocne strony przede wszystkim przy realizacji dużych, złożonych projektów w relatywnie krótkim czasie (w porównaniu do takich środowisk jak Java czy C#).

Smalltalk umożliwia szybkie i łatwe modelowanie prototypu aplikacji równocześnie z krokowym projektowaniem i uszczegóławianiem projektu i jest wydajnym i skalowalnym systemem umożliwiającym pracę aplikacji na różnych platformach bez konieczności dopasowywania jej kodu źródłowego (write-once-run-everywhere). Wybór dostępnych platform zależy od twórcy systemu, przykładowo środowisko VisualWorks Smalltalk umożliwia wykonywanie aplikacji na komputerach PC, Macintosh i różnych wariantach systemów Linux i Unix.

Dla języka Smalltalk powstała i została rozwinięta koncepcja eXtreme Programming, Smalltalk jest jednocześnie najbardziej produktywnym środowiskiem XP.

Smalltalk pokazuje swoją siłę szczególnie w projektach z krótkimi cyklami rozwoju, w których zachodzi konieczność częstego dopasowania do nowych wymagań.

Listę bardziej znanych firm stosujących Smalltalk znajdziesz tutaj.

(pn) 
SelfSmaltalk, (c) ObjectSpace.Net
Strona wygenerowana przy pomocy edytora aceHTML
i systemu VisualWorks Smalltalk NC 7.0