New software languages are desperately needed

Mazdak Afshar says it is time to modernise the industry that has done so much modernising of other sectors

Computer software has brought automation, increased efficiency, reliability and standardisation to nearly every major industry in the world – except one.

This industry relies on highly skilled craftspeople to custom-make every new product. Apprentices are brought in to do the repetitive and monotonous tasks, while the experienced masters concentrate on high-value contributions. There is little industry-wide standardisation, deadlines are routinely missed, and going over budget is standard practice.

Am I describing some medieval cottage industry? No, the industry which remains largely untouched by the benefits of software automation is, ironically, software design itself.

It is not an irony that anyone should be enjoying. While new development methods have boosted design efficiency in recent decades, programmers are still largely coding using third-generation languages – a wave of innovations that appeared more than half a century ago.

C, C# and Java are logical and programmer-friendly, but they are slow, require lots of repetitive actions, and prone to errors. For the programming industry to modernise its production techniques and start behaving like any other industry, the disadvantages of third-generation languages must be overcome.

The seemingly obvious solution is to go to a fourth generation of languages, but these have mostly created new and larger problems. In a bid to boost efficiency, fourth-level languages must be both high level and simple. Simplicity is wonderful, of course, but the resulting new languages have been impractical – unable to handle real-world complexities.

Einstein reportedly said: "Everything should be made as simple as possible, but no simpler." Fourth-generation languages are a good example of things being made too simple, and as a result they have not been widely adopted in mainstream programming.

Programming technology appears stuck in a rut. Forty years since Dennis Ritchie developed C, the programming world has still failed to create a generational improvement. With outdated tools, software designers are unable to be as efficient as their counterparts in other industries.
When it comes to production methods, most software designers have more in common with a bespoke tailor on Savile Row than any of their clients.

This may not be the case for much longer, however. New advances in programming language design are finally overcoming the longstanding barriers that have been holding back software development for so long.

Some may greet these changes with scepticism and that is only to be expected. After all, generations of programmers have only known third-generation languages. Better technology will win in the end, however.

We need to combine the flexibility of third-generation languages with the speed of fourth-generation languages. This may sound impossible, but new hybrid languages are beginning to appear. As they spread through the programming world the impact will be enormous.

A new language called M# can be used to code for .NET web applications. Ninety per cent of the development, including unit test generation and other repetitive tasks, is largely automated and the programmer operates at a high level of abstraction. The remaining 10 per cent is embedded C# and ASP.NET, written natively within M#.

The result is much reduced development time and scope for human error as so much of the coding is automated. Because M# generates .NET code and has no run-time presence, there is no user dependency either.

Deadlines could be a lot less stressful, and it may be easier to say yes to nice-to-have features. Code that is free of error and fully supported by unit tests should become the norm, not the exception.

There may be disruption, of course. Software automation means that managers must get used to projects being completed on time. Finance directors will need to adjust to not having projects go over budget. Users will have to adjust to more consistent designs and less frustration.

It will take time for everyone to get used to this, but somehow I don't think it will be a problem. The industry that has brought about so much modernisation needs modernisation itself – and the automation of programming is long overdue, promising huge benefits for everyone.

Let's not wait any longer.

Mazdak Afshar is co-founder of Geeks