87 lines
3.5 KiB
HTML
Executable File
87 lines
3.5 KiB
HTML
Executable File
---
|
|
layout: main
|
|
title: Effectiveness, not efficiency
|
|
sub-title: By way of a new look at programming.
|
|
---
|
|
|
|
<div class="row vspace20">
|
|
<div class="span4">
|
|
<h2 class="center"> Where to go</h2>
|
|
<p>
|
|
When making the distinction between effectiveness and efficiency i like to think of transport.
|
|
</p>
|
|
<p>
|
|
Efficiency is going fast, like an airplane is much more efficient than a car and that is more so than walking.
|
|
</p>
|
|
<p>
|
|
Effectiveness on the other hand is how straight your route is. Say your in Hamburg and want to go to Berlin, then
|
|
it is not effective to go to Rome first.
|
|
</p>
|
|
<p>
|
|
Ruby, like python and mother smalltalk, let us be more effective at programming. We accept that they are not efficient,
|
|
but i think that can be changed.
|
|
</p>
|
|
<p>
|
|
But even while ruby has blossomed we have seen noticeable increase in effectiveness with so called dsl's and
|
|
what is generally called meta-programming.
|
|
</p>
|
|
<p>
|
|
But meta-programming is just a way to say that we manipulate the program just as we manipulate data. Off course! But
|
|
to do that effectively we need a better model of what an object oriented program actually is.
|
|
</p>
|
|
</div>
|
|
|
|
<div class="span4">
|
|
<h2 class="center">Understandability</h2>
|
|
<p>
|
|
The way i see it is that it is the understandibility that makes ruby or python more effective. As we read much more
|
|
code than write (even it's our own), focusing on descriptive programs helps.
|
|
</p>
|
|
<p>
|
|
But you only have to look at even rubies basic blocks, to see that we have a way to go. We use Strings to represent
|
|
words and text, while we store data in Arrays or Hashes. If you look these up you may find a thread used for tying,
|
|
a military force, or a dish of diced meat and vegetables. So we have a way to go there.
|
|
</p>
|
|
<p>
|
|
But even more disconcerting is that we have no model of how an object oriented system actually works. We know what it
|
|
does off course, as we programm using it all the time. But how it does it is not clear.
|
|
</p>
|
|
<p>
|
|
At least not clear in the sense that i could go and read it's code. Ruby like python are written in c and that just
|
|
is not easily understandable code.
|
|
</p>
|
|
</div>
|
|
|
|
<div class="span4">
|
|
<h2 class="center">Playing computer</h2>
|
|
<p>
|
|
When programming, we fly blind. We have no visual idea of what the system that we write will do and the only way
|
|
to get feedback is to have the final version run. Bret Victor has put this
|
|
<a href="http://vimeo.com/36579366"> into words well</a>.
|
|
</p>
|
|
<p>
|
|
So when we program, it's actually mostly in our head. By playing computer, ie simulating in the head what the computer
|
|
will do when it runs the programm.
|
|
</p>
|
|
<p>
|
|
And so what we consider good programmers, are people who are good at playing computer in their head.
|
|
</p>
|
|
<p>
|
|
But off course we have the computer right there before us. So it should do it rather than us having to simulate it.
|
|
</p>
|
|
<p>
|
|
What will come out of that line when we actually manage to put it into practise is unclear, though it is certain it
|
|
will be easier to do and result in huegely more powerful programs
|
|
</p>
|
|
<p>
|
|
Yet to get there we need better tools. Better tools that let us understand what we are doing better. Better models of
|
|
what we call programming, and by better i mean easier to understand by people.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|