SmallTalk (język programowania): Różnice pomiędzy wersjami
m (Czyszczenie tekstu) |
m (Infobox5 upgrade) |
||
Linia 1: | Linia 1: | ||
'''Smalltalk''' jest dynamicznym, w pełni [[Programowanie_obiektowe|obiektowym]], reflektywnym językiem programowania stworzonym na początku lat siedemdziesiątych. W przeciwieństwie do [[konkurent]]ów takich jak [[C++|C++]] czy [[Java|Java]], nie wzoruje się na składni języka proceduralnego. Został zaprojektowany od podstaw by jak najlepiej realizować założenia paradygmatu obiektowego. Smalltalk to również kompletne, graficzne środowisko programistyczne, które może być uznane za przodka takich [[produkt]]ów jak Microsoft Visual Studio. | '''Smalltalk''' jest dynamicznym, w pełni [[Programowanie_obiektowe|obiektowym]], reflektywnym językiem programowania stworzonym na początku lat siedemdziesiątych. W przeciwieństwie do [[konkurent]]ów takich jak [[C++|C++]] czy [[Java|Java]], nie wzoruje się na składni języka proceduralnego. Został zaprojektowany od podstaw by jak najlepiej realizować założenia paradygmatu obiektowego. Smalltalk to również kompletne, graficzne środowisko programistyczne, które może być uznane za przodka takich [[produkt]]ów jak Microsoft Visual Studio. | ||
Linia 71: | Linia 56: | ||
</code> | </code> | ||
Przesłanie wiadomości <code>value:</code> do bloku podanego jako drugi [[parametr]], następuje tyle razy, ile wynosi parametr pierwszy. [[Wartość]] przekazywana jako parametr <code>:i</code> będzie wyświetlona na standardowym wyjściu poprzez przesłanie wiadomości <code>show:</code> oraz znaku nowej lini - <code>cr</code> - do obiektu <code>Transcript</code>. Taka pętla jest więc niczym więcej niż sekwencją wiadomości przesyłanych pomiędzy obiektami. | Przesłanie wiadomości <code>value:</code> do bloku podanego jako drugi [[parametr]], następuje tyle razy, ile wynosi parametr pierwszy. [[Wartość]] przekazywana jako parametr <code>:i</code> będzie wyświetlona na standardowym wyjściu poprzez przesłanie wiadomości <code>show:</code> oraz znaku nowej lini - <code>cr</code> - do obiektu <code>Transcript</code>. Taka pętla jest więc niczym więcej niż sekwencją wiadomości przesyłanych pomiędzy obiektami. | ||
{{infobox5|list1={{i5link|a=[[Ruby]]}} — {{i5link|a=[[C (język programowania)]]}} — {{i5link|a=[[Pascal (język programowania)]]}} — {{i5link|a=[[Litecoin]]}} — {{i5link|a=[[Programowanie strukturalne]]}} — {{i5link|a=[[Visual Basic]]}} — {{i5link|a=[[Python]]}} — {{i5link|a=[[BASIC]]}} — {{i5link|a=[[Firewall]]}} }} | |||
==Bibliografia== | ==Bibliografia== |
Wersja z 03:16, 18 lis 2023
Smalltalk jest dynamicznym, w pełni obiektowym, reflektywnym językiem programowania stworzonym na początku lat siedemdziesiątych. W przeciwieństwie do konkurentów takich jak C++ czy Java, nie wzoruje się na składni języka proceduralnego. Został zaprojektowany od podstaw by jak najlepiej realizować założenia paradygmatu obiektowego. Smalltalk to również kompletne, graficzne środowisko programistyczne, które może być uznane za przodka takich produktów jak Microsoft Visual Studio.
TL;DR
Smalltalk to dynamiczny język programowania, który jest w pełni obiektowy i reflektywny. Został stworzony na początku lat siedemdziesiątych i jest uważany za pierwszy prawdziwy obiektowy język programowania. Smalltalk wprowadził wiele innowacji, takich jak graficzne środowisko programistyczne i metaklasy. Jego składnia jest prosta, a programy są tłumaczone na kod bajtowy i interpretowane w maszynie wirtualnej. Smalltalk miał duży wpływ na rozwój innych języków, takich jak C++, Java czy Ruby.
Historia
Smalltalk został stworzony na początku lat siedemdziesiątych przez Alana Kay’a w Xerox PARC (Palo Alto Research Center). Była to część większego projektu o nazwie ARPA. Grupa inżynierów, która opracowała Smalltalk ma na swoim koncie również takie wynalazki jak:
- Mysz komputerowa
- Systemy okienkowe
- Graficzne interfejsy użytkownika
- Programowanie orientowane obiektowo
Jego pierwszą implementacją, która posłużyła do celów naukowych był Smalltalk-72 autorstwa Dana Ingalls’a. Różniła się ona w znacznym stopniu od wersji używanych współcześnie. W wersji Smalltalk-76 do pakietu dodane zostało środowisko programistyczne wraz z edytorem bibliotek. W Smalltalk-80 wprowadzono metaklasy. Była to pierwsza wersja dostępna dla szerszego grona odbiorców. Dostęp do niego uzyskały m.in.: Hewlett-packard, DEC, czy Apple oraz niektóre uniwersytety. Wraz z zakończeniem projektu w 1980 roku, w skład systemu Smalltalk-80 wchodziły:
- Język programowania Smalltalk
- Wirtualna maszyna Smalltalk
- Dokumentacja i kod źródłowy
Wirtualną maszynę udało się przeportować na wiele różnych platform co zaowocowało jego znaczącą popularyzacją. Moment w którym zaczęto uczyć się Smalltalk'a można uznać za początek rewolucji programowania obiektowo orientowanego (OOP). Idea OOP okazała się być przełomem i wywarła spory wpływ na istniejących już językach. Wkrótce po wydaniu Smalltalk-80 pojawiły się takie produkty jak: Object-Pascal, Objective-C czy nawet obiektowy Cobol. Kilka lat później powstał C++, a w połowie lat dziewięćdziesiątych Sun Microsystems stworzył Javę.
Język
Smalltalk zyskał miano pierwszego prawdziwego obiektowego języka programowania. Obiekty w tym języku znajdują się w pewnym określonym stanie i potrafią otrzymać i wysyłać pomiędzy sobą wiadomości. Spośród popularnych dziś języków, które w mniejszym lub większym stopniu się nim inspirowały, można wyliczyć między innymi takie jak:
W przeciwieństwie do np. Javy, w Smalltalk’u nie ma różnicy pomiędzy wartością i obiektem. Wszystkie są pochodnymi klasy Object i potrafią przetwarzać wiadomości. Każda instancja klasy również jest obiektem, podobnie jak blok kodu. Rozszerzanie możliwości istniejących klas realizuje się poprzez tworzenie podklas
Program napisany w Smalltalk’u najpierw tłumaczony jest do postaci kodu bajtowego a następnie interpretowany w maszynie wirtualnej lub dynamicznie zamieniany na kod maszynowy. Charakterystyka języka pozwala też na dynamiczne zarządzanie pamięcią i nie wymusza zwalniania nieużywanych zasobów. Wirtualna maszyna korzysta z tak zwanego Garbage Collector’a, który rozpoznaje nieużywane obiekty i je usuwa.
Tworząc Smalltalk’a starano się, aby jego składnia była jak najprostsza. Przykładowo, żeby stworzyć tablicę wystarczy jedynie wywołać odpowiednią metodę, tworzącą instancję klasy Array np. "Array new: 64".
Przyporządkowanie typów do zmiennych odbywa się dopiero w czasie wykonywania programu. Oznacza to, że do każdej zmiennej można wysłać wiadomość dowolnego typu. Jeśli nie zostanie ona rozpoznana, nastąpi wywołanie metody doesNotUnderstand
.
W Smalltalk’u, możliwe jest modyfikowanie programu w trakcie jego pracy. Pozwala to programistom na szybką implementacje i testowanie nowych funkcjonalności.
Przykładowy kod
Oto przykładowy kod napisany w języku Smalltalk:
0 to: 13 do: [:i | Transcript show: i; cr]
Choć budową przypomina, na pierwszy rzut oka, pętlę for, powyższy kod działa zgoła inaczej. 0 to obiekt klasy SmallInteger do którego przesyłamy wiadomość (message) "to: do:". Pierwszym argumentem jest 13, a drugim blok instrukcji ujęty w nawiasy kwadratowe. SmallInteger dziedziczy z klasy Number, która obsługuje przesyłaną wiadomość:
to: stop do: aBlock
| nextValue |
nextValue := self.
[nextValue <= stop]
whileTrue:
[aBlock value: nextValue.
nextValue := nextValue + 1]
Przesłanie wiadomości
value:
do bloku podanego jako drugi parametr, następuje tyle razy, ile wynosi parametr pierwszy. Wartość przekazywana jako parametr :i
będzie wyświetlona na standardowym wyjściu poprzez przesłanie wiadomości show:
oraz znaku nowej lini - cr
- do obiektu Transcript
. Taka pętla jest więc niczym więcej niż sekwencją wiadomości przesyłanych pomiędzy obiektami.
SmallTalk (język programowania) — artykuły polecane |
Ruby — C (język programowania) — Pascal (język programowania) — Litecoin — Programowanie strukturalne — Visual Basic — Python — BASIC — Firewall |
Bibliografia
- A. C. Kay, The Early History of Smalltalk. ACM SIGPLAN Notices, s. 69-95
- A. Goldberg, D. Robson, Smalltalk-80: The language and its implementation, Xerox Corporation, USA 1983, ISBN 0-201-11371-6, s. 5-37
- C. Liu, Smalltalk, Objects and Design, toExcel, Nowy Jork 1999, ISBN 1-58348-490-6, s. 1-9, 32-36
Autor: Szymon Depa