所需积分/C币:50 2018-09-05 15:04:24 2.79MB PDF
收藏 收藏

Essentials.of.Programming.Languages.3rd.Edition 带书签 英文版 文字版
Essentials of Languages third edition Daniel p friedman Mitchell Wand The mit press Cambridge, massachusetts London, England C 2008 Daniel P. Friedman and Mitchell Wand All rights reserved. No part of this book may be reproduced in any form by any electronic or mechanical means (including photocopying, recording, or information storage and retrieval)without permission in writing from the publisher MIT Press books may be purchased at special quantity discounts for business or sales promotional use. For information, please email special_sales@mitpress mit edu or write to Special Sales Department, The MIT Press, 55 Hayward Street, Cambridge, MA02142 This book was set in LTEX2E by the authors, and was printed and bound in the United States of America Library of Congress Cataloging-in-Publication Data Friedman, Daniel Essentials of programming languages/Daniel P. Friedman, Mitchell Wand 3rd ed P cm Includes bibliographical references and index ISBN978-0-262-06279-4(hbk: alk. paper) 1. Programming Languages(Electronic computers. I. Wand Mitchell. II. Title QA767F732008 0051—dc22 2007039723 10987654321 Contents Foreword by Hal abelson Preface Acknowledgments 1 Inductive Sets of data i11 1.1 Recursively Specified Data 1.2 Deriving Recursive Programs 12 1.3 Auxiliary procedures and Context Arguments 22 1.4 Exercises 25 2 Data abstraction 31 2.1 Specifying Data via Interfaces 31 2.2 Representation Strategies for Data Types 2.3 Interfaces for Recursive Data Types 42 2.4 A Tool for Defining Recursive Data Types 45 2.5 Abstract Syntax and Its Representation 51 3 Expressions 57 3.1 Specification and Implementation Strategy 57 3. 2 LET: A Simple Language 3.3 PROC: A Language with procedures 74 3.4 LETREC: A Language with recursive procedures 3.5 Scoping and Binding of Variables 87 3.6 Eliminating Variable Names 91 3.7 Implementing Lexical Addressing 3 01 Contents 4 State 4.1 Computational Effects 103 4. 2 EXPLICIT-REFS: A Language with Explicit References 4.3 IMPLICIT-REFS: A Language with Implicit References 113 4.4 MUTABLE-PAIRS: A Language with Mutable Pairs 124 4.5 Parameter-Passing variations 130 5 Continuation-Passing Interpreters 139 5.1 A Continuation-Passing Interpreter 141 5.2 A Trampolined Interpret 155 5.3 An Imperative Interpreter 5.4 Exceptions 171 5.5 Threads 179 6 Continuation-Passing Style 193 6.1 Writing Programs in Continuation-Passing Style 193 6.2 Tail F 203 6.3 Converting to Continuation-Passing Style 212 6.4 Modeling Computational Effects 226 pes 233 7. 1 Values and Their Types 235 7.2 Assigning a Type to an Expression 238 7.3 CHECKED: A Type-Checked Language 240 7.4 INFERRED: A Language with Type Inference 248 8 Modules 275 8. 1 The Simple Module System 276 8.2 Modules That Declare Types 292 8.3 Module procedures 311 9 Objects and Classes 325 9.1 Object-Oriented Programming 326 9.2 Inheritance 329 9.3 The language 334 9. 4 The Interpreter 336 9.5 A Typed language 352 9.6 The Type Checker 358 Contents A For Further reading 373 b The sllgen Parsing system 379 B. 1 Scanning 379 B2 Parsing 382 B 3 Scanners and Parsers in SLLGEN 383 Bibliography 393 Index 401 Foreword This book brings you face-to-face with the most fundamental idea in com- puter programming The interpreter for a computer language is just another program It sounds obvious, doesn t it? But the implications are profound. If you are a computational theorist, the interpreter idea recalls godels discovery of the limitations of formal logical systems, Turings concept of a universal computer, and von Neumanns basic notion of the stored-program machine If you are a programmer, mastering the idea of an interpreter is a source of great power. It provokes a real shift in mindset, a basic change in the way you think about programming i did a lot of programming before i learned about interpreters and i pro- duced some substantial programs. One of them, for example, was a large data-entry and information-retrieval system written in PL/I When I imple mented my system, I viewed PL/I as a fixed collection of rules established by some unapproachable group of language designers. i saw my Job as not to modify these rules or even to understand them deeply but rather to pick through the (very) large manual, selecting this or that feature to use. The notion that there was some underlying structure to the way the language was organized, and that I might want to override some of the language design ers' decisions, never occurred to me. i didn ' t know how to create embedded sublanguages to help organize my implementation, so the entire program seemed like a large, complex mosaic, where each piece had to be carefully shaped and fitted into place, rather than a cluster of languages where the pieces could be flexibly combined. If you don' t understand interpreters,you can still write programs; you can even be a competent programmer. But you cant be a master

试读 127P Essentials.of.Programming.Languages.3rd.Edition
立即下载 低至0.43元/次 身份认证VIP会员低至7折

    关注 私信 TA的资源

    Essentials.of.Programming.Languages.3rd.Edition 50积分/C币 立即下载


    50积分/C币 立即下载 >