The Icon project (in Arizona) has a WWW page
here.
Java
Java
some kind of revamped C++ dialect
meant to be used as a universal WWW language.
Implementation:
Java is indeed two standard:
firstly, their garbage language
in which they throw every single language feature
their twisted mind can think about (not the useful ones,
only the ones that sell).
Secondly, the horrible low-level bytecode-based JVM virtual machine,
that java people are stupid enough to pretend can
be secure, efficient, portable bytecode,
which is pure nonsense:
security is a high-level concept,
while efficiency and portability cannot be
simultaneously expressed with such a low-level abstraction.
Java is the new fad,
and you'll see everything and the opposite done about Java:
Java->X and X->Java compilers (or most likely X->JVM),
where X is about any language.
Here I'll add a few Java-related pages...
Linda
Linda
is a language for parallel programming,
by publishing tuples in a global space.
LISP
-
Currently generic LISP stuff has been wrongly merged with
Common LISP information.
Please excuse.
-
Description
-
LISP is a self-extending higher-order dynamically typed
strict (but with lazy data structures often implemented)
non-pure functional language.
It is the second oldest programming language,
but also one with the nicest semantics.
It's a good experimental platform for just any kind of computing;
it has got very good support,
including free portable development environments,
integrated structured editors, and efficient "optimizing" compilers.
Unfortunately, LISP syntax takes some getting used to
(it uses a very clean but unusual notation called `Cambridge Polish')
which makes it quite unpopular with many programmers.
-
Studying all the dialects of LISP is enough work for a lifetime.
However, there seem to be two main standards as for LISP:
-
Common LISP is a huge monolithic language,
with hundreds of built-in constructs for a megabyte worth of run-time system
(not talking about add-on modules).
However, the advantages of programming in Common
Lisp cannot be overestimated:
everything a programmer usually needs is in the library,
the object system is (quite) well integrated with the
type system and the condition system (which is unique on its own).
-
Common Lisp is now an ANSI Standard
(we do not know how legal it is to redistribute the text of the standard
in machine-readable form, as we'd like to).
For many years, the de facto
Common Lisp standard has been `Common Lisp: the Language',
by Guy Steele.
The (current) second edition is available in electronic form,
among others (in the States) from
Carnegie Mellon University.
as well as (in France) from
Supelec
-
Scheme is a minimalistic, "skimmed",
dialect of LISP, in which everything is built upon the simplest constructs.
-
Scheme has a section of its own in this review.
-
EuLisp (European Lisp),
is a modern object-oriented dialect of Lisp whose design was
less minimalist than that of Scheme but less constrained by
compatibility reasons than that of Common Lisp.
In particular, it has a single namespace for variables and functions
(like Scheme, and unlike Common Lisp)
and its type system is perfectly integrated with the object system.
Furthermore, the language makes use of the module system,
so that every program may import only those parts of the language
that it needs.
You may find the current EuLisp specification
here.
Lisp source code is written in Cambridge Polish which consists of
balanced parenthesized expressions of atomic symbols, which are then
parsed as S-exps (Symbolic EXPressions).
These S-exp are quite (tree-)structured data,
which is interpreted very easily.
The basic data structure is the (syntactically parenthesized)
list of S-exp's, and a list is evaluated by first evaluating each element,
then applying the function denoted by its first element to the rest of
the list as arguments.
LISP is really a nice language, but Cambridge Polish is unpleasant
for the profane
(and even for the expert if you don't use a LISP editor like EMACS,
that will help you balance and indent your expressions).
Actually, Cambridge Polish is LISP's mostly, but
(in the opinion of half the authors of this page)
deep flaw: had Lisp a more free syntax,
it would fulfill all the requirements for (a basis to) Tunes' HLL.
LISP would truly be the one language to do that!
References
-
There are many books about LISP and Scheme.
-
About LISP, if you are bald,
you may get the specifications for the Common LISP ANSI standard,
or read CLtL2 (Common LISP, the Language, 2nd edition) by Guy Steele.
-
Both authors of this review agree that the best book about programming
they read is Structure and Interpretation of Computer Programs,
by Abelsson and Sussman.
It happens to use (a slightly old-style subdialect of) Scheme.
Not anymore since 2nd edition.
-
GNU Emacs is a widely spread LISP-based advanced editor.
Look on prep.ai.mit.edu or any mirror site to find EMACS.
-
There are also newsgroups about LISP and Scheme,
comp.lang.lisp,
comp.lang.scheme,
not to talk about the many groups about emacs or ai.
-
LISP and Scheme repository
here
Pros
-
- It's a widely known and standard language, with implementation on
just any computer architecture, including very portable ones.
- Both interpreters and compilers of good quality are available,
and new ones are easy to design,
making development easy, and portability quite good.
- It is fully reflective
- It is strongly-typed, that is, type-safe for a non-trivial type system.
Cons
-
- the type-system is not safely extensible in a high-level way
- it doesn't allow any static typing
- it allows too many side-effects
- no standard reflectivity allows the syntax to go beyond S-exp's
- although it is fully reflective, it has no
- it lacks some ML-like pattern matching
- it lacks a clean macro system
- its standard (common lisp) has got too many features nobody uses.
- its module system offers no security at all.
Notes
-
Because LISP is so powerful and versatile a language,
several flavors of LISP have been used in a wide range
of applications,
from real-time industrial control
to financial applications
to 3D arcade games (e.g. Abuse)
Conclusion
-
All in all, it could be said about Lisp's semantics
that while it offers a great expressivity
as to constructing new objects,
it is unexpressive as to express constraints on these.
About its syntax, we find that it is very all-purpose,
and adapts immediately to any use;
however, it doesn't allow to scale to specific uses where
local constraints make it too redundant.
It could be said that Lisp is a language based on syntax trees;
then, Clean, that is based on graphs, and could be
a successor (see also Prolog and Lambda-Prolog for the same in logic
programming).
- LISP pointers to sort out:
LUA
- LUA
is an embeddable language library to extend your programs
- Also see this page
M4
m4 is a powerful (unlike CPP) macro-expansion program
designed as a preprocessor to more stubborn languages.
It's ugly, but it's fairly standard
(available on most platforms, including a fine GNU version).
The semantics for reflection are horrible,
so users who want to do complicated things often find themselves
compiling manually to continuation passing style.