Now, I am following all those articles posted here today about the Lisp's problems and they look to me quite similar to the Linux distro's problem, in that everyone has one that (s)he likes and disses (if not plainly hates) all others.
This, on the Linux world has prevented it from becoming the mainstream OS it should be, and gave Windows an undeserving and lasting afterlife. It could have died with the Vista fiasco, and it nearly did so, but now it is posing a serious comeback with Seven. Linux failed to seize the moment and Lisp is doing more or less the same.
Now, answer me these, since my knowledge of Lisp is severely lacking to make sense of it. If I am completely wrong about something, be merciful.
As far as I understand, Lisp has some 'low level' functions that are some sort of axioms on whom the implementations are built onto, right?
If this is true and everything on the language are built atop of those, or atop of stuff built atop of those (in n-levels), how can different implementations possible be incompatible?
If everyone is aware of the Lisp's problems, why isn't anyone moving to fix them?
Why, when one tries, the answer must always be another implementation with 'more' features instead of creating the cleanest possible implementation with 'the least' features allowing maximum compatibility?
I have more questions, but I need to understand these first if anyone has the patience to answer.
I am most grateful for your time.
The PG books are about Common Lisp. CL is defined in a very good ANSI standard. Where implementations of CL really diverge is in the areas which are not covered by the standard, e.g. networking. Not that it is an enormous problem in practice: there are good portable libraries around ("portable" means that they work on different CL implementations).
edit: thinking about it, if you are using Peter Seibel's lisp in a box, then it's CL that you are playing with
In fact, if they are both 'Lisp', why do they exist at all? Why there ARE differences? If CL is a 'very good' ANSI standard as you say, why people use Scheme? Arc is also CL, but why does it exist at all? What does it has that justifies it being created, increasing even more the noise? If I wanted an implementation of strict CL, which one would be it?
If you choose CL, the choice of implementation is not very important while you learn it. Different CL implementations have different strength, e.g. in unicode implementation, compilation speed, treatment of certain kinds of numbers etc., but it is not relevant for a beginner. A popular open source choice is SBCL, but there are others.
Also, there are free/opensource implementations and commercial implementations. The commercial ones are costly (but trial versions exist); they give a more complete environment.
The choice of a Lisp seems to be one of situation, context, or religion (for example, see the disagreements as to whether a Lisp-1 or Lisp-2 is better).
Arc may just appear to be an attempt to build a better mousetrap (and is not CL), but it seems to be inspired by the same reason that created most other programming languages: someone (pg) decided that there existed a better way to do task x. I, for one, think that the syntax is cleaner.
I'm usually a Schemer, so I can't really recommend CL implementations...
Similarly, for the very high performance stuff, i use SBCL which generates native code on all the above platforms. I recently have started to do CCL because a client wants a true mac app and CCL has this wonderful cocoa bridge. If i had to do any java stuff or interface with java, I would probably be using clojure.
If you are interested, I recommend continuing PCL and the lispbox.
If everyone is not moving to fix the problems that you mention, it might mean that they disagree about what the important problems are.
Arc exists as a research effort in thinking about what the next version of lisp should look like, and there are those that feel it is a possible answer to some of your questions.
Scheme is a very essential (e.g. minimalist) implementation of Lisp that is often found in teaching environments.
Don't let the variety scare you--just dive in if you are interested.
I already went through 3 distros - Kurumin, Suse and Ubuntu, and the only reason I still have a Windows partition is to play some games that I couldn't (or didn't bother to) make work under Linux. I can tell you, the bar is very high to start. Ubuntu made it lower (and lower at each version) but it is still too high for mainstream.
And it need not be. The whole problem is always understanding the differences. If I pick that distro or that distro, what changes? What do I lose? What do I earn? Unable to find answers, one doesn't choose lest one chooses poorly.
Lisp implementations are the same.
Thank you for your answers. Allow me to add just two more. If one says Arc is not CL, but a whole new kind of Lisp that tries to solve some of those problems, what exactly are the differences? What does Arc advance as a Lisp standard?
2. randomly pick an implementation of your chosen lisp. It really makes no difference as a beginner. I speak from experience. You can always switch later in a painless way.
regarding CL, choose an open source implementation if you don't fear things like emacs. If you prefer a more polished IDE, choose a commercial implementation.
True that the differences are limited to things outside the specs, but somehow my applications almost always stepped in these parts.
The are currently hundreds of distros. All of them serve a purpose. There are ones meant for servers, meant for gaming, meant for low-level machines, meant for coding, ones that work only with strict F.O.S.S software, ones that work with software that is commercial, ones that are paid, that offer support, that don't offer support, but there is a community willing to help, others that let you on your own. There are even ones that mimic Windows XP. And NONE that are user-friendly.
Kurumin is a brazilian distro that gets CLOSE to it, but it is quite lacking. Ubuntu is the nearest possible choice, but it is still not there.
Obviously, once you pick your distro, you have to pick your window manager. Ubuntu, Kubuntu or Xubuntu? Or maybe there is only one window manager for your distro, but then that nice application you saw on your friend's house belongs to other and is not supported on yours. And how were you suposed to know?
Once you get past the initial trauma, you will eventually reach the point on when you can make your stuff work on any of them, but do you really expect someone that used Windows all his life and can barely install his printer whose drivers are already bult-in on Windows to really make this jump?
And don't even get me started on the different shells. Everyone likes to pretend that there is only Bash out there, but some distros still swear by the original Bourne. Or even CShell.
So, yes, there is a lot of noise.
I picked ubuntu ignoring the noise because it has a nice package system does everything I want, upgrades nicely. No trauma, I ignore the noise. It has the shell I want, and i can trivially change to another shell should I so desire.
So I stand corrected--there is a lot of noise. But I suggest not letting it bother you. Pick one, say ubuntu and go.
As an aside, I really like clojure. Their attitude towards concurrency and transactions (ie: they actually thought about it) is refreshing. Add to that great library support and good performance and I'm a pretty happy guy.
Nonetheless, you'd be able to answer most of them if you tried to make a few of your own knock-off programs in lisp. ;) To do that, you'd have to decide on a lisp, installing a few and trying them out, and then decide on a project -- hopefully, something small and manageable. Perhaps a visual "hello, world" program. Or a code-golf exercise. My personal "hello, world" for learning a new language is usually a basic 1D cellular automata.
Once you've written your hello world, you'll have answered many of your questions. Next, rewrite it! Is your code idiomatic? What are some common idioms, and why do they exist? Could you make it shorter?
Next, extend it. Can you use it from the web? What would it take? What about letting people customize your helloworld? etc etc. See what it feels like to develop in the new language, even though the entire "project" cycle could conceivably be done in a single day. (Disclaimer: not by me. It takes me, at least, two months of part-time hacking to feel affection for a language).
After that kind of a learning process -- which isn't terribly onerous; it's the sort of thing you end up doing with almost any interesting language -- you'll look back at these questions and laugh.
And, if you aren't willing to go through that sort of "learning lite", why bother asking the questions?
( If you're looking for enlightenment about the process of actually using Lisp, in book form, I recommend Practical Common Lisp, which is available as a free pdf ).
I'm a self taught(obsessed?) programmer, barely finished high school, quit collage the first month. And I just started with Arc Lisp. It feels so right and has improved my programming in other aspects. The good thing is that now I'm in nerdvana doing what I love for a small but cool company.
There are basically two main camps, Lisp-1 and Lisp-2 and consequently two divergent major families, Scheme and Common Lisp. From my recollection, the "Lisp Wars" started with hardware implementations, Symbolics vs. Lisp Machines, et al., see http://en.wikipedia.org/wiki/Symbolics.
My take is that the hardware implementations came at a time when CPU speeds and memory capacities where not up to the demands of integrated Lisp environments. By the time speed and memory were sufficient to host Lisp, the world of IT got preoccupied with x86 architecture and Windows. Neither of these being suitable (in 1980's) as a production Lisp hosting environment.
In the hands of an expert Lisper, any version of Lisp quickly becomes extremely productive. The issues of libraries (FFI) and compilation are addressed in different ways, it's like you have a choice! It's like asking a guitarist why there are so many brands of guitars? Why don't they all use ____ (insert your pref. brand).
To research further, I suggest looking-up "John McCarthy", "Guy Steele", "Richard Gabriel", "Symbolics", "Lisp Machine" on Wikipedia and Google.
This was said in 'The Next Lisp'
As for the Linux comparison, once you really know (i.e. can use command line, the shells, awk, grep, sed, etc) one Linux distro, you can work your way through the others and even AIX, the various BSDs, HPUX, Mac OS/X and Solaris.