Smalltalk
Z Wikipedii
| Treść tego hasła może nie być zgodna z zasadami neutralnego punktu widzenia. Zajrzyj na stronę dyskusji i pomóż go poprawić. |
Smalltalk jest czysto obiektowym, reflektywnym 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 języków proceduralnych takich jak C, czy Pascal.
Smalltalk jest także biblioteką klas i środowiskiem programistycznym w jednym.
Spis treści |
[edytuj] Czym jest Smalltalk?
Pojęcie "czysto obiektowy" oznacza, że 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 hierarchie 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ć 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 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ż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.
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 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ącym refactoring kodu o bardzo dużych możliwościach.
Z braku deklaracji typów i reflektywnoś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. 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 debugowania na poziomie kodu źródłowego.
[edytuj] 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 pamięcią - obiekty smalltalkowe nie muszą być jawnie usuwane z pamięci po zakończeniu ich pracy. W tym celu maszyna wirtualna posiada tak zwany Garbage Collector, który samodzielnie i efektywnie rozpoznaje, które obiekty nie są już używane i odzyskuje zajmowaną przez nie pamięć.
[edytuj] TrochÄ™ historii
Smalltalk został rozwinięty w latach 70. i 80. 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ą.
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 obsługa myszki, systemy okien, interaktywne środowisko programistyczne i technik takich jak np. maszyna wirtualna, które znalazły zastosowanie również w językach Java i C#.
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.
[edytuj] Siła Smalltalka
Powyżej opisane cechy języka i środowiska Smalltalk powodują, że ś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ółowianiem projektu.
Smalltalk 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ń.
[edytuj] Przykładowy program
| arraySize anArray | arraySize := (Prompter prompt: 'Podaj rozmiar tablicy' ) asNumber . (arraySize < 0) ifTrue: [ 'Rozmiar nie moze być ujemny' printString ] ifFalse: [ anArray := Array new: arraySize . 1 to: arraySize do: [ :i | anArray at: i put: 1 ] . anArray printString ]
Program pyta się użytkownika o rozmiar tablicy, a następnie wyświetla tablicę jedynek o podanej długości.
[edytuj] Najbardziej popularne środowiska Smalltalk
- Ambrai Smalltalk,
- Dolphin Smalltalk
- Gemstone Smalltalk
- ObjectStudio
- SmallScript
- Smalltalk MT
- Smalltalk/X
- Squeak
- VisualAge for Smalltalk
- VisualSmalltalk Enterprise
- Visual Works
[edytuj] Linki zewnętrzne
ABAP • Ada • AWK • Asembler • C • C++ • C# • COBOL • Common Lisp • D • F# • Forth • Fortran • GAUSS • Icon • Java • JavaScript • Lisp • Lustre• Modula 2 • Ocaml • Oberon • Object Pascal • Objective-C • Pascal • Perl • PHP • PL/SQL • Python • REXX • Ruby • SAS 4GL • sh • Smalltalk • Snobol • SQL • Visual Basic • VB.NET • XUL
Akademickie: Comal • Eiffel • Haskell • Logo • MCPL • ML • Nemerle • Prolog • Scheme
Historyczne: ALGOL • APL • BASIC • Clipper • JAS • MUMPS • PLAN • PL/I • PL/M • SAKO • SAS (asembler) • Simula
Inne: Erlang • occam • QCL
Ezoteryczne: INTERCAL • Brainfuck • BeFunge • Unlambda • Malbolge • Whitespace • FALSE • HQ9+ • Shakespeare • Whirl • Ook
| UniCredit rekomenduje "kupuj" BRE, obniża cenę docelową |
|
Analitycy UniCredit w raporcie z 14 maja podtrzymali rekomendację "kupuj" dla BRE Banku, obniżając cenę docelową akcji banku do 530 zł z 550 zł.
|
| Pol-Aqua w ciÄ…gu 2-3 tygodni zdecyduje o kupnie akcji Polnordu |
|
Pol-Aqua w ciągu najbliższych dwóch-trzech tygodni zdecyduje, czy kupić 20 proc. akcji Polnordu i czy dojdzie do połączenia obu firm - poinformował dziennikarzy prezes Pol-Aquy Marek Stefański.
|
| Grupa Lotos zainwestuje w tym roku 390 mln zł w wydobycie |
|
Grupa Lotos zainwestuje w tym roku 390 mln zł w obszarze wydobycia - poinformowała spółka w komunikacie prasowym. Spółka w czerwcu przyjmie zmodyfikowaną strategię, uwzględniającą nowe plany rozwoju koncernu w tym obszarze.
|
| Pol-Aqua planuje akwizycję spółki drogowej z południa Polski |
|
Pol-Aqua planuje akwizycję spółki drogowej na południu Polski o przychodach przekraczających 200 mln zł - poinformował prezes Pol-Aquy Marek Stefański.
|
| Wynagrodzenia Polaków rosną coraz szybciej |
|
Wynagrodzenia w przedsiębiorstwach wzrosły w kwietniu br. o 11,1 proc. r/r wobec 10,2 proc. w marcu, uważają analitycy. Według nich, utrzymanie wysokiej dynamiki wzrostu płac to efekt coraz większych kłopotów z pozyskaniem wykwalifikowanych pracowników i rosnącymi roszczeniami płacowymi.
|