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.