Feeds

Dip into concept programming

Do what it says on the tin

Top 5 reasons to deploy VMware with Tegile

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

Secure remote control for conventional and virtual desktops

More from The Register

next story
Download alert: Nearly ALL top 100 Android, iOS paid apps hacked
Attack of the Clones? Yeah, but much, much scarier – report
NSA SOURCE CODE LEAK: Information slurp tools to appear online
Now you can run your own intelligence agency
Microsoft: Your Linux Docker containers are now OURS to command
New tool lets admins wrangle Linux apps from Windows
Microsoft adds video offering to Office 365. Oh NOES, you'll need Adobe Flash
Lovely presentations... but not on your Flash-hating mobe
You stupid BRICK! PCs running Avast AV can't handle Windows fixes
Fix issued, fingers pointed, forums in flames
HTML5 vs native: Harry Coder and the mudblood mobile app princes
Developers just want their ideas to generate money
prev story

Whitepapers

Driving business with continuous operational intelligence
Introducing an innovative approach offered by ExtraHop for producing continuous operational intelligence.
Why CIOs should rethink endpoint data protection in the age of mobility
Assessing trends in data protection, specifically with respect to mobile devices, BYOD, and remote employees.
Forging a new future with identity relationship management
Learn about ForgeRock's next generation IRM platform and how it is designed to empower CEOS's and enterprises to engage with consumers.
Reg Reader Research: SaaS based Email and Office Productivity Tools
Read this Reg reader report which provides advice and guidance for SMBs towards the use of SaaS based email and Office productivity tools.
Mitigating web security risk with SSL certificates
Web-based systems are essential tools for running business processes and delivering services to customers.