Movatterモバイル変換


[0]ホーム

URL:


Przejdź do zawartości
Wikipediawolna encyklopedia
Szukaj

Smalltalk

Z Wikipedii, wolnej encyklopedii

Treść tego artykułu może nie być zgodna z zasadamineutralnego punktu widzenia.
Dokładniejsze informacje o tym, co należy poprawić, być może znajdują się wdyskusji tego artykułu.
Po wyeliminowaniu niedoskonałości należy usunąć szablon{{Dopracować}} z tego artykułu.

Smalltalk jest w pełniobiektowym,reflektywnymjęzykiem programowania zdynamicznym typowaniem. Umożliwia inny sposób programowania od tego, do jakiego są przyzwyczajeni programiści używający języków obiektowych (np.Java), rozwiniętych z wcześniejszychjęzyków proceduralnych takich jakPascal czyC.

Smalltalk jest takżebiblioteką klas iśrodowiskiem programistycznym w jednym.

Język

[edytuj |edytuj kod]

Pojęcie "czysto obiektowy" oznacza, że każda wartość, każdastruktura 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 (messages), które są w tej hierarchii zdefiniowane i może również implementować nowemetody. Podobnie tablice nie są tworzone przy pomocy specjalnej dedykowanej składni, tylko w prosty sposób przez wysłanie do klasy Array odpowiedniejmetody tworzącej instancję tej klasy, np. "Array new: 4".

Pojęcie "reflektywny" oznacza, że 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żliwiaprogramiście zarówno rozszerzanie funkcjonalności samego języka, jak i całego środowiska programistycznego.

Tak jak każdy język programowania, również Smalltalk posiadatypy danych – typem danego obiektu jest jego klasa – ale przyporządkowanie typu do danej zmiennej następuje dopiero w czasie działania programu, tzn. typzmiennej nie musi byćdeklarowany w czasieimplementacji. 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 doesNotUnderstand:.

Całe środowisko programistyczne jest 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ącymrefactoring kodu o bardzo dużych możliwościach.

Z braku deklaracji typów i reflektywności wynika jeszcze jedna 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ąpieniabłędu programista może go poprawić bez konieczności zakończenia pracy programu i ponownego uruchamiania. Poszczególne klasy mogą być implementowane równolegle z innymi, w każdej chwili użyte i rozwijane nawet w czasie pracyaplikacji. 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 debugowania na poziomiekodu źródłowego.

Architektura

[edytuj |edytuj kod]

Smalltalk pracuje pod kontroląmaszyny wirtualnej – tzn. pod kontrolą abstrakcyjnego komputera, który może zostać zaimplementowany na różnychplatformach. Program smalltalkowy jest tłumaczony na język tej wirtualnej maszyny, która alokuje 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 pamięcią – obiekty smalltalkowe nie muszą być jawnie usuwane z pamięci po zakończeniu ich pracy. W tym celu maszyna wirtualna posiada tak zwanyGarbage Collector, który samodzielnie i efektywnie rozpoznaje, które obiekty nie są już używane i odzyskuje zajmowaną przez nie pamięć.

Historia

[edytuj |edytuj kod]

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

Smalltalk był pierwszym konsekwentnie obiektowo zorientowanym językiem i drugim językiem z elementami obiektowymi po językuSimula, dla którego zostały wymyślone podstawowe koncepcje programowania obiektowego. Smalltalk był źródłem koncepcji dla tak dzisiaj oczywistych rozwiązań jak obsługamyszki,systemy okien,interaktywne środowisko programistyczne i technik takich jak np.maszyna wirtualna, które znalazły zastosowanie również w językachJava iC#.

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.

Dla języka Smalltalk powstała i została rozwinięta koncepcjaeXtreme Programming.

Przykładowy program

[edytuj |edytuj kod]
| arraySize anArray|arraySize:= (Prompterprompt:'Podaj rozmiar tablicy' )asNumber.  (arraySize<0)ifTrue: ['Rozmiar nie może być ujemny'printString ]ifFalse:     [anArray:=Arraynew:arraySize.1to:arraySizedo: [:i|anArrayat:iput:1 ].anArrayprintString ]

Program pyta użytkownika o rozmiar tablicy, a następnie wyświetla tablicę o podanej długości, wypełnioną jedynkami.

Najbardziej popularne środowiska Smalltalk

[edytuj |edytuj kod]

Linki zewnętrzne

[edytuj |edytuj kod]
Języki programowania
1GL
2GL/
Język drugiej generacji/
Asembler
3GL /
Język trzeciej generacji
wieloparadygmatowe
proceduralne
istrukturalne
historyczne
inne
obiektowe
funkcyjne
edukacyjne
4GL/
Język czwartej generacji/
Język dziedzinowy
Języki zapytań do baz danych
Generatory raportów / stron
Przetwarzanie danych, analiza i raportowanie
5GL/Logiczne
Ezoteryczne
Inne
Źródło: „https://pl.wikipedia.org/w/index.php?title=Smalltalk&oldid=73919207
Kategoria:
Ukryte kategorie:

[8]ページ先頭

©2009-2026 Movatter.jp