The Fellowship / Fellows / robertschuster / Weblog / Programming is like magic

Programming is like magic

Ok friends this is going to be a long post and I try to get the introduction short at least: 

  1. I am profiting from free software enormously.
  2. I know that everyone can do 1.
  3. I like telling how this can happen. :-)
  4. I am currently preparing an introductory presentation about free software.
  5. I will put my thoughts here for all to discuss & criticise it.

The following notes are inspired by a transcript of a talk by Richard Stallman and the many other authors whose essays, notes and comments I read.

When I have look at the usual programming language constructs from which software is being built then this is stuff like the if-, while-
or the switch-case statement. These statements are highy deterministic: They will always do what I expect from them.

 

Let us have a closer look at the if()-statement: An if() will only cause a branch in the program sequence when the expression inside its brackets evaluates to true. It will never happen that while the expression is true the branch is not taken.

Such an if() amazingly resistant: Even in a ten year old application all the if()s contained within it will work as they did at the time the application was compiled. Compare that to spare parts on you car?

The if() is completely unaffected by the environmental condition it was 'produced' in. Whether it is typed sitting in a cleanroom or in a dirty backyard does not matter for the functionality of the statement. I wonder how much energy is spent by microchip manufacturers generating a suitable production atmosphere in their fabs?

One of the most stunning features of an if() is that if I want to use one in the companies' projects I do not have to ask my boss whether such action will exceed the budget limit.

Yeah, software programmers have it really easy: Compared to technical engineers we can focus our work on the problem the software should solve. Hardware makers for instance have to deal with space, heat and cost constraints when designing electronic circuits. They have to think about additional wiring to power every electronic component and niceties like signal propagation delays and leakage current.

In electronic circuits the contingency risk rises with each component added to the design. In my software application it makes no difference whether I use one, a hundred or millions of if() statements. All of them will work flawlessly and the contingency risk is zero.

The effect of software programming being such a riskless and deterministic technology is that a single programmer can construct, overlook and maintain a software system that has a much greater complexity than it would be possible for a mechanical, electrical or electronical system.

I am convinced that software is the key to built the most complex and sophisticated systems. Furthermore I think that this ability makes it possible to construct humanity's most important tools: Things that keep our connected world together like internet routers, management software for the stock exchange or public administration but also global knowledge databases like Wikipedia.

As a programmer you may draw conclusions about the implementation from seeing any of such systems at work and have a real chance to participate in their development (get hired). For someone with no understanding in programming it is completely inexplicable how those software systems can work at all. Creating a program that does something useful and which did not exist the moment before must be complete magic to such a person. A programmer may tell everything to a non-programmer how an application does its job and she/he will not be able to verify that.

At this point you may draw your own conclusion. Mine looks like this: My ability to program gives me great power - especially over those
who do not have this ability. For them I can do things they cannot understand and which they cannot scrutinize reliably.

If I would not have the ability to program I would not like to live in a world where programmers do not share their power openly and honestly with everyone.

 

I think free software is the way to get rid of the difference in power between programmers and non-programmers.


Feel free to comment or drop me a line if you're not a fellow: robertschuster - at - fsfe.org

 

 

Comments

Every single simple statement adds to the complexity and cost of the software

As a software-engineer, you have heavy restrictions on the software you write: CPU-cycles and RAM do not grow on trees...

And every single simple statement you add adds complexity. It is a huge difference if you use one if() or one million if()s.

Re: "Magic that can backfire"

"However the difference is that in software regardless of whether the complete system is still working correctly, each and every statement does exactly what was specified for it."

The opposite may also be true, unfortunately.

Re: "Magic that can backfire"

"You don't have to look at the simple statements but at the greater coherences. The if statement will probably not change over ten years or much more but the whole ecosystem in which your program runs will."

That's right. A software becoming outdated in their environment is undergoing so-called bitrot. But I think this similar can happen to any other technical system.

However the difference is that in software regardless of whether the complete system is still working correctly, each and every statement does exactly what was specified for it.

Magic which can backfire...

"In electronic circuits the contingency risk rises with each component added to the design."

It's the same for software, actually. You don't have to look at the simple statements but at the greater coherences. The if statement will probably not change over ten years or much more but the whole ecosystem in which your program runs will. And as they are very complex systems, they aren't deterministic, either.
Think about how absurd punchcards look today and think about when they were state of the art. Or, think about GNU/Linux ten years ago.
Think about all the bugs found in software that's written years ago.

Your first point is very true, but I'm not so convinced by your justification.

Log in or join the Fellowship to post comments.



Right menu

Fellow Events

<< September 2008 >>
Mon Tue Wed Thu Fri Sat Sun
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 
Selected Day Today


FSFE Card


DRM.info
© FSFE