From: m05751@foxtrot.data.st.statoil.no (Bjorn Hell Larsen)
Subject: Perl's fremtid
Reply-To: bjla@statoil.no
Organization: Statoil, Norway
Date: Tue, 29 Sep 1992 07:18:07 GMT


En av tingene jeg har tenkt } si litt om p} Perl-kurset er
'Hvor g}r Perl?'.

Jeg vet ikke s} mye om hvor Perl g}r, s} jeg tenkte jeg skulle sjekke
med en som kanskje visste litt mer (:-)

Her er et brev jeg fikk i postkassa mi i dag:

> (Message inbox:92)
> To: bjla@statoil.no
> Subject: Re: Future of Perl
> Date: Mon, 28 Sep 92 09:42:46 -0700
> From: Larry Wall <lwall@netlabs.com>
> 
> : I'd be extremely pleased if you could give me any material on the
> : future evolution of Perl. You have given several indications on what
> : can be expected to be found in version 5.0 lately; I would really like
> : to hear a bit about your longer-term ideas/plans as well.
> 
> What I do beyond 5.0 is pretty nebulous, depending on what you count as
> part of 5.0.  For the most part I'm just hoping for stability.  In general,
> I'd like to make sure that Perl is usable in a multiprocessing environment,
> but a lot of the groundwork for that is happening as part of 5.0.  Likewise
> for objects--I'm laying down the groundwork for that in 5.0, but it remains
> to be seen how much I want to develop it after that.
> 
> My overriding concern is that I don't want to make Perl into just
> another C++, or just another Lisp, or whatever.  As they say, "If it
> ain't broke, don't fix it."  My intention is to make certain things
> *possible* in Perl without making them mandatory.  The trouble with
> something like C++ is that you pretty much have to know the whole
> language before you can use any of it usefully.  I don't want to fall
> into that tarpit.  I want people to continue liking Perl for the
> reasons they currently like it.  So while 5.0 will add references and
> objects, they'll look just like scalars most of the time.  I'm not
> going to break existing syntactic constructs in order to make it easier
> to do fancy things.  Hence 5.0 will support explicit referencing and
> dereferencing, but not implicit.
> 
> Perl (as a language) actually was pretty stable in the last year.  While
> 5.0 is partly about adding references and objects, it's mostly about
> scrapping a beast that grew helter skelter, and regularizing as much
> as can be regularized internally.
> 
> As for what IS intended for 5.0, here's part of the outline I talked
> from at BAYLISA:
> 
>     SYNTAX
> 	=> as synonym for ,  (examples from object editor)
> 
> 	Functions as unary or list operators (post parse semantics).
> 
> 	Subroutines as list operators.
> 
> 	all . + * etc. (maybe)  [APL, LISP reduce]
> 
>     RUNTIME
> 	Flattened interpreter.
> 	    Compare stack traces.
> 	    Compare inner loops.
> 		    run() { while ( op = (*op->op_ppaddr)() ) ; }
> 	    Show tree.  More optimization at node building time (constant
> 		folding, operator substitution, constant string hoisting.)
> 	    Threadability, schedulability.
> 
> 	Context stack.
> 	    Fewer longjmps.  (except in sort, sig handlers)
> 	    Avoids allocator.
> 
> 	Interpreted strings parsed at compile time instead of first use.
> 	    Transform to . and optimize to "all ."
> 
>     SEMANTICS
> 	Reference scalars.
> 	    No dangling references.  These AREN'T pointers.  Explicit
> 	    referencing and dereferencing.  Not intended to be
> 	    transparent.
> 
> 	Error propagation.  die if $@;
> 
> 	Return from eval.
> 
> 	Optional lexical scoping (probably) using "my" instead of "local".
> 
> 	Objects.
> 	    Object = Reference + Package
> 		(I don't much care what it's a reference to.)
> 	    Methods.  "method" instead of "sub".
> 	    Method invocation.
> 		$dog->give($bone);	# traditional
> 		give $dog $bone;	# indirect object syntax
> 	    Filehandles as objects.
> 
> 	Synthetic associative arrays.  Binding an associative array to a
> 	package that supplies fetch, store and iterator routines.
> 
> 	Access to ctype tables, or maybe extra \y widgies?
> 
>     INTERFACE
> 	Embeddability
> 	    Namespace protection (All globab variables * translated to PERL*
> 		via cpp.)
> 	    Multiple interpreters within a process.  (Per-interpreter struct
> 		of former global variables.)
> 	    Reentrancy
> 
> 	Dynamic linking (at least on Suns).  Perl as a shared library.
> 
> 	Existing bindings:
> 	    X Windows
> 	    Solbourne OI
> 	    CMIP
> 
> Hope this helps.
> 
> Larry
> 


Bj|rn
Newsgroups: no.unix