History of software engineering
I was recently reading about the history of programming languages and I found it fascinating. The ability to re-implement, adapt or obsolete an existing system with ease is one of the fundamental pillars upon which all modern societies are built upon. Empires rise and fall; but nothing stays still, not really. If anything changes, someone will make that change happen faster than that change would happen naturally… by hook or by crook.
And that’s how we ended up with SO many computer related things for programmers! Apparently there are more than 300 different types of programming languages out there! For this article I will attempt to mention only the most popular ones out there (that I can think of).
The beginning
Back in the 1960s you had Fortran and COBOL. In the 70s you had Pascal, C came out in 1978 and FORTRAN was still kicking around. In 1983 Ritchie created the “C with classes” which later on evolved into what we now know as C++. I have a friend who said that he took a course in college where they taught him Pascal, but then it turned out that all his classmates already knew C++ or even Assembly!
In 1989 Objective-C did not exist yet (although there were object oriented extensions to C called OOPC), Java didn’t come until 1995 and Javascript became popular only when Netscape introduced it in 1995 (it is used for making webpages interactive). Also, around 1994 Microsoft developed Visual Basic ( which became popular when it was bundled with Windows).
Here is a nice timeline of programming languages. Also in 1991 Python was born, in 1994 Perl appeared. I don’t think anyone knows the exact origin of Ruby but it came to life somewhere between 1993 and 2003 (if I remember correctly). Even LISP is over 60 years old!
But wait, there’s more. The big H in HTML stands for something too – Hypertext Markup Language. It is at least 13 years old! And what about SQL? It is even older than that, but has evolved so much throughout time that no one really cares when it all began anymore…
Programmable calculators go way back too – almost as far as mechanical ones. Some people even say that the first truly programmable calculators appeared in 18… No, I won’t spoil it for you. Go read it yourself!
Languages
So what’s next after all of this? Call me biased but I think there is nothing better than learning programming languages (even if they are somewhat related to each other). So many things happen behind the scenes while you use the computer; and the beauty of software engineering is that everything is an open book. You can look up any reference on Wikipedia or some other source and learn about how that “thing” works under-the-hood. You can then combine different pieces of knowledge into something new and exciting. And to me at least – that’s what makes computers so much fun!
Programming languages are like LEGO bricks. You can combine them into something that works or into something that doesn’t do anything, but looks cool. Even if you don’t know how to program – I’m sure you have seen games where people hack other people’s avatars, make them larger or smaller or give themselves infinite health points etc. And this is done by using specific programming languages!
Then there are all the websites out there. Facebook has its own language called Hack (it was developed specifically for Facebook). Twitter too has its own scripting language called… guess what? It is still named after birds! Mockingbird is a domain specific scripting language that only works with the Twitter API. Why would anyone do this? I mean, why would a company want to invent a whole new language for their social network? Well because it is faster and easier to develop things this way. People who know the language can write code much faster than those who don’t.
And the list goes on and on! There’s an IRC scripting language called WeeChatScript that controls your chat client. Google has something similar called XMPP which you may have heard of as well – it powers Google Talk (now all it needs is a name change). Wikipedia has extensions to control what kind of media should be displayed next and so much more! And let’s not forget about Java applets or Flash applications or ActiveX objects… The possibilities are endless.
Conclusion
It seems like I have gone off on a tangent here, but I believe that my point has been proven. If you are just starting out in programming – go for it! It can be hard at times and there are plenty of brick walls that will pop up along the way, but it is always worth it. If you want to get better at something then do it right? To me this means finding ways to make it work for you. Well if programming doesn’t do anything for you straight away – find another language community where people are more experienced. That’s what I did with p5 when my Javascript didn’t seem to cut it anymore, although one day when I actually sat down and tried again with Javascript – everything changed in an instant!So what is my point? I guess it is to never give up on something you have a passion for. In programming, just like everything else in life – if you really want to do something then you will find a way! And when others say that it’s impossible – well then it probably isn’t. And if they tell you that “this” can’t be done because of “that”, then there is probably a good reason behind it… Well maybe not always, but usually nowadays languages and technologies are evolving very quickly… So who knows where we will end up in 5 years from now!