SPUG: Publicizing Damian's Talks
Tim Maher/CONSULTIX
tim at consultix-inc.com
Sat Jun 3 15:21:03 CDT 2000
Fellow SPUGsters,
I'm looking for some help in publicizing the July talks of
Damian Conway that will take place in Seattle and Kirkland.
Specifically, I'd like to send flyers to folks from
Perl-using companies for posting on company Bulletin
Boards.
Any of you who use Perl in your companies and would be
willing to find a few thumbtacks and help by posting
notices please respond with your US Mail address, and an
indication of how many copies of each announcement you'd
need (for multiple Bulletin Boards, etc.).
And if you also have electronic Bulletin Boards that you
can post announcements on, please post the announcements
attached to this message there.
Thanks!
==========================================================
| Tim Maher, Ph.D. Tel/Fax: (206)781-UNIX |
| SPUG Founder & Leader Email: spug at halcyon.com |
| Seattle Perl Users Group HTTP: www.halcyon.com/spug |
==========================================================
-------------- next part --------------
Seattle Perl Users Group (SPUG) Meetings, July 2000
Sponsored by SPUG and NeoInformatics, www.neoinformatics.com
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
MULTIMETHODS: Polymorphism Gone Mad
Dr. Damian Conway, Monash University, Australia
SPUG Meeting, Union Bank of California., 5th and Madison, Seattle
July 5, 6:45pm
Abstract
<RIGHT_LOBE>
A world gone crazy, as method calls throw off their shackles and
start telling objects "Who ya gonna call?" Plus the secret shame
of subroutine overloading. In Perl!
</RIGHT_LOBE>
<LEFT_LOBE>
A sober and serious talk discussing the technique of multiple
dispatch of object methods, and its implementation in Perl. Ad
hoc approaches will be described and dismissed, and use of the
Class::Multimethods module advocated and explained. The implications
of the multimethod construct as a mechanism for signature-based
subroutine overloading will also be pondered.
</LEFT_LOBE>
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
Quantum Superpositions and the First Virtue
Dr. Damian Conway, Monash University, Australia
E-SPUG Meeting, Lucent Technologies, Redmond WA
July 6, 7:00pm
Abstract
Take two quantized disjunctive/conjunctive equiprobable scalar
datastructures, add a dash of multidimensional polymorphism, a
handful of redefined operators, and a pinch of breadth-first optree
evaluation. Simmer gently in the Principle of Least Effort. Decant
into a grandiosely named module. Now serve vector operations (prime
generation, list membership, list extrema, etc.) without loops
or recursion.
(Tim asked me if it's meant to be a parody lecture. I know it looks
that way, but actually it's just like my Coy paper at last year's
TPC: serious science and useful Perl techniques smuggled into
unsuspecting brains hidden behind a dazzlingly stupid idea - Damian)
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Damian Conway Professional Seminars, presented by Consultix (7/6,7/7)
Dr. Damian Conway of Monash University, Australia, will be presenting
two one-day seminars from July 6-7 in the Seattle area entitled
"ADVANCED OBJECT ORIENTED PERL" and "BEYOND REGEXES: TEXT PARSING
with PERL MODULES".
Unlike Dr. Conway's brief SPUG talks, these are full-day training
seminars that teach programming professionals how to accomplish
important tasks using Perl. These seminars are being arranged by
Consultix, whose web site (www.consultix-inc.com) provides further
details.
-------------- next part --------------
ADVANCED OBJECT-ORIENTED PERL
Dr. Damian Conway
July 6, 2000, Kirkland, WA USA
Presented by:
Consultix, www.consultix-inc.com
SPEAKER:
Dr. Damian Conway
School of Computer Science and Software Engineering,
Monash University, Clayton, 3168 AUSTRALIA
TARGET AUDIENCE:
Perl programmers who have either completed Tom Christiansen's
introductory object-oriented Perl tutorial, read and absorbed
Chapters 1 through 3 of "Object Oriented Perl", taken the
Consultix "Intermediate Perl Programming" class, or who
have otherwise acquired a basic familiarity with simple OO Perl.
WHAT ATTENDEES WILL LEARN:
This tutorial will show you how to build on the basic
object-oriented Perl techniques you already know and unlock
more of the power of Perl's OO capabilities.
Attendees will learn:
* how to use pseudo-hashes and the standard fields.pm
and base.pm modules,
* how (and when) to bless arrays and scalars,
* three different ways to implement data hiding for
Perl objects (including the Tie::SecureHash module),
* how Perl implements inheritance and polymorphism
(and how you can change the rules of either),
* how to simulate scalars, arrays, hashes, and typeglobs
using ties,
* the features (and traps) of operator overloading in Perl,
* two easy ways to build complete classes
(semi-)automatically,
* how to do design-by-contract programming in OO Perl
(using the Class::Contract module),
* two ways to do generic programming in Perl,
* how to use the Class::Classless module to build OO
programs without classes,
* how to use multiple dispatch (polymorphism on steroids)
to implement event-driven class hierarchies for simulation
and GUI applications.
SEMINAR OUTLINE:
* Review of Perl OO basics
- packages, references, blessing
- the three rules
- Example: a dog-tag class
* Non-hash-based objects
- arrays as objects
- scalars as objects
- Examples: hash re-iterators; OO bitstrings
* Pseudo-hashes
- what they are, how to use them as objects
- the fields.pm module
- compile-time type checking
* Automating class construction
- Class::Struct
- Other class construction modules
- Example: A CD library
* Inheritance
- revision of concepts
- how they work in Perl
- @ISA, isa(), can(), SUPER
- Example: a restricted transceiver class
* Polymorphism
- When and how to use it
- Variations on the theme
- Example: OO lexical analysis
- Examples: a safer transceiver class
* Encapsulation
- the pros and cons of data hiding
- encapsulation via closures
- encapsulation via scalars
- encapsulation via the Tie::SecureHash module
- Example: the dog-tag class thrice revisited
* Inheritance revisited
- tricks with inherited constructors and destructors
- abstract methods
- attribute collisions
- inheritance and pseudohashes: the base.pm module
* Ties
- simulating implementing scalars and hashes
- scalar examples (a bounded scalar; proxies)
- hash example (a multi-iterable hash)
* Operator overloading
- overview and limitations of mechanism
- overloading operations, conversions, and constants
- problems with references
- Example: Klingon arithmetic
* Grafting other OO models onto Perl
- classless programming with Class::Classless
- design-by-contract with Class::Contract
- Examples: Classless network control; Contractual threading
* Generic programming
- Why you don't need it in Perl
- How to do it anyway
- Examples: generic lists; generic trees
* Multiple dispatch
- when regular polymorphism isn't enough
- cascaded polymorphism
- table driven dispatch
- Class::Multimethods
- Example: GUI event-loop programming
SPEAKER BIOGRAPHY:
Damian Conway holds a Ph.D. in Computer Science and
is a Senior Lecturer in Computer Science and Software
Engineering at Monash University, Melbourne, Australia.
He is the author of numerous well-known modules including:
Parse::RecDescent, Text::Balanced, Lingua::EN::Inflect,
Class::Multimethods, and Coy (all available from your
local CPAN mirror).
Damian was the winner of both the 1998 and 1999 Larry
Wall Awards for Practical Utility. He is a member of
the technical committee for The Perl Conference 4.0, the
convener of the annual Perl haiku contest, a columnist
for The Perl Journal, and author of the book "Object
Oriented Perl".
-------------- next part --------------
BEYOND REGEXES: Text Parsing with Perl Modules
Dr. Damian Conway
July 7, 2000, Kirkland, WA USA
Presented by:
Consultix, www.consultix-inc.com
SPEAKER:
Dr. Damian Conway
School of Computer Science and Software Engineering,
Monash University, Clayton, 3168 AUSTRALIA
TARGET AUDIENCE:
Perl programmers who are familiar with simple
regular expressions and the use of modules. The
techniques presented will be useful to anyone
who needs to process structured text of any kind.
WHAT ATTENDEES WILL LEARN:
This seminar will show you how to use a range of
standard Perl features and several CPAN modules (in
particular, Parse::RecDescent) to decipher and process
a variety of complex data and command formats. It's
a practical introduction to the techniques of
grammar-based recursive-descent parsing.
You will learn:
* how to design and build parsers to process
Apache configuration files and log data,
* how to process structured expressions
(e.g. search engine queries),
* how to balance nested brackets and match
delimiters without a regular expression,
* how to fold, spindle and mutilate the
comments in a C program,
* how to dissect C++ type declarations
with a self-adapting parser,
* how to allow embedded Perl code in your
own data format or command language,
* how to convert natural language queries
into SQL,
* how to design and build self-modifying
parsers to process Apache configuration
files and log data,
* how to pull pesky unmatched <P> tags from
HTML,
* how to deal with ambiguous data by parsing
it in multiple universes simultaneously,
* how to get Parse::RecDescent to write most
of your grammar for you,
* how to parse modular text (e.g. source
with #includes in it),
* how to pre-filter your source code by tricking
Perl into (nearly) parsing Perl,
* how to debug Parse::RecDescent parsers
efficiently and how to improve the efficiency of
your Parse::RecDescent grammars
There'll even be some useful stuff, like how to write a
program that does stand-up comedy.
You'll also discover the psychedelic secrets of Randal's
beatnik poetry generator, and learn how to earn thousands in
your spare time by generating scholarly articles for modern
Philosophy journals.
SEMINAR OUTLINE:
* A brief history of parsing
- grammars, rules, recursive descent, etc.
* Implementing parsers
- top-down vs bottom-up approaches
* Useful tools
- Text::Balanced, Parse::Yapp, perl-byacc,
Parse::RecDescent
* Simple parsing
- Parsing delimited text, parsing Perl subsets
* Parsing data
- Parsing Apache log files
- optional subrules, list parsing
- run-time parser generation
* Parsing input
- The Text::Query modules
- OO parsing
- operator precedence, lists, look-ahead,
rejections, etc.
* Parsing code
- parsing C and C++
- stateful grammars
- porting yacc grammars (including left-recursion)
- self-extending parsers, committing rules,
deferred actions
- grammar precompilation
* Parsing natural language
- generating SQL queries for natural language input
- synthetic stand-up via reciprocal parsers
* Miscellaneous advanced features of Text::Balanced
- precompiling delimiter extractions
- extracting tagged text
- extracting Perl variables
- extracting mixed components
* Miscellaneous extra features of Parse::RecDescent
- Named items (the %item array)
- Debugging grammars: <trace>, <warn>, <hint>, and
<nocheck>
- Context information: $thisline, $lastoffset,
@itempos, etc.
- Extreme prejudice: the <fail> directive
* Non-deterministic parsing
- tracking "goodness-of-match"
- the <score> and <autoscore> directives
* Pre-tokenization
- the <token> directive
- token-based parsing
* Automatic grammar generation
- autoactions
- autostubbing
- autotrees
- the <perl_quotelike>, <perl_codeblock>, and
<perl_variable> directives
* Generic rules
- the <matchrule> directive
- subrule arguments: @arg and %arg
* Handling distributed text
- processing file inclusions recursively
- processing file inclusions by input modification
- other uses of input modification
* Semi-grammatical parsing
- when Parse::RecDescent is overkill and regexes
don't appeal
- CSV revisited, text interpolation, simple command
interfaces
* Self-modification
- Run-time parser generation and self-extending parsers
revisited
- A self-modifying Apache config/log file parser
* (Nearly) parsing Perl
- parsing with Text::Balanced on Occam's Razor
- source code filtering
* Metagrammars
- building a grammar for parsing grammars
- beat poetry and postmodern literature
SPEAKER BIOGRAPHY:
Damian Conway holds a Ph.D. in Computer Science
and is a Senior Lecturer in Computer Science
and Software Engineering at Monash University,
Melbourne, Australia.
He is the author of numerous well-known modules
including: Parse::RecDescent, Text::Balanced,
Lingua::EN::Inflect, Class::Multimethods, and Coy
(all available from your local CPAN mirror).
Damian was the winner of both the 1998 and 1999
Larry Wall Awards for Practical Utility. He is
a member of the technical committee for The Perl
Conference 4.0, the convener of the annual Perl
haiku contest, a columnist for The Perl Journal,
and author of the book "Object Oriented Perl".
More information about the spug-list
mailing list