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

Z Lem
Skocz do: nawigacji, wyszukiwania
(Kompilatory)
 
(Nie pokazano 12 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 17: Linia 17:
 
* '''Ambitious programmers''' -- for the language  Loglan'82 offers a couple of constructs and solutions not known in other programming languages:
 
* '''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'''.
 
::* 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, 
+
::* Should the software you are creating use concurrent, or distributed computations, or a combination of these two models -- choose Loglan'82. For it offers one model of all these variants of non-sequential computations. In this way you will diminish the cost of programming. 
::* 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, 
+
::* Please take time to learn about the ''alien call protocol''. It is an original invention of our collaborator Bolek Ciesielski. It is fully object way of calling methods of a thread A from another thread B
::* Jeśli masz zamiar zaprogramować obliczenia quasi-współbieżne to zapoznaj się z współprogramami ('''coroutines''')
+
::* For those who are creating quasi-concurrent computations (by fibres) we are offering a richer version of classes i.e. '''coroutines'''
 
* '''Teachers''' -- Loglan'82 is a good choice:
 
* '''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.
+
::* if you aim to present all tools and methods of object oriented programming and to avoid passing from one to another programming language when need arises to illustrate a subsequent tool of object programming,
::* 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.  
+
::* if you wish to construct a larger project that contains specification of data structures (classes), implementation of specifications and the verification of the implementation with respect to the specification.  
 
* '''Researchers''' -- for the language incorporates the results of scientific research  of a few non-trivial problems:
 
* '''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  
+
::* is it possible combine two methods of creation of program modules: nesting and inheritance? Before we agreed to admit nesting and inheritance we had to answer a couple of fundamental questions:  
:::* Jak zapewnić statyczne dowiązanie wystąpienia identyfikatora z wystąpieniem odpowiedniej jego deklaracji?
+
:::* How to assure static linking between an applicative occurrrence of an identifier and a proper occurrence of a declaration of this identifier?  
:::* Jak określić, która klasa jest dziedziczona przez ...?
+
:::* How to determine the direct superclass of a given class?  
:::* Czy można odziedziczyć klasę A w funkcji f?  
+
:::* Is it possible to extend a class by a function (a procedure)?
::* Czy zarządzanie pamięcią obiektów musi doprowadzać do zjawiska  wiszących referencji?  
+
::* Does the management of object necessarily leads to the phenomenon of dangling references?  
::* Czy zaśmiecanie pamięci może być skutecznie zwalczane przez jej odśmiecanie tj. garbage collection?  
+
::* How effective can be garbage collection?  
::* Czy można bezpiecznie i efektywnie usuwać obiekty już niepotrzebne?
+
::* Is it possible to deallocate no longer needed objects in a safe and effective way?
::* Jak zdefiniować semantykę współprogramów w sposób wolny od sprzeczności?
+
::* How to define the semantics of coroutines in a consistent way?
== Dokumentacja ==
+
== [[Documentation of Loglan'82]] ==
Przy całym bogactwie narzędzi programotwórczych składnia Loglanu jest zwarta i przejrzysta. [[Media:Quickref.pdf| Obejrzyj zwięzłą prezentację języka Loglan'82]]
+
You can start with [[Media:Loglanmi.pdf |mikromanual]]. In doubts check [[Media:Report82.pdf |Report of Loglan'82 language]]. Explanations of diagnostics and some helpful hints are in [[Media:Userman2W.pdf |user manual]].
 +
If you can read polish then find [[Media:Loglan1.pdf | podręcznik Loglanu]]
 +
 +
The syntax of Loglan is compact and clear, see  [[Media:Quickref.pdf| Quick reference card.]]
  
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. [[Media:ComparinObjectLanguages.pdf| Porównaj różne języki programowania obiektowego]]
+
Compare various object programming languages [[Media:ComparinObjectLanguages.pdf| Comparison of object programming languages.]]
  
<div style="text-align: right">[[DokumentacjaLoglanu|Więcej]]. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
+
== Selected examples ==
 
+
== Wybrane Przykłady ==
+
 
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
  
  
Program mnożenia macierzy metodą Winograda
+
Program multiplying matrices, algorith of  Winograd
 
::[[Media:Winograd.pdf]]
 
::[[Media:Winograd.pdf]]
=====  &nbsp;&nbsp;&nbsp;&nbsp; Współprogramy =====
+
=====  &nbsp;&nbsp;&nbsp;&nbsp; Coroutines =====
 
::[[Media:MERGE.pdf]] - program i jego omówienie
 
::[[Media:MERGE.pdf]] - program i jego omówienie
  
 
::[[Media:TREEGEN.pdf]] - program i dowód poprawności
 
::[[Media:TREEGEN.pdf]] - program i dowód poprawności
  
== [[kompilatory|Kompilatory]] ==
+
== [[compilers|Compilers]] ==
W tej chwili mamy do zaoferowania [[kompilatory]] na platformę Linuxową i na Windows.
+
At present (2017) there are [[compilers]] working on plateforms: Linux and 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.
+
 
+
 
+
+
+
 
+
+
 
+
  
 +
== [[Fundamental research]] ==
 +
Loglan'82 has a firm foundations. It incorporates quite a reasonable amount of intellectual contributions. Below, we are listing some problems we had to solve prior the definition of the language: 
 +
* Is it possible to manage objects in such a way that allow to deallocate unnecassary objects in a safe and efficient way? Without the phenomenon of dangling references.  [[bezpieczna dealokacja obiektów]]
 +
* How to determine the base class of a given class B knowing only the name A of the base class? Note, one program may contain many classes of the same name. It is possible in Loglan'82 (and in Java) for the language admits both nesting of modules and inheritance. 
 +
* How to manage objects of coroutines? In some languages the semantics of coroutines is obscure and even inconsistent. In some other languages the objects of coroutines and activation records of procedures may not cooperate, with the obvious lost. 
 +
* How to manage the active objects of processes? (the process modules are another extension of the class modules). 
 +
* Which tools of communication and/or synchronisation of concurrent and distributed computations are proper for the active objects of processes? 
 +
* How to manage the distributed computations?
 +
Some of the results obtained so far may find applications in Java programming. Perhaps there are more applications.
 +
For more information see [[Fundamental research]].
  
 +
==[[Axiomatic definitions of sublanguages of Loglan'82 ]] ==
 +
In this ...
 
[[Category: Loglan'82 project]]
 
[[Category: Loglan'82 project]]

Aktualna wersja na dzień 10:07, 30 lip 2017

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.
  • Should the software you are creating use concurrent, or distributed computations, or a combination of these two models -- choose Loglan'82. For it offers one model of all these variants of non-sequential computations. In this way you will diminish the cost of programming.
  • Please take time to learn about the alien call protocol. It is an original invention of our collaborator Bolek Ciesielski. It is fully object way of calling methods of a thread A from another thread B.
  • For those who are creating quasi-concurrent computations (by fibres) we are offering a richer version of classes i.e. coroutines.
  • Teachers -- Loglan'82 is a good choice:
  • if you aim to present all tools and methods of object oriented programming and to avoid passing from one to another programming language when need arises to illustrate a subsequent tool of object programming,
  • if you wish to construct a larger project that contains specification of data structures (classes), implementation of specifications and the verification of the implementation with respect to the specification.
  • Researchers -- for the language incorporates the results of scientific research of a few non-trivial problems:
  • is it possible combine two methods of creation of program modules: nesting and inheritance? Before we agreed to admit nesting and inheritance we had to answer a couple of fundamental questions:
  • How to assure static linking between an applicative occurrrence of an identifier and a proper occurrence of a declaration of this identifier?
  • How to determine the direct superclass of a given class?
  • Is it possible to extend a class by a function (a procedure)?
  • Does the management of object necessarily leads to the phenomenon of dangling references?
  • How effective can be garbage collection?
  • Is it possible to deallocate no longer needed objects in a safe and effective way?
  • How to define the semantics of coroutines in a consistent way?

Documentation of Loglan'82

You can start with mikromanual. In doubts check Report of Loglan'82 language. Explanations of diagnostics and some helpful hints are in user manual. If you can read polish then find podręcznik Loglanu

The syntax of Loglan is compact and clear, see Quick reference card.

Compare various object programming languages Comparison of object programming languages.

Selected examples

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


Program multiplying matrices, algorith of Winograd

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

Compilers

At present (2017) there are compilers working on plateforms: Linux and Windows.

Fundamental research

Loglan'82 has a firm foundations. It incorporates quite a reasonable amount of intellectual contributions. Below, we are listing some problems we had to solve prior the definition of the language:

  • Is it possible to manage objects in such a way that allow to deallocate unnecassary objects in a safe and efficient way? Without the phenomenon of dangling references. bezpieczna dealokacja obiektów
  • How to determine the base class of a given class B knowing only the name A of the base class? Note, one program may contain many classes of the same name. It is possible in Loglan'82 (and in Java) for the language admits both nesting of modules and inheritance.
  • How to manage objects of coroutines? In some languages the semantics of coroutines is obscure and even inconsistent. In some other languages the objects of coroutines and activation records of procedures may not cooperate, with the obvious lost.
  • How to manage the active objects of processes? (the process modules are another extension of the class modules).
  • Which tools of communication and/or synchronisation of concurrent and distributed computations are proper for the active objects of processes?
  • How to manage the distributed computations?

Some of the results obtained so far may find applications in Java programming. Perhaps there are more applications. For more information see Fundamental research.

Axiomatic definitions of sublanguages of Loglan'82

In this ...