Feeds

Dip into concept programming

Do what it says on the tin

Secure remote control for conventional and virtual desktops

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.®

Choosing a cloud hosting partner with confidence

More from The Register

next story
Microsoft on the Threshold of a new name for Windows next week
Rebranded OS reportedly set to be flung open by Redmond
'In... 15 feet... you will be HIT BY A TRAIN' Google patents the SPLAT-NAV
Alert system tips oblivious phone junkies to oncoming traffic
Apple: SO sorry for the iOS 8.0.1 UPDATE BUNGLE HORROR
Apple kills 'upgrade'. Hey, Microsoft. You sure you want to be like these guys?
SMASH the Bash bug! Apple and Red Hat scramble for patch batches
'Applying multiple security updates is extremely difficult'
ARM gives Internet of Things a piece of its mind – the Cortex-M7
32-bit core packs some DSP for VIP IoT CPU LOL
'People have forgotten just how late the first iPhone arrived ...'
Plus: 'Google's IDEALISM is an injudicious justification for inappropriate biz practices'
Lotus Notes inventor Ozzie invents app to talk to people on your phone
Imagine that. Startup floats with voice collab app for Win iPhone
prev story

Whitepapers

Providing a secure and efficient Helpdesk
A single remote control platform for user support is be key to providing an efficient helpdesk. Retain full control over the way in which screen and keystroke data is transmitted.
Intelligent flash storage arrays
Tegile Intelligent Storage Arrays with IntelliFlash helps IT boost storage utilization and effciency while delivering unmatched storage savings and performance.
Beginner's guide to SSL certificates
De-mystify the technology involved and give you the information you need to make the best decision when considering your online security options.
Security for virtualized datacentres
Legacy security solutions are inefficient due to the architectural differences between physical and virtual environments.
Secure remote control for conventional and virtual desktops
Balancing user privacy and privileged access, in accordance with compliance frameworks and legislation. Evaluating any potential remote control choice.