I’ve been thinking about a parallel programming language textbook for a while now. Not for parallel programming but I’m not sure how to phrase it. What? OK let me explain. One of the popular Bible study tools is a parallel Bible where several translations are printed side by side with each other. That way someone can easily compare how different interpretation teams have looked at the same Bible verses. What I have been thinking about for some time is a textbook of sorts that covers multiple programming languages in a similar parallel fashion. Each concept would show side by side examples in multiple languages. This way students would see different implementations – different syntax – for the same concepts. In theory (completely untested so far) this would build both a greater understanding of the concepts and make it easier for students to transition from one programming language to another.
From there is gets complicated. What languages and how many languages? Handling C++, C# and Visual Basic seems like a logical easy combination since all three languages are built into the Visual Studio IDE. Is there enough of a difference in early stages between C++ and C# though? Certainly in some areas like class creation and OOP concepts. Should Java be included realizing that a second IDE would be required? How about something like Small Basic which is largely a subset of Visual Basic?
How about completely different paradigms? F# will be in the next version of Visual Studio so would permit the easy (ok relatively speaking) inclusion of a functional programming language. That might over complicate the book though. I need input on that one. Is it worth trying? Similarly how about a graphic beginners language like Scratch or Alice? Some concepts would not translate at all but some of the early ones would fit in nicely.
How about some historic languages like FORTRAN (still often used in scientific programming) or COBOL (still used for many legacy applications with believe it or not some new development still taking place)? Not sure about the development environments for those though.
Help me brainstorm on this a bit please. Are you interested in seeing something like this? What would it include to make it useful?