Yesterday was more or less the opening of ISTE. These conference are sort of interesting in that they start gradually. Wednesday ISTE will end somewhat abruptly (if history is any guide) and people will flood out in mass. The start is slower as people have been arriving for days with preconference meetings and workshops and what not. There was a keynote last night. I missed it because of a meeting of my own that was a sort of must make. But during the afternoon I had a number of really interesting conversations. Conversations are, for me, the highlight of any good conference.
I had two conversations about programming languages and programming paradigms with two different groups of people. Interesting that such a thing can happen but I sort of was the catalyst for both. Most of us have been involved in computer science either in industry or education or both for a while. Some of us a long while. One thing this means is that we have learned multiple programming languages. That is just the nature of things. The common consensus is that for someone who understands the concepts of programming picking up new languages is rather easy. It’s just a matter of learning the new syntax.
Programming paradigms are a little harder. A number of us came to object oriented programming after having years (cough decades) of programming in other ways. For us this switch was harder. A couple of people agreed that it took the right project and some time to make it really snap into place – to become integrated into our thinking. To think in OOP rather than to translate into it. Of course most of our students don’t have to unlearn or relearn anything – they start with object oriented programming and design as the way to go.
The question this brings to mind is how do we prepare them for the next paradigm shift? We can prepare them for learning new languages by focusing on concepts and even demonstrating the concepts in multiple programming languages. In a sense that is the easy part. But we have no idea what the next paradigm will be. Will it be a big comeback of functional programming? Could be. Maybe it will be something completely different though. My current thinking is that maybe exposing them to functional languages like F#, Scheme or maybe even LISP would be a good idea. I’m not sure where it fits in our already over crowed curriculum though. Still students should know that there are going to be changes, changes they may not see coming right away, and they better be prepared to adjust their thinking.
What do you think?
I think that explicitly teaching the transition from procedural to object-oriented paradigms and mentioning some of the controversy around object-oriented programming (www.codinghorror.com/.../your-code-oop-or-poo.html) could be one approach.