From: "M. Edward (Ed) Borasky" Date: 2007-06-10T04:03:27+09:00 Subject: Re: "RESTful Web Services" Giles Bowkett wrote: >> That is indeed cool. I remember when Jack Herrington's book on code >> generation came out in 2003, also using Ruby for its examples -- >> definitely a nice way to raise Ruby awareness and demonstrate the >> language's strengths. > > Can I just say that this is an absurdly under-rated book? Admittedly I > skipped a lot of its parts, especially the Java stuff, which I think > he only threw in because he had to, but it very much turned my brain > sideways. My new theory, based on this book, is that Unix is Lisp with > a compilation phase. Think about it - how many times have you written > shell scripts to generate new shell scripts, or to generate new lists > of shell commands? How many shell commands do you invoke with a list > of files? Unix is all code generation and lists. It's Lisp in a > different form. > > Anyway, long story short, "Code Generation in Action," awesome. > Hmmm ... well ... I came to Unix fairly late in its evolution, having spent most of the previous time as an assembly language and FORTRAN programmer and having used a range of operating systems dating back to such primitive beasts as the IBM 7090 without disks to "modern" systems like Xerox CP-V and VAX/VMS. My first encounters with Unix were, coming from VAX/VMS, quite unpleasant. The editors didn't make sense, the whole notion of shell scripting rather than command files didn't seem useful, etc. I essentially used FORTRAN as a scripting language. What changed that was that the company I was working for, Floating Point Systems, merged with another company, Celerity Computing, that was making a Unix (4.3 BSD) product. Instantly I had colleagues who knew all this fancy Unix stuff, could write C code as well as I could write FORTRAN, etc. It was sink or swim so I learned to swim. But I don't think Unix is as much about code generation and lists as it is, at least initially, about text processing. The whole philosophy at the time, before GUIs, etc., was that developers spent a lot of time dealing with text files, whether they be code, numeric data, documents or something else, so Unix should make that easy to automate. IIRC spell checking was built into the very first versions of Unix, for example. And I think the core idea of the Unix user interface is not Lisp, lambda calculus, and AI so much as it is the notion of regular expressions and the compiler-compiler. Again IIRC, lex and yacc were also built into the first versions of Unix. I guess I should get the book. ;)