But all is not lost. These languages will be around for quite some time. Not forever though. And that's why I don't understand why businesses are ok to have to rewrite their code every 3 to 5 years if they're still in business. There are enough big companies out there that could make a universal method of programming. Notice that I said 'method' and not language. Everybody thinks that there'll eventually come about this great new language that will fix all our current problems and be so much better than anything before it. Well, it's very likely that there'll be great new languages in the future. I'm not debating that. What I'm saying is that this will not be the wave of the future.
Each 'technology' has its own language. By technology, I mean any topic or profession. For example, math has its own language that's been developed throughout the years. Just like spoken language, they morph and adapt to their environment. Some of these changes are smooth and some are abrubt, but they are usually for the better.
In contrast, programming languages have gone backwards to the dark ages. C++ tried to build on top of C, but it didn't leave behind what it thought were bad ideas. It took basically all of C. And I'm not sure what Java was trying to do. It was originally meant for embedded devices. Instead it became the virus of the programming community spreading bad code like nothing before it.
When something evolves, it leaves behind the things that aren't needed anymore. Almost all of the languages so far are static in their implementation. Even SmallTalk, the only adaptable language has been subverted. The current batch of languages cannot evolve. Sun has even went to court to tell the world that Java is a dead-end language. MS wanted to add features. I'm not a MS fan, but they wanted to add good features such as method references. Why people continue to use such a backwards language as Java boggles the mind, but does explain the success of MS. It's ironic that in this case, it was MS that was trying to make something better.
It's high time that the true language of programming was declared. It's called 'OPERATIONS'. Computers DO things. They execute orders. Most of the time, they respond to the user (that's you).
Why programming has adopted the language of mathematics wherever it could is backwards. If you're doing math, this is fine. But if you're working with more complex object than numbers, you should use something else. Even math has adopted a higher language when working with higher concepts. You don't see mathematicians write out the full limit equation when working with derivatives. No, they simply work with the higher concepts. If they want to go lower they can.
Programming should work in the same manner. If you're working with math equations, by all means, the language should look as closely to written math as possible. But when working with user interfaces and databases, other concepts should be used. The language should change to suit that need. And these should be able to co-exist such as engineering, layout and stress analysis all coexist to produce a product.
The wave of the future is where you use the appropriate language for the task at hand. I'm not talking about the backwards languages we are using today such as C++ and Java. I'm talking about specifying languages for whatever tool you are using. Databases have SQL. This is a prime example of things done correctly. I don't particularly like database or SQL, but it does its job well. And that's the main point. What was C++ or Java created for other than to subvert users of C? They are not general purpose because they only work with a very limited subset of languages. It can work with "C" and sometimes with assembler. Why did it stop there? The reason is because C++ and Java are static languages. The language itself and the object code it produces is static. If other languages do not conform, they can't be used.
The wave of the future is where you use a language, script or other concept appopriate for the task. And not just one language, but many. The specifics will be written in more and more concrete languages until you get down to machine language. But only if you are doing something very machine specific will you have to go down to that level. The higher languages will be like nothing we've seen. It doesn't even have to be text anymore. Whatever ideas you can use to convey the idea of 'operations', you will be able to implement those ideas.
Take for example a racing game. In the highest level, you would work with cars, parts, roads and other high level 3d details. You would write in a language that works well for this kind of environment. In another language, one level lower, you would have a language for physics (collision detection, speed, acceleration, gravity, etc..) and another language for converting this data onto your videa screen. This last language would work with yet another language specifically designed for taking user input.
Now you can have a programmer specialise in each area without having to deal with breaking code in another area. The concepts in the areas you are working with should be well defined, yet expandable as your project grows. This is the programming environment I am working on. And hopefully, other more brilliant people will build on top of these ideas (and not necessarily my environment).
Next time... I will almost certainly continue to talk to myself on this blog.