Programming Language
Concepts and Implementations


I have to thank my professor, Edward Yang who introduced me to the area of Programming Language, a lot. This is a complicated field in CS that gives you another view out of the current structure of the commonly-used object oriented structures. It turns out that now more and more new features in most programming languages are accomodating functional programming in them. I can’t say exactly that it’s useful, but it will definitely provide you another way to look at problems and, of course, new ways of problem solving.

When you design a programming language, what should you focus on? Syntax? Convenience? Well if you want a word, that is concept1. From my perspective, concepts are heavily mathematical. However, to select detailed concepts from these abstract mathematical concepts and implement them is hard, and it’s the core of programming languages.

Ideas in this introduction will be simple but may take long enough to absorb. I want to go on with the following concepts.

First class functions, pattern matching, types, monads, continuations, laziness.

Maybe more, but we’ll see. The languages I will use are Haskell and Javascript. If you haven’t installed them yet, and if you want to try by yourself, please install them. Haskell can be installed through Haskell Platform and for JS we are using Node. Also, I have to assume that you have some knowledge on Javascript because I am not going to teach the language itself. Let’s begin.



  1. A good programming language is a conceptual universe for thinking about programming.
    – Alan Perlis