27 Dec 1998 01:28:13 +0100
I am new in this list, and I think I ought to introduce myself.
My name is Laurent Martelli, I am 23, and I've been dreaming of a new
way to use computers for a long time. When I say `use', I'm thinking
of cumputer technicians, _and_ non-technician users. Because these are
two categories of users, but they are both users. With different goals
and needs, but they're both users. And I am thinking of ways to unify
these two communities of users, by using common concepts which can
serve them both.
And it seems that you have goals similars to mine, so that's why I
decided to join the project. I first heard of Tunes one year ago, and
suprisingly agreed with many -- if not all -- of the point of views
that you expose in the Tunes Web site. I say suprisingly because I had
subscribed to a mailing list of people having similars goals (let's
make a new OS, which will be completly different -- and superior --
and will be object oriented and that stuff) but thay unfortunately had
no clear vision of what they wanted, and how to achieve it (I think
that Faré had subscribed to that list too).
So my main goal is to find unifying concepts so that things that we
consider similar can be treated similarly by the computer, and thus
reuse code and design by reference and not by value. And it appaers to
me that one fundamental concept in computer science is the one of
abstraction of computation. Lisp-like languages were built, I think,
with this idea in mind. They may lack syntaxique sugar, but this issue
can be treated independantly. This concept can but stated like this :
computation is when you have something call the input, and to this
input corresponds something called the output, which "depends" on the
input. How to find the output knowing the input is the
computation. And it turns out that you can define a computation as the
composition of several other computations.
One thing which I noticed recently, (well surely already had noticed
it before, but hadn't seized the importance of it at the time) is that
every program can be rephrased using this concept. Wether it is
written in a procedural language, an OO language, or anything
else. But the sad thing is that most of the time, they cannot
communicate with each other, even though they have a common root. Why
is it so ?
My anwser to the question there were no means to display the concepts
in a `user friendly' way (remember that programmers are users). So
people chose to create a new language in order to express and
manipulate certain concepts in a user friendly way. Lisp-like
languages are extremly powerfull, but when you want to manipulate
complex mathematical expressions, an endless stream of parenthesis and
digits is not the prefered way to view things. We prefer to write
`2+2', not (+ 2 2). Because we are used to it. And there is no reason
to think the way the computer prefers rather than the opposite.
Another answer is that the what and the how are too closely
tied. Despite the fact that sofware engineers try to abstract the how,
the slightest deviation ruines the whole building. And I think, as
many of you I believe, that AOP brings interesting techniques in this
To summarize my ideas, I'd say that key concepts are : computation,
abstraction, and patterns. Patterns seem important to me, because if
you look at the composition of computations, you will see them. And
once you see them, it is important to highlight them, and make them
unambiguous, so that if someone uses a design pattern, someone else
can recognize it with no risk of misunderstanding. Because if everyone
uses his own conventions, no efficient communication can occur. And
efficient communications are a key to success. (cf Linux and
So, to summarize even more, I'd say that my main goal is to design a
high level language, based on a few core concepts as possible, and
have the oportunity to display commonly used patterns in a sensible
way. I believe that the language is already there and is called lisp
or scheme. And the rest is just design patterns...
Well, I'll stop here for tonight. So please give me some feedback, and
tell me if all this makes any sense.