[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Libraries and repositories

On Fri, Dec 21, 2001 at 08:40:09AM -0800, Paul Graham wrote:
> That is a good point.  If something works on all platforms
> already no one is tempted to do a separate implementation.

For the most part.  The JVM can be considered platform in the same
way as Linux/x86, Solaris/SPARC or Win64/Itanium, and Perl doesn't
really run there yet.  Ditto for .NET.

Python on the other hand is mostly a standard by virtue of a single
implementation.  The difference is that CPython is the de facto
reference implementation, and other implementations exist to extend
Python in new directions, while maintaining conformance WRT CPython.

In both cases, interoperability is paramount, and easily achieved.

> Maybe there is just something about Lisp that encourages
> new versions though, because there are lots of Common Lisp
> and Scheme implementations for the same hardware.  

Each implementation stresses different goals, such as creating a
teaching environment, experimenting with the GC, or JIT.

With Perl, we have the same spirit of experimentation, except that
we hang all of those efforts off of the same tree.  The result is
that all of those varied contributions act as an amplifier for
Perl.  We have Acme::Bleach, Lingua::Romana::Perligata, Parse::RecDescent,
B::Fathom, Inline, GD, DBI, Devel::GraphVizProf and Symbol::Approx::Sub
all within the same environment, not within distinct implementations
of the same basic idea of a language. [*]

The disadvantage with Perl is that this tree is very difficult to
retarget to PalmOS or WristWatch Linux.  (Enter Parrot, serving as
the reference implementation for a new Perl, much like CPython and Python.)

> I think 
> there are just a certain number of people out there who want 
> to work on writing Lisp compilers, and they're each going to
> write their own no matter what you do...

True, but does that mean a new Lisp such as Arc must repeat the same 
mistakes.  Isn't it time for a Lisp to start making *new* mistakes?  :-)


*: For the Perl-impaired:
     Acme::Bleach - Turn your Perl programs into executable whitespace
     Lingua::Romana::Perligata - write Perl programs in Latin
     Parse::RecDescent - A recursive descent parser generator
     B::Fathom - report on the structural complexity of Perl code
     Inline - embed C, C++, .... code in your Perl program
     GD - interface to Tom Boutell's GD graphics library
     DBI - generic relational database interface 
     Devel::GraphVizProf - generate images of directed graphs based on the
  	execution of a perl program
     Symbol::Approx::Sub - call subs with fuzzy name matching