[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