Friday, September 2, 2011

Programming the Future

Before I delve into this topic, just a quick indication that I have no authority as a High School teenager, and I'm sure some of the ideas I'll present would have clear flaws or mistakes that I'm unaware of in my early years of programming.

Lets look a little bit into the history of programming. The very first high level programming language invented was FORTRAN, in 1954. This programming language included 32 statements, which one would say are the basics, or the 'axioms' of programming nowadays. Since then programming has of course developed and new programming languages have been formed. However are we really in a position to say that programming has evolved at the speed that we anticipated?

I mean, compare software development over the past years to something like, say, CPU speed, which to this day doubles every two years, following a trend known as Moore's Law. In the past decades we developed from vacuum tubes to silicon transistors, and are nearing quantum transistors using technology such as the Quantum Point Contact to detect qubits (it's of course all still a theory, but a very probable theory).

However, switching over, software development, one may argue, has developed from punch-cards to single-line coding to methods to frameworks. But we are still using the same damn old command line and text documents to code! Sure there are visual ways of programming, such as the Google App Inventor, or LEGO Mindstorms NXT, but behind the scenes they are all representations of text coding, only simplified for the user.

And of course what one considers the best program is the one that is completely documented (almost obsessively, to a point where the documentation is ten-fold the size of the program itself). Why is this? Is understanding programming universally so difficult? In mathematics we give a problem, and the solution is entirely understandable except for small sections here and there which can be substituted with a written explanation. Programming however requires for every line to be explained, every method described and every class reasoned. Sounds like a bit too much!

Our views of programming in the next 25 years has dimmed remarkably. Anders Hejlsberg in "The Future of Programming Languages" reminisces on his early 80's when he joins Turbo Pascal, and his optimistic vision of the future of programming which included such luxurious thoughts of using voice-recognition to write code. This fantasy quickly dissipates into reality when he takes the current usage of programming and projects it into the future, saying that over the next few years programming will begin to merge together. Wait what? You mean there still isn't one universal way of programming? Everybody understands x + y = z, but in programming not every compiler would understand x + y = z.

Why have the programmers stopped dreaming? Why has programming come to a complete standstill? Why does the 'hello world' application look the same as it did almost forty years ago? Maybe we're not thinking hard enough. Software engineering sure teaches programming and how to write code, but it also teaches us how to think logically, how to write down every step, and how not to deviate from what works.

Maybe a solution can be found at the very core of programming: The axioms. Maybe by changing the way programs function, we can improve the speed and efficiency of programs. Stay tuned for a further exploration of this topic =)

No comments:

Post a Comment