Loglan'82: Różnice pomiędzy wersjami

Z Lem
Skocz do: nawigacji, wyszukiwania
m (Współprogramy)
(Wybrane Przykłady)
Linia 38: Linia 38:
 
Umieszczamy tu kilka [[Wybrane przykłady|wybranych przykładów]] programów napisanych w Loglanie'82
 
Umieszczamy tu kilka [[Wybrane przykłady|wybranych przykładów]] programów napisanych w Loglanie'82
  
 
+
=== Proste programy ===
Program mnożenia macierzy metodą Winograda
+
Program mnożenia macierzy metodą Winograda. Zobacz dowód.
 
::[[Media:Winograd.pdf]]
 
::[[Media:Winograd.pdf]]
 
=== Klasy i obiekty ===
 
=== Klasy i obiekty ===
Linia 48: Linia 48:
 
===    Współprogramy ===
 
===    Współprogramy ===
 
W tym podrozdziale przedstawimy wiele przykładów zastosowania współprogramów (''ang.'' coroutine) poczynając od prostych jak modelowanie układu producent-konsument do coraz bardziej nieoczekiwanych i jakże pożytecznych.
 
W tym podrozdziale przedstawimy wiele przykładów zastosowania współprogramów (''ang.'' coroutine) poczynając od prostych jak modelowanie układu producent-konsument do coraz bardziej nieoczekiwanych i jakże pożytecznych.
 +
 +
::[[Media:TOWHANC.pdf]] - program Wieże Hanoi w którym zamiast procedury rekurencyjnej wykorzystuje się współprogramy. Porównaj obie wersje tego programu (nie zapomnij usunąć instrukcje drukowania i zmierz czasy.
 
::[[Media:MERGE.pdf]] - program i jego omówienie
 
::[[Media:MERGE.pdf]] - program i jego omówienie
  

Wersja z 17:23, 5 sty 2015

Język programowania obiektowego i rozproszonego ma wiele cech, które czynią z niego narzędzie programowania lepsze od innych:

  • Ma unikalny, tani i bezpieczny system zarządzania obiektami, por.
  • Oprócz modułów klas (class) oferuje moduły współprogramów (coroutine) i procesów (process). Możesz więc tworzyc nie tylko obiekty klas, ale także obiekty współprogramów i obiekty procesów.
  • Loglanowskie maszyny wirtualne mogą się łączyć (przez sieć) w wirtualny, wieloprocesorowy komputer loglanowski by wspólnie wykonywać program(y),
  • Obiekty procesów (krótko: wątki) mogą być alokowane na różnych węzłach sieci połączonych maszyn wirtualnych, bądź na tym samym komputerze. Oznacza to, że Loglan ma jeden model obliczeń współbieżnych i rozproszonych (mniej uczenia się).
  • Loglan'82 oferuje własny, oryginalny i w pełni obiektowy protokół komunikacji pomiędzy obiektami wątków tzw. obce wołanie metod (ang. alien call).
  • Każdy wątek może stworzyć swój system współprogramów i zarządzać nim.


Mamy nadzieję, że informacje zawarte na tych stronach okażą się interesujące dla:

  • Ambitnych programistów -- język Loglan'82 oferuje garść konstrukcji i rozwiązań nieznanych w innych językach programowania :
  • Jeśli chcesz świadomie zarządzać pamięcią obiektów i uniknąć przy tym niebezpiecznego zjawiska wiszacych referencji to spróbuj instrukcji kill( ),
  • Jeśli oprogramowanie, które tworzysz ma służyć obliczeniom współbieżnym, lub rozproszonym lub jakiejś ich kombinacji to wybierz Loglan'82 z jego jednym modelem obejmującym wszystkie te rozdaje obliczeń, zredukuje to znacznie koszty opanowania programowania współbieżnego i/lub rozproszonego,
  • Na pewno warto zapoznać sie z protokołem obcego wołania metod wątku A podczas wykonywania instrukcji wątku B, jest to oryginalny wynalazek znany jak dotąd tylko w Loglanie,
  • Jeśli masz zamiar zaprogramować obliczenia quasi-współbieżne to zapoznaj się z współprogramami (coroutines)
  • Nauczycieli -- Loglan'82 jest dobrym wyborem:
  • jeśli chcesz przedstawić wszystkie narzędzia i metody programowania obiektowego unikając przy tym przechodzenia od jednego do kolejnego języka programowania dla zilustrowania kolejnych narzędzi programowania obiektowego.
  • jeśli chcesz to możesz programować w Loglanie w ramach większych projektów programistycznych obejmujących specyfikowanie struktur danych i algorytmów, implementację specyfikacji czyli programowanie i weryfikację poprawności modułów oprogramowania względem specyfikacji.
  • Badaczy -- Ponieważ język programowania obiektowego, powstał w wyniku poszukiwania odpowiedzi na kilka problemów:
  • czy można połączyć dwie metody tworzenia modułów: zagnieżdżanie oraz dziedziczenie? Zanim zezwoliliśmy na zagnieżdżanie i dziedziczenie klas musieliśmy odpowiedzięc na kolejne pytania
  • Jak zapewnić statyczne dowiązanie wystąpienia identyfikatora z wystąpieniem odpowiedniej jego deklaracji?
  • Jak określić, która klasa jest dziedziczona przez ...?
  • Czy można odziedziczyć klasę A w funkcji f?
  • Czy zarządzanie pamięcią obiektów musi doprowadzać do zjawiska wiszących referencji?
  • Czy zaśmiecanie pamięci może być skutecznie zwalczane przez jej odśmiecanie tj. garbage collection?
  • Czy można bezpiecznie i efektywnie usuwać obiekty już niepotrzebne?
  • Jak zdefiniować semantykę współprogramów w sposób wolny od sprzeczności?

→ Dokumentacja

Przy całym bogactwie narzędzi programotwórczych składnia Loglanu jest zwarta i przejrzysta. Obejrzyj zwięzłą prezentację języka Loglan'82

Nie jest naszym zadaniem rozstrzygać, która ortografia jest lepsza? ta Loglanu? czy tez ta Javy i C++?
Obejrzyj porównanie cech semantycznych kilku języków programowania obiektowego. Porównaj różne języki programowania obiektowego

Więcej dokumentów .                  

Wybrane Przykłady

This page is under construction
Umieszczamy tu kilka wybranych przykładów programów napisanych w Loglanie'82

Proste programy

Program mnożenia macierzy metodą Winograda. Zobacz dowód.

Media:Winograd.pdf

Klasy i obiekty

Funkcje i procedury mogą dziedziczyć z klas. Zobacz jakie to ciekawe.

Media:Heapsort.pdf

Współprogramy

W tym podrozdziale przedstawimy wiele przykładów zastosowania współprogramów (ang. coroutine) poczynając od prostych jak modelowanie układu producent-konsument do coraz bardziej nieoczekiwanych i jakże pożytecznych.

Media:TOWHANC.pdf - program Wieże Hanoi w którym zamiast procedury rekurencyjnej wykorzystuje się współprogramy. Porównaj obie wersje tego programu (nie zapomnij usunąć instrukcje drukowania i zmierz czasy.
Media:MERGE.pdf - program i jego omówienie
Media:TREEGEN.pdf - program i dowód poprawności

Moduły procesów i obiekty aktywne

Moduł process nie jest zwykłą klasą, obiekty (aktywne) procesów mają inny scenariusz.

Po pierwsze, ich instrukcje są wykonywane równolegle z instrukcjami innych obiektów aktywnych.
Po drugie,

→ Kompilatory

W tej chwili mamy do zaoferowania kompilatory na platformę Linuxową i na Windows.

→ Badania podstawowe

Zanim powstał nasz język przeprowadzono badania dotyczące m.in. pytań:

  • Czy możliwe jest programowane, usuwanie niepotrzebnych obiektów - bezpieczne tj. wolne od zjawiska wiszacych referencji i przy tym niedrogie? bezpieczna dealokacja obiektów
  • W jaki sposób wyznaczyć klase dziedziczoną, znając jej nazwę? W programie loglanowskim może pojawic sie wiele klas o tej samej nazwie na różnych poziomach drzewa zagnieżdżonych modułów?
  • Jak zarządzać obiektami współprogramów by uniknąć sprzeczności jakie pojawiły sie w innych językach programowania z coroutinami?
  • Jak ma przebiegać tworzenie i zarządzanie obiektami procesów?
  • Jakie narzędzia wybrać do komunikacji i synchronizacji obliczeń współbieznych?
  • Jak zarządzać obliczeniami rozproszonymi?

Wyniki uzyskane podczas prac nad Loglanem okazały się przydatne w analizie języka Java. Mogą znaleźć zastosowanie w innych językach.

Zobacz pełniejszą, angielską wersję tej strony.