The Future of Programming: Less Is More

Expert developers discuss their views on where the field of software development is headed, building on the skills of today and leveraging the Internet, SOA, dynamic languages and new tools to help simplify development of increasingly complex systems.

In the future of the process of building software, the ability to do more with less could become the norm, some developers say.

"The future of programming is less," said David Heinemeier Hansson, the creator of the Ruby on Rails Web application framework and a developer at 37signals in Chicago. "Less configuration, less committees, less proprietary infrastructure. The rise of open source is causing this. Along with this transformation, well see the open-source, dynamic languages start displacing their enterprisey counterparts."

Hanssons Ruby on Rails is considered a lightweight alternative to the Java Enterprise Edition.

"Its no accident that Java is owned by Sun [Microsystems] and C# by Microsoft, while Perl, Python, PHP and Ruby steam from the open-source world," he said. "Its also no accident that the WS-deathstar construction is being fielded by IBM and Microsoft while the REST [Representational State Transfer] movement is one of grassroots. The age of the vendor is nearing its end. A new age of peers, collaboration and commons is upon us."

"We always have to push to simplify the simplifiable—especially in the face of ever-increasing complexity," said David Intersimone, vice president of developer relations at Borland Software, in Cupertino, Calif. Intersimone will be going with the Borland IDE (integrated development environment) tools division, known as "DevCo," which Borland is about to sell off.

/zimages/2/28571.gifThe race is on to woo the next-generation developer. Click here to read more.

"The DevCo road map takes us out the next three years," he said. "At the same time, being developer-focused doesnt mean that we are limited to Delphi, C/C++/C# and Java programming languages. There are many languages/paradigms/stacks that we have to deal with. Some languages are getting features from others, such as the declarative additions in C# 3.0 data, for example. And Ruby could be thought of as Lisp for the Internet."

Intersimone shared his vision of what programming in 2010 might be like.

In 2010, XML will be the fundamental data type for all programming languages and databases, he said. Also, languages will include syntax extensions for proving correctness, unit and system testing, parallel processing, aspects, and declarative and functional programming, he said.

And for tools, in 2010 the development environment will be a container or dashboard connected to the Internet where RSS feeds, design, development, testing and deployment take place, Intersimone said. Moreover, artifact management will be automatic, as will be refactoring, testing, audits, metrics, security verification and reporting. And all IDEs will contain at least 10 different general-purpose and DSLs (domain specific languages) that can be intermixed inside the same project parts, he added.

In addition, Intersimones vision of development in 2010 has large libraries of reusable distributed objects, and Web services being available for every developer. And all developers will be connected to each other using a global directory, he said.

Sergey Dmitriev, founder and chief executive of JetBrains, in Prague, Czech Republic, said any modern software platform and language should have 12 main features: object orientation; support for language extensions and meta-programming; an intelligent IDE; clear syntax and readable program code; support for collections; support for writing GUI applications; support for writing Web applications; support for multithreading; support for functional types, closures and continuations; garbage collection; an effective virtual machine/runtime; and the ability to deploy to any operating system.

Dmitriev said the platform should allow developers not only to extend an existing language, but also to easily design a whole new language and build an intelligent editor for it.

"To run programs written in such a DSL, the platform should support writing generators to any existing runtime platform—Java or .Net or whatever," he said. "Using such specialized DSLs allows writing programs on a much higher level, so these programs will be much more maintainable and expressive."

Dmitriev refers to this approach to development as LOP (language-oriented programming), and said JetBrains MPS (Meta Programming System) and Intentional Softwares Intentional Software system are two technologies that implement LOP.

"The dynamic versus static languages arguments have a very long history, and I wouldnt say that it is major issue for the future," he said. "Id say that it is an issue of the present and the past already."

Dmitriev said he expects there to be more expressive languages for knowledge representation.

Next Page: Time to make programming creative again.