Subscribe / Unsubscribe Enewsletters | Login | Register

Pencil Banner

We're living in the golden age of software development

Simon Bisson | Jan. 28, 2016
With an unprecedented choice of tools, languages, platforms, and architectural styles, developers are creating a wildly inventive, software-defined world

Software, as Marc Andreessen says, is eating the world. Everything we do is mediated through someone's code -- running on a smart thermostat, a smartphone, the old familiar PC, or as a microservice in an ever-expanding cloud.

We're finally delivering on the decades-old promise of a ubiquitous computing world. But more than that, from the developer's standpoint, the tools available to us are better and more sophisticated than ever. We're also seeing monolithic applications break apart into services and platforms, ready to become part of your applications.

At the heart of the current wave of change are new design patterns suited to a highly distributed, asynchronous computing world. Yes, we're still building n-tier MVC and MVVM apps -- and we'll carry on building them for a long time to come. But new microservice-focused design patterns give us a new set of tools to help us build highly scalable, concurrent applications that can handle the eventual consistency that comes from working with asynchronous services.

Languages like Erlang embody many of these principles, as do PaaS tools such asAWS's Lambda or Microsoft Azure's Service Fabric. You can also roll your own actor-based microservices using the open source MQTT messaging framework and the Seneca microservice toolkit for Node.js. Microservices are ideal for implementing actors, as they are at heart switching engines that take in inputs, process them appropriately, then send the results on to other services.

That's why Node.js is one of the more important technologies underpinning modern software: It gives you that switching engine, with deep support for REST and JSON APIs. Node.js offers a cross-platform environment, too, with support for most common operating systems (and soon with a choice of JavaScript engines). As JavaScript moves to a yearly update cycle via ECMAScript, there's additional scope for rapid evolution and support for new language constructs coming from JavaScript-derived languages like Google's Dart and Microsoft's TypeScript.

Node.js is only one example. The darling of disruptive technologies, Docker, was developed using Google's Go, a modern systems language from some of the same developers who originally created C. Like many new languages, Go has features that are designed to help manage concurrency and to support parallel computation, helping developers take advantage of current processor architectures as well as distributed computing models.

Let's not forget the cross-platform tools and frameworks that make it easy to build apps that run on, well, nearly anything. Some, like Apache's Cordova, are hybrid HTML environments that use a runtime to deliver near-native performance. Others, like Xamarin, provide tooling that compiles familiar code into native applications on multiple OSes, while others like the iOS and Java tooling built into Microsoft's Visual Studio make it easier to manage your code in a single environment and a single project.

 

1  2  Next Page 

Sign up for CIO Asia eNewsletters.