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

Z Lem
Skocz do: nawigacji, wyszukiwania
(Utworzono nową stronę "Loglan'82 is a programming language conceived for object and distributed programming. It has many features that make Loglan'82 a tool surpassing other programming lang...")
 
Linia 3: Linia 3:
 
It has many features that make Loglan'82 a tool surpassing other programming languages:
 
It has many features that make Loglan'82 a tool surpassing other programming languages:
 
* It enjoys a unique safe and efficient system of managing objects, see [Safe dealocation],
 
* It enjoys a unique safe and efficient system of managing objects, see [Safe dealocation],
* It offers modules of classes ('''class'''), moreover it allows to declare modules of cooperating objects i.e. '''coroutines''' and modules of threads ('''process'''). One can create not only objects of classes, but also objects of coroutines with their ''fibres'' and objects of processes, aks agents with their ''threads''.   
+
* It offers modules of classes ('''class'''), moreover it allows to declare modules of cooperating objects i.e. '''coroutines''' and modules of threads ('''process'''). One can create not only objects of classes, but also objects of coroutines with their ''fibres'' and objects of processes, aka agents with their ''threads''.   
 
* Virtual machines of Loglan may connect (through internet) in a virtual, multiprocesorr computer.This allows to distribute a computation of a program between processors in a controlled way.
 
* Virtual machines of Loglan may connect (through internet) in a virtual, multiprocesorr computer.This allows to distribute a computation of a program between processors in a controlled way.
 
* Objects of processes (agents) can be alocated on different nodes of a network of virtual machines or on the same machine. It means that Loglan uses one model for concurrent as well as for distributed computations. (Less learning).
 
* Objects of processes (agents) can be alocated on different nodes of a network of virtual machines or on the same machine. It means that Loglan uses one model for concurrent as well as for distributed computations. (Less learning).
Linia 14: Linia 14:
  
 
   
 
   
Mamy nadzieję, że informacje zawarte na tych stronach okażą się  interesujące dla:  
+
We are hoping that the information contained on these pages will be of interest to:  
* '''Ambitnych programistów''' -- język Loglan'82 oferuje garść konstrukcji i rozwiązań nieznanych w innych językach programowania :
+
* '''Ambitious programmers''' -- for the language  Loglan'82 offers a couple of constructs and solutions not known in other programming languages:
::* Jeśli chcesz świadomie zarządzać pamięcią obiektów i uniknąć przy tym niebezpiecznego zjawiska ''wiszacych referencji'' to spróbuj instrukcji '''kill'''( ), 
+
::* Should you manage the memory of objects and to avoid the dangerous phenomenon of ''dangling pointers''? Try the instruction '''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,   
 
::* 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,   
 
::* 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''')  
 
::* Jeśli masz zamiar zaprogramować obliczenia quasi-współbieżne to zapoznaj się z współprogramami ('''coroutines''')  
* '''Nauczycieli''' -- Loglan'82 jest dobrym wyborem:
+
* '''Teachers''' -- Loglan'82 is a good choice:
 
::* 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 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.  
 
::* 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:
+
* '''Researchers''' -- for the language incorporates the results of scientific research  of a few non-trivial problems:
::* 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   
+
::* is it possible to 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 zapewnić statyczne dowiązanie wystąpienia identyfikatora z wystąpieniem odpowiedniej jego deklaracji?
 
:::* Jak określić, która klasa jest dziedziczona przez ...?
 
:::* Jak określić, która klasa jest dziedziczona przez ...?

Wersja z 10:50, 3 sie 2014

Loglan'82 is a programming language conceived for object and distributed programming.

It has many features that make Loglan'82 a tool surpassing other programming languages:

  • It enjoys a unique safe and efficient system of managing objects, see [Safe dealocation],
  • It offers modules of classes (class), moreover it allows to declare modules of cooperating objects i.e. coroutines and modules of threads (process). One can create not only objects of classes, but also objects of coroutines with their fibres and objects of processes, aka agents with their threads.
  • Virtual machines of Loglan may connect (through internet) in a virtual, multiprocesorr computer.This allows to distribute a computation of a program between processors in a controlled way.
  • Objects of processes (agents) can be alocated on different nodes of a network of virtual machines or on the same machine. It means that Loglan uses one model for concurrent as well as for distributed computations. (Less learning).
  • Loglan'82 offers an original, fully object protocol of communication and synchronization, so called alien call of methods of an agent.
  • Each object of a process, i.e. an agent may create its own system of coroutine objects and manage it,
  • there are other interesting and useful features of Loglan'82. Try to discover them!



We are hoping that the information contained on these pages will be of interest to:

  • Ambitious programmers -- for the language Loglan'82 offers a couple of constructs and solutions not known in other programming languages:
  • Should you manage the memory of objects and to avoid the dangerous phenomenon of dangling pointers? Try the instruction 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)
  • Teachers -- Loglan'82 is a good choice:
  • 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.
  • Researchers -- for the language incorporates the results of scientific research of a few non-trivial problems:
  • is it possible to 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.                  

Wybrane Przykłady

Umieszczamy tu kilka wybranych przykładów programów napisanych w Loglanie'82


Program mnożenia macierzy metodą Winograda

Media:Winograd.pdf
     Współprogramy
Media:MERGE.pdf - program i jego omówienie
Media:TREEGEN.pdf - program i dowód poprawności

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 wybrac 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.