"Lisp in Small Pieces" in Russian

( Parentheses ) – Elegant weapons for a more civilized ageThis book of the French Professor Christian Kenney about the interpreters of Lisp and Scheme is pretty well known in the English-speaking world. Even a couple of times I slipped on habré. But in the Russian-speaking community Scheme most often associated with "Structure and interpretation of computer programs" (aka SICP). This is a good tutorial for beginners, where as much as two chapters devoted to the implementation language used, however, it does not consider implementation is quite interesting and important for things like Lisp macros, continuations, dynamic calculations.

Once "Lisp in Small Pieces" fell into my hands, and a few dozen pages I realized that a diamond was wrong to disappear in obscurity. As well as the best method get more followers in a cult to popularize a foreign book is to translate it into the native language of the target audience, then that's what I'm doing instead of normal read. Finally, the translation, typesetting and proofreading was completed; the results of the efforts are presented to your attention.

Inside readers will find:
the
    the
  • more than 37,000 brackets!
  • the
  • analysis of the bones of the semantics of all structures Scheme, and his family;
  • the
  • including an analysis of his denotational semantics is a formal mathematical description of language in terms of the lambda calculus;
  • the
  • 11 interpreters and 2 compiler (to native code described in the same VM and assembler in C code);
  • the
  • explanation of recursion, closures and environments, continuations and the call stack of the implementation of the macros and myasikov and a little reflection and self-modifying code;
  • the
  • numerous digressions into the history of Lisp and the reasons for the decisions taken in the design of the language;
  • the
  • private CLOS-like object system author (and its implementation, of course);
  • the
  • from time to time the feeling: "Yes this is X of language Y";
  • the
  • list of references on the subject on 230 items.
overall, a great tutorial on the basics of implementing programming languages, which is familiar not only to fans of the brackets.

(tl;dr: PDF, EPUB, HTML)

For some reason (at least, I got a feeling) in a variety of articles for beginners on the subject of writing your own implementations often attention is paid to the "boring" things like parsing, consideration of toy languages, and the simplest optimizations is to focus on the main thing: "to Develop programming languages is a fun and creative business." This thought must be put into the heads of the interested person, confirming his hopes, and not to bore chore or break the dream of something like the famous check sheet. After all, if programming is interesting, programming languages — is of interest in the square! If the developer — God for their programs, developed by languages is... ugh! Of worldly Affairs can be taken care of later.

Scheme is known for the simplicity of implementation. Even more, this language is rightly bears the title of the most unportable programming language: more than a dozen popular (and mutually incompatible) implementations, more lap DIY various stages of readiness, and perhaps hundreds annually handed student interpreters. So if implementing the Scheme is really a Scheme, it is possible to completely concentrate on the development process language, instead of (prematurely) thinking about parsers, a suitable type system, garbage collector and other things. It teaches this tutorial, leaving low-level implementation details for those interested in, and what still must lie deeper.

In agreement with the author, the book is distributed under CC BY-ND 3.0. The source code for the book (LaTeX and ugly HTML), along with Assembly instructions are on Github. Out of the releases can be downloaded PDF and EPUB (options for screens the size of a matchbox). The browser can read a book here. The version on dead trees in the wishlist.
Unfortunately, I can't vouch for the quality of the EPUB version due to the lack of the required number of various devices for testing and General misery of hardware support EPUB. Probably everyone that doesn't have a real browser, the text will spread proposed in the set of fonts proignoriruesh along with half of CSS and all will look awful. Requests can stamp PDF key for specific screen sizes and resolution. (I'll be glad of the discussion in the comments on the most adequate format of electronic books for technical literature.)
Article based on information from habrahabr.ru

Комментарии

Популярные сообщения из этого блога

Monitoring PostgreSQL + php-fpm + nginx + disk using Zabbix

Templates ESKD and GOST 7.32 for Lyx 1.6.x

Customize your Google