Chapter 15

Conclusion

Well, what do you know about that! These forty years now, I’ve been speaking in prose without knowing it!

— Monsieur Jourdain in Moliére’s The Bourgeois Gentleman (new verse adaptation by Timothy Mooney)

A programming language is for thinking about programs, not for expressing programs you’ve already thought of. It should be a pencil, not a pen.

—Paul Graham

Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary.

— Sperber et al. (2010)

WE have come to the end of our journey through the study of programming languages. Programming languages are the conduits through which we describe, affect, and experience computation. We set out in this course of study to establish an understanding of programming language concepts. We did this in five important ways:

  1. We explored the methods of both defining the syntax of programming languages and implementing the syntactic part of a language (Chapters 24).

  2. We learned functional programming, which is different from the imperative and object-oriented programming with which readers may have been more familiar (Chapters 56 and 8).

  3. We studied type systems (Chapter 7) and data abstraction techniques (Chapter 9).

  4. We built interpreters for languages to operationalize language semantics for a variety of concepts (Chapters 1012).

  5. We encountered and experienced these concepts through other styles of programming, particularly programming with continuations (Chapter 13) and logic/declarative programming (Chapter 14) and discovered that despite differences in semantics all languages support a set of core concepts.

This process has taught us how to use, compare, and build programming languages. It has also made us better programmers and well-rounded computer scientists.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.143.255.36