Feeds

Dip into concept programming

Do what it says on the tin

Build a business case: developing custom apps

It's always a good time for a new paradigm in software development and one of the latest is concept programming. Originated as a private project by Hewlett Packard (HP) software engineer Christophe de Dinechin in 2000, interest in concept programming is on the rise following publication of an updated description late last year.

Dinechin says that concept programming helps to cope with the increasing complexity in software by offering a new way to look at how software is conceived and created.

"It's an idea that applies at lots of different levels from assembly code and C programming up to high-level things like wikis. The reason it works for all these environments is because it focuses on the difference between what is in your head and what ends up in the code," Dinechin told Register Developer in an interview.

Based on the principle enshrined in Wirth's Law that software gets slower faster than hardware gets faster, Dinechin sees the software creation process falling behind the pace of hardware development. He argues that concept programming is the next step towards reducing complexity.

The basic idea is simple: program code should reflect the concepts it represents - or it should do what it says on the tin. Unfortunately this simple statement hides a world of complexity, and this is what Dinechin has spent the last eight years trying to unravel.

As part of this process he came up with a set of abstract, pseudo metrics to help apply concepts to software development. These include syntactic noise, which measures the visible representation of the code (the tin), and semantic noise, which measures how accurately the code represents the concept behind the application (the contents of the tin).

Dinechin's day job working on development of HP's Integrity virtual machine technology has meant progress has been slow. In 2000 he set up an open source project to develop a programming notation called XL that could represent what he sees as the important ideas in concept programming.

"The limitation with existing notations was that it was hard to find ways to add elegant extensions to them. You can extend languages like Lisp and its derivatives - but the problem is to get the extensions to look the way you want them to," Dinechin told Reg Dev.

He added that the deterministic structure of other programming notations goes against one of the important principles of concept programming - flexibility: "It's down to the old saying that, to someone with a hammer every problem is a nail. When you program in Smalltalk, for example, everything looks like an object. With XL, I wanted to create a notation that could be used in many different environments."

One of the intriguing aspects of XL is it has no fixed keywords - relying on what Dinechin describes as "shape": "XL does not use keywords - only a single syntax which can parse just about anything. The look of it is standard, it relies on a very small number of parse trees and instead of keywords it is based on the shape of the parse tree. This means you can play with it and experiment by adding things to it quickly."

He went on to say he hopes the freedom inherent in the XL definition will attract others to build additions under the open source process: "My hope is that we can create an ecosystem around XL. I would like someone to introduce additional things - like aspects, for example."

When Dinechin published the first fruits of his work on XL in 2002 it provoked a heated discussion among developers. He has used the input from this and other online discussions to refine the definition of concept programming and, importantly, its practical application to software development.

"I apply some of these ideas in my day job - but I would like to see concepts expand further into the developer community. There are some signs of it filtering through - in C++ for example. But the use of concepts there is limited to a means of naming a category of templates. This is only a small subset of what I mean by concept programming," Dinechin noted.

Dinechin emphasized his view of concept programming should not be confused with concept-oriented programming - an idea proposed by Brian McConnell in 1999. The term concept-oriented programming has also been used to propose extensions to object-oriented programming in a recent paper by Alexander Savinov of the University of Bonn.®

Boost IT visibility and business value

More from The Register

next story
NO MORE ALL CAPS and other pleasures of Visual Studio 14
Unpicking a packed preview that breaks down ASP.NET
KDE releases ice-cream coloured Plasma 5 just in time for summer
Melty but refreshing - popular rival to Mint's Cinnamon's still a work in progress
Leaked Windows Phone 8.1 Update specs tease details of Nokia's next mobes
New screen sizes, dual SIMs, voice over LTE, and more
Another day, another Firefox: Version 31 is upon us ALREADY
Web devs, Mozilla really wants you to like this one
Put down that Oracle database patch: It could cost $23,000 per CPU
On-by-default INMEMORY tech a boon for developers ... as long as they can afford it
Mozilla keeps its Beard, hopes anti-gay marriage troubles are now over
Plenty on new CEO's todo list – starting with Firefox's slipping grasp
Apple: We'll unleash OS X Yosemite beta on the MASSES on 24 July
Starting today, regular fanbois will be guinea pigs, it tells Reg
prev story

Whitepapers

Implementing global e-invoicing with guaranteed legal certainty
Explaining the role local tax compliance plays in successful supply chain management and e-business and how leading global brands are addressing this.
The Essential Guide to IT Transformation
ServiceNow discusses three IT transformations that can help CIO's automate IT services to transform IT and the enterprise.
Consolidation: The Foundation for IT Business Transformation
In this whitepaper learn how effective consolidation of IT and business resources can enable multiple, meaningful business benefits.
How modern custom applications can spur business growth
Learn how to create, deploy and manage custom applications without consuming or expanding the need for scarce, expensive IT resources.
Build a business case: developing custom apps
Learn how to maximize the value of custom applications by accelerating and simplifying their development.