SmallTalk (język programowania): Różnice pomiędzy wersjami

Z Encyklopedia Zarządzania
m (Dodanie TL;DR)
mNie podano opisu zmian
 
(Nie pokazano 10 wersji utworzonych przez 2 użytkowników)
Linia 1: Linia 1:
{{infobox4
|list1=
<ul>
<li>[[Ruby]]</li>
<li>[[C (język programowania)]]</li>
<li>[[Pascal (język programowania)]]</li>
<li>[[Litecoin]]</li>
<li>[[Programowanie strukturalne]]</li>
<li>[[Visual Basic]]</li>
<li>[[Python]]</li>
<li>[[BASIC]]</li>
<li>[[Firewall]]</li>
</ul>
}}
'''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.


==TL;DR==
==TL;DR==
Linia 23: Linia 6:
==Historia==
==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:
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
* Mysz komputerowa
*Systemy okienkowe
* Systemy okienkowe
*[[Interfejs_użytkownika|Graficzne interfejsy użytkownika]]
* [[Interfejs_użytkownika|Graficzne interfejsy użytkownika]]
*[[Programowanie_obiektowe|Programowanie orientowane obiektowo]]
* [[Programowanie_obiektowe|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.
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:
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
* Język programowania Smalltalk
*Wirtualna maszyna Smalltalk
* Wirtualna maszyna Smalltalk
*[[Dokumentacja]] i kod źródłowy
* [[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 [[Programowanie_obiektowe|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ę.
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 [[Programowanie_obiektowe|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ę.


 
<google>n</google>
<google>ban728t</google>
 


==Język==
==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:  
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:
*[[C++|C++]]
* [[C++|C++]]
*[[Java|Java]]
* [[Java|Java]]
*[[.NET_Framework|C#]]  
* [[.NET_Framework|C#]]
*Objective C  
* Objective C
*[[Ruby|Ruby]]
* [[Ruby|Ruby]]
*[[Python|Python]]  
* [[Python|Python]]
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
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.
[[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”.  
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 <code>doesNotUnderstand</code>.  
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 <code>doesNotUnderstand</code>.


W Smalltalk’u, możliwe jest modyfikowanie programu w trakcie jego pracy. Pozwala to programistom na szybką implementacje i testowanie nowych funkcjonalności.
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==
==Przykładowy kod==
Linia 67: Linia 47:
<code>
<code>


  to: stop do: aBlock  
  to: stop do: aBlock
    | nextValue |
| nextValue |
    nextValue := self.
nextValue := self.
    [nextValue <= stop]
[nextValue <= stop]
        whileTrue:  
  whileTrue:
            [aBlock value: nextValue.
  [aBlock value: nextValue.
            nextValue := nextValue + 1]
  nextValue := nextValue + 1]


</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]]}} &mdash; {{i5link|a=[[C (język programowania)]]}} &mdash; {{i5link|a=[[Pascal (język programowania)]]}} &mdash; {{i5link|a=[[Litecoin]]}} &mdash; {{i5link|a=[[Programowanie strukturalne]]}} &mdash; {{i5link|a=[[Visual Basic]]}} &mdash; {{i5link|a=[[Python]]}} &mdash; {{i5link|a=[[BASIC]]}} &mdash; {{i5link|a=[[Firewall]]}} }}


==Bibliografia==
==Bibliografia==
# A. Goldberg, D. Robson, ''Smalltalk-80: The language and its implementatnion'', Xerox Corporation, USA 1983, ISBN 0-201-11371-6, s. 5-37
<noautolinks>
# C. Liu, ''Smalltalk, Objects and Design'', toExcel, Nowy Jork 1999, ISBN 1-58348-490-6, s. 1-9, 32-36
* Goldberg A., Robson D. (1983), ''Smalltalk-80: The language and its implementation'', Xerox Corporation, USA
# A. C. Kay, ''The Early History of Smalltalk''. ACM SIGPLAN Notices, s. 69–95
* Liu C. (1999), ''Smalltalk, Objects and Design'', toExcel, Nowy Jork
* Kay A. (1999), ''The Early History of Smalltalk'', ACM SIGPLAN Notices
</noautolinks>


[[Kategoria:Języki_programowania]]
[[Kategoria:Języki_programowania]]
{{a|Szymon Depa}}
{{a|Szymon Depa}}
{{#metamaster:description|Smalltalk to dynamiczny język programowania, obiektowy i reflektywny. Stworzony w latach 70., wpłynął na rozwój Microsoft Visual Studio.}}

Aktualna wersja na dzień 12:22, 10 sty 2024

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:

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
RubyC (język programowania)Pascal (język programowania)LitecoinProgramowanie strukturalneVisual BasicPythonBASICFirewall

Bibliografia

  • Goldberg A., Robson D. (1983), Smalltalk-80: The language and its implementation, Xerox Corporation, USA
  • Liu C. (1999), Smalltalk, Objects and Design, toExcel, Nowy Jork
  • Kay A. (1999), The Early History of Smalltalk, ACM SIGPLAN Notices

Autor: Szymon Depa