Programming, evolution between 2010 and 2015

Based on new languages, tools, app market, appears the evolution of programmer life.

This article will only show trends materialized in current programming tools. For a projection into the future and research on what one should expect in tools to come, you can also look at The future of programming languages.

There are still a majority of programmers who continue to use established languages ​​like C++, Java, PHP, which have impressive API to meet most situations they are facing.
But there is also a change in the activity. Now we create software for smartphones and tablets, web applications, multimedia. Computers, their screens, their processors have changed and this requires a change in development tools.

Fight on the wall of a dunjeon between a warrior with an HTML 5 shield against a skeleton holding a shield with Microsoft' logo.

The eternal duality between utility and readability

For decades, programmers are offered language designed to simplify the writing of programs. Python, Ruby obey this trend. Basic long ago already had this goal. Yet it has been replaced by C, more difficult to use, but with more freedom and abilities.

In the 2010s, as shows the chronology of languages, we have not seen the emergence of new languages ​​to meet the goal of simplicity. With the exception of Blocky, a rather anecdotal visual language.
This is the tendency to obfuscation that prevails with Go, Rust, whose syntax is in line with C, purely utilitarian, requiring a fairly long learning and a taste for encoding.
The programmer must be distanced from the problem that it implements the solution to like this type of language. Unless the problem itself is purely computer which is the case of applications fr systems management of for the server. In other cases, the programmer should have a language to facilitate the implementation of the real world in a virtual construction.

Classics also want to regain power in the browser with Dart (Google), TypeScript (Microsoft) trying to replace the innovative syntax of JavaScript by constructs inspired directly from C or Java ...
This goes against the evolution of computers. Indeed, applications are moving to the browser, but the need to implement new business ideas will not be accomplished at the best with the tools of the past.

The browser as universal interface

Even though you may prefer to write a program in TypeScript or CoffeeScript to avoid ambiguities of JavaScript, and the main trend is that JS tends to spread and become indispensable. It becomes the language of interfaces in HTML and although XUL and XAML are used less because of the disaffection from XML to JSON profit, it remains JavaScript, it becomes the Gnome language, the language of applications with Node.js that communicates with the browser throught WebSocket.
It is possible to make local applications in JavaScript with Node.js installed on the desktop, without difference with traditional native application, as shown in the Advanced Explorer file manager .
The same application can run on all operating systems, on tablets, on Smartphones. This universality is a trend that should be clear in the coming years.
As Advanced Explorer, applications should run in the browser, without system compatibility constraints. To achieve this goal, Mozilla has created a major breakthrough with the Asm.js language. Without losing compatibility with JavaScript it breaks execution speed has close to that of native code. We can now see 3D games running on Firefox. Better yet, since it is possible to compile C or C++ to Asm.js, you can have all the function libraries written in these languages ​​with JavaScript. This in Firefox and possibly other browsers if they implement Asm.js.

In the coming years, Portable Native Client, will complement the range of development in the browser. PNaCl can compile LLVM bytecode into applications written in C or another language, and this bytecode can be run in the Chrome browser on any operating system. This is an alternative to Asm.js.

Programming for Windows: Machiavelli's studio

Visual Studio is still the best tool for development and it is not Eclipse that will dethrone it with its obscure interface. But the IDE is not the main accessory for the developer. He must also use a language and a set of functions on a platform.

This is where Microsoft wants to innovate on Windows 8, the former Metro now called Modern UI offers a dual platform running in HTML5 or XAML. XAML is a language interesting and easily accessible and suitable for immersive software purely on Windows. And indeed even purely Windows 8 which further reduces the hearing. HTML 5 version of Microsoft is not really standard since it requires an API to communicate with the system and this API is specific to Windows.
But we have seen that it is possible to make software that runs in the browser without OS constraint. There is nothing in Metro that we cannot achieve with the new web technologies. This initiative seems so to be a move of the company to try to make the users captive of its system, as in the past. To make matters worse, Metro applications can only be accessed from the App Store and a 30% tax has to be paid to Microsoft. The initiative therefore has a purely financial aspect.

In conclusion, Metro is more a ball and chain than anything for developers, a plan to serve the interests of the firm that does not contribute to the community, and I urge them to turn instead to the technologies of Mozilla or Google.

Crucial developments: concurrency, asynchronicity

Concurrency is based on the principle that the processor is faster than the user and therefore it can do several things at once in response to requests for one or more clients. On the Web, lot of clients compete on a single application or service. This is something that is reflected in the language design. Go and Rust make the creation of processes easier and Rust better exploits the capabilities of multi-core processors. It also wants to improve safety on the Web.

Asynchronicity is going in the same direction. It allows the user to continue a task without waiting for the processing of another, and this feature, which is inherent to JavaScript from the beginning, also allows multiple users to use a service in concurrency. This is why the JavaScript language is used in all fields. This is obviously possible because it JIT interpreters become extremely fast.

Tools tend to universality

Visual Studio has refactoring functions, ie reorganization of code without changing its function. IntelliSense adds automatic correction of syntax errors that are available in NetBeans too. Visual design interface aid is a 20 years old development. However little EDI are offering that for HTML 5 but there are many frameworks supporting data binding, and the exchange between data sources and interface is a function of an IDE too.
IntelliTrace debugging in VS facilitates recording all the states of a program that allows you to run a replay with a view of the code, events, variables until the occurrence of an error.

The most interesting developments in the field of programming are in the conversion with Clang and the LLVM language. This is an optimized bytecode close to machine language. We can produce different language applications and distribute LLVM code running on any system. This is the technique used by Portable Native Client for native applications in the browser.
An alternative is to compile AOT (Ahead Of Time): the same program is distributed in all OS, it is compiled at runtime and binary code produced is reused in subsequent sessions. In addition, JIT (Just In Time), which has accelerated Java spreads to JavaScript that allows ultra-fast web applications and makes JavaScript a universal language for applications.

Updated April 18, 2013: Intel Announces HTML 5 development environment to create applications for mobile phones.

Conclusion

Over the period considered, the evolution of programming is not in production of truly innovative methods and tools, but rather the optimization of existing tools and their universalization, especially that of JavaScript, and HTML for interfaces. The paradox is that the company offering the best programming tool is completely out of phase with this trend and even goes against it.

Author: Denis Sureau, on April 15, 2013.