5th State of the Onion. Larry Wall

Similar documents
PERL 6 and PARROT An Overview. Presentation for NYSA The New York System Administrators Association

1. Introduction. 2. Scalar Data

Building a Multi-Language Interpreter Engine

Perl Scripting. Students Will Learn. Course Description. Duration: 4 Days. Price: $2295

CSE 413 Languages & Implementation. Hal Perkins Winter 2019 Structs, Implementing Languages (credits: Dan Grossman, CSE 341)

Pathologically Eclectic Rubbish Lister

Design Issues. Subroutines and Control Abstraction. Subroutines and Control Abstraction. CSC 4101: Programming Languages 1. Textbook, Chapter 8

Course Outline. Advanced Perl Programming. Course Description: Pre-requisites: Course Content: Tel: +44 (0) Fax: +44 (0)

Perl in The Enterprise. Dave Cross Magnum Solutions Ltd

Beginning Perl. Third Edition. Apress. JAMES LEE with SIMON COZENS

Index. object lifetimes, and ownership, use after change by an alias errors, use after drop errors, BTreeMap, 309

C++ for System Developers with Design Pattern

Hands-On Perl Scripting and CGI Programming

Abram Hindle Kitchener Waterloo Perl Monger October 19, 2006

CS 360 Programming Languages Interpreters

Why are there so many programming languages? Why do we have programming languages? What is a language for? What makes a language successful?

COP4020 Programming Languages. Compilers and Interpreters Robert van Engelen & Chris Lacher

CSCI-GA Scripting Languages

Perl (5 Days Content)

Language Translation. Compilation vs. interpretation. Compilation diagram. Step 1: compile. Step 2: run. compiler. Compiled program. program.

CP150 - Advanced Perl Programming

(Refer Slide Time: 4:00)

Now applying :unique to lexical variables and to subroutines will result in a compilation error.

CS Introduction to Data Structures How to Parse Arithmetic Expressions

By default, optional warnings are disabled, so any legacy code that doesn't attempt to control the warnings will work unchanged.

Overview of the Ruby Language. By Ron Haley

Compiler Structure. Lexical. Scanning/ Screening. Analysis. Syntax. Parsing. Analysis. Semantic. Context Analysis. Analysis.

CS 105 Perl: Perl subroutines and Disciplined Perl

use attributes (); # optional, to get subroutine declarations = attributes::get(\&foo);

CSCI-GA Scripting Languages

UNIT I Programming Language Syntax and semantics. Kainjan Sanghavi

Compiling and Interpreting Programming. Overview of Compilers and Interpreters

CSCI 4152/6509 Natural Language Processing. Perl Tutorial CSCI 4152/6509. CSCI 4152/6509, Perl Tutorial 1

IT441. Network Services Administration. Data Structures: Arrays

Outline. Java Models for variables Types and type checking, type safety Interpretation vs. compilation. Reasoning about code. CSCI 2600 Spring

Languages and Compilers

News in RSA-RTE 10.2 updated for sprint Mattias Mohlin, May 2018

Recap: Functions as first-class values

Using References to Create Complex Structures. The array and hash composers

Perl Tutorial. Diana Inkpen. School of Information Technology and Engineering University of Ottawa. CSI 5180, Fall 2004


code://rubinius/technical

Closures. Mooly Sagiv. Michael Clarkson, Cornell CS 3110 Data Structures and Functional Programming

package YourModule; require = = qw(munge frobnicate); # symbols to export on request

CS 105 Perl: Completing the Toolbox

AD104 - LotusScript Tips and Tricks. Wai-ki Yip, Development Manager/Senior Developer Raphael Savir, Senior IT Specialist

PERL Scripting - Course Contents

Chapter 2. Operating-System Structures

Scripting Languages Perl Basics. Course: Hebrew University

1. Lexical Analysis Phase

Subroutines. Subroutines. The Basics. aka: user-defined functions, methods, procdures, sub-procedures, etc etc etc.

Properties of Criteria. 1. Applicability Property. Criteria

Modularity and Reusability I. Functions and code reuse

Remote Procedure Call (RPC) and Transparency

Haskell in the corporate environment. Jeff Polakow October 17, 2008

Compilers. Prerequisites

Java Internals. Frank Yellin Tim Lindholm JavaSoft

Chapter 2: Operating-System Structures

CSE 374 Programming Concepts & Tools. Hal Perkins Spring 2010

Chapter 2 Operating-System Structures

PRINCIPLES OF COMPILER DESIGN UNIT I INTRODUCTION TO COMPILERS


Early computers (1940s) cost millions of dollars and were programmed in machine language. less error-prone method needed

autodie - Replace functions with ones that succeed or die with lexical scope # Recommended: implies 'use autodie qw(:default)'

Programming in Visual Basic with Microsoft Visual Studio 2010

Absolute C++ Walter Savitch

CS 105 Perl: Modules and Objects

IT441. Subroutines. (a.k.a., Functions, Methods, etc.) DRAFT. Network Services Administration

Chapter 1 INTRODUCTION SYS-ED/ COMPUTER EDUCATION TECHNIQUES, INC.

QUIZ. Write the following for the class Bar: Default constructor Constructor Copy-constructor Overloaded assignment oper. Is a destructor needed?

Client Code - the code that uses the classes under discussion. Coupling - code in one module depends on code in another module

CompuScholar, Inc. Alignment to Nevada "Computer Science" Course Standards

Chapter 2: Operating-System Structures

VARIABLES AND TYPES CITS1001

Chapter 1 Getting Started

1007 Imperative Programming Part II

Compilers and Code Optimization EDOARDO FUSELLA

Introduce C# as Object Oriented programming language. Explain, tokens,

PROGRAMMING IN VISUAL BASIC WITH MICROSOFT VISUAL STUDIO Course: 10550A; Duration: 5 Days; Instructor-led

Introduction to Programming (Java) 2/12

CSCI-GA Scripting Languages

Compiling Regular Expressions COMP360

A control expression must evaluate to a value that can be interpreted as true or false.

Java Fundamentals p. 1 The Origins of Java p. 2 How Java Relates to C and C++ p. 3 How Java Relates to C# p. 4 Java's Contribution to the Internet p.

The Perl Debugger. Avoiding Bugs with Warnings and Strict. Daniel Allen. Abstract

NAME SYNOPSIS DESCRIPTION. Behavior of other Perl features in forked pseudo-processes. Perl version documentation - perlfork

PRINCIPLES OF COMPILER DESIGN UNIT I INTRODUCTION TO COMPILING

We do not teach programming

Whidbey Enhancements to C# Jeff Vaughan MSBuild Team July 21, 2004

Lexical Analysis. Dragon Book Chapter 3 Formal Languages Regular Expressions Finite Automata Theory Lexical Analysis using Automata

EECS1710. Checklist from last lecture (Sept 9, 2014) " get an EECS account (if you don t have it already) " read sections

Reliable C++ development - session 1: From C to C++ (and some C++ features)

What are some common categories of system calls? What are common ways of structuring an OS? What are the principles behind OS design and

CS11 Java. Fall Lecture 1

Learning Perl 6. brian d foy, Version 0.6, Nordic Perl Workshop 2007

SMURF Language Reference Manual Serial MUsic Represented as Functions

COMS 3101 Programming Languages: Perl. Lecture 2

$pat = '(?{ $foo = 1 })'; use re 'eval'; /foo${pat}bar/; # won't fail (when not under -T # switch)

Programmiersprachen (Programming Languages)

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture

Transcription:

5th State of the Onion Larry Wall

Talk 1 An Overview of Perl Perl 5 Perl 6

Talk 2 Bits and Pieces 33 lightning talks in half an hour See Apocalypse 2 Expected apocalyptic error rate: 5%

Talk 3 Unary and Binary Operators Doing the Right Think Precedence level reform? User-defined operators (including Unicode) $foo->bar becomes $foo.bar $foo. $bar becomes $foo ~ $bar Scalar operators will work on array values

Talk 4 Statements and Declarations Switch statement--see Damian given $foo { when 1: { argle; } when a : { bargle; } } local renamed to temp Optional type and property declarations

Talk 5 Pattern Matching Assignment to variables Assignment to elements of arrays or hashes Set operations on character classes /[[a-z]&&[^aeiou]]/ /x modifier on by default? Matching on pseudo-strings

Talk 6 Subroutines Complete type signatures Discarding sub keyword on closures Self-identifying parameters sort { $^a cmp $^b } @array Pre-handlers and post-handlers--see Damian

Talk 7 Formats Kicked out of the core See Damian

Talk 8 References Pseudo-hashes must die Deref always assumed by [], {}, and () Perl 5 Perl 6 $foo->[$bar] $foo[$bar] $foo[$bar] @foo[$bar] Whitespace before hash subscript $foo.{$bar}

Talk 9 Data Structures Opaque objects Compact multidimensional arrays Slicing specified within the subscript Pairs, composed with => Ranges, composed with.. Superpositions? See Damian

Talk 10 Packages Split up into classes and modules Within class or module, subpackages Generalized autoloading

Talk 11 Modules Extended module names: version and author Interface modules Module searching Better metadata for automation Default import to lexical scope? Wildcard modules?

Talk 12 Objects Easy declaration, accessible metadata Attributes declared as variables Attributes accessed as methods externally Foreign objects handled gracefully Optional multimethods Class.bless($ref) or $obj.bless($ref)

Talk 13 Overloading Can t live with it, can t shoot it. cout << foo << bar << bletch; Overloaded operator specified in method name Overloading of methods as well as operators Implementation via vtables Overloading hooks in printf for bignums, etc.

Talk 14 Tied Variables Variable type, not value type!!! Naturally scoped to variable lifetime Needs to be declared for efficiency

Talk 15 Unicode Compassion Polymorphic strings Abstract and concrete internal routines Normalization normally at the filehandle Type system must remember normalization Do the Hard Thing even if it s Right

Talk 16 Interprocess Communication No pain installation of new protocols Easy mapping of high-level structured data from the network onto Perl s data structures Reliable low-level primitives, safe signals IPv6, coming to a circus near you

Talk 17 Threads Basic model is I-threads Variables may be shared by declaration P-threads just means share everything Modules should be thread safe by default Module thread safety should be in metadata With or without threads, we can do better at event-based programming

Talk 18 Compiling A parser of our own Mutability Portability of eval to VMs Scoped mutations, syntactic delegation One-pass lexical analysis Immediate subroutines

Talk 19 The Command-Line Interface 1 RFC, proposing -r switch The life of a glue language--compete by cooperating with the environment

Talk 20 The Perl Debugger Happy to delegate this to others Heavy dependency on the debugging facilities of the platform (without code rewriting) IDEs have their own ideas

Talk 21 Internals and Externals More delegation--see Dan s talk on Thursday Very modular A software CPU Regexen compile to normal opcodes Garbage collection Vtables Internal abstract APIs

Talk 22 CPAN Too big to download ISPs don t install enough of it Bundles only a partial solution Renewed interest in SDKs Public rating system?

Talk 23 Security Tainting via new property mechanism Sandboxing via I-threads Controlling easy-to-abuse syntax Eternal vigilance on buffer overruns, etc.

Talk 24 Common Practices Eliminating (some) Common Goofs foreach $i (1.. 1_000_000_000) { } @big = 1.. 1_000_000_000; RFC 183: =for testing - Embedded tests

Talk 25 Portable Perl Full URI support Full Unicode support, including dwimmery Easy identification of non-portable code Module metadata could indicate portability

Talk 26 Plain Old Documentation Fixing =begin/=end for commenting Multiple POD streams DATA filehandle just another POD stream Autodocs from module metadata (not necessarily POD) Big idea: equivalent of use for POD

Talk 27 Perl Culture Mostly self-correcting at this point Do your part Newbie friendliness Licensing cleanup Testing, testing, testing

Talk 28 Special Names Balance cleanup with convenience $_ stays $( goes $() now means to interpolate an expression No more bareword filehandles Merge error status variables?

Talk 29 Functions Dealing with long return lists Array ops like merge, unmerge, part, flatten, reduce Logical return values from index, rindex, system, wait, waitpid Call a method a method Get rid of select

Talk 30 The Standard Perl Library Definitions of Standard become mushy Cut core down to almost nothing, and force installation of a more complete SDK Multiple such SDKs are possible, just as with Linux distributions SDK editors earn trust by recommending reliable sets of modules

Talk 31 Pragmatic Modules More capacity to warp syntax and semantics But be careful with those semantics!!! Real optimization options

Talk 32 Standard Modules This may be a very small chapter in the next edition of the Camel. Theoretically, we need just the CPAN module, and its dependencies Practically...

Talk 33 Diagnostic Messages I18n and L10n Exceptional exception handling Typed exception objects Unthrown exceptions: false but interesting $handle = open nonesuch or die;

5th State of the Onion Larry Wall