Da ich zur Zeit mit jemandem ein kleines Projekt fuer die Uni bastle – ein neuronales Netz, Abgabe naechsten Mittwoch – hat man das Vergnuegen sich des oefteren mit fremden Code zu befassen:
while (!learned)
{
NN.apply();
for (j = 0; j < another_number; j++)
{
o[j] = NN.getOutput(j);
}
for (j = 0; j < another_number; j++)
t[j] = teach[i, j];
error = NN.energy(ref t, ref o);
if (error > NN.getEpsilon())
{
NN.backpropagate(t);
}
else
learned = true;
}
Wenn man sowas liest, dann fragt man sich doch unter anderem, was ist eigentlich another_number? Auf jeden Fall eine andere Zahl – aber anders als welche? Und warum muss sie anders sein? Schauen wir mal an anderer Stelle im qualitativ hochwertig kommentierten Quellcode ™:
int number = 5; // actually, this is the number of examples
int another_number = 5; // number of output neurons
int iterations = 0;
Another_number ist also eine Fachbezeichnung fuer die Anzahl der Ausgabeneuronen in einem neuronalen Netz m(. Mir persoenlich waere allerdings ein Name wie outputNeuronCount lieber gewesen.
Mein persoenliches Highlight findet sich aber hier:
// set teaching input
for (int icsharpsucksiknowwhatimdoing = 0; icsharpsucksiknowwhatimdoing < 5; icsharpsucksiknowwhatimdoing++)
teach[icsharpsucksiknowwhatimdoing, icsharpsucksiknowwhatimdoing] = 1;
Sieht aus als haette C# ihn an dieser Stelle irgendwie geaergert. Nun denn, unter Zeitdruck wirft man wohl die ein oder andere Richtlinie aus den Softwareengineeringvorlesungen ueber Board – getreu nach dem Motto MAKE IT WORK BITCH!!!11
Die Absicht meiner Worte zur naechtlichen Stunde ist es, dem ein oder anderen Code-in-die-Tastatur-Klopper doch einmal ins Gewissen zu rufen, dass man auch sauber und lesbar programmieren kann, auch wenn es mal eine Minute laenger dauert sich beispielsweise einen sinnvollen Variablennamen oder eine Zeile Kommentar auszudenken (ich schliesse mich da auch nicht direkt aus).