This book is the text for 6.821 Programming Languages, an entry-level, singlesemester, graduate-level course at the Massachusetts Institute of Technology. The students that take our course know how to program and are mathematically inclined, but they typically have not had an introduction to programming language design or its mathematical foundations. We assume a reader with similar preparation, and we include an appendix that completely explains the mathematical metalanguage we use. Many of the exercises are taken directly from our problem sets and examination questions, and have been specifically designed to cause students to apply their newfound knowledge to practical (and sometimes impractical!) extensions to the foundational ideas taught in the course.
Our fundamental goal for Programming Languages is to use a simple and concise framework to teach key ideas in programming language design and implementation. We specifically eschewed an approach based on a tour of the great programming languages. Instead, we have adopted a family of syntactically simple pedagogical languages that systematically explore programming language concepts (see Appendix B). Contemporary concerns about safety and security have caused programmers to migrate to languages that embrace many of the key ideas that we explain. Where appropriate, we discuss how the ideas we introduce have been incorporated into contemporary programming languages that are in wide use.
Visual Studio Hacks : Tips & Tools for Turbocharging the IDE This hands-on guide is designed for developers who want to go far beyond the obvious features of Visual Studio--the most powerful, feature-rich Integrated Development Environment (IDE) on the market today. It takes the reader on a detailed tour through code editor hacks, all manners of customization, even external tools such as PowerToys. Full... MySQL: Building User Interfaces
MSQL: Building User Interfaces is written for developers who want to build GUI database applications using MySQL and GTK+. Mathew Stucky demonstrates how to begin, plan, build, and deploy custom applications that can be cross-compiled for either Linux or Microsoft Windows platforms.
Intended for developers who...
Building XML Web Services for the Microsoft .NET Platform
You can hardly pick up a technical magazine, developer conference brochure, or corporate IT strategy document without seeing a reference to Web services. So what is all the hype about? Simply put, Web services allow developers to create unrestricted applications—applications that span different operating systems,...
Learning the vi Editor (6th Edition) For many users, working in the Unix environment means using vi, a full-screen text editor available on most Unix systems. Even those who know vi often make use of only a small number of its features.
Learning the vi Editor is a complete guide to text editing with
vi. Topics new to the sixth...
Cryptography: A Very Short Introduction
We are surrounded by cryptography, from the ATM, where we withdraw cash, mobile phones, and the Internet, to workplace security systems that protect business secrets, and the civil and military codes that protect the skies above us.
In this fascinating introduction to how cryptography actually works, Fred Piper and Sean Murphy highlight...
Wiki: Web Collaboration Imagine you are surfing the Internet, and you stop at a site where
you could and would like to add or modify something. For instance,
you have a literary reference or link to add. Or you've noticed a typing
error. Perhaps you even have a lengthy article that you'd like to
display on a separate page. So, you just click on the...