Added upstream from http://ftp.icm.edu.pl/pub/loglan/
[loglan.git] / HTML / whylog.htm
1 <HTML>
2 \r
3 <HEAD>\r
4 \r
5 <TITLE>Why Loglan'82?</TITLE>\r
6 \r
7 <BODY>\r
8 \r
9 <H1><IMG src="loglanmm.gif">Why Loglan'82?</H1>\r
10 \r
11 <P>\r
12 We think that everybody should take acquaintance with certain\r
13 features of Loglan'82. Even if you will continue to use your favorite\r
14 XYZ language, you will be at least aware of what you are missing.\r
15 <BR>\r
16 Four features of Loglan'82 distinguish it from the other OO languages:\r
17 <P>\r<ol><li>
18 <A NAME="mli"><STRONG>multi-level inheritance, </STRONG></A><BR>\r
19 <EM> the language offers both nesting and inheritance of modules\r
20 <BR>\r
21 </EM>nesting enables <EM> sharing </EM>of environments and inheritance\r
22 enables <EM> private copies </EM>of environments. <BR>\r
23 Both methods of module's construction are useful and important!\r
24 \r
25 <LI><A NAME="mki"><STRONG>multi-kind inheritance </STRONG></A>\r
26 <BR>\r
27 <EM> e.g. a procedure can inherit from a class, <BR>\r
28 </EM>making use of it one can enforce protocols, dynamically check\r
29 axioms of abstract data types etc.\r
30 <LI><A NAME="saf"><STRONG>SAFETY </STRONG></A><BR>\r
31 - <EM>Loglan'82 signals a lot of programming errors that pass\r
32 unrecognized in other systems.<BR>\r
33 - </EM>There is no risk of dangling references, no confusion of\r
34 types ...<BR>\r
35    <EM>Safe deallocation statement and safe storage management\r
36 system</EM>\r
37 <LI><A NAME="conc"><STRONG>object-oriented concurrency </STRONG></A>\r
38 <BR>\r
39 <EM> objects of processes can be created dynamically and allocated\r
40 on a processor accessible by the network <BR>\r
41 </EM>The processes can communicate and synchronize through a new,\r
42 powerful mechanism:<EM><B> ALIEN CALL </B></EM>\r
43 </OL>\r
44 \r
45 <P>\r
46 Other, standard methods of OO programming are present in Loglan'82:\r
47 <UL>\r
48 <LI>classes and objects of classes,\r
49 <LI>virtual methods,\r
50 <LI>hierarchies of classes,\r
51 <LI>exception handling,\r
52 <LI>operators of structured programming,\r
53 <LI>dynamic arrays,\r
54 <LI>coroutines\r
55 <LI>etc.\r
56 </UL>\r
57 \r
58 <P>\r
59 \r
60 <P>\r
61 Loglan'82 is accompanied by an original methodology of software\r
62 engineering which supports the most complicated and most expensive\r
63 phases of software creation: specification, analysis and verification.\r
64 There are good reasons for using Loglan'82 in:\r
65 <UL>\r
66 <LI><A href="#Edu">education</A>,\r
67 <LI><A href="#Fast">fast prototyping of software</A>,\r
68 <LI><A href="#res">research</A>.\r
69 </UL>\r
70 \r
71 <H2><A NAME="Edu">Education</A>. </H2>\r
72 \r
73 <P>\r
74 The academic community has a need for one language which enables\r
75 to teach all elements of object programming: classes &amp; objects,\r
76 coroutines, processes (in Loglan'82 processes are objects which\r
77 are able to act in parallel), inheritance, exception handling,\r
78 dynamic arrays etc. Loglan'82 offers the complete sets of programming\r
79 tools used in object and modular and structural programming.\r
80 <P>\r
81 It is of importance to have compilers acting in different operating\r
82 environments: MS-DOS, Unix, Atari, etc. in order to assure the\r
83 exchange of sources between students and teachers, between users\r
84 of : personal computers, workstations and servers of university's\r
85 networks. We are working on the prolongation of the list of machines\r
86 and systems that support Loglan'82.\r
87 <P>\r
88 Loglan'82 supports other styles of programming e.g. programming\r
89 by rules, functional programming etc.\r
90 <P>\r
91 The teacher and the students can use different computers (see\r
92 &quot;Machines&quot; file) and still they can exchange the sources\r
93 and to follow the experiments of others. You can distribute the\r
94 files of Loglan'82 among the students which own PC/DOS, ATARI,\r
95 PS2, PC/Unix. You can install Loglan'82 in your computing centre\r
96 on Unix or Vax/VMS or Novell servers. You can install Loglan'82\r
97 on your workstation (Sun, PC/Unix, Apollo etc.). On all machines\r
98 you can compile and execute the same program. Whether it will\r
99 be a student's program checked by a teacher, or an instructive\r
100 program transmitted to the students. And students can work at\r
101 home or in a computer room of your University.\r
102 <P>\r
103 For the PC users Loglan'82 comes with an environment consisting\r
104 of - lotek - a text editor integrated with compiler and other\r
105 tools, - a structural editor which guides you when you do not\r
106 know the syntax of Loglan'82, - an electronic manual to be used\r
107 with Norton Guide or its clones,\r
108 <P>\r
109 A set of instructive examples is added to the distribution package.\r
110 <P>\r
111 We encourage you to experiment with the system since:\r
112 <UL>\r
113 <LI>you can find it useful and interesting to teach the object\r
114 programming,\r
115 <LI>you can find Loglan'82 useful in fast prototyping of software,\r
116 <LI>you can apply and extend several predefined classes which\r
117 define and implement the problem- oriented languages extending\r
118 Loglan'82 in various directions.\r
119 </UL>\r
120 \r
121 <H2><A NAME="res">Research</A>.</H2>\r
122 \r
123 <P>\r
124 Loglan'82 has been used as a <EM>tool</EM> with a success in research\r
125 in:\r
126 <UL>\r
127 <LI>object oriented databases,\r
128 <LI>symbolic computation (computer algebra, ...),\r
129 <LI>formal proofs,\r
130 <LI>proving the properties of programs.<BR>\r
131 \r
132 </UL>\r
133 \r
134 <P>\r
135 this list is not the exhaustive one.\r
136 <P>\r
137 Loglan'82 is a <EM>source</EM> of many problems of broader interest.\r
138 <OL>\r
139 <LI>The problem of giving one non-contradictory semantics to the\r
140 language admitting both nesting of modules and inheritance from\r
141 various levels.\r
142 <LI>Dangling reference problem.\r
143 <LI>Mathematical models of concurrent processes.<BR>\r
144 Loglan'82 is the result of a research on fundamental questions\r
145 like 1-3 .\r
146 <LI>Multiple inheritance and nesting.\r
147 <LI>Libraries of predefined classes - how to define the meaning\r
148 of separately compiled modules in the presence of nesting and\r
149 multiple inheritance.\r
150 <LI>The virtual Loglan'82 machine as a federation of co-processes.\r
151 <LI>Execution of processes of a Loglan'82 program in a LAN of\r
152 heterogeneous computers.\r
153 <LI>Execution of Loglan'82 programs on parallel computers e.g.\r
154 transputers.\r
155 <LI>to find a complete, axiomatic definition of the notions of\r
156 class and of inheritance,\r
157 <LI>is it possible to make efficiently the nesting of modules\r
158 and the multiple inheritance?\r
159 <LI>how to manage the libraries of predefined procedures and classes\r
160 in the presence of nesting?\r
161 <LI>how to install the language on a real multiprocessor system?\r
162 </OL>\r
163 \r
164 <P>\r
165 The problem 1 was solved by the team lead by A.Kreczmar in co-operation\r
166 with the group of H. Langmaack.\r
167 <P>\r
168 The problem 2 was solved by A.Kreczmar and was analyzed formally\r
169 by H. Oktaba.\r
170 <P>\r
171 T.M&uuml;ldner and A.Salwicki gave the Max model of parallel computations.\r
172 H.-D. Burkhard proved that it differs essentially from the interleaving\r
173 model.\r
174 <P>\r
175 B. Ciesielski gave a new concept of objects of processes and a\r
176 communication mechanism of alien calls of procedures. This version\r
177 was implemented by him in 1988.\r
178 <P>\r
179 The problems 4 - 12 are open. We would be happy to co-operate\r
180 on solving them together with you.\r
181 <P>\r
182 We recommend Loglan'82 as a tool to be used in the research in:\r
183 object-oriented databases, development of CASE tools, VHDL, silicon\r
184 compilers, simulation, etc.\r
185 <H2><A NAME="Fast">Production of new software</A></H2>\r
186 \r
187 <P>\r
188 There are only a few languages which, like Loglan'82, enable both\r
189 ways of modules' developing: nesting (- a module can be declared\r
190 in other module) and inheritance (also called prefixing). The\r
191 modules of your software can share the environment (by means of\r
192 nesting) or they can inherit other modules as private copies of\r
193 the modules declared elsewhere. The inheritance in Loglan'82 permits\r
194 to inherit a module declared somewhere in the tree of nested modules.\r
195 Moreover, the inheritance is no longer restricted to classes.\r
196 Any module, whether it will be a class, a block, a procedure,\r
197 a function, a coroutine or a process can inherit from a class.\r
198 Coroutines and processes can be inherited in classes, coroutines\r
199 or processes. Another kind of module is a handler. Handlers serve\r
200 to handle signals (of exceptions).\r
201 <P>\r
202 Altogether one can use 7 kinds of modules.\r
203 <P>\r
204 The tools offered by Loglan'82 enable in various ways to create\r
205 generic modules whether they are to serve as generic procedures\r
206 or parameterized data types. In order to do so one can use either\r
207 the possibility to pass types as formal parameters or the inheritance\r
208 mechanisms. The language makes possible overloading the names\r
209 of operations via the mechanism of virtual functions or procedures.\r
210 <P>\r
211 This and other programming tools offered by Loglan'82 permit to\r
212 quickly create a prototype of a program and to test it in a friendly\r
213 environment. The compiler gives a good diagnostic of the eventual\r
214 errors. For the time being we can not offer a code generator.\r
215 Instead you can use the Loglan_to_C crosscompiler.\r
216 <P>\r
217 The language is especially well suited for the\r
218 <UL>\r
219 <LI>reusability and\r
220 <LI>proving the correctness.\r
221 </UL>\r
222 \r
223 <P>\r
224 Loglan'82 supports various methods of programming:\r
225 <UL>\r
226 <LI>imperative - since it is a descendant of Algol, Pascal, ...\r
227 <LI>object-oriented - since it is a continuation, and extension\r
228 of the ingenious ideas of Simula-67,\r
229 <LI>functional programming is easy,\r
230 <LI>programming by rules is supported by a specialized class BACKTRACK\r
231 designed and developed in Loglan'82.\r
232 </UL>\r
233 <HR>\r
234 \r
235 <ADDRESS>\r
236 We would appreciate any news (comments, questions, suggestions,\r
237 objections, ...) from you. Please write to Andrzej.Salwicki@univ-pau.fr\r
238 \r
239 </ADDRESS>\r
240 <HR>\r
241 \r
242 <P>\r
243 <A href="availlty.htm"><IMG src="prevpage.gif"></A>\r
244 <A href="loghome.htm"><IMG src="homepage.gif"></A>\r
245 <A href="quick.htm"><IMG src="nextpage.gif"></A>\r
246 <HR>\r
247 \r
248 <ADDRESS>\r
249 <A href="http://www.univ-pau.fr/~salwicki/GMyAS.html">AS </A>08:03\r
250 04/12/1994 \r
251 </ADDRESS>\r
252 \r
253 <P>\r
254 Pau, le 26 Janvier 1994\r
255 </BODY>\r
256 \r
257 </HTML>\r
258 p