Basti wrote:
> Hi,
>
> danke für den Beitrag. Ich frage mich ja, warum es überhaupt sinnvoll
> ist, die Zeichen in einem Buffer zwischenzuspeichern.
Wenn am anderen Ende deines Programms ein menschlicher Benutzer
sitzt, dann wird er dir dafür dankbar sein, wenn er bei einem
Tippfehler mit Backspace das zuletzt getippte Zeichen löschen
kann.
Dazu müssen aber die Zeichen in einem Buffer zwischengespeichert
werden. Bei einem Backspace fliegt dann einfach das letzte Zeichen
aus dem Buffer wieder raus.
Und erst dann, wenn der Benutzer Return drückt, arbeitet das
Programm mit der kompletten Zeile aus dem Buffer weiter.
> Im Grund könnte das Programm doch einfach folgendermaßen lauten:
>
>
1 | > Do While true
|
2 | > c=Serial_Read(0)
|
3 | > Serial_Write(0,c)
|
4 | > End While
|
5 | >
|
>
> Der Effekt wäre doch genau derselbe, nur dass die Zeilenumbrüche nicht
> automatisch eingefügt werden, oder?
Das ist ja auch nur ein Beispiel. Kein reales Programm macht diese
Funktionalität. In der Realität wird ja dann auch mit dem Übertragenen
weitergearbeitet.
Bei Beispielen ist es oft so, dass eine bestimmte Technik (hier
das Sammeln von Zeichen in einem Buffer) gezeigt werden soll.
Die Sinnfrage in diesem konkreten Beispiel steht da oft im
Hintergerund. Es wäre viel zu viel Aufwand eine komplette
Command Line zu implementieren, nur weil man das Sammeln einer
kompletten Zeile demonstrieren möchte. Das würde außerdem von
der zu zeigenden Idee ablenken. Also wird das zu zeigende in
ein absolut minimalistisches Programm eingebettet, wodurch man
sich dann oft die Frage stellt: "Wozu benötige ich diese Technik
in diesem Zusammenhang". Wie gesagt: Das ist oft die falsche Frage.
Vor allem der Zusatz 'in diesem Zusammenhang' sollte nicht vorkommen.
Die Frage muß oft lauten: 'Wo könnte ich diese Technik einsetzen'
und oft ist es so, daß Beispiele diese Frage nicht direkt adressieren.