A definitive list of innovations in Perl

Massoud Sarrafi <[email protected]> Mon, 14 Nov 2005 09:41:03 -0800
Newsgroups gmane.science.opensource.community
Message-ID <[email protected]>
Hello all,

We are currently engaged in an academic research project focusing on
innovation* in Perl**. An important part of this research is a
three-round Delphi survey in which we ask members of the Perl
community to identify and rate a list of candidate innovations.  We
have recently completed the first round of the Delphi survey and our
initial panel of thirty Perl experts (which is composed of users,
developers, and language theorists) has identified the following
thirty-four candidates for the definitive list of innovations in Perl:

1-Original concept of inverting the UNIX pipeline of commands into a
single program; concept of bringing all the commands under one roof.
2-Perl-extended regular expressions, internal regexp engine
optimizations, user visible regex engine extensions.
3-Eval buffers as first-class buffers, like files.
4-Stashes, which show up as sigil-prefixed variable names.
5-Adding OO to a language without using an OO language to describe the concepts.
6-The PerlMonks website.
7-The Perl Mongers social groups.
8-The Perl Foundation.
9-The YAPC conferences.
10-The concept of CPAN: automated and readily available modular programming.
11-CPAN: various modules (please nominate a few if you can).
12-Specific Module: cgi.pm .
13-Perl as glue between an enormous range of disparate software systems.
14-Tagged values to indicate the level of integrity of the values.
Data dependency tracking with the concept of "tainted data" in setuid
execution mode.
15-Runtime inheritance of classes through the @ISA array.
16-The tie() mechanism.
17-Incorporation of dynamic data structures into command scripting
languages, including list and dictionary data structures in particular.
18-The "there's more than one way to do it" philosophy of language design.
19-Modern replacement for "little" languages: awk and sed.
20-Ultimately flexible programming.
21-The notion of "scalar vs. array context" within which variables are
evaluated.
22-The duality between classes and modules.
23-Allowing any data element to be "blessed" into a class whereas most
object oriented languages have a single structure for classes.
24-Improved parameter handling in Perl 5.
25-First language to push the ideal of "no arbitrary limits".
26-Hashes as a first class primitive, Hashing algorithm introduced in 5.8.2 .
27-Optimized for expressiveness, Perl poetry.
28-Introducing to procedural language programmers concepts from
functional languages such as anonymous subroutine generation,
closures, and higher order functions.
29-Automatic memory management of complex structures.
30-Auto-vivification of container structures.
31-Associative arrays as a language primitive (not present in C or C++).
32-Duck model of OO. (no strict compiler based hierarchy).
33-Larry Wall's implementation choice of algorithms that use more
memory to save CPU work.
34-AUTOLOAD

This list will be refined through subsequent rounds of the Delphi
survey. If you would like to be added to the survey panel, or if you
think the list is incomplete, you can contact me at msarrafi at nospam
sfu.ca.


Regards,
Massoud Sarrafi
Simon Fraser University
Vancouver, Canada

* We use the following definition of innovation: Innovation is the
sequence of activities by which a new element is introduced into a
social unit, with the intention of benefiting the unit, some part of
it, or the wider society. The element need not to be entirely novel or
unfamiliar to members of the unit, but it must involve some
discernable change or challenge of the status quo. - Michael A. West;
James L. Farr, 1990"

** We are limiting our study to Perl up to including version 5 but not 6.