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.
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.
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
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.
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.
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.
Updated April 18, 2013: Intel Announces HTML 5 development environment to create applications for mobile phones.
Author: Denis Sureau, on April 15, 2013.