Future of software
The thought occurred to me while I was writing some code not to long ago. What will software be like in 50 years time?
It’s anyone’s guess.
Will we still be using some of the computer languages that are popular today? If that is the case (or there are similar derivatives to today’s languages) then how will people view view them? For example, will they be viewed as much lower level languages such as assembly language, with newer, higher level languages taking precedence?
With that in mind what will these newer, higher, high level languages be like? Will writing a program be as easy as writing a story in plain English? Will compilers have some sort of advanced neural software embedded that allows it to see what people meant in these new languages? And if so will this mean that syntax errors and non-descriptive error messages are a thing of the past?
Think about the implications of just about anyone, who can type and speak a natural language such as English, being able to write a program to do exactly what they wanted, with minimal effort and zero frustration. Will most programmers in industry be out of a job? Granted people will always need to understand lower level languages in order to construct higher level ones, but in a computer architecture class of the future, will people be learning C++ or Java type languages (on PCs considered God-like by today’s standards) instead of assembly and venting frustration at the hands of a compiler?
I know it may seem impossible to some that one day we might all be writing essays instead of programs, after all, natural language is very ambiguous. Words in natural languages can have many meanings and the meaning of a whole sentence can change drastically on realising the person’s intent (sarcasm et cetera). But people seem to get past this barrier as it were, and understand each other (most of the time at least). So why not a “smart” computer. And who says we must type in plain old text for our programs too? In the end the instructions are just bits and bytes, why not create a fancy, flexible markup language like:
<game Code>
…
<define>
<dead> When HP equals zero </dead>
<flash> display for one second </flash>
</define>
<object>
<player><hp =”200″/><attackpts =”50″/>…</player>
</object>
<condition> The player is dead </condition>
<action> Flash the screen red </action>
…
</game Code>
I know this is technically plain text, but imagine a browser for this language that could display it, kind of like a web browser for HTML and all of the logic will look rather fancy, rather like syntax high-lighting only on steriods.
Again, why stop with that, why not draw pictures or record your own voice and have that parsed by a compiler, which would attempt to make sense of the data and build a working program? Obviously, some sort of notation will need to be invented, but imagine the implications of it.
Writing programs over the phone or on your mobile, just using your voice (this would probably sound embarrassing if it were code-like, but it doesn’t have to be, if could very well be hard to distinguish from a random conversation)!
Drawing your objects with attributes inside them and linking related objects together with lines, colouring the different types and so on, and then scan in the image and compile it into a working program!


