Book Review:
Book Description
The book is the textbook for the programming languages course at Brown University, which is taken primarily by third and fourth year undergraduates and beginning graduate (both MS and PhD) students. The book has been used at some other universities as a primary or secondary text.
This book is the fruit of a vision for teaching programming languages by integrating the "two cultures" that have evolved in its pedagogy. One culture is based on interpreters, while the other emphasizes a survey of languages. Each approach has significant advantages but also huge drawbacks. The interpreter method writes programs to learn concepts, and has its heart the fundamental belief that by teaching the computer to execute a concept we more thoroughly learn it ourselves.
While this reasoning is internally consistent, it fails to recognize that understanding definitions does not imply we understand consequences of those definitions. For instance, the difference between strict and lazy evaluation, or between static and dynamic scope, is only a few lines of interpreter code, but the consequences of these choices is enormous. The survey of languages school is better suited to understand these consequences.
Many more humans work by induction than by deduction, so a pedagogy that supports it is much more likely to succeed than one that suppresses it. The book currently reflects this design, though the survey parts are done better in lecture than in the book.
The book's goal is to not only teach students new material, but to also change the way they solve problems. This book shows students where languages come from, why they should regard languages as the ultimate form of abstraction, how to recognize such an evolving abstraction, and how to turn what they recognize into a language. The last section of the book, on domain-specific languages, is a growing step in this direction.
Intended Audience
This book assumes that students are comfortable reasoning informally about loop invariants, have modest mathematical maturity, and are familiar with the existence of the Halting Problem.
add to del.icio.us
Digg Freebookzone.com!
You may use anyone of the download options
Missing Link?, Report It and try these 4 + 1 alternates...

Similar Book titles in CS -> Compilers and Languages section: Semantics with Applications: A Formal Introduction Functional Programming and Parallel Graph Rewriting Programming in Martin-Lof's Type Theory Advanced Programming Language Design Programming from Specifications, Second Edition Programming Languages Implementing Functional Languages: A Tutorial Logic, Programming and Prolog, 2nd Edition Introduction to Programming Languages Dictionary of Programming Languages Syntax and Semantics of Programming Languages Advanced Programming Language Features for Executable Design Patterns -Better Patterns Through Reflection Data, Syntax and Semantics - An Introduction to Modelling Programming Languages Inductive Logic Programming - Techniques and Applications Lecture Notes on Semantics of Programming Languages Tree Automata Techniques and Applications Understanding Programming Languages
Similar Book titles in Other sections:
Section: Data Structures and Algorithms Concepts, Techniques, and Models of Computer Programming Patterns for Adaptive Programming (AP) Structure and Interpretation of Computer Programs - 2nd Edition Art of Programming Contest Algorithms and Data Structures in VLSI Design: OBDD - Foundations and Applications Show all..
Section: Multimedia & Game Development Programming The Nintendo Game Boy Advance: The Unofficial Guide
Section: CS -> Theory Tree Automata Techniques and Application Type Theory and Functional Programming Applicative Programming and Specification Global Optimization Algorithms - Theory and Application
Section: DB -> DB / 2 DB2 Application Development Guide Road Map to DB2 Programming IBM DB2 Building Applications for UNIX Environments
Section: DB -> Oracle High Performance Oracle Database Applications Special Edition Using Oracle Web Application Server 3 Oracle Programming with Visual Basic High Performance Oracle Database Automation: Creating Oracle Applications with SQL and PL/SQL Developing Client/Server Applications With Oracle Developer/2000 Show all..
Section: DB -> Others Database Programming with Perl Programming the Perl DBI Teach Yourself Database Programming with Visual C++ 6 in 21 Day
Section: DB -> SQL Embedded SQL Programming Guide
Section: DB -> SQL Server SQL Server 2005 Stored Procedure Programming in T-SQL & .NET
Section: Device Drivers Streams Programming Guide
Section: Logic Design and Architecture Application-Specific Integrated Circuits Solid State Relay and Application Circuits
Section: Microprocessor Assembly Language Programming Tools for the IA-64 Architecture IA-32 Intel Architecture Software Developer's Manual Volume 3: System Programming Guide Programming PIC Microcontroller in C (CC5X compiler) Programming PIC Microcontrollers in BASIC 8080A-8085 Assembly Language Programming Show all..
Section: Peripherals Programming guide and sample code for RTL8139 family Serial Port Programming Information ZIP SoundBlaster Programming Information v0.90
Section: Internet The XML Files : Using XML for Business-to-Business and Business-to-Consumer Applications Software Engineering for Internet Applications (Workbook)
Section: Advanced Java Application Development with VisualAge for Java Enterprise Principles of Object-Oriented Programming in Java Tricks of Java Programming Gurus Java Application Development for CICS Practical Artificial Intelligence Programming in Java Show all..
Section: Java Enterprise Edition Designing Enterprise Applications with J2EE J2EE Technology in Practice: Building Business Applications with the Java2 Platform Designing Enterprise Applications with the J2EE Platform Programming Jakarta Struts Tutorial For Building j2Ee Applications Using Jboss And Eclipse Show all..
Section: Java User Interface Programming User Interfaces with JFC Teach Yourself Internet Game Programming With Java in 21 Days
Section: Java Language Code Conventions for the Java Programming Language Essentials of the Java Programming Language, Part 1 Essentials of the Java Programming Language, Part 2 Peter Norton's Guide to Java Programming Teach Yourself Java 1.1 Programming in 24 Hours Show all..
Section: Java Micro Edition Using WebSphere Studio Device Developer to Build Embedded Java Applications
Section: Java Networking Web Programming with Java Developing Intranet Applications with Java Java Thin Client Programming
Section: Java Tools Java Programming Guide for OS/390 Building AS/400 Internet-Based Applications with Java Creating Java Applications using NetRexx Using VisualAge for Java Enterprise Version 2 to Develop CORBA & EJB Applications e-business Application Solutions Using Java: Volume I Show all..
Section: Mathematics Elementary Algebra with Applications, 3rd Edition Foundations of Combinatorics with Applications Mathematics Of The Discrete Fourier Transform (DFT) - With Audio Applications Programming for Engineers with Mathematica Introduction To Digital Filters - With Audio Applications Show all..
Section: Miscellaneous Michael Abrash's Graphics Programming Black Book Microsoft RPC Programming Guide Concurrent Programming in Erlang Machine Interpretation of Line Drawings Digraphs Theory, Algorithms and Applications Show all..
Section: Microsoft Certifications Programming Desktop Applications With MS Visual Basic6 MCSD training kit Distributed Applications with MS Visual Basic MCSD
Section: Microsoft C Sharp (C#) C# COM+ Programming C Sharp Network Programming C# - Your Visual Blueprint for building .Net applications Programming C# (2nd Edition) Mastering Windows 2000 Programming with Visual C++ Show all..
Section: Microsoft COM/DCOM/ActiveX/ATL ActiveX Programming Unleashed Activex Programming With Visual C++ 5 Programming Distributed Applications With COM And Microsoft Visual Basic 6.0 Teach Yourself Activex Programming in 21 Days Programming ADO Show all..
Section: Microsoft .(dot) net Applied Microsoft .Net Framework Programming Programming Microsoft.NET Building Dot Net Applications For Mobile Devices Web Programming with Visual J++ Application Architecture for .NET: Designing Applications and Services Show all..
Section: Office Development Programming Microsoft Visual Interdev 6 Programming Microsoft Office 2000 Web Components Programming Microsoft Outlook and Microsoft Exchange
Section: Microsoft Visual Basic Programming Microsoft Visual Basic 6 Web Programming with Visual Basic COM+ Programming with Visual Basic Programming VB .NET: A Guide for Experienced Programmers
Section: Microsoft Visual C++ Programming Visual C++, 5th Edition Teach Yourself Database Programming with VC++ 6 in 21 Days Programming Windows with MFC Building Internet Applications with Visual C++ Mastering Windows 2000 Programming with Visual C++ Show all..
Section: MS Web Technologies Web Applications Developers Guide Web Application Programming Microsoft Internet Explorer 5 Programming Active Server Pages Designing Secure Web Based Applications For Microsoft Windows 2000 Show all..
Section: Windows Development Programming the Microsoft Windows Driver Model, Second Edition Tricks of the Windows Game Programming Gurus (2nd Edition) Programming Windows CE Programming Server Side Applications For Microsoft Windows 2000 Programming Applications For Microsoft Windows Show all..
Section: Networking Programming Principles in Java: Architectures and Interfaces
Section: Other Engineering Chemical Process Safety: Fundamentals with Applications
Section: GNU/Linux OS Advanced Linux Programming Introduction to Socket Programming Teach Yourself Shell Programming in 24 Hours Effective AWK Programming Writing GNOME Applications Show all..
Section: Embedded and RTOS Programming Embedded Systems in C and C++
Section: Solaris OS Common Desktop Environment: Application Builder User's Guide Programming Interfaces Guide Streams Programming Guide Multithreaded Programming Guide
Section: OS Theory Programming the Be Operating System Spring Concepts, Internals Architecture and Programming HOPE: A Programming Model for Optimism The Art of Unix Programming
Section: Unix OS Nextstep Programming: Step One : Object-Oriented Applications/Book and Disk The Unix Programming Environment Volume 7A: XView Programming Manual
Section: Assembly Language Windows Assembly Language & Systems Programming: 16- And 32-Bit Low-Level Programming for the PC and Windows Introduction to RISC Assembly Language Programming Programming from the Ground Up The Art of Assembly Language Programming Win32 Programming for x86 Assembly Language Show all..
Section: C Language Introduction to C and C++ Programming C Programming Tutorial (K&R version 4) Writing Bug-Free C Code for Windows: A Programming Style That Automatically Detects Bugs in C Code Programming in C: A Tutorial C Programming Show all..
Section: COBOL Programming ZingCOBOL: A Beginner's Guide to Programming in COBOL COBOL Programming Course COBOL Programming Guide VisualAge COBOL for Windows Programming Guide COBOL Programming Standards Show all..
Section: C++ Language An Introduction to C++ and Object Oriented Programming An Introduction to C++ Programming C++ in Action: Industrial Strength Programming Techniques C++ Programming for Scientists C++ Programming HOW-TO Show all..
Section: Other Programming Ada 95: The Craft of Object-Oriented Programming Pascal Programming Principles of Programming Languages Programming Language Examples Alike Cookbook Prolog Programming: A First Course Show all..
Section: Perl Scripting Advanced Perl Programming Effective Perl Programming: Writing Better Programs With Perl Practical Perl Programming Programming Perl 5.0 CGI Web Pages for Microsoft Windows NT Programming Perl, 3rd Edition Show all..
Section: Ruby Programming Programming Ruby - The Pragmatic Programmer's Guide
Section: Scripting Practical Programming in Tcl and Tk The Scheme Programming Language, Second Edition Tclwise - Guide to the Tcl Programming Language The Scheme Programming Language, Third Edition GUI Programming with Python: QT Edition Show all..
Section: Smalltalk Smalltalk: An Introduction to Application Development Using VisualWorks Smalltalk/V Mac Tutorial and Programming Handbook Smalltalk-80: The Interactive Programming Environment Squeak: Object-Oriented Design with Multimedia Applications
Section: Redbooks Draft Building Composite Applications System i Application Modernization: Building a New Interface to Your Legacy Applications WebSphere Application Server V6 for OS/400: Getting Started Monitoring WebSphere Application Performance on z/OS Deployment Guide Series: IBM Tivoli Composite Application Manager Show all..
Section: Redbooks Developing and Porting C and C++ Applications on AIX ABCs of z/OS System Programming Volume 9 Application Development for CICS Web Services Java Stand-alone Applications on z/OS, Volume I Developing PHP Applications for IBM Data Servers Show all..
Section: IBM Technotes Changed Statistics Views in the Profiler of IBM Rational Application Developer V6.0.1 Best Practices for OnDemand Application Design and Configuration
Section: Redpapers Lotus Domino 7 Application Development Application Switching with Nortel Networks Layer 2-7 Gigabit Ethernet Switch Module for IBM BladeCenter Problem Avoidance for WebSphere Application Server for z/OS Controlling Application Memory Consumption IBM System i Tools Innovation Program: Resource Guide for Modernization and Integration Tools for System i Applications Show all..
Section: Redpapers Draft WebSphere Application Server V6.1: Technical Overview Large Scale Implementation for IBM Tivoli Composite Application Manager for WebSphere Composite Application Provisioning with Tvoli Provisioning Manager V3.1 Building Composite Applications in Lotus Expeditor V6.1 WebSphere Application Server V6.1: JMS Problem Determination Show all..
Section: Software Engineering How to Design Programs: An Introduction to Programming and Computing Programming from Specifications Reusable Software Components: Object-Oriented Embedded Systems Programming in C Supercomputers: Directions in Technology and Applications Reasoned Programming Show all..
Section: Web Programming Developing Web Applications with Cold Fusion Creating Applications with Mozilla Web Client Programming with Perl CGI Programming on the World Wide Web CGI Programming Unleashed Show all..
Section: XML, XSL & UML The XML Files: Using XML for B2B and B2C Applications Introduction to XML Programming XML Programming: Web Applications and Web Services With JSP and ASP
Similar Books from Amazon :
|

|