Mailing-List: contact mjd-book-help@plover.com; run by ezmlm Delivered-To: mailing list mjd-book@plover.com Received: (qmail 465 invoked by uid 119); 27 Mar 2000 23:19:45 -0000 Date: 27 Mar 2000 23:19:45 -0000 Message-ID: <20000327231945.464.qmail@plover.com> To: mjd-book@plover.com From: mjd@plover.com Subject: Contract for `Perl Advanced Techniques Handbook' finally signed! Hi, folks. You're getting this message because you subscribed to my mailing list for announcements concerning my book. it is not a discussion list, and I've kept the list address a secret so that nobody will send mail to the list by accident. If you want to unsubscribe, send an empty message to mjd-book-unsubscribe@plover.com. here is my first announcement: I finally signed the contract with Morgan Kaufmann! My advance check will be arriving next month. I can finally get started in earnest. Woo-hoo! Let's just hope I don't procrastinate on the writing part as much as I did on the contract signing part. The contract says I have to deliver the manuscript in October. If I do that, the book should be out in early 2001. If I'm late, it should still be out by mid-2001. One thing I negotiated in the contract was that I'm allowed to post the entire book text on my web site once it's finished. So people everywhere will be able to read it even if they can't afford to buy a copy. I'll probably also be posting drafts and sample chapters before that. More announcements to come. I'll get some detailed material about the book up on my web site when I get a chance. In the meantime, here's the preliminary table of contents, to whet your appetite. ---------------------------------------------------------------- Perl Advanced Techniques Handbook I. Introduction II. Recursion A. Examples: Factorial, Hanoi B. More real examples C. The tail-recursion optimization D. goto &foo trick E. Pitfalls: Fibonacci. Partition. F. Converting recursion to iteration III. Dispatch tables IV. Caching, Memoization and Lazy Computation A. Overview B. Recursive Functions C. Automatic Memoization D. Some Other Applications of Memoization 1. Persistent Cache 2. Profiling Execution Speed 3. `Orcish Maneuver' 4. Dynamic Programming E. When Memoizing Doesn't Work V. Iterators A. Concept, introduction, and motivation 1. When the list would be too big 2. When we are searching for only a few instances of something 3. When items in the list must be allotted to different parts 4. When it takes a long time to construct list elements B. Perl built-in examples 1. Filehandle 2. Dirhandle 3. each() 4. glob() 5. m//g C. ID generator D. Genome Generator E. Permutation Generator F. Numerical computations G. Database query H. More generic iterators: for (->start(); ->ready(); ->next()) ... VI. Streams and infinite lists A. Promises B. Nonmemoizing streams C. Memoizing streams D. Streams with get-commit-rollback methods E. Dataflow techniques VII. Higher-order functions: Merging, filtering and reducing A. Perl built-in examples: grep, map B. builtin.pm: reduce etc. C. Tricks of the Wizards example: reduce D. Prime number example E. Eight queens problem F. Generate-and-test strategies G. Search trees 1. BFS (Breadth-first search) 2. DFS (Depth-first search) 3. DFS with iterative deepening 4. $alpha-beta$ searching? H. Game tree searching VIII. Higher-order functions: Composition A. Perl builtin examples? (push; each is like a `zipper') B. Tricks of the Wizards example: combine C. Stream appends, mingles, and merges D. Hamming problem E. Composition of complex database queries from simple ones F. Overloaded operators G. Query system `a la SICP IX. Functional parsing A. Parsing generally B. Token streams C. Idea of a parser as a function that transforms tokens into values D. Composing simple parsers into complicated parsers 1. Concatenation 2. Alternation 3. Filtering 4. Example E. m//gc as a token stream iterator-generator X. Object-oriented programming A. Closures as objects B. Iterators C. Perl data encapsulation problem and solution D. Object demonstration E. Abstraction F. Typed numbers a la SICP G. Type hierarchies XI. Building our own object-oriented programming system A. Private methods B. Inherited data C. Classless OOP system D. Different multiple-inheritance semantics XII. Constraint systems XIII. Control flow A. Coroutines B. Callbacks C. Continuations ---------------------------------------------------------------- Chapter 2 is almost finished. Chapters 3 and 4 are in progress. Earlier contenders for the title were `Really Advanced Programming in Perl' (to distinguish it from the mediocre O'Reilly book `Advanced Perl Programming') and `Functional Programming in Perl' (which I always knew was a sure loser.) I like the current title, `Perl Advanced Techniques Handbook' pretty well, but it might still change. Suggestions would be welcome. Please feel free to advertise this list to other people. To subscribe, send an empty note to mjd-book-subscribe@plover.com. Thank you all for your interest.