Added upstream from http://ftp.icm.edu.pl/pub/loglan/
[loglan.git] / HTML / tablica3.htm
1 <html>\r
2 <head>\r
3 <title>Brief comparison of OO Languages</title>\r
4 \r
5 </head>\r
6 \r
7 <body>\r
8   \r
9 <H1 Align=center> <img align=middle src="loglanmm.gif"> A brief comparison of several object oriented languages </H1>\r
10 <p Align=Left>In the table below you will find a comparison of several languages with respect to the most  important features and tools of programming.</p>\r
11    \r
12 <table border>\r
13 \r
14 <tr>\r
15 <th>Languages:<br> ________<br>________<br><em>Features</em><br>----v---- </th>\r
16 <td valign=top> S<br>i<BR>m<br>u<br>l<br>a<br>6<br>7 </td>\r
17 <td valign=top> o<br>b<br>j<br>.<br>P<br>a<br>s<br>c<br>a<br>l<br>s </td>\r
18 <td valign=top> C<br>+<br>+ </td>\r
19 <td valign=top> M<br>o<br>d<br>u<br>l<br>a<br> 3 </td>\r
20 <td valign=top> S<br>m<br>a<br>l<br>l<br>t<br>a<br>l<br>k </td>\r
21 <td valign=top> E<br>i<br>f<br>f<br>e<br>l </td>\r
22 <td valign=top> A<br>d<br>a </td>\r
23 <td valign=top> B<br>e<br>t<br>a </td>
24 <td valign=top> J<br>a<br>v<br>a </td>
25 <th valign=top> L<br>o<br>g<br>l<br>a<br>n<br>'<br>8<br>2 </th>\r
26 </tr>\r
27 <tr>\r
28 <th><em> Modularisation</em> </th>\r
29 <td> </td>\r
30 <td> </td>\r
31 <td> </td>\r
32 <td> </td>\r
33 </tr>\r
34 <tr>\r
35 <td> - nesting of modules</td>\r
36 <td> + </td>\r
37 <td> + </td>\r
38 <td> - </td>\r
39 <td> - </td>\r
40 <td> - </td>\r
41 <td> - </td>\r
42 <td> + </td>\r
43 <td> + </td>\r
44 <td> - </td>
45 <td> + </td>\r
46 </tr>\r
47 <tr>\r
48 <td> - inheritance</td>\r
49 <td> + </td>\r
50 <td> + </td>\r
51 <td> + </td>\r
52 <td> + </td>\r
53 <td> + </td>\r
54 <td> + </td>\r
55 <td> - </td>\r
56 <td> + </td>\r
57 <td> + </td>
58 <td> + </td>\r
59 </tr>\r
60 <tr>\r
61 <td> - - multilevel inheritance</td>\r
62 <td> - </td>\r
63 <td> - </td>\r
64 <td> - </td>\r
65 <td> - </td>\r
66 <td> - </td>\r
67 <td> - </td>\r
68 <td> - </td>\r
69 <td> + </td>\r
70 <td> - </td>
71 <td> + </td>\r
72 </tr>\r
73 <tr>\r
74 <td> - - multiple inheritance</td>\r
75 <td> - </td>\r
76 <td> - </td>\r
77 <td> + </td>\r
78 <td> - </td>\r
79 <td> + </td>\r
80 <td> + </td>\r
81 <td> - </td>\r
82 <td> - </td>
83 <td> +<sup>7)</sup> </td>\r
84 <td> +<sup>1)</sup> </td>\r
85 </tr>\r
86 <tr>\r
87 <td> -inherit in other modules<sup>2)</sup></td>\r
88 <td> - </td>\r
89 <td> - </td>\r
90 <td> - </td>\r
91 <td> - </td>\r
92 <td> - </td>\r
93 <td> - </td>\r
94 <td> - </td>\r
95 <td> + </td>
96 <td> - </td>\r
97 <td> + </td>\r
98 </tr>\r
99 <tr>\r
100 <td> - static binding of names</td>\r
101 <td> + </td>\r
102 <td> + </td>\r
103 <td> - </td>\r
104 <td> + </td>\r
105 <td> - </td>\r
106 <td> - </td>\r
107 <td> + </td>\r
108 <td> + </td>\r
109 <td> - </td>
110 <td> + </td>\r
111 </tr>\r
112 \r
113 <tr><td></td><td></td></tr>\r
114 \r
115 <tr>\r
116 <td> <em>Classes & Objects </em></td>\r
117 <td> + </td>\r
118 <td> + </td>\r
119 <td> + </td>\r
120 <td> + </td>\r
121 <td> + </td>\r
122 <td> + </td>\r
123 <td> - </td>\r
124 <td> + </td>\r
125 <td> + </td>
126 <td> + </td>\r
127 </tr>\r
128 \r
129 <tr><td></td><td></td></tr>\r
130 \r
131 <tr>\r
132 <td><em> Coroutines </em></td>\r
133 <td> + </td>\r
134 <td> + </td>\r
135 <td> - </td>\r
136 <td> - </td>\r
137 <td> - </td>\r
138 <td> - </td>\r
139 <td> + </td>\r
140 <td> + </td>\r
141 <td> - </td>
142 <td> + </td>\r
143 </tr>\r
144 \r
145 <tr><td></td><td></td></tr>\r
146 \r
147 <tr>\r
148 <td> <em>Processes</em></td>\r
149 <td> - </td>\r
150 <td> - </td>\r
151 <td> - </td>\r
152 <td> + </td>\r
153 <td> - </td>\r
154 <td> - </td>\r
155 <td> + </td>\r
156 <td> + </td>\r
157 <td> + </td>
158 <td> + </td>\r
159 </tr>\r
160 <tr>\r
161 <td> - alien call of methods <sup>3)</sup></td>\r
162 <td> - </td>\r
163 <td> - </td>\r
164 <td> - </td>\r
165 <td> - </td>\r
166 <td> - </td>\r
167 <td> - </td>\r
168 <td> - </td>\r
169 <td> - </td>\r
170 <td> - </td>
171 <td> + </td>\r
172 </tr>\r
173 \r
174 <tr><td></td><td></td></tr>\r
175 \r
176 <tr>\r
177 <td> <em>Signals & Exceptions</em></td>\r
178 <td> - </td>\r
179 <td> - </td>\r
180 <td> - </td>\r
181 <td> - </td>\r
182 <td> - </td>\r
183 <td> - </td>\r
184 <td> + </td>\r
185 <td> + </td>\r
186 <td> ? </td>
187 <td> +<sup>4)</sup> </td>\r
188 </tr>\r
189 \r
190 <tr><td></td><td></td></tr>\r
191 \r
192 \r
193 <tr>\r
194 <th> <em>Safety</em></th>\r
195 </tr>\r
196 <tr>\r
197 <td> - safe deallocation<sup>5)</sup></td>\r
198 <td> - </td>\r
199 <td> - </td>\r
200 <td> - </td>\r
201 <td> - </td>\r
202 <td> - </td>\r
203 <td> - </td>\r
204 <td> - </td>\r
205 <td> ? </td>\r
206 <td> - </td>
207 <td> + </td>\r
208 </tr>\r
209 <tr>\r
210 <td> - type checking</td>\r
211 <td> + </td>\r
212 <td> + </td>\r
213 <td> - </td>\r
214 <td> - </td>\r
215 <td> - </td>\r
216 <td> - </td>\r
217 <td> + </td>\r
218 <td> + </td>\r
219 <td> +? </td>
220 <td> + </td>\r
221 </tr>\r
222 <tr>\r
223 <td> - protection of private</td>\r
224 <td> + </td>\r
225 <td> - </td>\r
226 <td> - </td>\r
227 <td> + </td>\r
228 <td> - </td>\r
229 <td> - </td>\r
230 <td> + </td>\r
231 <td> + </td>\r
232 <td> + </td>
233 <td> + </td>\r
234 </tr>\r
235 <tr>\r
236 <th> <em>Genericity & Polymorphism </em></th>\r
237 </tr>\r
238 <tr>\r
239 <td> - types as formal param.</td>\r
240 <td> - </td>\r
241 <td> - </td>\r
242 <td> - </td>\r
243 <td> - </td>\r
244 <td> - </td>\r
245 <td> -+ </td>\r
246 <td> -+ </td>\r
247 <td> -+ </td>\r
248 <td> -+ </td>
249 <td> + </td>\r
250 </tr>\r
251 <tr>\r
252 <td> - overloading of operators</td>\r
253 <td> - </td>\r
254 <td> ? </td>\r
255 <td> + </td>\r
256 <td> + </td>\r
257 <td> ? </td>\r
258 <td> + </td>\r
259 <td> + </td>\r
260 <td> + </td>\r
261 <td> + </td>
262 <td> - </td>\r
263 </tr>\r
264 <tr>\r
265 <td> - virtual methods<sup>6)</sup></td>\r
266 <td> + </td>\r
267 <td> - </td>\r
268 <td> + </td>\r
269 <td> ? </td>\r
270 <td> + </td>\r
271 <td> -+ </td>\r
272 <td> - </td>\r
273 <td> + </td>\r
274 <td> + </td>
275 <td> + </td>\r
276 </tr>\r
277 <tr><td></td><td></td></tr>\r
278 \r
279 </table>\r
280 \r
281 \r
282 \r
283 <hr>\r
284 <h4> Footnotes </h4>   \r
285 \r
286 \r
287 In Loglan'82:<br>\r
288 <ol>\r
289 <li> multiple inheritance may be obtained from multi-level inheritance and \r
290                                                                coroutines,\r
291 <li> it is possible to inherit a class  in a procedure, a function, a process,                  a coroutine, a block,\r
292 <li> alien call is a truly object oriented protocol of executing a method of\r
293     a callee process in cooperation between a calling and the callee processes,\r
294 <li> exceptions are handled with continuations and lastwill actions,\r
295 <li> i.e. absence of dangling references <em>& </em> possibility to deallocate no longer needed objects,\r
296 <li> with virtual methods there is no need for overloading,<br>\r
297 several languages admit only virtual methods, they do not admit usual methods\r
298 \r<li> in Java  there is no multiple inheritance of classes, quite reasonably
299 Java distinguishes between classes and interfaces. Multiple inheritance of interfaces is allowed.
300 </ol>\r
301 <hr>\r
302 <a href="quick.htm"><img src="prevpage.gif"></a>\r
303 <a href="loghome.htm"><img src="homepage.gif"></a>\r
304 <a href="microman/homepage.htm"><img src="nextpage.gif"></a> \r
305 <hr>\r
306 <address>\r
307 <a href="GMyAS.html">AS </a> Last update Tue 12 Mar 1996\r
308 </address>\r
309 </body>\r
310 </html>
311
312
313
314 ppp