             FREQUENTLY ASKED QUESTIONS ABOUT "L3P"
                     (Last update: Spring '96)

         maintained by: Giuseppe Callegarin (callegar@unive.it)

Q: What is L3P ?
A: L3P is an educational MULTIPARADIGM PROGRAMMING LANGUAGE.
It offers and permits to combine the paradigms usually ascribed
to languages such as PASCAL, LISP and PROLOG. L3P is an acronym
for "Language for 3 Paradigms": imperative, functional and logic.
The tool has been specifically designed and implemented for:
a) learning each paradigm, isolated from the other two;
b) building educational projects for which a multiparadigm approach
   might be suggested. Typical assignments are: natural language
   processing, algebra processing, solving graph path problems,
   building expert systems, implementing strategies for games.

Q: Who might it interest?
A: All people (educators, researchers, students) who believe
that "multiparadigm programming is nice and useful".
L3P could be used in high schools and colleges introducing,
comparing or integrating declarative and procedural programming.
Some language features and a rich turtle graphics may also attract
LOGO educators. There are good reasons for thinking that the
imperative subset is more suitable than PASCAL when introducing
imperative programming for the first time.

Q: Can I see a short but indicative sample program?
A: Here is a program generating all the permutations of a given
list:

program PERMUTATIONS  (* generating all permutations of a list *)

predicates
  insert(X,T,[X|T]).
  insert(X,[Y|T],[Y|T1]) :- insert(X,T,T1).
  perm([X],[X]).
  perm([X|L],P) :- perm(L,L1),insert(X,L1,P).
endpredicates

procedure ShowPermutation(A: list)
begin
  nl
  write A
end ShowPermutation

var Things: list

begin
  read 'Give me a list to permute (e.g. [r,TRUE,[],15] ):',Things
  foreachsol of L val Things, perm(L,P)
    ShowPermutation(?P)
  endforeach
end

Q : Can I really put on the same worksheet PROLOG predicate
sections, functions and procedures ?
A: Yes, with some restrictions (e.g. only global predicates are
permitted). An easy-to-use integrated programming environment
permits you to test procedures, functions and predicates in their
own interactive environment.
List processing with a consistent syntax is permitted in each
paradigm.

Q: Is L3P a typed language ?
A: The language adopts a compromise between the "typeless" - or
untyped - approach and the strongly typed approach. Though less
reliable and less efficient, the typeless approach, in many cases,
permits simpler and more flexible solutions. Untyping is assumed
for default, but you can explicitly mention that a variable,
parameter, or function is untyped assigning it the univ (universal)
data type, that is the discriminated union of all the basic types
(integer, real, boolean, char, string, list, compterm, logvar).
New basic types cannot be defined. Array, functional and procedure
types are not considered "basic types" and have some limitations
in use: they cannot be the result type of a function and their
values cannot be list or array elements nor can be read or
written. Nonetheless, some higher order functional programming is
permitted.  Lists are untyped, i.e. their elements can be of any
basic type.

Q: On what platforms can I run it?
A: At the present moment, only on MS-DOS platforms with at least a
80286  CPU,  640 Kb RAM  and one of these graphic cards: CGA, EGA,VGA.
Current implementation does not use extended memory.
Old PC-AT-compatibles with EGA or VGA can work well.

Q: Is it free ?
A: No, it's Shareware, but the owner (L3P is a registered
   mark of CEDAM S.p.A. - Padova) offers generous conditions.
   Shareware package includes:
1) a (free) compile-and-go program (200Kb);
2) an evaluation copy of the Integrated Programming Environment (IPE)
   for program  development(250Kb) (it is limited on source program size);
3) a brief tutorial;
4) a 15 pages essential language manual;
5) some indicative demos and some useful source libraries.

Q: How can I get and install the Shareware package ?
A: By anonymous ftp from any SIMTEL site (or its mirror),
   looking at the file l3p?????.zip in the
 
                 SimTel/dos/misclang    
directory.
Expand l3p?????.zip  on a new directory of your choice and then follow the
README.TXT instructions.

Q: Is there any WEB page on L3P ?
A: Yes. URL is: http://vega.unive.it/~callegar/l3p_home.html
   You can get l3p?????.zip from there, if you wish.


Q: Is L3P an Object Oriented Language ?
A: No. Maybe it will be in the future (it will be called L4P).
 Arrays are already seen as objects (e.g. they can be dynamically
 resized with the dot syntax).

Q: How can an educator avoid the students getting confused ?
A: The difficulties cannot be denied, but also the benefits of
the multiparadigm approach cannot be ignored: each aspect of a
problem can be solved according to the more suitable paradigm.
Experience shows that possible answers are:
a) by following an accurate paradigm path learning;
b) by asking, whenever possible, to express a same solving idea by
using different paradigms;
c) by stressing differences as well as concept analogies (e.g.
loop, recursion, binding, etc.) in the three paradigms;
d) by having sufficient time.

Q: Why is program execution slow when compared to other languages?
A: L3P has only pedagogical and research purposes. Many run-time
tests have been inserted in order to reveal and prevent common
programming errors.  Moreover the language is interpreted.
Nonetheless, improvements to the  implementation are certainly
possible.

Q: Has L3P been presented in any international conference ?
A: The most significant aspects of the language have been published
on:
G. Callegarin, "Teaching Prolog Integrated in a Multiparadigm
Language", Proceedings of the Post-Conference Workshop on Logic
Programming and Education, ICLP '94 International Conference on
Logic Programming, Santa Margherita Ligure, Italy , June 13-18,
1994, pp. 23-30.
A poster on the language has been presented at WCCE '95, World
Conference on Computer Education- 23-28 July '95, Birmingham (UK).

A: Are there national versions other than the English one ?
Q: At the present moment only the Italian version is available.


END OF QUESTIONS
----------------

