ThoughtStorms Wiki

Quora Answer : InTheFuture, will jobs be based on programming (C++, Java, Python, etc.)?

Jul 18, 2018

Programming is basically "telling computers what to do".

The more computers there are, and the more they infest everyday life, the more work there will be in "telling computers what to do"

However, how we'll tell them can evolve a lot.

If, as Blake McBride says, AI will take over then "telling computers what to do" will become anything from being like a statistician to being like a school-teacher or an animal trainer to being like a football coach. You'll still be "programming" ie. telling the computer what you want it to do, noticing and correcting it when it gets the wrong end of the stick, but you'll be doing doing it through various different interfaces, in an various different styles of interaction.

C++, Java, Python will be around for 20 or 30 years at most, based on the lifetimes of other successful programming languages.

By then they'll be relegated to very legacy systems indeed.

What I think we're going to see that accelerates the deprecation of today's languages, is a growth in automatic analysis and resynthesis tools that will help us turn old programs in old languages into new programs in new languages. Think somewhere between automatic translation and refactoring tools.

Old languages with sloppy semantics will be hard, but newer languages with tighter semantics will actually get easier.

I think it's going to be common in 10 years to have teams of people grabbing humongous old Java programs and automatically translating old classes into newer languages. The tools will highlight the gotchas ... both through static analysis of the source-code, and through dynamic analysis of the running code.

Old codebases will be simulated in virtual machines to ensure that these replacement classes and modules work identically,

The newer languages will be higher level, with more formally precise semantics, with less dependency on the machine specifics. They'll be easier to reason about. Easier to transform.

To move to them, legacy code will be mined and turned into high-level state-machines. Or Prolog-like declarative collections of "business rules". Clumsily created UIs will be scraped and abstracted into a more generic format that can then be reused and manipulated.


The jobs doing this will require people who understand the old languages and how they worked. And, at the same time, understand the new languages and the higher level abstractions that they bring.

The next programming work, will be to be able to manipulate those higher-level representations of the aspects of the work. Of state-machines, business rules, user-interactions etc.

Eventually, automated learning, programming by doing etc. will feed that process too. We'll develop software the way we might bounce ideas for a new project off a human friend. But we'll still end up having to drill down and formalize things and move into high-level, abstract formal representations of what we want.

No Backlinks