Showing posts with label types. Show all posts
Showing posts with label types. Show all posts

Design Concepts in Programming Languages Review

Design Concepts in Programming Languages
Average Reviews:

(More customer reviews)
Are you looking to buy Design Concepts in Programming Languages? Here is the right place to find the great deals. we can offer discounts of up to 90% on Design Concepts in Programming Languages. Check out the link below:

>> Click Here to See Compare Prices and Get the Best Offers

Design Concepts in Programming Languages ReviewThe book is about various concepts encountered in various kinds of programming languages: denotational and operational (BOS/SOS) semantics, issues of state and control, type systems, modules, modeling effects and compilation.
Every concept is introduced by defining the semantics of a language that has this concept and exploring the design dimensions and issues of this concept and language.
Concepts are gradually accumulated, and by the time you reach the chapter on modules you've got a CBV language with records, mutable state, polymorphic algebraic data types, a System F type system with type inference and a hint of dependent types, abstract data types and first-class dynamically loadable modules.
The tools used for description are of course the good old denotational and operational semantics and typing judgements and derivation trees; but each element of those is clearly and succintly described in text; it happens to me all the time that I am reading a type reconstruction algorithm and wondering, "why does this rule have that restriction?" and it immediately turns out that in the next paragraph, the authors focus attention on why this rule has that restriction; just like if they were reading my thoughts.
That's why this book feels very comfortable to me: I am absolutely sure that I won't encounter a point where I am lost and buried under the notation; but there is also not a single boring moment.
I've been interested in functional programming and PL theory for 2-3 years already, and here's a brief list of the *new* things that I have learned, at least:
- What do SOS and BOS mean, and why one should care, and what properties a SOS might posess (confluence and normalization, for instance)
- How many features of languages can be defined in terms of simply desugaring, and how in some cases they can't
- How one might use monadic style in the semantics metalanguage to greatly simplify the semantic rules for monadic concepts like state, control and error handling (the authors mention the word "monad" only once, but they use return- and bind-like operators in their semantics)
- How powerful records are, and of what use are operators like "conceal"
- What use is subtyping outside of OOP
- How does one define CPS-style semantics and how such a style allows to add state, control and errors with minimal changes
- How small yet powerful an OOP language core can be
- How algebraic datatypes can be very useful even in a language without static typing
- How pattern matching can be desugared into CPS-style deconstructors
- How many caveats are there in defining typing rules, and how a small change in them can lead to very big changes in language expressiveness
- How HM type inference actually works
- Why purity is important for certain polymorphism issues
- What let-polymorphism means
- What effect systems are
- How effect reconstruction works and how it is different from type reconstruction in nature
- How effect inference can prove the external purity of certain internally impure programs
That's where I finished my reading for now. The remaining looks even more intriguing; for example, I don't (yet) know how functional languages are compiled and how register allocation is done.
I'm afraid to sound like a salesman, but this is absolutely the best-written technical book I have ever seen in my life, and probably the most influential one for me, excluding maybe SICP.Design Concepts in Programming Languages OverviewKey ideas in programming language design and implementation explainedusing a simple and concise framework; a comprehensive introduction suitable for useas a textbook or a reference for researchers.

Want to learn more information about Design Concepts in Programming Languages?

>> Click Here to See All Customer Reviews & Ratings Now
Read More...

Types and Programming Languages Review

Types and Programming Languages
Average Reviews:

(More customer reviews)
Are you looking to buy Types and Programming Languages? Here is the right place to find the great deals. we can offer discounts of up to 90% on Types and Programming Languages. Check out the link below:

>> Click Here to See Compare Prices and Get the Best Offers

Types and Programming Languages ReviewThis text is perhaps the most accessible yet thorough introduction to type systems I've encountered.
On the one hand, it offers excellent grounding: practical motivation is provided, numerous examples illustrate the concepts, and implementations are provided which can be used to typecheck and evaluate these examples. At various points, extended demonstrations of the type systems under consideration are given (e.g. showing how objects may be encoded). The exercises are well constructed and in many cases, accompanied with answers and detailed explanations in the appendix.
On the other hand, it offers an excellent exposition of the material: Pierce provides a lucid account of the static and dynamic semantics (primarily small-step operational) for various lambda calculi. He proceeds in a stepwise fashion via the gradual accretion of features: from first order (simply typed) systems to higher order systems incorporating bounded subtyping and recursion. He also gives attention to the metatheory of these systems (focusing on proofs of progress and preservation, and for systems with subtyping, of decideability). Internally, the text is well organized, with clear dependencies among the chapters, and the bibliography is extensive.
It should be noted that, while reasonably comprehensive, the text is necessarily limited in scope. For example, aside from the discussion on Featherweight Java, systems other than typed lambda calculus variants are not considered. In my opinion, the focus on these (in some sense "low-level") calculi makes foundational issues more apparent, and the linear progression from simple to complex variants lends a pleasant cohesiveness that would have been lost in a more general survey. However, as object/class encodings were discussed at various points, it would have been nice to see a more integrated presentation, in the spirit of the paper Comparing Object Encodings [BCP97].Types and Programming Languages OverviewA type system is a syntactic method for automatically checking theabsence of certain erroneous behaviors by classifying program phrases according tothe kinds of values they compute. The study of type systems--and of programminglanguages from a type-theoretic perspective -- -has important applications insoftware engineering, language design, high-performance compilers, and security.Thistext provides a comprehensive introduction both to type systems in computer scienceand to the basic theory of programming languages. The approach is pragmatic andoperational; each new concept is motivated by programming examples and the moretheoretical sections are driven by the needs of implementations. Each chapter isaccompanied by numerous exercises and solutions, as well as a runningimplementation, available via the Web. Dependencies between chapters are explicitlyidentified, allowing readers to choose a variety of paths through the material.Thecore topics include the untyped lambda-calculus, simple type systems, typereconstruction, universal and existential polymorphism, subtyping, boundedquantification, recursive types, kinds, and type operators. Extended case studiesdevelop a variety of approaches to modeling the features of object-orientedlanguages.

Want to learn more information about Types and Programming Languages?

>> Click Here to See All Customer Reviews & Ratings Now
Read More...