top of page

Déjà vu!

Today, I experienced déjà vu about déjà vu. How cool is that?

I was going through Dani Krossing’s ( introductory PHP programming tutorial today, and was thinking back to similar experiences with other programming languages - in particular, C.

My feelings of déjà vu about programming reminded me ( that déjà vu is a glitch resulting from a change made in the Matrix. I’ve always found that bit amusing, and that’s when I remembered the classic Monty Python sketch, “It’s The Mind” ( Michael Palin is absolutely brilliant!

But back to PHP. I find Dani is an excellent presenter – his videos are generally short, well-organized, well-presented, and focus on bite-sized chunks of content which are extremely valuable to a beginner. I’m finding them very useful, and walk through the examples with him, even when I am familiar with the material or the concept. That said, I frequently pause the video to try out other things, or add a few other items to the tutorial, which helps me understand the material a bit more thoroughly.

As I go through these videos, though, I feel the pull of tradition. The compulsion. The need to write a “Hello, World!” program ( in PHP. I obviously created a basic “Hello, World!” when I set up my development environment (, but I feel the need for something more...

But, what?

And then I thought about the basic programming structures I was re-learning (It really IS like riding a bicycle, in some ways), and decided to build a loop through a bunch of different translations of “Hello, World!”.

When I think of programming languages, it is interesting to compare them with human languages, but when I search for “computer linguistics”, all the links seem to relate to computational linguistics ( This field studies the use of computers for modelling human languages, which ties into artificial intelligence, speech recognition, and similar things. Fascinating, but not what I was thinking about.

Searching for “evolution of programming languages” gave me a bit more of what I was looking for. Browsing through some of the breakdowns, it becomes clear that many of those studying this topic are using different definitions. This is, of course, a very difficult problem to address, as data can be very difficult to come by, and any subjective measure will be inherently problematic.

Should we estimate lines of code? Even if we had access to all code available, how much of it is actually used? How frequently?

How about number of programmers? Many programmers have “worked with” multiple languages, but what is their real level of expertise? And how do you assess it?

And what about upgrades and migrations? If a program was originally written in C, then updated to C++, then updated to C#, how would you count it? And does it even matter?

All interesting questions, but I find it more interesting to consider these languages in the context of their purpose and evolution, and how they are related to one another. There are a number of rabbit-holes here... Should “markup languages” such as XML (“Extensible Markup Language” or HTML (“Hypertext Markup Language” be considered? What about “query languages” such as SQL (“Structured Query Language”

And the biggest rabbit-hole of all is around formal definitions of computer languages, and concepts like “Turing completeness” (, topics on which people spend whole careers.

In my own modest ruminations, I wonder about so-called “general purpose” programming languages (, and find it interesting that many of them are derived from (or similar to) C. Some are directly derived from C (eg, C++ and C#), while others were influenced by C simply because it was so successful and so widely used. It’s also interesting to consider the relationships between humans, human languages, computers, and computer languages.

Either way, I consider myself fortunate to have learned C so many years ago. In the context of modern computer languages, I feel as if I have studied Latin and am now trying to learn a Romance language – the basics are all there, so it’s mainly a case of understanding the particular expressions.

Of course, that’s the easy part. The challenge will be learn the different “styles” of programming used by newer languages – in particular, I am familiar with the concepts of object-oriented programming, but have not done any “real” development work in that area. I’ll be trying hard to “think” object-oriented whenever possible, but will probably backslide from time to time. Learning is the whole point, though, so I hope to get a lot of value either way.

Short post today – most of my time was taken up with PHP tutorials.



bottom of page