Forum: Compiler & IDEs Libs oder selbst machen?


von Gerrit (Gast)


Lesenswert?

Hallo zusammen,

ich habe mal eine grundsätzliche Frage:

Ich steige ja nun so nach und nach ein in die AVR-Programmierung wie es 
die Zeit zulässt. Nun ist es für mich mit dem AVR-GCC gefühlt aber sehr 
aufwendig Standardaufgaben zu lösen (beispielsweise UART, DHT22, 
LCD-Nutzung). Also muss man das immer selbst programmieren, oder gibt es 
wie bei dem Arduino auch Libs, die man so nutzt? Mir ist schon klar, 
dass gerade durch unterschiedliche Portnamen dies natürlich nicht immer 
geht.

von Falk B. (falk)


Lesenswert?

@ Gerrit (Gast)

>die Zeit zulässt. Nun ist es für mich mit dem AVR-GCC gefühlt aber sehr
>aufwendig Standardaufgaben zu lösen (beispielsweise UART, DHT22,
>LCD-Nutzung).

Der avr gcc hat für sowas keine Bibliotheken, das Internet schon.
Zum Thema UART und LCD (HD44780) gibt es gute Sachen von Peter Fleury.

>dass gerade durch unterschiedliche Portnamen dies natürlich nicht immer
>geht.

Die Portnamen kann man bei gescheiten Libs sehr einfach auf verschiedene 
Controller anpassen, der Rest bleibt wie er ist.

von Peter II (Gast)


Lesenswert?

Falk B. schrieb:
> Die Portnamen kann man bei gescheiten Libs sehr einfach auf verschiedene
> Controller anpassen, der Rest bleibt wie er ist.

wobei man sagen muss, das das meist keine LIBs sind, sondern nur 
Quellcode. Bei wirklichen LIBs ist das mit den Ports nicht mehr so 
einfach.

von Jay (Gast)


Lesenswert?

Alles was Grundfunktionen betrifft und einfache Peripherie, wie USART, 
selber machen. Das sind nur ein paar Zeilen und dann weiß man was 
passiert, im Gegensatz zu dubiosen Bibliotheken.

Bei dem DHT22 1-Wire würde ich mir sehr intensiv Inspiration von 
vorhandenen Bibliotheken und Treiber holen. Der Grund dafür ist, dass 
das Protokoll ziemlich schlecht dokumentiert ist. Implementieren würde 
ich allerdings was eigenes, da das Timing kritisch zu sein scheint und 
man das besser schön sauber in den gesamten Zeitablauf der Anwendung 
einbaut.

Für HD44780 gibt es mehr als genug fertige Bibliotheken, allerdings auch 
ziemlich viele schlechte, bei denen das Timing oder die Sequenz der 
Kommandos nicht stimmt oder nur für Clones funktioniert. Also sucht man 
sich eine heraus und wenn man mit ihr zufrieden ist, bleibt man dabei.

Alles was komplizierter ist, wie ein IP-Stack oder USB: Da muss schon 
sehr viel passieren bevor ich so etwas selber mache. Fertige Bibliothek 
und Daumen Drücken.

von Jodel (Gast)


Lesenswert?

Man merkt da schon deutlich, dass in der Elektronik eben hauptsaechlich 
Elektroniker unterwegs sind und nicht Informatiker, da ist es mit dem 
Softwareengineering nicht so weit her. Reusability, Libraries, Module 
sind da wenig verbreitet und die Bereitschaft, das zur Verfuegung zu 
stellen, auch nicht. Natuerlich gibt es Ausnahmen, aber das ist eben 
nicht die Regel.

von Scelumbro (Gast)


Lesenswert?

Früher wollte ich alles selbst machen. Alles was über die mitgelieferten 
Bibliotheken hinaus ging. Besonders da es im C++ Bereich für 
Mikrocontroller fast nichts gibt. Hab viel Zeit versenkt um mir z.B. 
einen eigenen Ethernetstack halbwegs zusammen zu basteln. Aber 
angesichts dessen was heute ein WIZNET oder ESP8266 Modul kostet war der 
eigentliche Lohn nur noch der Lerneffekt was Netzwerkprotokolle angeht.

Heute suche ich mir Bibliotheken wo es geht. Aber die 
Qualitätsunterschiede sind gigantisch - unabhängig von der Größe des 
Teams / Unternehmens das die Bibs zur Verfügung steht. Häufig muss man 
dann doch wieder selbst Hand anlegen, weil die Qualität oder 
Portabilität mangelhaft ist. Im Sourcecode erkennt man das z.B. an der 
häufig fehlenden Behandlung von Fehlerzuständen. Aber auch eine gute, 
umfassende Dokumentation ist Pflicht.


Jodel schrieb:
> Man merkt da schon deutlich, dass in der Elektronik eben hauptsaechlich
> Elektroniker unterwegs sind und nicht Informatiker, da ist es mit dem
> Softwareengineering nicht so weit her. Reusability, Libraries, Module
> sind da wenig verbreitet und die Bereitschaft, das zur Verfuegung zu
> stellen, auch nicht. Natuerlich gibt es Ausnahmen, aber das ist eben
> nicht die Regel.

 Besonders in der Arduino Community scheint sich jeder der gerade das 
Arduinotutorial abgeschlossen hat, dazu berufen zu fühlen "etwas 
zurückzugeben". Einerseits ist das toll, andererseits ist die Qualität 
des Codes häufig unterirdisch (Fehlerbehandlung, Dokumentation ...). Man 
in dem Bereich häufig lange suchen um was brauchbares zu finden. 
Meistens reicht es dann doch nur zur Inspiration für eigenen Code.
Professionelle Bibliotheken fehlen leider - insbs. für C++ auf kleinen 
uCs.

Zusammengefasst: Man muss ein Problem halbwegs selbst verstehen, damit 
man eine gute Bibiliothek finden kann - oder sich auf die Stimmen im 
Forum verlassen.

von Tom Thomsen (Gast)


Lesenswert?

Jodel schrieb:
> ... da ist es mit dem Softwareengineering nicht so weit her.
> Reusability, Libraries, Module sind da wenig verbreitet

Du vergisst, das es hier oft um kleine Mikrokontroller geht. Da fehlt 
dann einfach der Abstraktions-Layer oder der Speicher, um groß nach o.g. 
Kriterien zu entwerfen. Klar man kann überall einen ARM Prozessor oder 
größer rein bauen, aber das will man nicht immer.

Die Blüten die o.g. Vorgehensweise bei PC Softwarepaketen mit z.T. GByte 
Größe treibt, funktioniert auf kleinen µC nun mal schlecht.

von hp-freund (Gast)


Lesenswert?

In den Aufzählungen vermisse ich noch Hinweise auf youtube videos.
Teilweise gut gemacht, so das man sogar versteht was man tut ;)

von Jodel (Gast)


Lesenswert?

Tom Thomsen schrieb:
> Jodel schrieb:
>> ... da ist es mit dem Softwareengineering nicht so weit her.
>> Reusability, Libraries, Module sind da wenig verbreitet
> Du vergisst, das es hier oft um kleine Mikrokontroller geht. Da fehlt
> dann einfach der Abstraktions-Layer oder der Speicher, um groß nach o.g.
> Kriterien zu entwerfen.

Man kann auch klein nach diesen Kriterien entwerfen. Ich vergesse da 
nichts.

Es gab hier mal interessante Diskussionen, wie man mit C++ eleganten, 
wiederverwendbaren und vor allem auch effizienten Code schreiben kann. 
An der Masse der Entwickler hier ging das wohl voellig vorbei. Da wird 
stur weiter elegante Elektronik mit 70er-Jahre-Software verbunden.

> Die Blüten die o.g. Vorgehensweise bei PC Softwarepaketen mit z.T. GByte
> Größe treibt, funktioniert auf kleinen µC nun mal schlecht.

Wir sind nicht in der Politik, es ist nicht noetig, immer gleich nach 
Extremen als Argumentationshilfe zu greifen.

von Walter T. (nicolas)


Lesenswert?

Jodel schrieb:
> Man merkt da schon deutlich, dass in der Elektronik eben hauptsaechlich
> Elektroniker unterwegs sind und nicht Informatiker, da ist es mit dem
> Softwareengineering nicht so weit her. Reusability, Libraries, Module
> sind da wenig verbreitet und die Bereitschaft, das zur Verfuegung zu
> stellen, auch nicht. Natuerlich gibt es Ausnahmen, aber das ist eben
> nicht die Regel.

Das hat aber auch einen ganz pragmatischen Grund: Bei einem embedded 
Device ist der Hersteller, egal ob er eigenen oder fremden Code 
verwendet, voll haftbar, d.h. er muß für fremden*) Code genauso 
Qualitätssicherung betreiben wie für eigenen. Und da die 
Qualitätssicherung (Test/Validierung/Codeaudit) oft mehr Aufwand als die 
eigentliche Implementierung ist, implementiert man es halt selbst. Da 
kennt man den Code, mit dem man arbeiten muß, wenigstens.

*) Bei Code vom Zulieferer kann man die Haftung per Vertrag übertragen. 
Aber das geht bei "freien" ("nimm's Dir und Du bist selbst 
verantwortlich, was Du damit machst") Lizenzen ja genau nicht.

von Jay (Gast)


Lesenswert?

Jodel schrieb:
> Elektroniker unterwegs sind und nicht Informatiker, da ist es mit dem
> Softwareengineering

Weiter braucht man nicht zu lesen. Software-Engineering ist die 
gescheiterte Disziplin der Informatik in der seit 50 Jahren verzweifelt 
versucht wird aus der Informatik eine Ingenieurwissenschaft zu machen, 
weil die Informatiker Ingenieure sein wollen. Die einzige noch dubiosere 
Disziplin der Informatik ist die KI.

Charakteristisch für das schöne akademische Software-Engineering ist, 
dass alle paar Jahre die selbe Sau, unter neuem Namen, durch Dorf 
getrieben wird, zum Beispiel der heilige Gral der Informatik: Malen nach 
Zahlen. Charakteristisch ist, dass das Software-Engineering nicht merkt 
wenn sie einen Loser haben (wie Malen nach Zahlen). Vielleicht noch 
schlimmer, dass sie nicht merken, wenn sie einen Gewinner haben. Wobei, 
ehrlich gesagt, die Gewinner, wie Versionsmanagement und -Tools kommen 
meist aus der Praxis und nicht vom akademischen Software-Engineering.

> Reusability, Libraries, Module

Der finanzielle Aufwand Komponenten von vorne herein wiederverwendbar zu 
gestalten und ein ein vernünftiges Management für Wiederverwendbarkeit 
zu betreiben steht, so die Erfahrung in der Praxis, in den meisten 
Fällen in keiner Relation zum Gewinn.

Da haben wir eine weitere Charakteristik des akademischen 
Software-Engineerings: Fehlende Praxisbezogenheit. Hier haben 
Informatiker auch den Engineering-Mindset nicht verstanden. Es muss in 
der Praxis funktionieren, aggressiv vorgetragene Theorien mit leeren 
Versprechungen alleine reichen nicht.

Übrigens widerspricht das Planen von Wiederverwendbarkeit einem anderen 
Trend der Informatik, der momentan als die Silberkugel verkauft wird: 
Agil, genauer das aus XP übernommene YAGNI (you aren't gonna need it). 
Auch bekannt als DTSTTCPW (do the simplest thing that could possibly 
work) oder KISS (keep it simple, stupid).

Das ist dann die nächste Charakteristik des akademischen 
Software-Engineerings: Nicht Widerspruchsfrei und keine brauchbare, 
abgeschlossene Systemtheorie dahinter.

> sind da wenig verbreitet und die Bereitschaft, das zur Verfuegung zu
> stellen, auch nicht. Natuerlich gibt es Ausnahmen, aber das ist eben
> nicht die Regel.

Wenn der ganze akademische Software-Engineering Krempel so gut 
funktionieren würde, warum machst du keine eigene Firma auf? Die 
versprochenen Produktivitäts- und Qualitätssteigerungen sind ja enorm. 
Da wird schon mal der Faktor 100 genannt. Eine Firma die 100 Mal 
produktiver arbeitet als der Rest der Branche müsste die Welt mit 
atemberaubender Qualität erobern können. Komisch, dass das bis heute 
keiner Informatiker-Firma gelungen ist. Nicht mal Apple (und die wurde 
sowieso nicht von Informatikern gegründet).

von Jodel (Gast)


Lesenswert?

Jay schrieb:
> Weiter braucht man nicht zu lesen.

Hast du offensichtlich auch nicht. Deswegen bezieht sich 99% von deinem 
Text auf Dinge, die im Thread nicht mal erwaehnt wurden.

von Eric B. (beric)


Lesenswert?

Jay schrieb:
> Weiter braucht man nicht zu lesen. Software-Engineering ist die
> gescheiterte ...

Laberlaberlaber.*gähn*

> Wenn der ganze akademische Software-Engineering Krempel so gut
> funktionieren würde, warum machst du keine eigene Firma auf?

Wenn du doch so gut weiss wie es funktionieren soll, warum machst du 
dann keine eigene Firma auf? Mit deinem Wissen müsstest du doch 
kürzerhand die ganze Welt mit Software atemberaubender Qualität erobern 
können!

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.