Forum: Offtopic Minimalbeispiel bei der Mikrocontrollerprogrammierung


von Walter T. (nicolas)


Lesenswert?

Hallo zusammen,

anläßlich dieses Threads:

Beitrag "Warum hier immer alle so "unfreundlich" sind."

ist mir aufgefallen, daß ich zum Prinzip des "lauffähigen 
Minimalbeispiels" in der LaTeX-Communitiy hervorragende Beschreibungen 
finde, im Bereich der Programmierung aber nicht.

Kennt hier jemand eine gute Beschreibung? Oder wäre es hier sinnvoll, 
mal einen Artikel zu schreiben?

Viele Grüße
W.T.

: Verschoben durch Moderator
von Walter T. (nicolas)


Lesenswert?

OK, und in dem Thread steht auch schon die Antwort:

http://sscce.org/

Das war's, was ich gesucht habe.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Walter T. schrieb:
> Kennt hier jemand eine gute Beschreibung?

Was missfällt Dir am AVR-Tutorial hier?
Geht Dir das bereits zu tief ins Detail?

Oder missverstehe ich Deine Fragestellung?

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Rufus Τ. F. schrieb:
> Oder missverstehe ich Deine Fragestellung?

Ich glaube schon. Er meint offenbar eine Anleitung, wie man ein 
Minimalprogramm zusammenstellt, um zum Beispiel einen Fehler in seinem 
Programm hier im Forum zu präsentieren, um dann Hilfe zu bekommen.

Sinn: Nicht 22222 Zeilen Code posten, sondern nur 22 - aber mit 
Reproduzierbarkeit des Fehlers.

: Bearbeitet durch Moderator
von Genervter Neuling (Gast)


Lesenswert?

Jetzt wäre es noch gut, wenn es die Möglichkeit gäbe eine solche 
Anleitung in den entsprechenden Foren oben anzuheften.

Oder einen Link dazu zu den wichtigen Regeln beim Verfassen von 
Antworten unterzubringen.

Man sollte ein solches Beispiel auf alle Fälle gut sichtbar irgendwo 
unterbringen.

von Karl H. (kbuchegg)


Lesenswert?

Frank M. schrieb:
> Rufus Τ. F. schrieb:
>> Oder missverstehe ich Deine Fragestellung?
>
> Ich glaube schon. Er meint offenbar eine Anleitung, wie man ein
> Minimalprogramm zusammenstellt, um zum Beispiel einen Fehler in seinem
> Programm hier im Forum zu präsentieren, um dann Hilfe zu bekommen.
>
> Sinn: Nicht 22222 Zeilen Code posten, sondern nur 22 - aber mit
> Reproduzierbarkeit des Fehlers.

Schwierig.

Ich würde sagen, es ist im wesentlichen genau die gleiche Technik, die 
man anwenden würde, wenn man bei sich zu Hause zum Entschluss kommt: 
Jetzt reichts, dieses Detailproblem seh ich mir jetzt losgelöst von 
meinem eigentlichen Projekt in einem Hilfsprojekt an, das nur den einen 
Zweck hat, genau dieses eine Subsystem zu untersuchen. Also: neues 
Projekt, aus dem vorhandenen Code den Teil ausschneiden, bei dem man das 
Problem vermutet (oder sogar weiss, das man da ein Problem hat), das 
ganze soweit ummodeln, dass es lauffähig wird.
Die Lektionen, die man dabei lernt, sind vielfältig. Zum einen, und das 
ist nicht das schlechteste, lernt man sein Projekt zu strukturieren. 
Denn wenn es extrem mühsam ist, ein Subsystem aus dem Gesamtverband 
herauszulösen, dann erfolgt alleine durch dieses Herauslösen schon eine 
gewisse Modularisierung, die sich bei der Rückübernahme positiv 
auswirkt.
Zum anderen lernt man dabei Dinge, die gerade Neulinge oft sträflich 
vernachlässigen - die äussere Form. Vernünftige Variablennamen, 
vernünftige Funktionsnamen, saubere Einrückungen, das alles sind Dinge, 
die kein Selbstzweck sind, sondern vitale Elemente der SW-Entwicklung.
Und zum Dritten lernt man, seine Kräfte zu bündeln und sich nicht in 
tatsächlich irrelevanten Details zu verzetteln. Wobei es natürlich auch 
ein Problem darstellt zu erkennen, was denn nun wirklich irrelevant ist 
und was nicht.

Aber alles in allem ist es meiner Meinung nach schwierig ein Kochrezept 
anzugeben, wie man Minimalbeispiele produziert. In der SW-Entwicklung 
geht fast nichts einfach nur nach Kochrezept. Für fast jede allgemein 
anerkannte Regel gibt es immer auch Ausnahmen, bei denen die Regel 
versagt. In diesem Sinne hat für mich SW-Entwicklung mehr mit 
künstlerischer Tätigkeit wie zb Malen oder Gedichte schreiben zu tun. 
Auch dort gibt es gewisse Grundregeln, man muss aber auch die Eier 
haben, diese Regeln zu missachten WENN es der Sache dienlich ist. Die 
Kunst ist natürlich zu erkennen, wann dieser Fall eintritt und wann man 
einfach nur eigene Faulheit damit verdeckt.

: Bearbeitet durch User
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Karl H. schrieb:
> Schwierig.

Sehe ich ähnlich. Aber allein Dein Beitrag dazu ließe sich schon in eine 
Art "Kochrezept" umschreiben.

Der von Walter genannte Link

   http://sscce.org/

beinhaltet ebenso Punkte, die man durchaus in das "Kochrezept" 
einfließen lassen könnte.

Kurzum: Man könnte demjenigen, der ein Problem mit seinem Source hat, 
schon einige Ratschläge bzw. Werkzeuge an die Hand geben.

Ein positiver Effekt könnte sein, dass der TO durch das 
"Auf-den-Punkt-bringen" selbst schon den Fehler findet. ;-)

von Karl H. (kbuchegg)


Lesenswert?

Frank M. schrieb:

> Ein positiver Effekt könnte sein, dass der TO durch das
> "Auf-den-Punkt-bringen" selbst schon den Fehler findet. ;-)

Das ist sogar recht oft so.
Mir hilft zum Beispiel das laute Sprechen. Ich bin berüchtigt dafür, 
dass ich bei Problemen am Gang auf und ab gehe und mit mir selbst 
diskutiere oder mir ein Problem erkläre. :-)

(Na ja. Einen "kleinen" Vogel muss man schon haben in diesem Gewerbe)

von Alex W. (a20q90)


Lesenswert?

Karl H. schrieb:
> (Na ja. Einen "kleinen" Vogel muss man schon haben in diesem Gewerbe)

Wer sagt denn das Du einen Vogel hast? Das muss nämlich nicht sein!
Kann es sein das die Leute die nicht so sind wie Du eventuell eine Art 
"Asperger" haben und deshalb ruhig auf dem Stuhl sitzen? ;-)

von Karl H. (kbuchegg)


Lesenswert?

Alex W. schrieb:
> Karl H. schrieb:
>> (Na ja. Einen "kleinen" Vogel muss man schon haben in diesem Gewerbe)
>
> Wer sagt denn das Du einen Vogel hast?

Na - ich!

Ich bin ja schon froh, dass ich bisher Kollegen hatte, die sich maximal 
darüber amüsieren, es aber immer toleriert haben. Ich kann mir durchaus 
vorstellen, dass das nicht immer einfach ist. Im Gegenzug toleriere ich 
dann auch so manches.

> Kann es sein das die Leute die nicht so sind wie Du eventuell eine Art
> "Asperger" haben und deshalb ruhig auf dem Stuhl sitzen? ;-)

Jetzt muss ich direkt nach "Asperger" googeln. Unbändige Neugier und 
Freude am lernen gehören ja schliesslich auch zu unserem Gewerbe. Kennt 
ihr das auch: mit einem Stichwort fängt es an, dann dann kommt man vom 
hundersten ins tausendste und wechselt von einem Thema (von dem man 
vorher noch nie gehört hat) zu einem anderen Thema (von dem man 
ebenfalls vorher noch nie gehört hat).

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Karl H. schrieb:
>> Ein positiver Effekt könnte sein, dass der TO durch das
>> "Auf-den-Punkt-bringen" selbst schon den Fehler findet. ;-)
>
> Das ist sogar recht oft so.

In einer früheren Firma nannten wir das den „Frau-Hocker-Effekt“.

Frau Hockert war die Reinemachfrau.  Soll heißen, oft genug würde es
genügen, das Problem einfach der Reinemachfrau im Detail zu erklären,
während dieser Erklärung fällt es einem dann wie Schuppen aus den
Haaren …

von Timm T. (Gast)


Lesenswert?

Jörg W. schrieb:
> Frau Hockert war die Reinemachfrau.  Soll heißen, oft genug würde es
> genügen, das Problem einfach der Reinemachfrau im Detail zu erklären

Ich hoffe, sie ist dafür wenigstens angemessen entschädigt worden. ;-)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Timm T. schrieb:
> Ich hoffe, sie ist dafür wenigstens angemessen entschädigt worden. ;-)

Ich glaube, es hat ihr nie jemand wirklich sein Problem erklärt. :)

Das lag allerdings auch daran, dass sie zu einer Zeit aktiv war,
zu der sich Otto Normalprogrammierer eher nochmal im Bett rumdreht …

von Paul B. (paul_baumann)


Lesenswert?

Karl H. schrieb:
> (Na ja. Einen "kleinen" Vogel muss man schon haben in diesem Gewerbe)

Jeder hat auf seine Weise
eine ganz spezielle Meise.
;-)
mfG Paul

von Walter T. (nicolas)


Lesenswert?

Jörg W. schrieb:
> In einer früheren Firma nannten wir das den „Frau-Hocker-Effekt“.

Diesen Effekt hat, vermute ich mal, jeder ausgenutzt, der komplizierte 
Sachverhalte sortieren und weiterdenken mußte.

Mein Hund konnte die Zeitenfolge in "if"-Sätzen am Ende vermutlich 
besser als ich. Und Herr und Frau Mockenhaupt, die ihr gemeinsames Grab 
direkt neben der Parkbank haben, auf der ich beim lernen gern zu sitzen 
pflegte, bekamen im Nachleben jeden Aspekt der theoretischen Mechanik 
noch einmal genau erklärt - so geduldige Zuhörer hatte ich später eher 
selten.


Allerdings ging es mir in Frage nicht allgemein um 
Problembehandlungsstrategien, sondern ganz konkret um eine Anleitung zum 
Aufbau eines "SSCCE"s. Den englischen Artikel finde ich schon gut - aber 
ich wundere mich, daß ich noch nicht auf eine deutschsprachige 
Entsprechung gestoßen bin. Immerhin ist das doch derart elementar - 
wieso schreibt niemand darüber?

Wie nennt der Programmierer/Softwareentwickler ein "Short, Self 
Contained, Correct (Compilable), Example" eigentlich im Deutschen? Das 
Wort "Minimalbeispiel" begegnete mir immer nur im LaTeX-Kontext.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Walter T. schrieb:
> Wie nennt der Programmierer/Softwareentwickler ein "Short, Self
> Contained, Correct (Compilable), Example" eigentlich im Deutschen?

Das compilierbare Minimalbeispiel trifft es schon irgendwie.

von Thomas E. (thomase)


Lesenswert?

Walter T. schrieb:
> Wie nennt der Programmierer/Softwareentwickler ein "Short, Self
> Contained, Correct (Compilable), Example" eigentlich im Deutschen? Das
> Wort "Minimalbeispiel" begegnete mir immer nur im LaTeX-Kontext.

Wenn man "sscce" googelt, findet man unter dem ersten deutschsprachigen 
Link die Bezeichnung "Kompilett".

Darunter findet sich tatsächlich etwas zum Thema.

Googelt man allerings "Kompilett", wird man gefragt, ob man "komplett" 
meinte und bekommt auch die entsprechenden Suchergebnisse dafür 
angezeigt.
Besteht man auf 'Kompilett", bekommt man wieder besagten Link. Der Rest 
ist allerdings Schwachsinn. Also, durchgesetzt hat sich der Begriff 
nicht.

Jörg W. schrieb:
> Das compilierbare Minimalbeispiel trifft es schon irgendwie.

Ja. Und das sollte auch jeder verstehen.

mfg.

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Walter T. schrieb:

> Allerdings ging es mir in Frage nicht allgemein um
> Problembehandlungsstrategien, sondern ganz konkret um eine Anleitung zum
> Aufbau eines "SSCCE"s. Den englischen Artikel finde ich schon gut - aber
> ich wundere mich, daß ich noch nicht auf eine deutschsprachige
> Entsprechung gestoßen bin. Immerhin ist das doch derart elementar -
> wieso schreibt niemand darüber?

Hmm. Ich kann nur für mich sprechen.

Ich hab da eigentlich noch nie genauer darüber nachgedacht. Aber du hast 
recht, irgendwie gehen wir immer davon aus, dass intuitiv klar sein 
sollte wie man so ein Minimalbeispiel erstellt. Im von dir geposteten 
Link sind dann auch einige Punkte drinnen, auf die ich mit Sicherheit 
vergessen hätte, wenn ich das erläutern sollte.

Falls jemand einen Wiki-Eintrag machen will, nur zu.
Eines möchte ich noch anmerken. Im Link wird zum Thema 'Warum self 
contained' erläutert:
1
This means that after the code has been copied, pasted and compiled by
2
those helping, they can run it and see the results for themselves.
Erstens das. Aber noch wichtiger scheint mir zu sein, dass ich dann ein 
lauffähiges Beispiel hier habe und mit meinen eigenen Debug-Methoden ans 
Werk gehen kann. Jeder der lange genug im Geschäft ist, hat da einige 
Dinge auf Lager, wie er einem laufenden Programm seine Problemstellen 
entlocken kann. Das wird oft ein Debugger sein, aber die die noch mit 
printf "aufgewachsen" sind, können auch damit den meisten Dingen schnell 
auf die Spur kommen. Insbesonders wenn es um komplexere Datenstrukturen 
geht, nehm ich gerne diesen Weg. Auch Rekursionen verlieren mit ein paar 
printf schnell ihren Schrecken.



>
> Wie nennt der Programmierer/Softwareentwickler ein "Short, Self
> Contained, Correct (Compilable), Example" eigentlich im Deutschen? Das
> Wort "Minimalbeispiel" begegnete mir immer nur im LaTeX-Kontext.

von Joachim B. (jar)


Lesenswert?

Jörg W. schrieb:
> In einer früheren Firma nannten wir das den „Frau-Hocker-Effekt“.

witzig, wenn man sich irgendwie wiedererkennt,

ich hatte ein Problem in einem komplexen Prüfprogramm, also spricht man 
mit Kollegen oder eben dem Chef, der war aber meilenweit von der Technik 
weg und verstand vom Problem wenig, aber er stellte Fragen und genau 
diese Fragen brachten mir den AHA Effekt und die Lösung, nicht das er 
eine Lösung fand aber ich durch seine Fragen.

Ja manchmal hilft es mit Leuten zu reden auch wenn die nix zum Thema 
beitragen können, aber durch Erklären fällts einem dann meist selber 
auf.

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Es gibt auch eine schöne Geschichte (Legende?), nach der es an einer 
amerikanischen Uni üblich war, dass man zum Tutor nur dann vorgelassen 
wurde, nachdem man einem Teddybären im Vorzimmer sein Problem 
geschildert hat.
Der Geschichte/Legende nach, soll ein gar nicht so kleiner Prozentsatz 
nach der Bärennummer das Vorzimmer ohne Konsultation des Tutors wieder 
verlassen und das Problem gelöst haben.

von Klaus W. (mfgkw)


Lesenswert?

Walter T. schrieb:
> Allerdings ging es mir in Frage nicht allgemein um
> Problembehandlungsstrategien, sondern ganz konkret um eine Anleitung zum
> Aufbau eines "SSCCE"s. Den englischen Artikel finde ich schon gut - aber
> ich wundere mich, daß ich noch nicht auf eine deutschsprachige
> Entsprechung gestoßen bin. Immerhin ist das doch derart elementar -
> wieso schreibt niemand darüber?

Ich vermute, daß die Nachfrage dafür eher mäßig ist.

Es gibt
(A) Leute, die halbwegs koordiniert denken beim Programmieren
oder sonstigen Entwickeln und guten Vorschlägen aller Art zugänglich
sind, und es gibt
(B) Leute, die das genaue Gegenteil sind.

Zu (A): die sind selber in der Lage, Fehler zu finden.
Auf dem Weg dahin sind sie auch aus rein pragmatischen Gründen
bestrebt und in der Lage, Probleme zu reduzieren.

Zu (B): sie murksen sich was zusammen, wollen alles auf einmal
erschlagen ohne jeden Überblick und ohne vorher mal mit kleinen
Problemen warm zu werden.
Dem Rat, sinnvoll vorzugehen, sind sie nicht zugänglich.

(Gibt natürlich nicht nur genau diese beiden Gruppen, aber mal zur
Vereinfachung nehme ich es nicht so genau.
Und am Anfang ist man eher (A), mit etwas Glück entwickelt man sich in
Richtung (B)...)

Eine solche Anleitung wäre für (A) nicht wirklich nötig, für (B)
dagegen sinnlos. Die lesen sie nämlich gar nicht; genauso wie sie von
allen anderen sinnvollen Regeln nichts hören wollen.

Die allermeisten Fragen hier kommen aus der B-Ecke.
Wären die Leute vernünftigen Argumenten zugänglich, hätten sie ihr
Problem meistens gar nicht.

: Bearbeitet durch User
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Klaus W. schrieb:
> Eine solche Anleitung wäre für (A) nicht wirklich nötig, für (B)
> dagegen sinnlos. Die lesen sie nämlich gar nicht; genauso wie sie von
> allen anderen sinnvollen Regeln nichts hören wollen.

Meiner Meinung nach siehst Du das zu schwarz/weiß. Es gibt bestimmt noch 
etwas dazwischen. Das können zum Beispiel unerfahrene Anfänger sein, die 
gar nicht wissen, wie sie ein Problem systematisch angehen können.

Für diese Gruppe wäre so eine "Anleitung" zur systematischen Fehlersuche 
schon hilfreich. Wenn man erkennt, dass der Poster genau so ein Problem 
hat, braucht man ihm nur per Wiki-Link die richtigen Werkzeuge an die 
Hand geben und der TO kann dann erstmal in sich gehen.

Ich halte daher so einen deutschsprichigen Wiki-Artikel für sehr 
nützlich und würde mich auch gern daran beteiligen.

von Walter T. (nicolas)


Lesenswert?

Hmmm.... unter Profis könnte es diese zwei Richtungen geben, da alle in 
etwas die gleiche Vorbildung genossen und diese entweder ignoriert oder 
aufgenommen haben.

Bei den Hobbyisten gibt es immer noch genügend Menschen, die von 
bestimmten Techniken einfach noch nie gehört (und nicht etwa aktiv in 
ihrer Ausbildung ignoriert) haben.

Ich entdecke mich selbst immer wieder dabei, daß ich beim stöbern im 
Internet Techniken beschrieben finde, bei denen ich sofort denke: "Na 
toll - hätte ich davon vor drei Jahren gelesen, hätte mir das viel 
Arbeit erspart."

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.