Taquis - PC Base FFT Spectrum Analyzers, Oscilloscopes, Data Analysis, Data Acquisition, and Application Frameworks   Taquis
"Quality without compromise..."

 
Home
Philosophy
History

Products
AtSpec
AtSpec DDK
AtOne

Contact
info@taquis.com

 

Some words on software development philosophy

"Structure is everything!" Never has there been a truer statement in software development practice. Well at least that's my point of view. In the early days of learning to program I was taught the top down approach to functional programming. In that scenario, which is a scenario familiar to many, you start with a function (some sort of large action or outcome that you wish to achieve) and break it down into smaller and smaller tasks until that which you wish to achieve is achievable. It is a nice idea but it generally fails to produce favourable outcomes on large projects because it pays no attention to structure. The structure just evolves as a matter of course as we descend into finer and finer functional granularity. It is exceptionally rare, in my experience, that well structured code evolves without first considering structure before even starting to code.

If you were to take a look at nature, at complex systems, you would find that the complexity of the system is tied up in the connections and interactions of the components and not the components themselves. The Information, if you like, within a system is tied up in it's state, it's interconnections, and not the individual functions that something performs. Things always have a context. It is always an action performed on something rather than an abstract action. To give an example, think of the human body, or the body of any living thing for that matter. We are composed of billions of cells, each of which is a relatively simple entity, but when enough of them are put together in an ordered fashion we can construct something exceedingly complex. The complexity does not lie in the individual components but in how we connect them. The brain is another example. It is capable of performing exceedingly intractable and complex operations and yet at a microscopic level it is comparatively simple. Once again the intelligence, the information and the value in the brain is not tied up in individual neurones but how they all fit together as a whole.

As time progresses my philosophy on programming attempts to mimmic these observations more and more. With my object oriented design in hand the individual components that I need to build a system are of themselves rather simple, dull and boring, and yet, if put together in some complex way, they can create quite complex and impressive systems. When it comes down to it the most important factor in making this a reality is having classes or groups of classes that can stand up in there own right, that can exist in isolation and that are not bound to the initial goal which led to their development. More often than not I find myself coding these dull boring objects in isolation, one after the other, until I have all the pieces I need to construct a system (or subsystem). Only then when I have all the pieces I need can I even attempt to put the pieces together to create something interesting.

Herein lies a huge difference between object oriented programming and functional programming. If I were coding an application using the top down approach to functional programing, at almost any time during that development process I would have a runable application. In the case of object oriented coding a working prototype only comes together at the last instance, often after weeks of coding without a single test build. Then a sense of relief, and sometimes of exhilaration, sets in as all the bits fit together seamlessly and the subsystem runs for the first time. I almost find the process quite miraculous, though time and time again, complex systems come together after weeks of work and are up and running in a few hours, or sometimes even first time around.

That is why I use the object oriented paradigm. That is why I believe in it. If none of this rings true to you then perhaps you haven't discovered object oriented programming? Perhaps you might like to give it a go?

Paavo Jumppanen


"We use Zeus for Windows and Watcom C/C++ 11.0 as our development environment of choice..."

Paavo Jumppanen
Owner of Taquis


This document was last modified on 1st September, 2001
Copyright (C) 2001, Paavo Jumppanen
All rights reserved.