It’s time to teach history of programming languages

One of the first concepts I show when teaching Model-driven engineering is the MDE equation (Models + Transformations = Software ) which obviously revisits the well-known Niklaus Wirth‘s equation: Algorithms + Data Structures = Programs.

I thought that by linking the two, it would be easier for the students to grasp the main aspects of MDE but I was wrong. Relating the two doesn’t work because it turns out none of my students ever heard about Wirth equation, nor about Wirth himself and most of them have no idea what Pascal is (happened already three times with both undergrad and master students).

Frankly, I’m puzzled. I’m not saying they should learn Pascal (though which language should be used to teach programming to first-year students is an interesting controversy) but I do believe that some context about the languages they learn is needed. Students should know the basics of the main programming paradigms (structured, object-oriented, functional,…) and get a basic feeling of the strengths of each one, their representative languages, the reasons that motivated their creation, etc. Given the quickly evolving language landscape, students must understand the relationships between the different languages and how they complement each other. Otherwise it won’t be obvious to them that the programming skills they learn can be applied to a variety of languages.

A quick search shows that “history of programming languages” is not a common course (we do have a lot of “history of computer science” courses but they tend to focus more on the hardware part). Hope you agree with me that this should be changed in a near future. You know, “those that don’t know programming history are condemned to repeat it”.

If you liked this post, you should subscribe to the blog feed or facebook page and follow my thoughts on twitter about software development or web design and social media . Check also my book on model-driven engineering .

Be sociable, share!

3 Responses to It’s time to teach history of programming languages

  1. Scott Finnie says:

    Interesting post Jordi. Your equation (“Models + Transformations = Software) resonates very strongly with me. I also agree that students should learn the different categories of language and how they relate. A colleague once drew a nice graph with 3 dimensions – data, control and processing – and plotted various languages according to their ethos. I found it very useful.

    However those are abstractions. They make sense – for me at least – because I’ve spent time (lots!) ‘down and dirty’, learning from doing. It was only through experiencing concrete exemplars that I came to understand and appreciate the higher level abstractions.

    There’s undoubtedly huge value in learning from one’s predecessors’ hard-won experience. The challenge is how to make it accessible. For me that’s always been about setting carefully-chosen problems, and then illustrating how some technique can solve it elegantly. Case in point: the first time I ever saw transitive closure on a graph written in prolog. I could barely believe the solution could be so simple!

  2. Rob Vens says:

    From my days at university when I studied physics, and discovered that philosophy of science and history of science were not prescribed courses, I am stunned. I was one of a few students who took these courses. How can you understand any profession if the philosophical consequences are not studied in tandem? How can you reap the benefits of its evolution when you are hardly aware of its history?

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Powered by WordPress
More in opinion, programming, teaching
Top 10 lies about MDE

Tool Vendors required to showcase better the power of their MDE tools

Two failed MDE startup stories