Forum: Mikrocontroller und Digitale Elektronik Quelltext: Lesestoff gesucht


von und schnell wegrennen (Gast)


Lesenswert?

für objektorientertes C musst ihr euch GTK anschauen.

https://docs.gtk.org/gobject/tutorial.html

von Walter T. (nicolas)


Lesenswert?

Progbit schrieb:
> Was Du eigentlich willst, bleibt leider unklar.

Bei knapp 200 Beiträgen vergisst man mal schnell das Eröffnungsposting. 
Deswegen paraphrasiere ich das mal wieder:

"Welchen Quelltext (in C), den ihr nicht selbst geschrieben habt, findet 
ihr absolut lesenswert? Beispiele zu µC und GUI interessieren mich 
besonders."

Christopher J. schrieb:
> Nico T. schrieb:
>> Ich finde den Source-Code von Chibios lesenswert. Er arbeitet sich mit
>> objektorientiertem C durch sein RTOS.
>
> Dem würde ich zustimmen,

Definitiv eine der besten Vorstellungen bis jetzt. Die Z80-Emulation ist 
auch interessant.

: Bearbeitet durch User
von Progbit (Gast)


Lesenswert?

Walter T. schrieb:
> Bei knapp 200 Beiträgen vergisst man mal schnell das Eröffnungsposting.
> Deswegen paraphrasiere ich das mal wieder:
>
> "Welchen Quelltext (in C), den ihr nicht selbst geschrieben habt, findet
> ihr absolut lesenswert? Beispiele zu µC und GUI interessieren mich
> besonders."
Du scheinst wirklich ein ernsthaftes Problem mit Google zu haben ?!
Eines von 1000 Beispielen:
https://github.com/shreejilucifer/Chess-In-C/blob/master/CHESSPR.C

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


Lesenswert?

Progbit schrieb:
> Du scheinst wirklich ein ernsthaftes Problem mit Google zu haben ?

Seit wann geben Suchmaschinen eine "Ich finde das lesenswert"-Bewertung 
aus?

von Progbit (Gast)


Lesenswert?

Jörg W. schrieb:
> Seit wann geben Suchmaschinen eine "Ich finde das lesenswert"-Bewertung
> aus?
wenn er das "lesenswert" nicht selbst beurteilen kann, dann sollte er 
sich ein Buch kaufen - wie jeder Anfänger.

von Walter T. (nicolas)


Lesenswert?

Progbit schrieb:
> Du scheinst wirklich ein ernsthaftes Problem mit Google zu haben ?!
> Eines von 1000 Beispielen:
> https://github.com/shreejilucifer/Chess-In-C/blob/master/CHESSPR.C

Progbit schrieb:
> wenn er das "lesenswert" nicht selbst beurteilen kann, dann sollte er
> sich ein Buch kaufen - wie jeder Anfänger.

Wow. Das fällt ja schon in die merkwürdige Kategie "nicht jeder Mensch 
besteht den Turing-Test".

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


Lesenswert?

Progbit schrieb:
> wenn er das "lesenswert" nicht selbst beurteilen kann, dann sollte er
> sich ein Buch kaufen

Es ging wohl zu keinem Zeitpunkt in diesem Thread darum, das gesamte 
Internet nach C-Quelltexten abzugrasen um diese dann zu beurteilen. Die 
Frage war ganz eindeutig nach Empfehlungen, und wenn man keine hat – 
nun, dann braucht man hier auch nichts zu schreiben.

von Progbit (Gast)


Lesenswert?

Jörg W. schrieb:
> Es ging wohl zu keinem Zeitpunkt in diesem Thread darum, das gesamte
> Internet nach C-Quelltexten abzugrasen um diese dann zu beurteilen. Die
> Frage war ganz eindeutig nach Empfehlungen, und wenn man keine hat –
> nun, dann braucht man hier auch nichts zu schreiben.
eine Empfehlung zum Quelltext habe ich doch genannt - eine von vielen!
Muß ich den Link wiederholen?
Muß da neben dem Quelltext ein Premium-Sternchen oder Rezensionen wie 
Amazon stehen, damit es eine Empfehlung ist ???!
Empfehlung zum selber lernen versteht sich!
Wer das nicht kann oder will, der soll sich ein Buch bei Amazon kaufen, 
da gibt's dann auch Empfehlungen aka Rezensionen!

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


Lesenswert?

Zumindest bietet deine Tastatur offenbar ausreichend prellende 
Interpunktionstasten. Das ist ja schon mal was.

Allerdings wohl nicht das, was Nicolas sucht.

von Progbit (Gast)


Lesenswert?

Jörg W. schrieb:
> Allerdings wohl nicht das, was Nicolas sucht.
... und genau dazu sollte er sich mal äußern!

von Roland F. (rhf)


Lesenswert?

Hallo,
Progbit schrieb:
> ... und genau dazu sollte er sich mal äußern!

hat er doch getan:

Walter T. schrieb:
> Wie lassen sich "neue" Implementierungstechniken kennenlernen? (Ich habe
> das "neue" mit Absicht in Klammern gesetzt. Eigentlich interessieren
> mich bewährte Techniken, auf die ich einfach noch nicht gestoßen bin.)
> ...
> Das Problem: Wie findet man guten Quelltext zum Lesen?
> ...
> Welchen Quelltext sollte man gelesen haben? Bitte nur Fremd- und keine
> Eigenprojekte vorschlagen, ansonsten ist eine deutliche Verzerrung zu
> erwarten. Und bitte auch auf lesbare Teile beschränken. "Der Linux
> Kernel" ist so groß, dass das keiner lesen kann. Aber überschaubare
> Teile wären super. Etwas wie "Teil X der OpenSSL2-Bibliothek ist absolut
> lesenswert, weil da die Behandlung von Puffern mustergültig gelöst
> wurde". (Bitte den letzten Satz nicht wörtlich nehmen. In Fefes Blog
> steht gerade etwas zu einem Puffer-Bug und die Suche nach der Stelle im
> Quelltext war der aktuelle Anlass zur Frage.)

und

> Ich habe die Frage mit Absicht in die Rubrik "Mikrocontroller" gestellt.
> Das ist natürlich die Plattform, die mich am meisten interessiert.

rhf

von Progbit (Gast)


Lesenswert?

Roland F. schrieb:
> hat er doch getan:
>
> Walter T. schrieb:
> ...
völlig pauschal!
Was will er denn jetzt - den Quelltext oder ein Buch mit Erläuterungen 
zu den Codezeilen ... soll ihm am Ende jemand erklären wie man besser 
programmiert? :-)
Mehr als Beispiele kann niemand bringen.
Es gibt komplette Quelltexte und wirklich jeder kann sie finden - nur 
kapieren muß man es schon selber - und für Lernanleitungen in C gibt's 
nun mal Bücher mit Codeschnipseln und manchmal auch kompletten Quelltext 
im Anhang oder auf CD.
Je nachdem was er will, muß er sich eben selbst in SDL oder GTK+ 
einarbeiten.
Ist eben nicht so einfach, denn da wo es schwierig wird schmieren viele 
Bücher ab bzw. werden schwammig.

von Walter T. (nicolas)


Lesenswert?

GTK+ und SDL sind wohl das Gegenteil von Software, die auf einem µC 
laufen. Zumindest SDL kenne ich mittlerweile ganz gut, und es ist für 
Windows und Linux recht gut, aber es hätte wenig Sinn, das auf den µC 
der Wahl zu portieren. Dort sind die Wege, Pixel und Nutzereingaben zu 
verarbeiten, deutlich anders.

Du verstehst die Frage nicht. Das ist OK. Das Leben geht weiter! Du 
bekommst keine schlechte Note, wenn Du einfach nicht antwortest.

von Theorie ist was für Weich.... (Gast)


Lesenswert?

Besser programmieren? D.h. man hat etwas und will es verbessern?

Dann ist es ein Fall fürs Refactoring. Dazu gibt es ja auch einiges 
(Bücher, youtube-Videos, Tutorial, etc..)

von Progbit (Gast)


Lesenswert?

Walter T. schrieb:
> Du verstehst die Frage nicht. Das ist OK. Das Leben geht weiter! Du
> bekommst keine schlechte Note, wenn Du einfach nicht antwortest.
Du mußt die Frage richtig formulieren und dann lautet sie:
ICH such nur komplette Quelltexte für µC - sonst nichts, wo gibt's die 
nur ?

von Walter T. (nicolas)


Lesenswert?

Ich kann Deine Verärgerung nachvollziehen. Ich habe noch eines dieser 
Benutzerkonten, wo man Threads ungestraft unkommentiert lassen kann.

Wenn ich also eine Frage nicht verstehe, oder mir eine Diskussion nicht 
gefällt, oder das Ansinnen des Thread-Eröffners mich nervt oder mir das 
einfach alles auf den Geist geht, darf ich das Browser-Fenster einfach 
so schließen, ohne etwas geschrieben zu haben, ohne dass da irgendeine 
Kostenfalle lauert.

Ich weiß nicht, ob diese Art von Kontos noch existiert, aber wenn, 
solltest Du Dir unbedingt so eines zulegen! Damals waren sie kostenlos, 
aber ich weiß nicht, wie das heute aussieht. Es macht alles viel 
entspannter. Man spart sich so viel unnötige Aufregung.

von EAF (Gast)


Lesenswert?

Walter T. schrieb:
> ....
Da hast du es dich aber fein und bequem, auf dem Mount Stupid 
eingerichtet.

von Progbit (Gast)


Lesenswert?

Walter T. schrieb:
> Es macht alles viel
> entspannter. Man spart sich so viel unnötige Aufregung.
da hast Du recht, ich habe übrigens auch kompletten Quellcode zu µC 
gefunden (war allerdings etwas schwieriger) und weil alles so entspannt 
ist, darfst Du auch mal suchen :-)

von Rainer V. (a_zip)


Lesenswert?

Auch jetzt noch sind die Beiträge, bis auf ganz wenige Ausnahmen, genau 
so unsinnig, wie es die Fragestellung provoziert. Im richtigen Leben 
hast du im Studium meinetwegen eine Literaturliste und in der Prüfung 
wird abgefragt, was man da finden kann. Später sind alle Möglichkeiten 
offen...was ganz Neues lernen, das Alte optimieren oder gar "ästhetisch" 
machen oder sich allgemein Gedanken machen über Programmierstile und wie 
sehe ich mich selbst in diesem Feld. All das macht man aber vorzugsweise 
mit sich allein aus und daher eignet sich diese Frage so nicht für die 
Öffentlichkeit...außer man liebt unendliches Geschwurbel...am Stammtisch 
wäre es immerhin nach dem fünften Bier beendet, aber so :-)
Gruß Rainer

von Walter T. (nicolas)


Lesenswert?

Rainer V. schrieb:
> Auch jetzt noch sind die Beiträge, bis auf ganz wenige Ausnahmen, genau
> so unsinnig

Leider ja.

Rainer V. schrieb:
> wie es die Fragestellung provoziert.

Zumindest scheint das ein erklecklicher Anteil hier so zu sehen.

Meine Vermutung dazu habe ich oben ja schon geschrieben: Offensichtlich 
findet kaum ein Softwerker einen Quelltext (den er nicht selbst 
geschrieben hat) von sich aus "schön" oder "lesenswert".

Im Gegensatz zu Ingenieuren, die die Ästhetik des Schaltplans auch so 
mal genießen können. Oben wurde mal angemerkt, dass das daran läge, das 
Quelltexte so kompliziert seien. Aber dann würde auch niemand mühselig 
einen fremdsprachigen Prosatext lesen. Oder 1000-Seiten-Romane. Oder gar 
Gleichungen.

Dass bestimmte Gleichungen von hinreichend qualifizierten Lesern als 
schön empfunden werden, ist ja auch kein Geheimnis.

Aber funktionale Ästhetik scheint in Software nicht zu existieren, oder 
zumindest bei den hiesigen Besuchern komplett unbekannt.

: Bearbeitet durch User
von Rainer V. (a_zip)


Lesenswert?

Walter T. schrieb:
> Dass bestimmte Gleichungen von hinreichend qualifizierten Lesern als
> schön empfunden werden, ist ja auch kein Geheimnis.

Du meinst doch eher, dass z.B. bestimmte mathematische Sätze, die einen 
durchaus komplizierten Sachverhalt auf den Punkt bringen, als elegant 
empfunden werden. Mein Lieblingsausdruck bei den Mathematikern: "Wie man 
sofort sieht..." und dann brauchst du vier Din-A-4 Seiten, um es zu 
sehen...Aber zwei CPU-Register kannst du nun mal nur addieren oder was 
die Maschine hergibt, aber was soll man daran bewundern? Nicht mal die 
berühmten alten Assemblerprogramme, die mit Opcodemanipulationen und 
Ähnlichem gearbeitet haben, hat man bewundert... höchstens fluchend 
gewürdigt...
Gruß Rainer

von Walter T. (nicolas)


Lesenswert?

Rainer V. schrieb:
> Du meinst doch eher, dass z.B. bestimmte mathematische Sätze, die einen
> durchaus komplizierten Sachverhalt auf den Punkt bringen, als elegant
> empfunden werden.

Nein, ich meine einige Gleichungen der Kontinuumsmechanik, denen eine 
gewisse Schönheit innewohnt. Aber das ist Betrachtungssache.

Rainer V. schrieb:
> Aber zwei CPU-Register kannst du nun mal nur addieren oder was
> die Maschine hergibt

Deswegen besteht der Trick ja darin, in einer Hochsprache wie C zu 
programmieren.

: Bearbeitet durch User
von Rainer V. (a_zip)


Lesenswert?

Walter T. schrieb:
> Deswegen besteht der Trick ja darin, in einer Hochsprache wie C zu
> programmieren.

Ich sehe da keinen Trick...die Hochsprache ist für mich nur eine 
Sammlung von meinetwegen Unterprogrammen, die du zusammenschustern 
kannst. Dabei setzt die jeweilige Hochsprache bestimmte Paradigmen um, 
wie Speicher optimieren und kompliziertere Sachen. Und dann kannst du in 
jeder Hochsprache so etwas wie elegant oder total holperig umsetzen. Das 
siehst du ja immer sofort an der Schelte für unsauberes Einrücken... Bei 
Gleichungen speziell in der höheren Physik ist es doch auch so, dass die 
kompakteste, also abstrakteste (falls so etwas gesagt werden darf) schön 
erscheint...letztlich stehen wir dann bei sowas wie E = m * c**2 oder 
z.B. bei den Maxwell-Gleichungen, aber das ist eben sehr subjektiv.
Gruß Rainer

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


Lesenswert?

Walter T. schrieb:
> Aber funktionale Ästhetik scheint in Software nicht zu existieren

Donald E. Knuth vielleicht?

Hab ihn aber nicht wirklich selbst gelesen.

Im Allgemeinen ist man als Softwerker glücklich, wenn die Software die 
Aufgabe erfüllt und dabei auch noch lesbar ist. Zeit für viel mehr 
Ästhetik hat man selten. Beispiele für unleserlichen Code gibt es 
ohnehin genügend, so weiß man zumindest, wie man es nicht machen sollte. 
;-)

: Bearbeitet durch Moderator
von 1 Dollar (Gast)


Lesenswert?

Jörg W. schrieb:
> Hab ihn aber nicht wirklich selbst gelesen.

Wurden seine Bücher überhaupt von irgendjemanden gelesen?

Er hat doch auch über die Algorithmen geschrieben: Von allen empfohlen - 
von keinem wirklich gelesen ;-)

Bei TeX zahlte er wohl für jeden gefunden Fehler etwas Geld (als 
Anerkennung). Vielleicht wäre dieses Programm was für den Topicstarter 
;-)

von 1 Dollar (Gast)


Lesenswert?

Walter T. schrieb:
> Meine Vermutung dazu habe ich oben ja schon geschrieben: Offensichtlich
> findet kaum ein Softwerker einen Quelltext (den er nicht selbst
> geschrieben hat) von sich aus "schön" oder "lesenswert".

Ist eigentlich überall so. Und nicht erst seit gestern.

"Ich weiß, dass ich nichts weiß".  (Sokrates)

Nur ein Dummkopf hält sein Werk für das Beste.

von 1 Dollar (Gast)


Lesenswert?

Walter T. schrieb:
> oder "lesenswert".

Das ist was anderes.

Du kannst auch fehlerhaften Code nehmen und daraus lernen. Oder nicht.

von udok (Gast)


Lesenswert?

Nachdenklicher schrieb:
> Ja, leider. Letztens Quellcode von einem unserer "alten Hasen" in die
> Finger bekommen. Über so Dinge wie ungarische Notation bei den
> Bezeichnern oder die Plazierung von Klammern kann man ja streiten. Wenn
> allerdings alleine in der main() 25 gotos stehen (ja, goto. In C.),
> sieht man die Fähigkeiten dieser Kollegen in anderem Licht.

Heute heisst das Exception...
Ist noch schlimmer als goto, weil man nicht mal das Ziel kennt.

von udok (Gast)


Lesenswert?

Walter T. schrieb:
> Meine Vermutung dazu habe ich oben ja schon geschrieben: Offensichtlich
> findet kaum ein Softwerker einen Quelltext (den er nicht selbst
> geschrieben hat) von sich aus "schön" oder "lesenswert".

Doch, guten Sourcecode gibt es immer wieder mal.
Aber du machst es dir halt sehr, sehr einfach.
Warum schaust du nicht einfach mal ein paar bekannte
OS Projekte an, die dich von der Thematik her ansprechen?

Python schaut gut aus, Perl genauso.  RLab, Octave.
Win32++, 4.3 BSD, FreeBSD, calc (Noll), lcc-compiler, mctl (Mity),
Notepad2, PellesC, ReactOS, Wine, Stefan Kanthak libc, Tiny-C (Bellard),
Rust, asmlib (Agner Fog), Windows ATL/WTL, MSCRT Source, SFML,
godot (Game Engine), Windows Programming Petzold (Beispiele Buch),
WinSpy++, ProcessHacker2, UltraDefrag, Scilab, Lua, x64dbg,
dragon4 (Ryan Jacket) Illumis (OpenSolaris), Notepad++, glibc,
Systemprogramming Beispiele (Hart), Numerical Recipies, WinVi, HexEdit 
(Catch22), Julia, MS Word 1.1a, Berkeley Spice2, Qucs, SuperSpice,
awk (Kernighan), Windows 7 Classic Samples,
Facebook folly Libs, etc, etc, etc.

Du wirst dann schnell sehen, wie der Sourcecode strukturiert ist,
und ob du damit klarkommst.  Aber von dem Gedanken, dass du da mal
kurz reinschaust, und die Erleuchtung hast, kannst du dich gleich
verabschieden. Guter Sourcecode ist viel Arbeit, auch wenn man ihn
nur verstehen will.

Was ist guter Sourcecode (persöhnliche Rangliste)?
* tut was er soll
* ist Anwenderfreundlich
* ist getestet, kommt auch mit Ausnahmefällen klar
* ist (halbwegs) effizient und resourcenschonend
* gute Datenstrukturen und Algorithmen
* lässt sich auch noch in 10 Jahren compilieren, bzw. auch mit
   älteren Compilern heute compilieren.
* passt ins Ecosystem rein
* ist gut dokumentiert und damit für Quereinsteiger
   nachvollziehbar

von Christopher J. (christopher_j23)


Lesenswert?

udok schrieb:
> Was ist guter Sourcecode (persöhnliche Rangliste)?
> […]

Dieser Rangliste würde ich mich direkt anschließen.

Da ja auch konkrete Beispiele und explizit "embedded" und "GUI" gefragt 
waren:
https://github.com/lvgl/lvgl

von Walter T. (nicolas)


Lesenswert?

udok schrieb:
> Aber du machst es dir halt sehr, sehr einfach.

Du meinst nach guten Texten zu fragen, anstatt einfach alle Texte der 
Welt zu lesen und im Nachhinein zu entscheiden, welche ich gut finde?

Unterm Strich stimmt das. Für letzteres fehlt mir die Zeit und die Lust. 
Man möge mir verzeihen. Der Durchschnittmensch hat eben nur knapp 80 
Jahre Lebenszeit.

Christopher J. schrieb:
> https://github.com/lvgl/lvgl

LVGL schaue ich mir heute abend mal an.

: Bearbeitet durch User
von Progbit (Gast)


Lesenswert?

Also mir hat der Thread aufgrund einiger Links schon geholfen - vielen 
Dank dafür an die wenigen produktiven Teilnehmer dieses Threads.
Zu dem TE und seiner Erwartungshaltung sage ich lieber nichts ... da 
kann man eigentlich nur noch den Kopf schütteln.

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


Lesenswert?

Christopher J. schrieb:
> Da ja auch konkrete Beispiele und explizit "embedded" und "GUI" gefragt
> waren:
> https://github.com/lvgl/lvgl

Sieht interessant aus, wenngleich ich nicht so der Freund davon wäre, 
sowas wie das printf-Fahrrad nochmal zu erfinden.

von Thomas W. (Gast)


Lesenswert?

1 Dollar schrieb:
> Jörg W. schrieb:
>> Hab ihn aber nicht wirklich selbst gelesen.
>
> Wurden seine Bücher überhaupt von irgendjemanden gelesen?

Das sind keine Romane, sondern Nachschlagewerke oder Lehrbuecher. Ich 
brauchte mal Randomnumbers und Arithmetik. Und die Information 
Structures (Array, Lists, Tree, Stack, Queue u.s.w.) sollte man so oder 
so kennen.

Fuer den "normalen" Leser ist die Mathematik in Knuths Buechern 
natuerlich eine Herausforderung. Das ist aber nichts, was sich nicht 
durch Durcharbeiten von Analysis I - III und Lineare Algebra I - III 
loesen laesst (Knuth hat das Problem auch erkannt, er hat einen kleinen 
Refresher geschrieben: L. Graham, Donald E. Knuth, Oren Patashnik, 
Concrete mathematics: a foundation for computer science, 657 p., 
Addison-Wesley).

Das sind aber akademische Werke, der Nutzen bei der taeglichen 
Programmierung ist beschraenkt (bei mir ging es um Numerik bei Pre-IEEE 
754-Zahlen, Verteilung von Zufallszahlen die ueberhaupt nicht zufaellig 
waren. Lang ist es her).

Walter T. schrieb:
> Du meinst nach guten Texten zu fragen, anstatt einfach alle Texte der
> Welt zu lesen und im Nachhinein zu entscheiden, welche ich gut finde?

> Unterm Strich stimmt das. Für letzteres fehlt mir die Zeit und die Lust.
> Man möge mir verzeihen. Der Durchschnittmensch hat eben nur knapp 80
> Jahre Lebenszeit.

Das ist das Privileg der Erfahrung: Wenn Du einen Text gelesen hast (und 
es ist Muell), brauchst Du keine Texte mehr von diesem Autor lesen. Der 
Umkehrschluss gilt auch. Und so baust Du Dir Deine  eigene Bibliothek 
auf. Einige Jahre spaeter kannst Du Dir Deine Anfangsfrage beantworten 
:-)

C'est tout pour aujourd'hui

Th.

von Walter T. (nicolas)


Lesenswert?

Thomas W. schrieb:
> Das ist das Privileg der Erfahrung: Wenn Du einen Text gelesen hast (und
> es ist Muell), brauchst Du keine Texte mehr von diesem Autor lesen.

Autoren haben den Vorteil (oder je nach Sichtweise den Nachteil), dass 
jedes verlagsmäßig veröffentliche Buch ein Lektorat hinter sich hat. Was 
wiederum bedeutet, dass viele Bücher dankenswerterweise erst gar nicht 
veröffentlicht werden. Und trotzdem gibt es jede Menge Schund.

Und bei Quelltext fehlt sogar dieser Selektionsmechanismus.

von udok (Gast)


Lesenswert?

Du stellst dich ja an, wie der erste Mensch.

Keiner schaut sich jeden Quellcode an, oder liest jedes Buch.
Da muss dir schon wirklich sehr langweilig sein.

Sondern man hat ein Problem oder Interesse, und dann schaut
man, was es da schon gibt, und wie es andere gemacht haben.

Damit hat man den Suchraum schon mal um > 99.9% reduziert.
Dann schaut man, was davon brauchbar ist.

Meist bleiben dann ein oder zwei Projekte übrig.
Die wirklich interssanten Sachen sind oft closed-source,
da kann man aber versuchen, zumindest das Prinzip rauszufinden.

von Walter T. (nicolas)


Lesenswert?

udok schrieb:
> Keiner schaut sich jeden Quellcode an, oder liest jedes Buch.
> Da muss dir schon wirklich sehr langweilig sein.

Ich lese Bücher hauptsächlich auf Empfehlung von Freunden und Bekannten. 
Manche auch, weil ich eine interessante Rezension darüber gelesen habe.

Progbit schrieb:
> Zu dem TE und seiner Erwartungshaltung sage ich lieber nichts

Meine Erwartungshaltung ist, dass etwa 5% aller Forenbeiträge hilfreich 
sind. Bis jetzt ist die Quote ganz gut erfüllt.

von Rainer V. (a_zip)


Lesenswert?

udok schrieb:

> Sondern man hat ein Problem oder Interesse, und dann schaut
> man, was es da schon gibt, und wie es andere gemacht haben.

Genau so sieht die Praxis aus. Und ich selbst kann mich ehrlich gesagt 
nicht daran erinnern, dass mir Freunde oder Arbeitskollegen jemals 
Fachaufsätze oder gar -Bücher mal eben so zum schmökern genannt haben. 
Da schmöker ich doch grundsätzlich in anderen Genres. Anders ist das 
natürlich, wenn man an einem Problem arbeitet...das muß ja auch nicht 
nur Software sein! Da kann der Kollege schon mal - auch überraschend - 
den "absoluten Knaller" aus dem Ärmel ziehen.
Gruß Rainer

von Christopher J. (christopher_j23)


Lesenswert?

Jörg W. schrieb:
> Sieht interessant aus, wenngleich ich nicht so der Freund davon wäre,
> sowas wie das printf-Fahrrad nochmal zu erfinden.

Naja, die newlib ist nicht gerade dafür bekannt besonders schlank zu 
sein (jedenfalls nicht im "Mikrocontroller-Maßstab") und die newlib-nano 
ist bekannterweise nicht threadsafe/reentrant. Darüber hinaus brauchen 
beide für printf malloc und das printf von LVGL eben nicht. Unter all 
diesen Gesichtspunkten finde ich es durchaus in Ordnung das 
"printf-Fahrrad nochmal zu erfinden" ;)
ChibiOS kommt (vermutlich aus genau den gleichen Gründen) ebenfalls mit 
einem eigenen printf daher.

Die printf-Implementierung von LVGL stammt übrigens ursprünglich von 
hier:
https://github.com/mpaland/printf/

Das erfüllt für sich eigentlich schon das Kriterium "lesenswerter Code" 
oder zumindest sollte es dem ein oder anderen von Nutzen sein.

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


Lesenswert?

Christopher J. schrieb:
> Darüber hinaus brauchen beide für printf malloc

Sicher, dass die Implementierung selbst das braucht? Ich hätte jetzt 
drauf getippt, dass es nur fürs Buffering nötig ist, aber das kann man 
mit setvbuf() beeinflussen (inklusive eines eigenen Puffers).

Ich müsste mir die Details allerdings ansehen.

Allerdings gehöre ich ohnehin zu den Leuten, die keine malloc-Phobie 
haben. Schließlich war ein eigenes malloc() mein Einstieg in die 
avr-libc-Entwicklung …

von Rainer V. (a_zip)


Lesenswert?

Lieber Walter... Vorschlag zur Güte. Du suchst dir ein "richtig gutes" ( 
und nach Horst Evers muß es ein richtig, richtig gutes Problem sein) und 
das programmierst du dann und dann stellst du das ins Netz und wartest 
du...z.B., ob der Code nur scheisse ist....oder ob er wirklich richtig 
scheisse ist oder ob es irgendjemand überhaupt interessiert...und dann 
verbesserst du deinen Code... verstanden?!
Gruß Rainer

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


Lesenswert?

Jörg W. schrieb:
>> Darüber hinaus brauchen beide für printf malloc
>
> Sicher, dass die Implementierung selbst das braucht?

Habe mal geschaut. Es wird für drei Fälle gebraucht:

* as*printf - logisch, denn das verlangt ja explizit malloc
* _WANT_IO_C99_FORMATS feature aktiv (%a / %A formate)
* _MB_CAPABLE feature und "zu langes" Ergebnis für %S oder *ll[dxiou]

Wenn jemand partout kein malloc haben möchte, kann er ein malloc selbst 
liefern, das immer NULL zurück gibt (bzw. ein _sbrk), dann gibt's halt 
einen Fehler, wenn so eine Bedingung triggert.

Back to topic: der Code für stdio in der newlib ist BSD code, und man 
kann ihn zumindest lesen. ;-) Anders als GNU arbeitet BSD mit 8er TABs 
und entsprechend einem 8er Einrückungsniveau. Damit das alles nicht zu 
breit wird (der originale Code passte auf ein 80x24 Terminal), muss man 
also schon ganz gut strukturieren.

von Walter T. (nicolas)


Lesenswert?

Rainer V. schrieb:
> Vorschlag zur Güte [...] und dann stellst du das ins Netz und wartest
> du...z.B., ob der Code nur scheisse ist

Die Logik dahinter verstehe ich nicht. Meine Frage: "Wo finde ich guten 
Quelltext?" und die Antwort ist "Programmier etwas und lass andere 
prüfen, ob das gut ist!"

Damit wird unterstellt, dass es keinen guten lesenswerten Quelltext 
gibt, wenn ich den erst schreiben muss.

1 Dollar schrieb:
> Du kannst auch fehlerhaften Code nehmen und daraus lernen.

Schlechten Quelltext habe ich schon viel gesehen. Das Wissen, wie ein 
schlechter Quelltext aussieht hilft sehr wenig dabei, guten zu machen.

Am gleichen Problem ist meine Karriere als bildender Künstler schon im 
stolzen Alter von 6 Jahren gescheitert. Der Hinweis, dass meine Bilder 
schlecht aussehen, ist völlig wertlos, wenn man keine guten Bilder zu 
Gesicht bekommt (und vielleicht noch den Hinweis, warum sie gut sind, 
aber das wäre hier zuviel verlangt). Tatsächlich habe ich gute Bilder 
mit Wachsmalstiften erst viele, viele Jahre später zum ersten Mal 
gesehen. Aber da war ich schon fast mit dem Studium fertig und eine 
Kehrtwende zur Kunst kam nicht mehr in Frage.

Jörg W. schrieb:
> der Code für stdio in der newlib ist BSD code, und man
> kann ihn zumindest lesen. ;-)

Das ist für printf()-ähnliche Funktionen schon eine Leistung. Danke, 
schaue ich mir mal an!


Zur Erinnerung das Thread-Thema:
"Welchen Quelltext (in C), den ihr nicht selbst geschrieben habt, findet
ihr absolut lesenswert? Beispiele zu µC und GUI interessieren mich
besonders."

: Bearbeitet durch User
von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Walter T. schrieb:
> Zur Erinnerung das Thread-Thema:
> "Welchen Quelltext (in C), den ihr nicht selbst geschrieben habt, findet
> ihr absolut lesenswert? Beispiele zu µC und GUI interessieren mich
> besonders."

Meinst du nicht du wurdest über eine Woche lang genug bespaßt? Eine Zeit 
in der du praktisch alle Vorschläge abgelehnt hast weil dir nichts gut 
genug ist, denn du kannst und weißt eigentlich schon alles.

von Walter T. (nicolas)


Lesenswert?

Hannes J. schrieb:
> Meinst du nicht du wurdest über eine Woche lang genug bespaßt?

Ich habe 5 echte Vorschläge auf der Liste. (Dazu auf der Haben-Seite 
noch ein paar kurze Off-Topic-Diskussionen über free(),  Sprungtabellen 
bei switch-case, ein paar Idiome, die auch nicht uninteressant sind.)

Hannes J. schrieb:
> Eine Zeit
> in der du praktisch alle Vorschläge abgelehnt

Von den echten 5 Vorschlägen waren drei oder vier gut. Das ist nicht 
gerade "alles abgelehnt".

Mein weiter vorn abgeschätzer Wirkungsgrad von 5% wird also diesmal 
nicht ganz erreicht. Da muss man also nach dem Prinzip "Masse statt 
Klasse" arbeiten.

Zur Erinnerung das Thread-Thema:
"Welchen Quelltext (in C), den ihr nicht selbst geschrieben habt, findet
ihr absolut lesenswert? Beispiele zu µC und GUI interessieren mich
besonders."

: Bearbeitet durch User
Beitrag #6808710 wurde von einem Moderator gelöscht.
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Walter T. schrieb:
> Mein weiter vorn abgeschätzer Wirkungsgrad von 5% wird also diesmal
> nicht ganz erreicht.

Naja, viel mehr hätte ich bei einer so allgemeinen Frage jetzt auch 
nicht wirklich erwartet.

GUI auf Controller ist sowieso eher ein Randgebiet. Wenn ich heutzutage 
eine GUI da benutzen möchte, würde ich zu irgendwas Fertigem greifen wie 
Qt und dann eine entsprechend leistungsfähige Hardware benutzen, 
typischerweise dann auch eher mit einem OS drunter. Damit unterscheidet 
sich die Software dann nur hinsichtlich der maximalen Bildgröße von PCs.

von Rainer V. (a_zip)


Lesenswert?

Walter T. schrieb:
> Schlechten Quelltext habe ich schon viel gesehen. Das Wissen, wie ein
> schlechter Quelltext aussieht hilft sehr wenig dabei, guten zu machen.

Mann, wir sind hier nicht bei der Maus!!! Ich habe es schon mal gesagt 
und ich wiederhole es jetzt noch mal ausdrücklich. Deine Frage ist 
Blödsinn!!! Glaube es oder nicht...du hast ja genug Leute hier, die dich 
mit "gutem Code" quasi zuscheissen. Damit mußt du leben. Ist für mich 
auch kein Wunder...nur du wunderst dich...
Rainer

von Walter T. (nicolas)


Lesenswert?

Jörg W. schrieb:
> Naja, viel mehr hätte ich bei einer so allgemeinen Frage jetzt auch
> nicht wirklich erwartet.

Ich auch nicht. Es gibt eben Vorgänge, wo man über 5% Wirkungsgrad froh 
ist.

Jörg W. schrieb:
> GUI auf Controller ist sowieso eher ein Randgebiet.

Erstaunlich, oder? Immerhin hat so ein BluePill eine Rechenleistung, die 
die meines C128D mit Desktop-GUI übertrifft. (Es hat keine Grafik-Chips 
und weniger RAM, deswegen relativiert sich das etwas. Aber für eine 
begrenzte Mensch-Maschine-Schnittstelle reicht es locker.) Und der 
komfortabel große Speicher hat ja auch irgendeinen Verwendungszweck. Die 
wenigsten werden wohl Systeme mit 10000 Zustandsvariablen haben.

Jörg W. schrieb:
> Wenn ich heutzutage
> eine GUI da benutzen möchte, würde ich zu irgendwas Fertigem greifen wie
> Qt und dann eine entsprechend leistungsfähige Hardware benutzen

Für ein kommerzielles Produkt, bei dem Entwicklungszeit eine Rolle 
spielt, sicher.

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


Lesenswert?

Walter T. schrieb:

> Jörg W. schrieb:
>> GUI auf Controller ist sowieso eher ein Randgebiet.
>
> Erstaunlich, oder? Immerhin hat so ein BluePill eine Rechenleistung, die
> die meines C128D mit Desktop-GUI übertrifft.

Ja, aber die Entwicklung einer brauchbaren GUI-Bibliothek schluckt 
Mannjahre. Da greift man lieber auf was Fertiges zurück.

>> Wenn ich heutzutage
>> eine GUI da benutzen möchte, würde ich zu irgendwas Fertigem greifen wie
>> Qt und dann eine entsprechend leistungsfähige Hardware benutzen
>
> Für ein kommerzielles Produkt, bei dem Entwicklungszeit eine Rolle
> spielt, sicher.

Kommerziell lohnt es sich u.U., Aufwand in so eine Entwicklung zu 
stecken, um mit minimaler Hardware auszukommen – wenn man erwarten kann, 
dass hinreichend große Stückzahlen verkaufbar sind, sodass sich der hohe 
Entwicklungsaufwand lohnt.

Privat ist der Preisunterschied zwischen so eine MCU-Demoboard und einem 
kleinen Single-Board-Computer, auf dem ich dann Linux, NetBSD oder was 
auch immer laufen lassen kann, zu gering, als dass ich mir den 
Softwareaufwand ohne Not antun würde.

von Walter T. (nicolas)


Lesenswert?

Jörg W. schrieb:
> Ja, aber die Entwicklung einer brauchbaren GUI-Bibliothek schluckt
> Mannjahre. Da greift man lieber auf was Fertiges zurück.

Wem sagst Du das.

Jörg W. schrieb:
> Privat ist der Preisunterschied zwischen so eine MCU-Demoboard und einem
> kleinen Single-Board-Computer, auf dem ich dann Linux, NetBSD oder was
> auch immer laufen lassen kann, zu gering, als dass ich mir den
> Softwareaufwand ohne Not antun würde.

Privat messe ich die Qualität einer GUI hauptsächlich an der 
Reiz-Reaktions-Kompatibilität, und dazu gehört auch die Reaktionszeit. 
Bei letzterer können die GHz-Boliden selten mit dem µC mithalten. Warum 
auch immer.

Aber in der Hinsicht bin ich wohl auch ein Sonderling.

von Markus (Gast)


Lesenswert?

>Mann, wir sind hier nicht bei der Maus!!!
Wenn dich die Frage nicht interessiert, halt die Klappe.

> Ich habe es schon mal gesagt
>und ich wiederhole es jetzt noch mal ausdrücklich. Deine Frage ist
>Blödsinn!!! Glaube es oder nicht...du hast ja genug Leute hier, die dich
>mit "gutem Code" quasi zuscheissen. Damit mußt du leben. Ist für mich
>auch kein Wunder...nur du wunderst dich...
>Rainer

Die Frage von Walter ist klar formuliert und durchaus berechtigt.
Man kann ja auch jemand nach einem guten Buch fragen wenn man Leute auf 
der gleichen Wellenlänge hat, bekommt man auch gute Tipps.

Was wieder einmal typisch für dieses Forum ist, dass ständig über 
irgendwas nur nicht über die Sache diskutiert wird. Anscheinend ist es 
für die meisten hier nicht möglich, auf den Punkt zu kommen oder 
überhaupt auch nur die Fragestellung zu begreifen.

Um mal diesen dummen Kreis zu unterbrechen, werfe ich hier mal das 
STM32Duino Repository in die Waagschale:

https://github.com/stm32duino/Arduino_Core_STM32

Das interessante hier ist die Verzeichnisstrukur. Einerseits sind die 
vielen unterstützen Prozessoren im Variantenverzeichnis organisiert und 
andererseits gibt es das Library Verzeichnis.
Sehr gut ist, dass es bei den Libraries immer ein Verzeichnis "examples" 
gibt. Diese sind kurz gehalten, so dass man sie leicht verstehen kann 
und schnell auch kompilieren und ausprobieren kann. Das ist ganz im 
Gegensatz zu den Beispielen wie sie bei vielen anderen 
Controllersystemen gemacht sind. Dort sind sie meistens völlig überladen 
und kaum kompilierbar.

Hier mal als Beispiel die EEPROM Library:
https://github.com/stm32duino/Arduino_Core_STM32/tree/master/libraries/EEPROM/examples

von Rainer V. (a_zip)


Lesenswert?

Walter T. schrieb:
> Welchen Quelltext sollte man gelesen haben? Bitte nur Fremd- und keine
> Eigenprojekte vorschlagen, ansonsten ist eine deutliche Verzerrung zu
> erwarten. Und bitte auch auf lesbare Teile beschränken.

Nur noch mal als Erinnerung...steht ja noch viel mehr da...

Markus schrieb:
> Um mal diesen dummen Kreis zu unterbrechen, werfe ich hier mal das
> STM32Duino Repository in die Waagschale:

und? Ich sehe den TO im Kreis hüpfen und jubilieren...und jetzt?
Rainer

von 900ss (900ss)


Lesenswert?

udok schrieb:
> Was ist guter Sourcecode (persöhnliche Rangliste)?

Ich habe vor ein paar Jahren mit dem kommerziellen Reliance (Flash Disc 
Filesystem) ein Projekt machen dürfen. Ich war von dem Source wirklich 
sehr beeindruckt und erfüllte meines Erachtens die erwähnte Rangliste 
ausnahmslos. Unten der Link zu der OS Variante.

https://github.com/datalightinc/reliance-edge

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


Lesenswert?

900ss D. schrieb:
> Ich war von dem Source wirklich sehr beeindruckt und erfüllte meines
> Erachtens die erwähnte Rangliste ausnahmslos.

Ich würde mich stark an der "ungarischen" Notation stören. Aber 
strukturiert scheint er gut zu sein.

von 900ss (900ss)


Lesenswert?

Jörg W. schrieb:
> 900ss D. schrieb:
>> Ich war von dem Source wirklich sehr beeindruckt und erfüllte meines
>> Erachtens die erwähnte Rangliste ausnahmslos.
>
> Ich würde mich stark an der "ungarischen" Notation stören. Aber
> strukturiert scheint er gut zu sein.

Die ungarische Notation ist "Geschmackssache" finde ich. Ich kann 
soetwas gut filtern im Kopf. Ich sehe das nicht ;) Auch Quellcode von 
anderen Leuten habe ich selten Probleme mit solange es nicht wirklich 
Kraut&Rüben ist. Auch sinnvoll eingesetzte "goto" sind ok, finde ich.

Die Struktur ist eine der besten mit, die ich je gesehen habe. Auch die 
Kommentierung des Source ist wirklich beispielhaft gut. Und auch sehr 
lesbar geschrieben. Und funktionieren tut das Zeug auch noch ;)

Diese OS Variante hab ich allerdings nie ausprobiert. Aber nur diese 
kann ich hier verlinken.

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


Lesenswert?

900ss D. schrieb:
> Die ungarische Notation ist "Geschmackssache" finde ich. Ich kann
> soetwas gut filtern im Kopf.

Ich nicht. Als ich zum ersten Mal Variablen wie lpFoo gesehen habe, habe 
ich mich gefragt, was sie damit wohl drucken wollen. ;-) ("lp" = 
traditionelle Abkürzung für "line printer")

von Christopher J. (christopher_j23)


Lesenswert?

Jörg W. schrieb:
> Jörg W. schrieb:
>
>>> Darüber hinaus brauchen beide für printf malloc
>>
>> Sicher, dass die Implementierung selbst das braucht?
>
> Habe mal geschaut. Es wird für drei Fälle gebraucht:
>
> as*printf - logisch, denn das verlangt ja explizit malloc
> _WANT_IO_C99_FORMATS feature aktiv (%a / %A formate)
> _MB_CAPABLE feature und "zu langes" Ergebnis für %S oder *ll[dxiou]

Ich muss gestehen, dass ich in dem Source-Code der newlib da nicht 
richtig durchgestiegen bin, obwohl ich mir das auch angeschaut hatte. 
Eine malloc-Phobie habe ich jedenfalls nicht aber trotzdem Danke, dass 
du das klargestellt hast.

Jörg W. schrieb:
> 900ss D. schrieb:
>
>> Ich war von dem Source wirklich sehr beeindruckt und erfüllte meines
>> Erachtens die erwähnte Rangliste ausnahmslos.
>
> Ich würde mich stark an der "ungarischen" Notation stören. Aber
> strukturiert scheint er gut zu sein.

Ich bin auch absolut kein Freund der ungarischen Notation aber gerade 
wenn es um eine Bibliothek geht, würde ich (als Anwender) eine gute 
Strukturierung jederzeit als wichtiger einstufen, als das der Quelltext 
nach meinem "Geschmack" geschrieben ist, denn Geschmack ist ja 
bekanntlich Geschmackssache.

In diesem Sinne gibt es jedoch ein paar Fälle mit denen ich so überhaupt 
nicht klar komme, etwa wenn jemand Tabs und Spaces mischt und dann je 
nach Lust und Laune mal ein Tab und mal zwei Leerzeichen in die Tastatur 
hämmert, wobei dann je nach Editoreinstellung der Quelltext nur noch wie 
"zerrissene Hosen" aussieht. Es heißt ja immer "das Auge isst mit" und 
in diesem Sinne wäre das dann so etwas wie Wiener Schnitzel mit 
Spaghetti. Es funktioniert zwar irgendwie aber schön ist es nicht.

PS:
Mir ist gerade noch so ein OS-Projekt eingefallen, was ich durchaus sehr 
schätze, was aber ebenfalls in ungarischer Notation verfasst ist und 
zwar Freemodbus: https://github.com/cwalter-at/freemodbus
Auch da würde ich sagen Struktur und Dokumentation top, ungarische 
Notation, naja...

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


Lesenswert?

Christopher J. schrieb:
> Ich bin auch absolut kein Freund der ungarischen Notation aber gerade
> wenn es um eine Bibliothek geht, würde ich (als Anwender) eine gute
> Strukturierung jederzeit als wichtiger einstufen, als das der Quelltext
> nach meinem "Geschmack" geschrieben ist, denn Geschmack ist ja
> bekanntlich Geschmackssache.

Dafür würde mich das auch nicht weiter interessieren.

Allerdings ging es ja im Thread vor allem um lesenswerten Sourcecode, 
und da finde ich zwar die Strukturierung gut, aber die ungarische 
Notation gruselig.

> In diesem Sinne gibt es jedoch ein paar Fälle mit denen ich so überhaupt
> nicht klar komme, etwa wenn jemand Tabs und Spaces mischt

Ich mag das auch nicht, aber ich habe Opensource-Projekte, bei denen so 
viele Leute im Code herum geschrieben haben, dass genau das bei einigen 
Dateien der Fall ist. Ich selbst lass mir im Editor die TABs 
hervorheben, um das zu vermeiden (und trailing whitespace wird knallrot 
dargestellt), aber ansonsten bemühe ich mich da in erster Linie um 
Konsistenz: hat die aktuelle Datei TABs, benutze ich sie auch, ist sie 
mit Spaces eingerückt, mache ich es auch so.

Per Rundumschlag das alles zu ändern, ist anders Mist, weil es spätere 
Sourcecode-Vergleiche über Versionen extrem erschwert. Diese Lektion 
hatte FreeBSD mal in seiner Anfangszeit gelernt …

Insofern kann ich Walter AVRDUDE als "wie man es nicht machen sollte, es 
aber trotzdem passiert" (nicht) empfehlen. :-)

: Bearbeitet durch Moderator
Beitrag #6809414 wurde von einem Moderator gelöscht.
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Christopher J. schrieb:
> Auch da würde ich sagen Struktur und Dokumentation top, ungarische
> Notation, naja...

Nicht nur das, auch die Benutzung von whitespace ist arg unüblich.

Normalerweise wird nach einer öffnenden oder vor einer schließenden 
Klammer kein Leerzeichen geschrieben. (Macht man im normalen Text ja 
auch nicht.)

von Rainer V. (a_zip)


Lesenswert?

..also ist doch wirklich Mumpitz. Vor allem auch, weil sich der TO gar 
nicht mehr meldet. Nun können die restlichen Beteiligten eine neue 
Wohngruppe aufmachen und gut is...und ob jetzt gerade auch noch eine 
Diskussion zur polnischen Notation sein muß, das wage ich zu bezweifeln, 
bringt aber Wind in die verschiedenen Fraktionen! (Diese polnische 
Notation hat noch niemand wirklich gemocht...und irgendwann wird das 
auch sicher ausgerottet sein...)
Gruß Rainer

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


Lesenswert?

Rainer V. schrieb:
> Diese polnische Notation hat noch niemand wirklich gemocht...und
> irgendwann wird das auch sicher ausgerottet sein.

Charles Simonyi wird sie wohl mal gemocht haben. ;-)

: Bearbeitet durch Moderator
von EAF (Gast)


Lesenswert?

Rainer V. schrieb:
> polnischen Notation

Selbst die umgekehrte polnische Notation hat(te) einen gewissen 
Beliebtheitsgrad.

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


Lesenswert?

EAF schrieb:
> Selbst die umgekehrte polnische Notation hat(te) einen gewissen
> Beliebtheitsgrad.

Deutlich mehr als die ungarische. ;-)

Geht auch auf Mikrocontrollern: FORTH.  Aber GUI-Programmierung damit 
habe ich noch nicht gesehen.

: Bearbeitet durch Moderator
von Rainer V. (a_zip)


Lesenswert?

jau...ha ha..

von Markus (Gast)


Lesenswert?

Der Wikipedia Artikel zur ungarischen Notation ist super:

>Durch diese Doppeldeutigkeit existieren zwei Strömungen der Ungarischen 
>Notation, das Apps Hungarian, welches die echte Notation im Sinne Simonyis >ist, 
und das Systems Hungarian, welches durch die Fehlinterpretation der 
>Microsoftschen Betriebssystemabteilung entstanden ist. Letzteres ist für >den 
schlechten Ruf der Konvention verantwortlich, weil die Benennung einer >Variablen 
nach dem Datentyp wenig zum Verständnis des Inhalts beiträgt und >trotzdem viel 
Aufwand verursacht.

https://de.wikipedia.org/wiki/Ungarische_Notation

von Christopher J. (christopher_j23)


Lesenswert?

Jörg W. schrieb:
> Ich selbst lass mir im Editor die TABs hervorheben, um das zu vermeiden
> (und trailing whitespace wird knallrot dargestellt), aber ansonsten
> bemühe ich mich da in erster Linie um Konsistenz: hat die aktuelle Datei
> TABs, benutze ich sie auch, ist sie mit Spaces eingerückt, mache ich es
> auch so.

Konsistenz ist mir persönlich auch am wichtigsten. Von daher ist das für 
mich auch direkt ein Qualitätsmerkmal, wenn bei OS-Software nicht nur 
ein Stil vorgegeben wird, sondern auch auf irgendeine Art und Weise 
umgesetzt wird. Ob das dann ein Perl-Script ist (Linux-Kernel), ein 
Shell-Script (freemodbus), clangtidy genutzt wird (PX4) oder im 
einfachsten Fall auch einfach nur eine .editorconfig genutzt wird ist 
mir dann erstmal egal. Gerade letzteres wird von jedem halbwegs 
brauchbaren Editor unterstützt und hat sonst keine weiteren 
Abhängigkeiten.

von Stefan F. (Gast)


Lesenswert?

Wenn eine Variable die Temperatur angibt, dann soll sie meiner Meinung 
nach auch gefälligst "temperatur" heissen. Nicht fTemperatur oder so. 
Der konkrete Typ interessiert mich beim lesen des Quelltextes nur 
sekundär (wenn überhaupt) und dann kann ich bei der Definition schauen 
oder in einer anständigen IDE drauf zeigen um ihn angezeigt zu bekommen.

Gleiches gilt für Funktionsnamen:
> ftemperatur=fTemperaturToFahrenheit(fMesswert);

sieht für mich ziemlich Gaga aus. Ich bevorzuge:

> temperatur=toFahrenheit(messwert);

Sprechende Namen: ja, aber nicht mit unnötigem Schnickschnack garniert.

Selbst mit strengem Regelwerk hat jeder Programmierer mehr oder weniger 
seinen eigenen Stil. Da kann man fordern so viel man will, ein 
einheitliches Bild kriegt man nur hin, wenn man ganz alleine arbeitet. 
Professionelle Programmierer müssen sich mit unterschiedlichen Stilen 
arrangieren, weil Menschen, Projekte und Regeln im Laufe der Zeit 
wechseln. Wer alte Programme pflegt, weis das.

Je länger ich im Business bin, umso stärker wächst bei mir die 
Erkenntnis, dass schriftliche Regelwerke zum Programmierstil weitgehend 
sinnlos sind. Man kann sie in Form eines Buches gerne mal als Empfehlung 
lesen, aber macht daraus bitte kein Unternehmens-Gesetz.

Es genügt schon, mit den Kollegen offen über Bedürfnisse zu reden, damit 
man die ganz schlimmen Fauxpässe gemeinsam vermeidet. Wer viel mehr 
verlangt, ist in meinen Augen kein guter Programmierer.

von udok (Gast)


Lesenswert?

Jörg W. schrieb:
>> Diese polnische Notation hat noch niemand wirklich gemocht...und
>> irgendwann wird das auch sicher ausgerottet sein.
>
> Charles Simonyi wird sie wohl mal gemocht haben. ;-)

Ich mag sie auch :-)

Vorallem wenn sie konsequent durchgezogen ist, ist sie
eine Wohltat im Vergleich zu so manchem modernen C++ Code, in dem es
vor "auto" nur so wimmelt, und man gar keine Change hat, auf den
Datentyp draufzukommen. Da ist perl ja oft noch lesbarer.

Ein gutes Beispiel ist die Microsoft Foundation Class MFC, und
der Source Code von Windows NT.

von Stefan F. (Gast)


Lesenswert?

udok schrieb:
> eine Wohltat im Vergleich zu so manchem modernen C++ Code, in dem es
> vor "auto" nur so wimmelt

Dieses Schlüsselwort habe ich noch nie verwendet. Ist wohl neu, muss ich 
mir mal angucken.

Allerdings wurde gerade in Java das scheinbar ähnliche "var" eingeführt 
welches ich manchmal gerne nutze. Beispiel:
1
Map<String,Map<String,User>> groups = db.getGroupedUsers(); // keys= groupName, userName
2
for (var group : groups.entrySet())
3
{
4
   for (var user : group.entrySet())
5
   {
6
        ...
7
   }
8
}

Hier ist offensichtlich, welchen Datentyp "var" hat.

Die vollstänsig ausgeschriebene Version bringt mir keinen 
Erkenntnisgewinn, ist aber wegen der langen Zeilen schwerer lesabr:
1
Map<String,Map<String,User>> groups = db.getGroupedUsers(); // keys= groupName, userName
2
for (Map.Entry<String,Map<String,User>> group : groups.entrySet())
3
{
4
   for (Map.Entry<String,User> user : group.entrySet())
5
   {
6
        ...
7
   }
8
}

Übertrieben fände ich jedoch dies:
1
var groups = db.getGroupedUsers(); // keys= groupName, userName
2
for (var group : groups.entrySet())
3
{
4
   for (var user : group.entrySet())
5
   {
6
        ...
7
   }
8
}

Weil man überhaupt nicht mehr sehen kann, mit welchen Datentypen man 
eigentlich hantiert. Bei einfachen Typen braucht man das auch nicht, 
aber hier schon, finde ich.

Meintest du das?

von Walter T. (nicolas)


Lesenswert?

Danke für die brauchbaren Beiträge auf der zweiten Hälfte der zweiten 
Seite! Ich habe jetzt erst einmal genug zu lesen.

Mit Arduino kam ein Vorschlag aus völlig unerwarteter Ecke, aber klar: 
Die haben noch mehr als andere das Problem, eine erdrückende Vielfalt an 
Varianten handhaben zu müssen.

In Teile der newlib mal einen Blick zu werfen, kann auch aus anderen 
Gründen schon nicht schaden.

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.