Hi,
was ist besser. Die fertige Bibliothek(wo halt die elementaren Sachen
drin stehen, also die Stdio.h) für den Mikrocontroller vom Hersteller
verwenden oder selber schreiben? Was ist gängig in der Industrie?
Gruß
Das kann man so pauschal nicht sagen.
Es gibt mehrere Faktoren wie personeller Zeitaufwand vs. Performance vs.
Speicherbedarf.
Um hohe Performance zu erreichen braucht es oft viel personellen
Zeitaufwand. Zusätzlich ist es oft gebunden an eine Plattform da evtl in
ASM.
Und Performance steht immer in Konkurrenz mit Speicher. Da gilt es
alleine schon abzuwägen wie Performant darf es denn sein und wieviel
Speicher steht zur Verfügung.
Selbst bei verhältnismäßig leistungsstarken Systemen hat man oft die
Wahl. Nehme ich zum Beispiel ein glibc oder ein uClibc für mein Embedded
Linux?
Definiere "besser". Meistens bedeutet besser, dass es mit wenig
Zeitaufwand gut und stabil laufen soll. Deshalb, und da Zeit deutlich
teurer ist als Speicher, werden die fertigen Bibliotheken in den meisten
Fällen eingesetzt. Außerdem wurden diese schon ausgiebig getestet, da
tausendfach genutzt.
> Was ist gängig in der Industrie?
Fuer irgendwelche Bastelsachen, Pruefaufbauten oder aehnliches kann man
Bibliotheken einsetzen.
Alles was zu Kunden rausgeht muss zu 100% selbst geschrieben sein. Wegen
Coderules/Styles, SIL, Zertifiziertung, Dokumentation, Fehler in
Libaries. Und ganz wichtig, du weisst nicht wie eine fremde Libary mit
deiner eigenen Soft harmoniert. Also wann sie wieviel Rechenzeit oder
Speicher braucht.
Allerdings sammeln sich in Firmen mit der Zeit auch eigene Libaries an
welchen den internen Standards entsprechen. Sowas setzt man natuerlich
gerne eine.
Ausnahmen sind dann noch Libaries die man von Fremdfirmen einkauft. Die
werden aber dann auditiert und bekommen den Arsch aufgerissen wenn es
Probleme gibt. Soll heissen es gibt da jemanden der sich verantwortlich
fuehlt.
Olaf
Man sollte zumindest zum Lernen eine Bibliothek selbst geschrieben oder
zumindest angefangen/konzipiert haben, weil man IMHO so am besten
mitbekommt was in eine Bibliothek gehört und was nicht.
Und wenn man eine vorgefertige Bisbliothek übernimmt dann ist immer noch
eine zur Pflege, Überprüfung und Anpassung der selben zu benennen. Auch
bei einer Standardbibliothek muss man wissen was man tut.
0815 schrieb:> Die fertige Bibliothek(wo halt die elementaren Sachen> drin stehen, also die Stdio.h)
Wenn du damit die Funktionen meinst die ganz offiziell zum
Sprachstandart der verwendeten Sprache gehören sind diese natürlich
immer vorzuziehen.
Bei komplexeren Funktionen sieht es schon etwas differenzierter aus. Da
stellt sich immer die Frage nach den Kosten für die Selbstentwicklung
gegenüber dem Zukauf. Wenn man was bestimmtes öfters benötigt und die
Eigenentwicklung auch nicht zu aufwendig ist kann sich das selber machen
aber durchaus rechnen weil man diese meist recht schnell nach den
eigenen Bedürfnis eines neuen Projektes anpassen kann und man auch nicht
so schnell Probleme mit irgend welchen Lizenzsachen bekommt.
0815 schrieb:> Die fertige Bibliothek(wo halt die elementaren Sachen> drin stehen, also die Stdio.h)
Auch Standardbibliotheken sind bekannt für Sicherhheitslücken
https://en.wikipedia.org/wiki/C_standard_library#Concepts,_problems_and_workarounds
schon deswegen sollte man eine Optimierung an das eigene System nicht
ausschliessen. Oft lauern die Lücken in Codeabschnitten, die man nicht
wirklich braucht.
0815 schrieb:> Hi,>> was ist besser. Die fertige Bibliothek(wo halt die elementaren Sachen> drin stehen, also die Stdio.h) für den Mikrocontroller vom Hersteller> verwenden oder selber schreiben? Was ist gängig in der Industrie?
Was ist besser? Standardschraube für wenig Geld aus dem Baumarkt oder
selber Eisen und Kohle schürfen, schmelzen, schmieden und ne Schraube
draus machen?
Olaf schrieb:>> Was ist gängig in der Industrie?>> Fuer irgendwelche Bastelsachen, Pruefaufbauten oder aehnliches kann man> Bibliotheken einsetzen.>> Alles was zu Kunden rausgeht muss zu 100% selbst geschrieben sein.
Was für ein Käse! Da kannst du ja gleich SÄMTLICHE Framewoks als QT etc.
wegwerfen!
Schon mal was von Modularisierung und Wiederverwendung gehört?
> Wegen> Coderules/Styles, SIL, Zertifiziertung, Dokumentation, Fehler in> Libaries.
Nicht jeder baut Raketen, die zum Mars fliegen sollen.
> Und ganz wichtig, du weisst nicht wie eine fremde Libary mit> deiner eigenen Soft harmoniert. Also wann sie wieviel Rechenzeit oder> Speicher braucht.
Alles gaaaanz schlimm.
> Allerdings sammeln sich in Firmen mit der Zeit auch eigene Libaries an> welchen den internen Standards entsprechen. Sowas setzt man natuerlich> gerne eine.
Jaja, der übliche, selbstgestrickte halbgare Quark.
0815 schrieb:> Was ist gängig in der Industrie?
Es werden natürlich die Bibliotheken des Compilerbauers (z.B. IAR, Keil)
verwendet. Man zahlt ja schließlich gutes Geld dafür und kriegt sie auch
kaum effizienter selber geschrieben. Nur was man da nicht findet, macht
man selber.
Olaf schrieb:>> Was ist gängig in der Industrie?>> Fuer irgendwelche Bastelsachen, Pruefaufbauten oder aehnliches kann man> Bibliotheken einsetzen.>> Alles was zu Kunden rausgeht muss zu 100% selbst geschrieben sein.
Ich seh's anders rum: Als Bastler kann man sich (so man will) die Zeit
nehmen, alles selber zu basteln, aber wer das professionell macht, kann
sich das gar nicht leisten. Da muss man sich drauf konzentrieren, die
eigentliche Funktionalität einzubauen und nicht den 10.000sten Aufguss
der Standardbibliothek.
> Wegen Coderules/Styles, SIL, Zertifiziertung, Dokumentation, Fehler in> Libaries. Und ganz wichtig, du weisst nicht wie eine fremde Libary mit> deiner eigenen Soft harmoniert. Also wann sie wieviel Rechenzeit oder> Speicher braucht.
Dann musst du aber auch so konsequent sein und den Compiler auch selber
schreiben, denn der erzeugt auch Code, der Fehler haben könnte oder mit
deiner Software nicht harmonieren könnte. Am besten dann auch gleich
noch den Prozessor selber bauen, denn wer weiß, welche Hardware-Bugs der
so mitbringt?
> Dann musst du aber auch so konsequent sein und den Compiler auch selber> schreiben, denn der erzeugt auch Code, der Fehler haben könnte oder mit> deiner Software nicht harmonieren könnte.
Das musst du nicht. Schliesslich hast du dem Compilerhersteller schon
xxxxxEuro gegeben damit er garantiert das sein Compiler solche Probleme
nicht hat. Und wenn du doch mal eines feststellt dann behebt er das
auch.
Schau mal hier:
https://www.iar.com/iar-embedded-workbench/certified-tools-for-functional-safety/certified-tools-faq/
Olaf
Nicht vergessen die Lizenzbedingungen für den Fremdcode prüfen und
einhalten.
Das kann eine Rechtsabteilung schon gut Beschäftigen und den Anhang zur
Dokumentation recht lang machen.
Wenn man Pech hat steht dirn das man den Eigene Code dann auch open
Source machen muss.
0815 schrieb:> was ist besser. Die fertige Bibliothek(wo halt die elementaren Sachen> drin stehen, also die Stdio.h)
Was willst du mit stdio.h auf einem Mikrocontroller?
Da hast du erstmal fopen, fclose und andere File-Funktionen, die nur
dann greifen, wenn du auch ein Betriebssystem mit drauf hast.
Ein gleiches gilt für die Einzelzeichen wie fgetc, fputc und Konsorten.
Hast du dazu denn überhaupt eine Art Stream-Verwaltung auf deinem µC?
Vermutlich nicht.
Dann hast du printf und scanf - und die entweder voll aufgeblasen oder
eingekürzt, aber trotzdem Speicherfresser - auch durch die vielen
Formatstrings.
Also, der ganze Krempel ist OK für das Programmieren von PC-Programmen,
aber auf einem Mikrocontroller sieht da Ganze recht deplaziert aus.
Mach dir lieber dein Zeugs selbst und passe es an die Verhältnisse auf
dem µC an.
W.S.
Rolf M. schrieb:> Als Bastler kann man sich (so man will) die Zeit> nehmen, alles selber zu basteln, aber wer das professionell macht, kann> sich das gar nicht leisten. Da muss man sich drauf konzentrieren, die> eigentliche Funktionalität einzubauen und nicht den 10.000sten Aufguss> der Standardbibliothek.
Das klingt mir aber nicht nach einem fähigen Programmierer, sondern nach
einem, der nicht weiß, wie man die einfachsten Dinge schreibt - oder
nach einem, der sich ganz einfach davor scheut. Also genau so wie die
vielen Möchtegerns, die fleißig ihre ST-InitStruct's befüllen, um zu
vermeiden, ein Hardwarebit, was sie setzen wollen, SELBST zu setzen. Und
dabei geht jede Performance zu Boden - und einfacher oder
übersichtlicher oder zuverlässiger wird's dadurch auch bloß nicht.
W.S.
W.S. schrieb:> Rolf M. schrieb:>> Als Bastler kann man sich (so man will) die Zeit>> nehmen, alles selber zu basteln, aber wer das professionell macht, kann>> sich das gar nicht leisten. Da muss man sich drauf konzentrieren, die>> eigentliche Funktionalität einzubauen und nicht den 10.000sten Aufguss>> der Standardbibliothek.
Eben!
> Das klingt mir aber nicht nach einem fähigen Programmierer, sondern nach> einem, der nicht weiß, wie man die einfachsten Dinge schreibt - oder> nach einem, der sich ganz einfach davor scheut.
Jaja, erfinde dein Rad immer wieder neu und fühl dich als Held!
> Also genau so wie die> vielen Möchtegerns, die fleißig ihre ST-InitStruct's befüllen, um zu> vermeiden, ein Hardwarebit, was sie setzen wollen, SELBST zu setzen. Und> dabei geht jede Performance zu Boden - und einfacher oder> übersichtlicher oder zuverlässiger wird's dadurch auch bloß nicht.
Davon redet keiner. Aber niemand schreibt eine Lib für USB, FAT, TCP/IP
etc. "einfach mal so" selber. Das ist weder möglich noch sinnvoll!
Ich hab zu Anfang auch vieles selber geschrieben. Mit zunehmender
Programmiererfahrung lernt man aber die Bibliotheken zu schätzen. Die
wurden nämlich von Profis geschrieben, d.h. es ist schwer, das gleiche
Niveau zu erreichen.
Es gibt natürlich im Internet auch viele Bibliotheken zum Download, die
von Anfängern geschrieben wurden. Die kann man bestenfalls als Idee
benutzen, um es dann richtig zu machen. Man muß immer im Hinterkopf
behalten, daß absolut jeder etwas im Internet veröffentlichen darf.
Auch bei Programmbeispielen von den MC-Herstellern (Michrochip, NXP, ST,
TI usw.) muß man immer daran denken, daß es nur Beispiele sind, also
weit entfernt von einer ausgereiften Bibliothek.
Der TE bleibt ja leider sehr vage darin, welche Bibliothek er meint
wenn er schreibt:
0815 schrieb:> Bibliothek(wo halt die elementaren Sachen drin stehen, also die Stdio.h)
Vermutlich meint er damit die libc. Und die kommt im Zweifelsfall mit
der Toolchain (vulgo: dem C-Compiler). Deren Hersteller für gewöhnlich
nicht der Hersteller des µC ist. Insofern ist die Frage:
0815 schrieb:> vom Hersteller verwenden oder selber schreiben?
auch nicht so richtig präzise zu beantworten.
Dazu kommt noch, daß gerade stdio.h auf embedded Systemen eine relativ
geringe Relevanz hat, weil die meisten der Funktionen daraus auf
embedded Systemen nicht verfügbar sind. Die libc an sich wird hingegen
durchaus gebraucht. Z.B. für Strings. Oder gar nur für die Definitionen
der Datentypen aus stdint.h.
Die Antwort ist, daß man bevorzugt die Bibliotheksfunktionen verwenden
sollte. Wer glaubt, der Toolchain-Hersteller sei zu inkompetent für eine
korrekte Implementierung der libc, der sollte zunächst mal die Frage
beantworten, warum er ihm dann im Gegenzug die Kompetenz für die
Implementierung des Compilers zugesteht.
In Einzelfällen kann es sinnvoll sein, die Funktionalität (oder auch nur
Teile davon) von Bibliotheksfunktionen selber zu implementieren. Ein
klassisches Beispiel ist eine Funktion zur formatierten Ausgabe von
Zahlen analog printf() - aber nur mit dem Umfang, der tatsächlich
gebraucht wird. Denn printf() braucht typisch viel Code (weil es
umgekehrt auch sehr mächtig ist). Wenn man nun bspw. gar keine
Unterstützung für Fließkomma braucht, kann man Speicher sparen indem man
eine abgespeckte Variante selber baut. Aber wie gesagt, das sind
Einzelfälle.
Mal zur Erinnerung:
"Der Heartbleed-Bug ist ein schwerwiegender Programmfehler in älteren
Versionen der Open-Source-Bibliothek OpenSSL, durch den über
verschlüsselte TLS-Verbindungen private Daten von Clients und Servern
ausgelesen werden können. ... Ein großer Teil der Online-Dienste,
darunter auch namhafte Websites wie auch VoIP-Telefone, Router und
Netzwerkdrucker waren dadurch für Angriffe anfällig "
Das eine Bibliothek von extern erstellt wurde und weltweit verbreitet
ist, ist kein Qualitätsmerkmal. Eine xterne Bibliothek muss genauso
kritische behandelt werden wie selbst erstellter Code. Zumal der
Heartbleed-Bug kein besonders "komplizierter" Bug ist sondern auf simple
Faulheit grundlegende Programmierregel, wie die Überprüfung von pointern
anzuwenden, rückführbar ist. Und der Heartbleedprogrammer war kein
frühreifes Computerkid sondern ein Promotionsstudent an der Fakultät
Informatik einer Hochschule der am Thema „Strategien zur Sicherung von
End-zu-End-Kommunikation" arbeitete....
Axel Zucker schrieb:> Mal zur Erinnerung:
Und wer seine eigene Krypto-Bibliothek schreibt, ohne wirklich *richtig
viel* Ahnung davon zu haben, im Detail, gehört standesrechtlich
erschossen. Ende.
Die libc kommt von der Toolchain und ist damit mindestens so
vertrauenswürdig wie die Toolchain selbst (allerdings ist es auch in
Ordnung, sich auf ein Subset zu beschränken). Für alle anderen
Bibliotheken muss man abwägen.
Bei uns in der Firma sind GPLv3 und LGPLv3 strikt verboten (wenn solcher
Code drin wäre, dürften wir unsere Geräte nicht verkaufen). Alle anderen
Open Source-Lizenzen sind grundsätzlich erlaubt.
Ich benutze keine Autos. Die meisten Fabrikanten haben zwar bald ein
Jahrhundert an Erfahrung und tausende von Ingenieuren die sich
tagtäglich 8h mit nichts anderem als ihrem Schwerpunkt beschäftigen...
Aber ich weiß trotzdem einfach alles besser.
Axel Zucker schrieb:> Mal zur Erinnerung:
Jeder der schon einmal ernsthaft programmiert hat weiß dass keine
Software 100% fehlerfrei ist.
Zu glauben so etwas kompliziertes wie OpenSSL selbst zu schreiben und
dann noch besser zu sein ist in meinen Augen größenwahnsinnig oder
ignorant.
Denn das schreiben der Bibliothek und der eigenen Applikation ist die
kleine Aufgabe, wenn man 100% Fehlerabdeckung haben möchte.
Für einen vernünftigen Test, braucht es um einiges mehr Aufwand als der
eigentliche Code und zusätzlich viel Verständnis über übliche
Verfahren/Lücken in der Softwareentwicklung.
Zusätzlich muss man in der erwähnten Software auch noch nebenbei ein
Experte in Kryptographie sein.
Kein Problem, macht man kurz in der Kaffeepause.
Andreas S. schrieb:> Ein sehr schönes Beispiel für die Fehleinschätzung der eigenen> mathematischen Fähigkeiten ist Detlef Granzow mit seiner> Vollbitverschlüsselung.>> Achtung, Augenkrebsgefahr:> https://web.archive.org/web/20140517202802/http://kryptochef.net/
Oder es ist einfach Satire ala DMHO.org. Oder Bauernfängerei ala
Atomstromfilter, audiophile Technik etc.
Bevor ich ne Lib selbst schreibe schaue ich erstmal was es gibt und ob
es meinen Anforderungen genügt. Das ist eigentlich sehr häufig der Fall.
Ich sehe ehrlich gesagt gar kein Problem damit, fremde Libs zu nutzen.
Das wertvollste, dass ich habe, ist Zeit und eine Lib selbst zu
schreiben frisst Zeit. Das habe ich an meiner Lib für die SSD1306/SH1106
Displays gesehen.
Falk B. schrieb:> Oder es ist einfach Satire ala DMHO.org. Oder Bauernfängerei ala> Atomstromfilter, audiophile Technik etc.
Nein, das meinte der Typ wohl ziemlich ernst. Es gab ja nicht nur seine
Webseite, sondern er war auch ansonsten missionarisch unterwegs. Das
ganze verursachte damals in verschiedenen Medien (auch uC...) ziemlich
hohe Wellen.
N. M. schrieb:> Axel Zucker schrieb:>> Mal zur Erinnerung:>> Jeder der schon einmal ernsthaft programmiert hat weiß dass keine> Software 100% fehlerfrei ist.
Ja, auch ich hege den Verdacht das der TO noch nie ernsthaft
programmiert hat, sonst würde er wissen das es sowas wie eine "fertige
bibliothek" wie im Threadtitel dummfresch behauptet nicht gibt.
> Zu glauben so etwas kompliziertes wie OpenSSL selbst zu schreiben und> dann noch besser zu sein ist in meinen Augen größenwahnsinnig oder> ignorant.
Genauso wie die Annahme eine Bibliothek "von draussen" wäre irgendwie
fertig und man könne sie einsetzen und vergessen ohne sich um Updates
etc. zu kümmern. Und da wären noch die Alternativen zu OpenSSL:
https://www.netzwelt.de/alternative-zu/6937-openssl.html
Oder man ist so ehrlich und gesteht ein, das es sowas wie eine sichere
Übertragung nicht gibt und findet ne Möglichkeit ohne Übertragung
senitiver Informationen auszukommen.
Und eben nur die Funktionen zu implementieren und anzubieten die man
selbst beherrscht um gegebenfalls dem kunden bei der fehlersuche
behilflich sein zu können.
Frank M. schrieb:> Bernd K. schrieb:>> Nicht immer von sich auf andere schließen.>> Nicht immer sinnentstellend zitieren.
Genau! Voller heist es:
"Aber niemand schreibt eine Lib für USB, FAT, TCP/IP
etc. "einfach mal so" selber. Das ist weder möglich noch sinnvoll!"
Und dem ist zu widersprechen, es kann schon sinnvoll sein eine lib
selber zu schreiben, insbesonders wenn man nur ein schmales subset an
Funktionen braucht und nicht die HW-resourcen hat den der volle
Funktiumsumfang erfordert. beispielsweise statt volles Fat einen single
file reader.
Oder als kompromiss eine fremde lib aufs brauchbare runterkürzen, was
IMHO auch eine Art "selber schreiben" ist auch wenn der überweigende
Teil der Arbeit dabei aus Lesen und Wegschmeissen besteht.
Das ist doch sicher ein Thread zum ködern von Trolls oder?
Manche schreiben ja sinnige Antworten. Also abgespeckte Libs schreiben
die nur einen Teil der Funktion haben ist doch durchaus sinnvoll wenn es
für einen reicht.
Außerdem gibt es in der Informatik mehr Themen als man überhaupt lernen
kann. Wie soll die Menschheit überhaupt weiter kommen, wenn jeder von
Vorn anfängt.
Axel Zucker schrieb:> insbesonders wenn man nur ein schmales subset an> Funktionen braucht und nicht die HW-resourcen hat
Zum Beispiel den MKL26 der mit 32kB Flash und USB Peripherie verkauft
wird.
Der vom Hersteller mitgelieferte Codegenerator (weil simplen
Beispielcode mitzuliefern mit dem man zur Abwechslung mal was anfangen
könnte ist ja neuerdings aus der Mode gekommen) spuckt für dieses Target
einen Bloatbrocken von 35kB aus wenn man ein leeres Hello-World USB-HID
Projekt haben will. Und wenn man auf Kompilieren drückt sagt einem der
Linker daß das 35k Code logischerweise nicht in 32k Flash passen.
Ein selber geschriebener USB-Treiber mit HID Endpoint braucht nur etwa
2500 Byte. Wenn man das nicht machen würde könnte man diese Peripherie
in diesem Controller in der Form wie er von NXP verkauft wird überhaupt
nicht nutzen, die ganze Existenz dieses Dings wäre vollkommen sinnlos!
Solche Bilbliotheken wie stdio etc., also die libc, kommen in der Regel
vom Compiler den du benutzt. Der kann vom Hersteller des Chips kommen,
muss aber nicht.
Eine Implementierung, die für embedded Systeme sehr beliebt ist, ist die
newlib (https://sourceware.org/newlib/). Diese kommt zum Beispiel mit
dem arm-none-eabi-gcc. Du kannst dir den Code mal anschauen. Sicher ist
auf jeden Fall, dass man das nicht mal eben so schnell runtercodet.
Wenn du in einer sicherheitskritischen Ecke arbeitest -- Bahntechnik
wäre jetzt ein Beispiel dafür -- dann musst du je nach
"Sicherheitsstufe" teilweise auch speziell zertifizierte Compiler und
Libraries verwenden. Teilweise sind die dann noch viel schlechter, als
alles, was du auf github bekommst. Sind aber halt zugelassen...
Gerade im Embedded-Bereich ist es häufig üblich, auf die libc, sprich
stdio.h etc. zu verzichten, da diese einen erheblichen Rattenschwanz mit
sich bringt. Werden trotzdem Funktionen wie printf() etc. benötigt,
implementiert man in einem solchen Fall eine eigene, teils abgespeckte,
Variante à la my_printf().
Viele Betriebssysteme für embedded (RTOS, etc...) bringe auch teils ihre
eigenen Standardfunktionen mit. Inklusive einer unendlichen Flut von
Typedefs. Wenn du n Libraries in deinem Projekt hast, dann hast du
schätzungsweise e^n typedefs für einen 32 bit unsigned integer...
Hier greift jetzt natürlich wieder das, was vorhin schon gesagt wurde:
Coding Style. Wenn du eine Library verwendest, nutzt diese nach Murphy
natürlich nie den Coding Style, den du nutzt. Ansich kann man damit
leben, dass der Style in verschieden Files anders ist. Aber das aufrufen
von Funktionen der Library in deinem Programm führt dann aufgrund des
anderen coding Styles zu einem unglaublich widerlichen Mischmasch. Egal
welchen Coding Style man bevorzugt: Mischen sollte man auf keinen Fall.
Das kann keiner mehr lesen.
Der Linux Kernel, als Beispiel, bietet intern auch Funktionen wie
malloc, free etc. an. Diese sind allerdings in einer eigenen Variante
(kmalloc, kfree, ...) selbst implementiert. Zum einen aus dem Grund,
dass diese Funktionen teils noch weitere Parameter fressen, als die
Standardfunktionen. Zum anderen sorgt das aber auch dafür, dass der Code
in sich komplett ist und keine Abhängigkeit zu einer weiteren Library
besteht.
Als Nurtzerapplikation auf PC ist eine eigene Implementierung meist
nicht sinnvoll. Außer man braucht eben auch hier eine spezielle
Zertifizierung, aus welchem Grund auch immer.
M. H. schrieb:> Wenn du in einer sicherheitskritischen Ecke arbeitest -- Bahntechnik> wäre jetzt ein Beispiel dafür -- dann musst du je nach> "Sicherheitsstufe" teilweise auch speziell zertifizierte Compiler und> Libraries verwenden. Teilweise sind die dann noch viel schlechter, als> alles, was du auf github bekommst. Sind aber halt zugelassen...
Ja, das ist teilweise ziemlich bitter. Auch bei Halbleitern gibt es
solch einen Mist. Aus einem Projekt kenne ich einen Mikroprozessor, der
Unmengen an Fehlern aufweist. Kaum ein Peripherieblock funktioniert
einwandfrei. Auf massiven Druck meines damaligen Kunden meinte der
Hersteller, genau diese Maskenversion sei für einige
sicherheitskritische Anwendungen zertifiziert und dürfe deswegen nicht
mehr angefasst werden. Dieser Kunde setzte sowohl die Standardversion
als auch eine Sonderausführung mit angepasstem On-Chip-Bootloader ein,
wobei ich aber nicht weiß, ob selbiger während der Chipfertigung per OTP
oder über eine eigene Maske eingebracht wurde.
0815 schrieb:> Die fertige Bibliothek(wo halt die elementaren Sachen> drin stehen, also die Stdio.h) für den Mikrocontroller vom Hersteller> verwenden oder selber schreiben?
Am besten ist es mangels eigener Fab einen Prozessor mit ladbarem
Mikrocode zu nehmen und diesen von scratch neu zu schreiben.
Da hast du dann die Möglichkeit alle Fehler die seit der Entwicklung des
ersten Prozessors gemacht wurden zu wiederholen und noch ein paar neue
hinzuzufügen.
Wenn du damit nächste Woche durch bist kommt das 0815 C dran, die paar
Millionen Zeilen Code in den libs und deren Reifung machst du dann
nebenbei ;-).
HyperMario schrieb:> Am besten ist es mangels eigener Fab einen Prozessor mit ladbarem> Mikrocode zu nehmen und diesen von scratch neu zu schreiben.
Absoluter Schwachsinn. Wir leben doch nicht mehr im Mittelalter. Er soll
einen FPGA nehmen.
Bernd K. schrieb:> Und wenn man auf Kompilieren drückt sagt einem der> Linker daß das 35k Code logischerweise nicht in 32k Flash passen
Und der Compiler/Linker schmeißt nicht benötigte Funktionen nicht raus?
Gute Libraries sollten so strukturiert/modularisiert sein, dass
Funktionalität, die nie aufgerufen wird, beim kompilieren verschwindet.
Alternativ macht man es manuell, wie bei lwIP, wo man über eine Menge
Makros genau definieren kann, was man haben möchte.
Niklas G. schrieb:> Und der Compiler/Linker schmeißt nicht benötigte Funktionen nicht raus?
Lib-Funktionen werden erst dann eingebunden, wenn man sie auch aufruft,
z.B. printf().
Wenn man allerdings keine vorcompilierte Lib erzeugt, sondern Quelltext
einbindet, dann belegt der auch Speicherplatz, wenn er nicht aufgerufen
wird.
Olaf schrieb:> Alles was zu Kunden rausgeht muss zu 100% selbst geschrieben sein.
Das war mal. Heutzutage setzt sich die Erkenntnis durch, dass man das
Rad nicht immer und immer wieder neu erfinden muss. Das kostet nur Zeit
und Geld. STM beispielsweise hat CubeMX und die dazugehörigen
HAL-Bibliotheken nicht für den Bastler im stillen Kämmerlein geschaffen
sondern zur Anwendung im professionellen Umfeld. Wenn bei uns ein
Entwickler eingestellt wird ist es ein wichtiges Kriterium ob er mit den
aktuellen Bibliotheken umgehen kann. Alles selbst machen gibts bei uns
schon lange nicht mehr.
Peter D. schrieb:> Wenn man allerdings keine vorcompilierte Lib erzeugt, sondern Quelltext> einbindet, dann belegt der auch Speicherplatz, wenn er nicht aufgerufen> wird.
Aber nur wenn man die Compiler/Linker-Optionen zum Löschen ungenutzten
Codes explizit aus den Projekteinstellungen entfernt, wo die meisten
Projekt-Erzeugungs-Wizwards/Tools sie schon automatisch eintragen.
M. H. schrieb:> Wenn du in einer sicherheitskritischen Ecke arbeitest -- Bahntechnik> wäre jetzt ein Beispiel dafür -- dann musst du je nach> "Sicherheitsstufe" teilweise auch speziell zertifizierte Compiler und> Libraries verwenden. Teilweise sind die dann noch viel schlechter, als> alles, was du auf github bekommst. Sind aber halt zugelassen...
Das hat dann wieder versichungstechnische Aspekte: Wenns abbrennt, dann
halt zumindest Normgerecht und wenn man nix aus der Norm genommen hat
wirds teuer und die Versicherungen freuen sich...auch wenns besser war,
was man genommen hat.
Niklas G. schrieb:> Und der Compiler/Linker schmeißt nicht benötigte Funktionen nicht raus?> Gute Libraries sollten so strukturiert/modularisiert sein, dass> Funktionalität, die nie aufgerufen wird, beim kompilieren verschwindet.
Ja. Und der Linker schmeißt alles raus was er rausschmeißen kann. Und
wenn danach immer noch auf der höchsten Optimierungsstufe und mit allen
diesbezüglichen Flags die mir bzgl. Codegröße einfallen immer noch 35kB
Code ausspuckt dann wirkt die Aussicht darauf jetzt Wochen damit
verbringen zu dürfen in dem 35kB Misthaufen von generierten Codeabfällen
herumzustochern um zu sehen warum das passiert und zu versuchen die 3kB
eigentliche Funktionalität zu finden, zu verstehen, zu isolieren und
herauszuoperieren ohne sie kaputt zu machen weitaus weniger motivierend
als die Aufgabe sich hinzusetzen und die selben zwei Wochen darin zu
investieren das Gewünschte sauber und from scratch selbst zu
implementieren, das hat auch den Vorteil daß man es hinterher zu 100%
verstanden hat und auch sein API so gestalten kann wie es einem angenehm
ist und gut mit dem restlichen Code harmoniert.
Ich habe in dem konkreten Fall keine 5 Minuten gebraucht um den
Entschluss zu fassen daß ich keinesfalls in dem lieblos generierten
stinkenden Codemisthaufen herumstochern will um das irgendwie notdürftig
zum Laufen zu bringen. Ich will sauberen eleganten Code. Ich bin
vorwiegend auf den kleinstmöglichen Controllern unterwegs mit denen sich
eine gegebene Aufgabe überhaupt noch lösen lässt, Kreativität und
Hirnschmalz ist dort manchmal das einzige was eine Aufgabe überhaupt
noch lösbar macht, andernfalls gäbs überhaupt keinen Grund es überhaupt
zu versuchen weil nicht ansatzweise Konkurrenzfähig. Das ist also das
exakte Gegenteil von "wir schmeißen einfach mehr und teurere Hardware
drauf weil die Legosteine aus denen wir bauen alle so groß und unförmig
sind" das in anderen Bereichen getrieben wird wo es nicht so eng zugeht.
M. K. schrieb:> wenn man nix aus der Norm genommen hat> wirds teuer und die Versicherungen freuen sich
Ich finde Schlimm, dass du damit Recht hast. Jura geht über fachliche
Vernunft, weil unsere Gesetze und Gerichte von Juristen gemacht sind.
Ebenso stehen die Bedürfnisse der Reichen über denen der Armen, weil
unser Land von reichen regiert wird.
Stefanus F. schrieb:> Ich finde Schlimm, dass du damit Recht hast. Jura geht über fachliche> Vernunft, weil unsere Gesetze und Gerichte von Juristen gemacht sind.
Und solche Leute verstehen dann auch nicht, dass man die Kirchhoffschen
oder Maxwellschen Gesetze nicht einfach per Gesetzgebungsverfahren
ändern kann.
Stefanus F. schrieb:> M. K. schrieb:>> wenn man nix aus der Norm genommen hat>> wirds teuer und die Versicherungen freuen sich>> Ich finde Schlimm, dass du damit Recht hast. Jura geht über fachliche> Vernunft, weil unsere Gesetze und Gerichte von Juristen gemacht sind.
Wer sollte sie sonst machen? Wurstfachverkäufer?
> Ebenso stehen die Bedürfnisse der Reichen über denen der Armen, weil> unser Land von reichen regiert wird.
Welche Land wird erfolgreich von Armen regiert? Nordkorea?
Reichtum ist eine Manifestation von Macht.
Bernd K. schrieb:> herauszuoperieren ohne sie kaputt zu machen weitaus weniger motivierend> als die Aufgabe sich hinzusetzen und die selben zwei Wochen darin zu> investieren das Gewünschte sauber und from scratch selbst zu> implementieren, das hat auch den Vorteil daß man es hinterher zu 100%> verstanden hat und auch sein API so gestalten kann wie es einem angenehm> ist und gut mit dem restlichen Code harmoniert.
Das mag in einigen und auch diesem Fall so sein, allgemeingültig ist es
nicht.
Wenn man ein Problem lösen will, dann schaut man IMMER erstmal, ob es
fertige Lösungen oder Zutaten dazu gibt. Erst wenn es keine gibt oder
deren Qualität zu schlecht ist, baut man selber was. Das gilt nicht nur
für Software und Ingenieursarbeit sondern so ziemlich alle
Lebensbereiche.
> Ich habe in dem konkreten Fall keine 5 Minuten gebraucht um den> Entschluss zu fassen daß ich keinesfalls in dem lieblos generierten> stinkenden Codemisthaufen herumstochern will um das irgendwie notdürftig> zum Laufen zu bringen.
Klingt verständlich.
> Ich will sauberen eleganten Code.
Der kann dir bei Bibliotheken und anderen Black Boxes egal sein.
> Ich bin> vorwiegend auf den kleinstmöglichen Controllern unterwegs mit denen sich> eine gegebene Aufgabe überhaupt noch lösen lässt, Kreativität und> Hirnschmalz ist dort manchmal das einzige was eine Aufgabe überhaupt> noch lösbar macht,
Mag sein, ist aber auch nicht allgemeingültig. Schau dir an, mit was für
Overkill und fetter Hardware heute teilweise rumgeworfen wird. Und
warum? Weil Speicher und CPU Power verdammt billig geworden sind.
> andernfalls gäbs überhaupt keinen Grund es überhaupt> zu versuchen weil nicht ansatzweise Konkurrenzfähig.
Baust du so preissensitives Zeug im Massenmarkt?
> Das ist also das> exakte Gegenteil von "wir schmeißen einfach mehr und teurere Hardware> drauf weil die Legosteine aus denen wir bauen alle so groß und unförmig> sind" das in anderen Bereichen getrieben wird wo es nicht so eng zugeht.
;-)
Bernd K. schrieb:> Ich bin> vorwiegend auf den kleinstmöglichen Controllern unterwegs mit denen sich> eine gegebene Aufgabe überhaupt noch lösen lässt, Kreativität und> Hirnschmalz ist dort manchmal das einzige was eine Aufgabe überhaupt> noch lösbar macht, andernfalls gäbs überhaupt keinen Grund es überhaupt> zu versuchen weil nicht ansatzweise Konkurrenzfähig.
Das ist ein schöner Ansatz, den ich praktisch genauso vertrete. Und das
schon seit ich überhaupt programmiere. Die Demoszene auf dem C64 hat
mich wohl geprägt :)
Das Problem nennst du aber selber im letzten Halbsatz: so ein Ansatz ist
im professionellen Umfeld nur seltenst durchzuziehen, weil nicht
konkurrenzfähig. Entwicklerzeit ist nun mal so viel teurer als Silizium,
daß jeder Betriebswirtschaftler auf teuren Chip und billigen Entwickler
setzen wird, statt anders herum. Es gibt wenige Ausnahmen, etwa wenn ein
Markt mit zig Millionen Stückzahl sicher ist. Aber wie gesagt: Ausnahme.
Falk B. schrieb:> Aber niemand schreibt eine Lib für USB,..
Ähem.. doch.
Ich zum Beispiel. Ist zwar nicht für alle möglichen USB-Verwendungen,
sondern nur für VCP, aber dafür ist sie klein und handlich und eine
bessere HAL als alles, was ich von den diversen Herstellern bislang
gesehen habe. Offenbar bin ich da nicht der Einzige:
Bernd K. schrieb:> Ich habe in dem konkreten Fall keine 5 Minuten gebraucht um den> Entschluss zu fassen daß ich keinesfalls in dem lieblos generierten> stinkenden Codemisthaufen herumstochern will..
Eben, geht mir ähnlich. Anstatt mit Krampf irgendwelche
"Standard"-Funktionen zu benutzen und diversen Code drumherum zu
stricken, bloß um sie an das vorliegende Umfeld anzupassen oder sich mit
aufgeblähtem fehlerträchtigen Code herumzuplagen, ist es oftmals
besser, sich seinen Kram selber zu machen.
Auch wenn Leute, die zu wenig draufhaben, mit der ewigen Ausrede-Leier
kommen, daß sie das Rad ja nicht nochmal erfinden wollen.
W.S.
Wenn man beruflich ständig mit Gigabytes und Gigahertz nur so um sich
wirft, verliert man manchmal den Blick fürs Detail.
Meine Hobby-Experimente mit ganz kleinen Mikrocontrollern hatten einen
wesentlichen Anteil daran, dass ich inzwischen immer dann gerufen werde,
wenn es Probleme mit Performance und/oder Speicher in Java Anwendungen
gibt.
Die Spielereien mit kleinen Mikrocontrollern haben also auch was Gutes.
Ich vergleiche das gerne mit einem Tischler oder Zimmermann, der zuhause
Krippenfiguren schnitzt. Das Große und das Kleine ergänzen sich zu einem
vernünftigen Gesamtbild, sowohl physisch als auch im Kopf.
W.S. schrieb:> Falk B. schrieb:>> Aber niemand schreibt eine Lib für USB,..>> Ähem.. doch.>> Ich zum Beispiel. Ist zwar nicht für alle möglichen USB-Verwendungen,> sondern nur für VCP, aber dafür ist sie klein und handlich und eine> bessere HAL als alles, was ich von den diversen Herstellern bislang> gesehen habe. Offenbar bin ich da nicht der Einzige:
Du solltest vollständig zitieren!
"Davon redet keiner. Aber niemand schreibt eine Lib für USB, FAT, TCP/IP
etc. "einfach mal so" selber. Das ist weder möglich noch sinnvoll!"
Die Betonung liegt auf "einfach mal so". Daß man selber sowas machen
kann und das in einigen Fällen auch sinnvoll ist, hat keiner bestritten.
Wohl aber die Aussage, daß man immer alles selber machen sollte oder
muss.
> Eben, geht mir ähnlich. Anstatt mit Krampf irgendwelche> "Standard"-Funktionen zu benutzen und diversen Code drumherum zu> stricken, bloß um sie an das vorliegende Umfeld anzupassen oder sich mit> aufgeblähtem fehlerträchtigen Code herumzuplagen, ist es oftmals> besser, sich seinen Kram selber zu machen.
Eben das ist so NICHT allgemeingültig! Denn es sind mal sicher nicht
alle bestehenden Bibliotheken und Frameworks dermaßen schlecht!
Falk B. schrieb:> "Davon redet keiner. Aber niemand schreibt eine Lib für USB, FAT, TCP/IP> etc. "einfach mal so" selber. Das ist weder möglich noch sinnvoll!"
Viele Leute tun Dinge auch einfach mal so. Eiffelturm aus Streichhölzern
bauen, Einen Kurzwellentransceiver entwerfen und zusammenlöten zur rein
persönlichen Erbauung, Hubschrauber fliegen lernen, ein Schachprogramm
schreiben, einen Treiber für USB oder FAT oder TCP/IP, einen
Betriebssystem-Kernel schreiben weil man seinem ehemaligen Inf-Professor
das Gegenteil von irgendwas beweisen will, alles weder möglich noch
sinnvoll? Ich glaube nicht. Die Geschichte ist voll davon. Und Github
ist voll von Software die irgendwer einfach mal so geschrieben hat,
entweder aus Jux und Tollerei oder weil er dachte er kann irgendwas
besser lösen als die dutzend Alternativen für den selben Zweck und
einige davon sind am Ende wirklich besser.
Bernd K. schrieb:> Die Geschichte ist voll davon.
Ja, sieht man zum Beispiel an Linux :-) Vielfalt und Ausprobieren sind
die Grundlagen für Innovation. Muss ja nicht jedes Mal ein Erfolg sein.
Bernd K. schrieb:> Falk B. schrieb:>> "Davon redet keiner. Aber niemand schreibt eine Lib für USB, FAT, TCP/IP>> etc. "einfach mal so" selber. Das ist weder möglich noch sinnvoll!">> Viele Leute tun Dinge auch einfach mal so. Eiffelturm aus Streichhölzern> bauen, Einen Kurzwellentransceiver entwerfen und zusammenlöten zur rein> persönlichen Erbauung, Hubschrauber fliegen lernen, ein Schachprogramm> schreiben, einen Treiber für USB oder FAT oder TCP/IP, einen
Ja, aus Spaß an der Freud. Da kann man fast alles machen. Im
produktiven, professionellem Umfeld aber nicht.
> Betriebssystem-Kernel schreiben weil man seinem ehemaligen Inf-Professor> das Gegenteil von irgendwas beweisen will, alles weder möglich noch> sinnvoll? Ich glaube nicht. Die Geschichte ist voll davon. Und Github> ist voll von Software die irgendwer einfach mal so geschrieben hat,> entweder aus Jux und Tollerei oder weil er dachte er kann irgendwas> besser lösen als die dutzend Alternativen für den selben Zweck und> einige davon sind am Ende wirklich besser.
Eben, EINIGE!
W.S. schrieb:> Falk B. schrieb:>> Aber niemand schreibt eine Lib für USB,..>> Ähem.. doch.
Und schon kommt der nächste, der sinnentstellend zitiert.
Aber Falk hat ja eben schon alle Nötige dazu gesagt.
Bernd K. schrieb:> Falk B. schrieb:>> "Davon redet keiner. Aber niemand schreibt eine Lib für USB, FAT, TCP/IP>> etc. "einfach mal so" selber. Das ist weder möglich noch sinnvoll!">> Viele Leute tun Dinge auch einfach mal so. Eiffelturm aus Streichhölzern> bauen, Einen Kurzwellentransceiver entwerfen und zusammenlöten zur rein> persönlichen Erbauung ...
Oder auf einen Berg steigen. Einfach weil er da ist. Ja.
<gähn>
Das ist kein Widerspruch. Aber eine USB-Lib, gar auf einem F103 schreibt
man eher nicht zum Spaß. Genauso wie man zwar vielleicht aus Spaß auf
einen Berg steigt, aber nicht auf eine Müllkippe. Und der Vergleich
drängt sich förmlich auf.
Axel S. schrieb:> Das ist kein Widerspruch. Aber eine USB-Lib, gar auf einem F103 schreibt> man eher nicht zum Spaß. Genauso wie man zwar vielleicht aus Spaß auf> einen Berg steigt, aber nicht auf eine Müllkippe. Und der Vergleich> drängt sich förmlich auf.
Weil USB unter den diversen Protokollen ein eher sauberes, genau
spezifiertes, und gar nicht so unübersichtliches ist? Schnittstellen wie
die von SD-Karten, WLAN(-Modulen), aber auch solche im Web-Bereich sind
da oft viel schlimmer. Die USB-Peripherie vom F103 ist noch ganz
erträglich und logisch aufgebaut. Nur die Adressierung ist etwas schräg.
Nur weil man keine 587 YouTube-Videos und "Für Dummies"-Bücher zu findet
muss man sich davon nicht abschrecken lassen.
Daher:
W.S. schrieb:> Ich zum Beispiel.
Und ich auch: USB-Tutorial mit STM32
Die USB-Library von ST ist wirklich nicht so der Bringer (Bugs,
ineffizient). Interessant wäre ein Vergleich mit kommerziellen
USB-Stacks.
W.S. schrieb:>> Auch wenn Leute, die zu wenig draufhaben, mit der ewigen Ausrede-Leier> kommen, daß sie das Rad ja nicht nochmal erfinden wollen.>> W.S.
So viel Arroganz lässt sich doch sicher noch steigern ?
Gruß,
Michael
> Die USB-Peripherie vom F103 ist noch ganz erträglich und> logisch aufgebaut. Nur die Adressierung ist etwas schräg.
Auf mich macht sie eher den Eindruck als ob jemand von ST
a) bestehende Hardwarefragmente aus alten µC möglichst schnell und
billig zusammen frickeln musste um sagen zu können "jetzt können wir
auch USB",
oder
b) zu viel Betäubungsmittel eingenommen hat
Niklas G. schrieb:> Axel S. schrieb:>> ... eine USB-Lib, gar auf einem F103 schreibt>> man eher nicht zum Spaß. Genauso wie man zwar vielleicht aus Spaß auf>> einen Berg steigt, aber nicht auf eine Müllkippe. Und der Vergleich>> drängt sich förmlich auf.>> Die USB-Peripherie vom F103 ist noch ganz> erträglich und logisch aufgebaut. Nur die Adressierung ist etwas schräg.
Findest du?
> ... ich auch: USB-Tutorial mit STM32
Ja. Eben daher habe ich den Eindruck, daß man den USB low-level Kram auf
dem F103 besser delegiert. Außer man ist masochistisch veranlagt.
Stefanus F. schrieb:> a) bestehende Hardwarefragmente aus alten µC möglichst schnell und> billig zusammen frickeln musste um sagen zu können "jetzt können wir> auch USB",
Ja, die STM32 und viele ähnliche Controller sind nach dem
Baukastenprinzip aufgebaut.
Axel S. schrieb:> Findest du?
Kennst du einen Controller mit besserer USB-Peripherie? Die
"OTG"-Peripherie der größeren STM32 ist noch viel schlimmer.
Niklas G. schrieb:> Kennst du einen Controller mit besserer USB-Peripherie? Die> "OTG"-Peripherie der größeren STM32 ist noch viel schlimmer.
Umso dankbarer bin ich für deine Anleitung, die Klarheit verschafft.
M. H. schrieb:> Gerade im Embedded-Bereich ist es häufig üblich, auf die libc, sprich> stdio.h etc. zu verzichten, da diese einen erheblichen Rattenschwanz mit> sich bringt.
Das ist so allgemein ziemlich immer falsch.
Erstens besteht die libc aus wesentlich mehr als nur stdio.h.
Zweitens steht es dem gcc immer (und nicht abschaltbar!) frei, Aufrufe
zu mem{cpy,cmp,move,set} zu generieren, und die sind Teil der libc.
Man wird sich im Embedded-Bereich allerdings so ziemlich immer auf ein
Subset der vollen libc beschränken. Da kann printf drin sein, muss es
aber nicht. In meinem Fall ist es das immer (außer in reinen
Assembler-Projekten), weil ich den Nutzen deutlich höher einschätze als
die (Einmal-)Kosten.
Meine Meinung: Man sollte alles einmal selbst gemacht haben (egal ob
USB, FAT oder printf), dann aber fertige Bibliotheken (falls existent)
nutzen. Warum? Weil man erst dann die Qualität dieser Bibliotheken und
die eigentliche Komplexität des Problems halbwegs sinnvoll einschätzen
kann.
S. R. schrieb:> Meine Meinung: Man sollte alles einmal selbst gemacht haben (egal ob> USB, FAT oder printf), dann aber fertige Bibliotheken (falls existent)> nutzen. Warum? Weil man erst dann die Qualität dieser Bibliotheken und> die eigentliche Komplexität des Problems halbwegs sinnvoll einschätzen> kann.
Find ich nicht. IMO muss man nicht alles selbst einmal gemacht haben. Es
ist aber sicher nicht verkehrt auch mal in eine Bibliothek rein zu
schaun was da drin alles gemacht wird.
Falk B. schrieb:> Stefanus F. schrieb:>> M. K. schrieb:>>> wenn man nix aus der Norm genommen hat>>> wirds teuer und die Versicherungen freuen sich>>>> Ich finde Schlimm, dass du damit Recht hast. Jura geht über fachliche>> Vernunft, weil unsere Gesetze und Gerichte von Juristen gemacht sind.>> Wer sollte sie sonst machen? Wurstfachverkäufer?
Nicht nur Leute, die von Jura Ahnung haben, sondern auch Leute, die das
Thema, das gesetzlich geregelt werden soll, wenigstens einigermaßen
verstehen.
Falk B. schrieb:>> Ich bin>> vorwiegend auf den kleinstmöglichen Controllern unterwegs mit denen sich>> eine gegebene Aufgabe überhaupt noch lösen lässt, Kreativität und>> Hirnschmalz ist dort manchmal das einzige was eine Aufgabe überhaupt>> noch lösbar macht,>> Mag sein, ist aber auch nicht allgemeingültig. Schau dir an, mit was für> Overkill und fetter Hardware heute teilweise rumgeworfen wird. Und> warum? Weil Speicher und CPU Power verdammt billig geworden sind.
Es kommt eben auch immer darauf an, was man macht. Wenn man zuhause als
Hobyybastler Spaß daran hat, aus möglichst keinen µCs möglichst viel
rauszuholen, ist das ja ok. Oder wenn man Geräte entwickelt, die nachher
in sehr großen Stückzahlen gebaut werden und jeder Cent in der
Produktion eingespart werden soll, auch wenn das vielleicht 100.000 € an
zusätzlichen Entwicklungskosten bedeutet. Wenn man dagegen
kundenspezifische Einzellösungen baut, ist es praktisch immer viel
billiger, den nächstgrößeren Boliden zu kaufen als durch selber
schreiben irgendwelcher Libs das Programm zu optimieren.
Bernd K. schrieb:> Falk B. schrieb:>> "Davon redet keiner. Aber niemand schreibt eine Lib für USB, FAT, TCP/IP>> etc. "einfach mal so" selber. Das ist weder möglich noch sinnvoll!">> Viele Leute tun Dinge auch einfach mal so.
Ich würde "einfach mal so" hier weniger als "nur so zum Spaß" verstehen,
sondern eher in der Art "so kurz mal nebenher".
S. R. schrieb:> Erstens besteht die libc aus wesentlich mehr als nur stdio.h.> Zweitens steht es dem gcc immer (und nicht abschaltbar!) frei, Aufrufe> zu mem{cpy,cmp,move,set} zu generieren, und die sind Teil der libc.
Meist wird's aber eher umgekehrt sein, dass gcc einen memcpy-Aufruf
selber intern umsetzt, statt die libc-Funktion tatsächlich aufzurufen.
> Man wird sich im Embedded-Bereich allerdings so ziemlich immer auf ein> Subset der vollen libc beschränken. Da kann printf drin sein, muss es> aber nicht. In meinem Fall ist es das immer (außer in reinen> Assembler-Projekten), weil ich den Nutzen deutlich höher einschätze als> die (Einmal-)Kosten.
Wenn man genug Flash dafür übrig hat, warum auch nicht? Da gilt der
bekannte Satz: Man bekommt vom Hersteller kein Geld zurück für nicht
benutzten Speicher. Es macht wenig Sinn, krampfhaft auf solche
Funktionen zu verzichten und dann nachher noch 75% des Flashs ungenutzt
zu lassen.
Wer hier das Wort "Overkill" verwendet, möge bitte mal die Anzahl der
Glühlampen und Leuchtdioden (insbesondere bei Lichterketten) in seinem
Haushalt zählen.
Und dann fragen wir mal einen imaginären Vertreter aus dem 18.
Jahrhundert, ob er elektrisches Licht in dieser Ausbaustufe für
angemessen hält.
Rolf M. schrieb:> Es macht wenig Sinn, krampfhaft auf solche Funktionen> zu verzichten und dann nachher noch 75% des Flashs ungenutzt> zu lassen.
Nun bleibt dann noch die Frage der Updates offen. Wer viel Zeug hat, muß
sich um viel Zeug kümmern! Mein größte eierlegende Wollmilchsau wollte
dann täglich frische Updates, was zu echten Plage wurde.
Rolf M. schrieb:>>> Ich finde Schlimm, dass du damit Recht hast. Jura geht über fachliche>>> Vernunft, weil unsere Gesetze und Gerichte von Juristen gemacht sind.>>>> Wer sollte sie sonst machen? Wurstfachverkäufer?>> Nicht nur Leute, die von Jura Ahnung haben, sondern auch Leute, die das> Thema, das gesetzlich geregelt werden soll, wenigstens einigermaßen> verstehen.
Es gibt Fachjuristen.
>> Mag sein, ist aber auch nicht allgemeingültig. Schau dir an, mit was für>> Overkill und fetter Hardware heute teilweise rumgeworfen wird. Und>> warum? Weil Speicher und CPU Power verdammt billig geworden sind.>> Es kommt eben auch immer darauf an, was man macht.
Sicher.
> Wenn man zuhause als> Hobyybastler Spaß daran hat, aus möglichst keinen µCs möglichst viel> rauszuholen, ist das ja ok. Oder wenn man Geräte entwickelt, die nachher> in sehr großen Stückzahlen gebaut werden und jeder Cent in der> Produktion eingespart werden soll, auch wenn das vielleicht 100.000 € an> zusätzlichen Entwicklungskosten bedeutet.
Ja, aber auch da muss man schon GENAU hinschauen und RECHNEN! Einen
break even point aka Gewinnschwelle kann man schon mal schnell
abschätzen. Machen nur die Allerwenigsten!
https://de.wikipedia.org/wiki/Gewinnschwelle
Viele Entwickler haben allerdings eine unprofessionelle
Bastlermentalität und sind verliebt in ihre Spielzeuge ala Compiler,
Frameworks, CAD-Tools, ICs whatever. Da werden keine nüchternen,
rationalen, WIRTSCHAFTLICHEN Designentscheidungen getroffen sondern nach
Herzenslust drauflosgebastelt um ein möglichst episches Kunstwerk zu
schaffen. Menschlich verständlich aber unprofessionell und TEUER!
> Wenn man dagegen> kundenspezifische Einzellösungen baut, ist es praktisch immer viel> billiger, den nächstgrößeren Boliden zu kaufen als durch selber> schreiben irgendwelcher Libs das Programm zu optimieren.
Das hat mit kundenspezifisch wenig zu tun sondern was mit Stückzahlen.
Wenn ich 100.000 Euro Entwicklungskosten habe, die meist zum größten
Teil Personalkosten (=Zeit) sind, ist es halt ein Unterschied ob ich die
auf 10 oder 10.000 verkaufte Produkte umlegen kann!
Time is Money ist kein leeres Geschwätz sondern Realität.
> Ich würde "einfach mal so" hier weniger als "nur so zum Spaß" verstehen,> sondern eher in der Art "so kurz mal nebenher".
Genau so war das gemeint.
Rolf M. schrieb:> [...] printf [...]> Es macht wenig Sinn, krampfhaft auf solche> Funktionen zu verzichten und dann nachher noch 75% des Flashs ungenutzt> zu lassen.
In den meisten Mikrocontrollerprojekten hat man überhaupt keine
Verwendung für printf oder Konsorten, dann muss man auch nicht
krampfhaft darauf verzichten und das Geld für den gesparten Flash
bekommt man zurück indem man den nächstkleineren bestellt und es gar
nicht erst bezahlt.
Und ein USB-Stack kostet auch keine 100000€ sondern nur einen einzigen
engagierten Mitarbeiter der für die Sache lebt und quasi das Hobby zum
Beruf gemacht hat und/oder am Gewinn beteiligt oder anderweitig an
Gedeih oder Verderb der Firma gebunden ist, so jemand zieht den besagten
USB-Stack an ein paar verregneten Sonntagen zuhause durch wenn er gut
ist, solche Leute gibts, die Skala für Skill-Level und Leidenschaft ist
nach oben offen, das können sich zwangsstudierte nine-to-five-Ingenieure
bei denen der letzten Tropfen Motivation schon vor 15 Jahren endgültig
ausgesaugt wurde oder gar nie vorhanden war oftmals überhaupt nicht
vorstellen.
Bernd K. schrieb:> Und ein USB-Stack kostet auch keine 100000€ sondern nur einen> engagierten Mitarbeiter der für die Sache lebt und quasi das Hobby zum> Beruf gemacht hat
Also ein Nerd und Fachidiot, der sich billig ausbeuten läßt.
> und/oder am Gewinn beteiligt oder anderweitig an> Gedeih oder Verderb der Firma gebunden ist, so jemand zieht den besagten> USB-Stack an ein paar verregneten Sonntagen zuhause durch wenn er gut> ist,
Jaja, der Supermann. Es mag sein, daß es solche Leute gibt, vielleicht
auch mehr als man denkt. Professionell ist das trotzdem nicht. Vor allem
weil bei so einem Hackaton der Test und die Validierung arg zu kurz
kommen, wie fast immer bei Software 8-0
> solche Leute gibts, die Skala für Skill-Level und Leidenschaft ist> nach oben offen, das können sich zwangsstudierte nine-to-five-Ingenieure> bei denen der letzten Tropfen Motivation schon vor 15 Jahren endgültig> endgültig ausgesaugt wurde oder gar nie vorhanden war oftmals überhaupt> nicht vorstellen.
Doch, kann ich, auch wenn ich eher zur ersteren Gruppe gehöre. Vor
vielen Jahren hab ich sowas im kleinen Rahmen auch mal gemacht, ist aber
Geschichte. Dienst ist Dienst und Schnapps ist Schnapps! Adolf Hennecke
ist lange tot und das ist gut so!
https://de.wikipedia.org/wiki/Adolf_Hennecke
Falk B. schrieb:> Jaja, der Supermann. Es mag sein, daß es solche Leute gibt,
Irgendwann fällt er mal aus, und dann packen alle ein und machen den
Laden zu, oder wie soll das ablaufen?
Stefanus F. schrieb:> Falk B. schrieb:>> Jaja, der Supermann. Es mag sein, daß es solche Leute gibt,>> Irgendwann fällt er mal aus, und dann packen alle ein und machen den> Laden zu, oder wie soll das ablaufen?
Der Code den er zu Lebzeiten der Firma gespendet hat wird sich durch
seinen Weggang sicherlich nicht in Luft auflösen.
Die können dann halt nur in Zukunft keine neuen Innovationen mehr machen
und müssen davon leben was sie haben, ungefähr so wie Apple.
Bernd K. schrieb:> Und ein USB-Stack kostet auch keine 100000€ sondern nur einen einzigen> engagierten Mitarbeiter der für die Sache lebt und quasi das Hobby zum> Beruf gemacht hat
Puh, das ist brandgefährlich für eine Firma. In der Regel halten solche
"Einzelkämpfer" nichts von Dokumentation, Styleguide und Unit testing.
D.h. wenn er die Firma verläßt, kann man alles wegschmeißen und neu
beginnen.
Daher ist es deutlich effizienter, eine Lib zu kaufen, die auch für
längere Zeit supportet wird.
Während wir hier über Libraries diskutieren, sind die erfolgreichsten
Firmen dieses Landes schon viel weiter.
Sie setzen zum Beispiel eine Blockchain für die Funkschlüssel ihrer
Autos ein. Die Idiocracy ist mehr als ein lustiger Fil.
Bernd K. schrieb:> Der Code den er zu Lebzeiten der Firma gespendet hat wird sich durch> seinen Weggang sicherlich nicht in Luft auflösen.
Code, der nicht wartbar ist, landet unweigerlich in dev/null. Man
schmeißt schlechtem Geld nicht auch noch gutes Geld hinterher.
Peter D. schrieb:> Code, der nicht wartbar ist, landet unweigerlich in dev/null.
Es könnte auch wartbarer Code sein. Daß der Code nichts gekostet hat
sagt nichts über dessen Qualität aus. Wenn derjenige fähig war (was ich
voraussetzte) hat er exzellenten und vorbildlichen Code geschrieben.
Bernd K. schrieb:> Stefanus F. schrieb:>> Falk B. schrieb:>>> Jaja, der Supermann. Es mag sein, daß es solche Leute gibt,>>>> Irgendwann fällt er mal aus, und dann packen alle ein und machen den>> Laden zu, oder wie soll das ablaufen?>> Der Code den er zu Lebzeiten der Firma gespendet hat wird sich durch> seinen Weggang sicherlich nicht in Luft auflösen.
Ein verbreiteter Irrtum. Code ist wie Fingernägel. Oder Haare. Eine
Weile geht es ohne Pflege. Aber nicht auf Dauer.
Stefanus F. schrieb:> Während wir hier über Libraries diskutieren, sind die> erfolgreichsten Firmen dieses Landes schon viel weiter.>> Sie setzen zum Beispiel eine Blockchain für die Funkschlüssel ihrer> Autos ein. Die Idiocracy ist mehr als ein lustiger Fil.
"Film" sollte das wohl heißen. Aber Blockchain dürfte sicherer sein als
keyless go. Das hat gerade wieder für viele traurige Überraschungen
gesorgt.
Das wartbarkeitsproblem kenne ich auch reichlich. Sobald frisches Blut
kommt werden alte Quellen verworfen und alles neu gemacht, mit anderen
Ansätzen und neueren Technologien. Und neuen Fehlern und neuen
Problemen.
Peter D. schrieb:> Puh, das ist brandgefährlich für eine Firma.
Nun, wenn es nur die Wahl gibt das Produkt genau so zu machen weil durch
eine glückliche Fügung des Schicksals die Nuß geknackt wurde und die
einzige Alternative lautet es bleiben zu lassen und jemand anderem beim
Erfolg zuzusehen weil man es mit gekauften Legosteinen niemals hätte
bauen können, weil Standard-Ings von der Stange nicht kompetent genug
oder zu langsam und damit zu teuer wären dann ist das nun mal so.
Axel S. schrieb:> Ein verbreiteter Irrtum. Code ist wie Fingernägel. Oder Haare. Eine> Weile geht es ohne Pflege. Aber nicht auf Dauer.
Dann pflegt man ihn halt weiter, wo ist das Problem?
Bernd K. schrieb:> Wenn derjenige fähig war (was ich> voraussetzte) hat er exzellenten und vorbildlichen Code geschrieben.Bernd K. schrieb:> Die können dann halt nur in Zukunft keine neuen Innovationen mehr machen
Das widerspricht sich aber.
Guter Code kann sehr wohl von anderen weiter entwickelt werden und ich
hab das auch mal erfolgreich machen können. Erst dabei merkt man, ob ein
in sich schlüssiger Ablaufplan dahinter steckt oder ob es nur
hingerotztes Copy&Paste ist.
Michael A. schrieb:> W.S. schrieb:>>>> Auch wenn Leute, die zu wenig draufhaben, mit der ewigen Ausrede-Leier>> kommen, daß sie das Rad ja nicht nochmal erfinden wollen.> So viel Arroganz lässt sich doch sicher noch steigern ?
???
Wo W.S. Recht hat hat er Recht, in 99,99% der Fälle ist "Ich will das
Rad nicht neu erfunden" eine Ausrede für (Denk-)Faulheit und
Uninspirierte Technikeinstellung.
Sollte in Entwicklungsabteilung die oben mitspielen wollen ein
Abmahngrund sein. Schliesslich wurde die Person genau für den Zweck
eingestellt, ein rad zu erfinden das besser ist als die der mitbewerber
und perfekt zum Produkt passt.
Ein Porsche fährt eben nicht auf Rädern die ein Neandertaler in der
Steinzeit aus einer Mammutrippe schnitzte...
Axel Zucker schrieb:> Wo W.S. Recht hat hat er Recht, in 99,99% der Fälle ist "Ich will das> Rad nicht neu erfunden" eine Ausrede für (Denk-)Faulheit und> Uninspirierte Technikeinstellung.
Warst du nicht der Lustige der OpenSSL als negativ Beispiel gebracht
hat? Ich hoffe du arbeitest in der Buchhaltung oder im Verkauf...
Axel Zucker schrieb:> Ein Porsche fährt eben nicht auf Rädern die ein Neandertaler in der> Steinzeit aus einer Mammutrippe schnitzte...
Und zwar deshalb nicht, weil der Ingenieur auf dem aktuellen
Wissensstand aufsetzte, als er die Räder für den Porsche entwickelt hat.
Und deshalb widersprichst Du Dir hier selbst. Hätte der Ingenieur ganz
von vorne anfangen müssen (wie W.S. es will), würde der Porsche
höchstens auf Kutschenrädern fahren.
Es kann durchaus von Vorteil sein, auf guten Entwicklungen aufzusetzen
und diese weiterzuentwickeln. Genau das macht die Evolution auch. Wenn
sie es nicht täte, wären wir noch alle dumme Amöben.
Vincent H. schrieb:> Axel Zucker schrieb:>> Wo W.S. Recht hat hat er Recht, in 99,99% der Fälle ist "Ich will das>> Rad nicht neu erfunden" eine Ausrede für (Denk-)Faulheit und>> Uninspirierte Technikeinstellung.>> Warst du nicht der Lustige der OpenSSL als negativ Beispiel gebracht> hat? Ich hoffe du arbeitest in der Buchhaltung oder im Verkauf...
Na lies mal nach, wofür ich OpenSSL als beispiel genannt habe, kleiner
Tipp der Heartbleed-Bug ist keiner der entstand weil das Thema so
kompliziert war, sondern weil einer keine Lust hatte bei seiner Arbeit
nachzudenken und primitivstes Handwerkszeug ignorierte.
Und dann kommst du vielleicht drauf das ich nicht mit Entwicklungsfernen
Themen zu tun habe sondern schon so meine Jahrzehnte "Front"-Erfahrung
mitbringe.
Peter D. schrieb:> Bernd K. schrieb:>> Wenn derjenige fähig war (was ich>> voraussetzte) hat er exzellenten und vorbildlichen Code geschrieben.>> Bernd K. schrieb:>> Die können dann halt nur in Zukunft keine neuen Innovationen mehr machen>> Das widerspricht sich aber.
Nein, damit meinte ich wenn die guten Leute weg sind können sie zwar
noch auf dieser Welle weiter reiten und das Produkt und Variationen
davon noch jahrelang weiter bauen, sobald aber die Konkurrenz aufgeholt
hat und wieder eine ganz neue Idee, ein neuer vergleichbarer Stunt nötig
wäre um wieder was unmöglich geglaubtes aus dem Ärmel zu schütteln wäre
dann Ende.
Axel Zucker schrieb:> Wo W.S. Recht hat hat er Recht, in 99,99% der Fälle ist "Ich will das> Rad nicht neu erfunden" eine Ausrede für (Denk-)Faulheit und> Uninspirierte Technikeinstellung.
Oft genug ist Software und ein µC/PC nur Mittel zum Zweck. Da sitzen
E-Techniker, Physiker oder gar Maschinenbauer die auch noch die SW
erstellen sollen. Da nimmt man eben was brauchbar aussieht und schnell
geht...
PS: sollte keine Beleidiung der genannten Berufe sein. Ich kenne auch
einen Zahnarzt der schreibt bessere SW als manche Informatiker.
Frank M. schrieb:> Axel Zucker schrieb:>> Ein Porsche fährt eben nicht auf Rädern die ein Neandertaler in der>> Steinzeit aus einer Mammutrippe schnitzte...>> Und zwar deshalb nicht, weil der Ingenieur auf dem aktuellen> Wissensstand aufsetzte, als er die Räder für den Porsche entwickelt hat.
Wobei nicht davon auszugehen ist, das der aktuelle Wissenstand zwingend
in einer externen Bibliothek zu finden ist.
PS:
Nichts für Ungut, aber "Auf den aktuellen Wissenstand aufsetzen" ist
auch so ne Hohlphrase die man bringt wenn man keinen Bock auf Eigenes
Nachdenken hat.
Axel Zucker schrieb:> Nichts für Ungut, aber "Auf den aktuellen Wissenstand aufsetzen" ist> auch so ne Hohlphrase die man bringt wenn man keinen Bock auf Eigenes> Nachdenken hat.
Sei froh, dass Deine Eltern das anders gesehen haben, als sie Dir das
Sprechen beibrachten. ;-)
Trotzdem hast Du Dich bis heute aus eigener Kraft weiterentwickeln
können.
P.S.
Du hast mich sinnenstellend zitiert. Ich schrieb "Auf den aktuellen
Wissenstand aufsetzen und diese weiterzuentwickeln "
Axel Zucker schrieb:> Na lies mal nach, wofür ich OpenSSL als beispiel genannt habe, kleiner> Tipp der Heartbleed-Bug ist keiner der entstand weil das Thema so> kompliziert war, sondern weil einer keine Lust hatte bei seiner Arbeit> nachzudenken und primitivstes Handwerkszeug ignorierte.
Bitte erleuchte mich. Welches primitive Handwerkszeug soll das sein?
Wer ernsthaft behauptet in C/C++ noch nie einen Range-basierten Bug
produziert zu haben der hat Potential in die Politik zu gehn. Dort sucht
man immer nach Lügnern.
Vincent H. schrieb:> Axel Zucker schrieb:>> Na lies mal nach, wofür ich OpenSSL als beispiel genannt habe, kleiner>> Tipp der Heartbleed-Bug ist keiner der entstand weil das Thema so>> kompliziert war, sondern weil einer keine Lust hatte bei seiner Arbeit>> nachzudenken und primitivstes Handwerkszeug ignorierte.>> Bitte erleuchte mich. Welches primitive Handwerkszeug soll das sein?
Folge dem Link:
https://motherboard.vice.com/de/article/kb754w/deutscher-hat-heartbleed-fehler-an-silvester-vor-zwei-jahren-programmiert
Ansonsten dürfte es doch einem Entwickler ein Leichtes sein, das
entsprechende diff aus dem repo zu holen oder den für ihn
verständlichsten Kommentar aus dem Internet zu ziehen.
Frank M. schrieb:> Axel Zucker schrieb:>> Nichts für Ungut, aber "Auf den aktuellen Wissenstand aufsetzen" ist>> auch so ne Hohlphrase die man bringt wenn man keinen Bock auf Eigenes>> Nachdenken hat.>> Sei froh, dass Deine Eltern das anders gesehen haben, als sie Dir das> Sprechen beibrachten. ;-)>> Trotzdem hast Du Dich bis heute aus eigener Kraft weiterentwickeln> können.
Sorry, ich verstehe nicht was du sagen willst ???
Das Problem an der Phrase ist: "aufsetzen".
Das klingt als ob das auch der ungelernte Möbelschubser kann. Gemeint
ist aber das man den "Aktuellen Wissensstand" mindestens verstanden
haben muß um ihn sinnvoll anwenden zu können. Und manches versteht man
eben am besten, wenn man es (im Ansatz/in Teilen) selber macht. -
"Learning by doing" eben.
Sonst endet es wieder mal bei wenig hilfreichen: "ich weiss auch nicht
wo der fehler liegt aber lass uns mal auf das nächste Update warten ..."
Axel S. schrieb:>> Der Code den er zu Lebzeiten der Firma gespendet hat wird sich durch>> seinen Weggang sicherlich nicht in Luft auflösen.>> Ein verbreiteter Irrtum. Code ist wie Fingernägel. Oder Haare. Eine> Weile geht es ohne Pflege. Aber nicht auf Dauer.
Interessanter Vergleich!
Frank M. schrieb:> P.S.> Du hast mich sinnenstellend zitiert. Ich schrieb "Auf den aktuellen> Wissenstand aufsetzen und diese weiterzuentwickeln "
Doch, ich habe Dich exakt zitiert:
"Und zwar deshalb nicht, weil der Ingenieur auf dem aktuellen
Wissensstand aufsetzte, als er die Räder für den Porsche entwickelt
hat."
Die untere Zitierfähige Stelle zum Wissenstand habe ich überlesen - die
klingt für mich aber auch mehr in Richtung Denkvermeidung statt
Auseinanderstzung/Hinterfragung.
netzwelt.de, vice
Was kommt als nächstes? bild.de?
Den "Artikel" hab ich jetzt trotz heftigem Brechreiz gelesen. Meine
Frage bleibt allerdings unbeantwortet stehn. Nach wie vor scheinst nur
du den heiligen Gral gefunden zu haben mit dem man Buffer-Overflows und
Konsorten Herr wird.
Axel Zucker schrieb:> Sorry, ich verstehe nicht was du sagen willst ???
Okay, dann mal ganz langsam:
1. Man kann auf einer Entwicklung aufsetzen.
Beispiel: Der Porsche-Räder-Entwickler schaut sich den aktuellen
Wissenstand der Autoindustrie an.
2. Man adaptiert diesen Wissensstand (bzw. diese Bibliothek)
Beispiel: Der Porsche-Räder-Entwickler berechnet die Geometrie, das
Fahrverhalten (und was noch alles) des Porsche und passt den aktuellen
Wissensstand, was Räder betrifft, an.
Bis hierher hat man nur dumpf abgekupfert und ein wenig angepasst.
Jetzt kommt aber der entscheidende Schritt, den Du nicht einfach bisher
nicht nachvollziehst:
3. Man verbessert das Produkt anhand dieser Adaption und gibt diese
weiter.
Beispiel: Der Porsche-Räder-Entwickler verbessert anhand von Versuchen
bzw. Computerberechnungen sein Porsche-Rad und veröffentlicht diese
neuen Erkenntnisse.
Wenn Du Dir Schritt 3. verinnerlichst, magst Du mir nun zustimmen, dass
man "auf dem aktuellen Wissensstand aufsetzen" nicht pauschal verteufeln
darf! Ganz im Gegenteil: Man spart eine Menge Entwicklungszeit und kann
das eigene Produkt wesentlich effizienter weiterentwickeln. Diesen
letzten Schritt magst Du vielleicht einem schnöden Bibliotheksanwender
absprechen, aber deshalb sind die Schritte 1 und 2 trotzdem auch für
einen Entwickler nicht falsch.
Jetzt verstanden? Deine Eltern haben Dir etwas auf den Weg gegeben,
nämlich "Sprache", die Dir ermöglicht hat, Dich weiterzuentwickeln.
Hätten sie das nicht getan, wärest Du vielleicht heute erst dabei, das
Lesen zu lernen.
Vincent H. schrieb:> netzwelt.de, vice>> Was kommt als nächstes? bild.de?>> Den "Artikel" hab ich jetzt trotz heftigem Brechreiz gelesen. Meine> Frage bleibt allerdings unbeantwortet stehn. Nach wie vor scheinst nur> du den heiligen Gral gefunden zu haben mit dem man Buffer-Overflows und> Konsorten Herr wird.
Mit Verlaub, ich mach nicht den Dompteur in deinem Affentheater. Folge
einfach den Links und du kommst auf die beschreibung:
"In one of the new features, unfortunately, I missed validating a
variable containing a length."
Dr Seggelmann said the error he introduced was "quite trivial", but
acknowledged that its impact was "severe"."
Und meiner Erfahrung nach lernt man bereits als Informatikschulbub das
man die Länge von variablen überprüft um buffer overruns zu vermeiden.
Also bsplw. strnlen() statt strlen zu verwenden, wenn überhaupt.
Axel Zucker schrieb:> Nichts für Ungut, aber "Auf den aktuellen Wissenstand aufsetzen" ist> auch so ne Hohlphrase die man bringt wenn man keinen Bock auf Eigenes> Nachdenken hat.
Nö, das ist der Grund, warum wir heute dort stehen wo wir stehen, weil
eben nicht jeder erst das Rad neu erfinden muss, ebenso wir wir das
Ohmsche Gesetz nicht erst neu entdecken müssen, das ist alles schon da.
Axel Zucker schrieb:> Nichts für Ungut, aber "Auf den aktuellen Wissenstand aufsetzen" ist> auch so ne Hohlphrase die man bringt wenn man keinen Bock auf Eigenes> Nachdenken hat.
Nö, das ist der Grund, warum wir heute dort stehen wo wir stehen, weil
eben nicht jeder erst das Rad neu erfinden muss, ebenso wir wir das
Ohmsche Gesetz nicht erst neu entdecken müssen, das ist alles schon da.
Axel Zucker schrieb:> Das Problem an der Phrase ist: "aufsetzen".> Das klingt als ob das auch der ungelernte Möbelschubser kann.
Ich glaube, das verstehst nur du so... Aber ja, um einen Prozessor zu
verwenden, muss ich tatsächlich nicht verstehen, wie er auf
Transistorebene funktioniert.
Frank M. schrieb:> 2. Man adaptiert diesen Wissensstand (bzw. diese Bibliothek)>> Beispiel: Der Porsche-Räder-Entwickler berechnet die Geometrie, das> Fahrverhalten (und was noch alles) des Porsche und passt den aktuellen> Wissensstand, was Räder betrifft, an.>> Bis hierher hat man nur dumpf abgekupfert und ein wenig angepasst.>> Jetzt kommt aber der entscheidende Schritt, den Du nicht einfach bisher> nicht nachvollziehst:>> 3. Man verbessert das Produkt anhand dieser Adaption und gibt diese> weiter.
Das was du hier als "Schritt" darstellst ist IMHO nur ein rhetorischer
Kniff um das Auditorium zu blenden. Ich sehe nicht wie aus einer
"Abkupferei" eine "Adaption" wird, in dem man "Schritt" dazusagt.
Adaption bedeutet Umbau, und um etwas unzubauen muss man es zerlegen,
und um etwas zerlegen zu konnen muss man verstanden haben wie es
funktioniert - auf beiden seiten - der eigenen -Porsche- und der anderen
-Knochenrad-.
Klar kann man auch das Knochenrad mit einer Kohlefasermanchete an den
Porsche klatschen um dann in der Validierungsphase draufzukommen, das es
so nicht geht Iund das man mit ein bißchen nachdenken das vorher hätte
draufkommen können das Knochen den Porsche nicht trägt.
Axel Zucker schrieb:> Und meiner Erfahrung nach lernt man bereits als Informatikschulbub das> man die Länge von variablen überprüft um buffer overruns zu vermeiden.> Also bsplw. strnlen() statt strlen zu verwenden, wenn überhaupt.
Und meiner Erfahrung nach sind arrogante Entwickler die, die den
schlimmsten Code hinrotzen.
Glücklicherweise sind eben jene Entwickler recht leicht zu
identifizieren, sie schmeißen nämlich recht gern mit kurzen Phrasen
umsich.
"Ich hab einen Bug in deinem Code gefunden."
"Ich brauch keine Unit Tests."
"Ich mach keine Logik Fehler."
"Das ist ein Hardware Fehler der noch nicht im Errata steht."
Axel Zucker schrieb:> Das was du hier als "Schritt" darstellst ist IMHO nur ein rhetorischer> Kniff um das Auditorium zu blenden. Ich sehe nicht wie aus einer> "Abkupferei" eine "Adaption" wird, in dem man "Schritt" dazusagt.
Sagen wir besser: Du willst es nicht sehen. Oder Du hältst pauschal alle
Anwender einer Bibliothek für Idioten.
Beides spricht nicht für Dich, egal wie Du es drehst.
Es ist doch ganz einfach: Wenn keine Library existiert die alle
Anforderungen erfüllt dann muss man selber eine schreiben oder eine
existierende so umbauen/abspecken/aufbohren daß sie es tut. Jeder hat
andere Anforderungen, manche haben auch ganz spezielle Anforderungen und
manchmal gibts einfach nichts von der Stange.
Die gängige deutsche Ingenieursmeinung hier im Forum scheint zu sein
stattdessen die Anforderungen so lange runterzuschrauben bis die Herren
Entwickler sich nicht mehr anstrengen müssen. Das ist natürlich auch ein
Weg den man gehen kann. Andere denken halt anders darüber.
Bernd K. schrieb:> Die gängige deutsche Ingenieursmeinung hier im Forum scheint zu sein> stattdessen die Anforderungen so lange runterzuschrauben bis die Herren> Entwickler sich nicht mehr anstrengen müssen.
Oder man spart sich die Prüfung der Anforderung komplett, deklariert
eine beliebige Bibliothek pauschal als "fertig" und versichert sich der
Unterstützung aus einem Forum durch einen herbeigekasperten Thread ....
PS:
Allerdings bin ich nicht der Meinung, das dies "gängige deutsche
Ingenieursmeinung" wäre, da ich ansonsten Nationalität und Bildungsweg
verleugnen müsste ;-)
Das Genie ist nicht der, der unnützt Zeit damit verschwendet, bereits
vorhanden Grundfunktionen nachzuprogrammieren und damit zusätzliche
Fehlerquellen einzubauen.
Sondern das Genie ist der, der möglichst effizient unter Einsatz der
Bibliotheken die eigentliche Aufgabe löst, d.h. innovativ ist. Dann kann
man sich voll auf das Problem konzentrieren und ist nicht mit
irgendwelchem Urschleim abgelenkt.
Ich weiß, wie ich printf verwende, daher muß ich keine Zeit damit
vergeuden, eigene Ausgabefunktionen zu schreiben.
Wer unbedingt mag, der kann ja Grundfunktionen in seiner Freizeit
nachprogrammieren und testen, da muß man dann nicht effizient sein.
Hi
Das ist das schöne, an solchen Grabenkriegen....
Solange man den Kontext nicht klärt, schaut jeder aus sich selber heraus
auf die Anderen. Damit kommt man dann zu tausend widersprechenden
Aussagen, die dann alle (mehr oder weniger) wahr sind.
Natürlich macht es Sinn, in der Lernphase, Standard Routinen selber zu
schreiben.
Ebenso macht es Sinn, wenn die vorhandenen Dinge nicht ausreichen, was
neues zu bauen.
Und ebenso viel Sinn macht es, sich aus dem Library Baukasten zu
bedienen, wenn man schnell fertig werden muss/will.
Natürlich spielen dann auch noch die Firmen Richtlinien, und
irgendwelche notwendigen Zertifizierungen, eine
tragende/richtungsweisende Rolle.
Michael A. schrieb:> W.S. schrieb:>>>> Auch wenn Leute, die zu wenig draufhaben, mit der ewigen Ausrede-Leier>> kommen, daß sie das Rad ja nicht nochmal erfinden wollen.>>>> W.S.>> So viel Arroganz lässt sich doch sicher noch steigern ?>> Gruß,> Michael
Du verwechselst da etwas. Ich erinnere mal wieder an Adenauer und dessen
Spruch vom Horizont.
Arroganz ist, wenn jemand nix drauf hat und dennoch so tut, als hätte er
was drauf und die anderen nicht.
Aber ich habe das drauf, deswegen ist das eben keine Arroganz. Es wird
nur von Leuten gern verwendet, denen nach Stänkern zumute ist.
So, ich denke, dieses Teilthema wäre damit final geklärt.
Zum Kernthema hier:
Die Ansichten einiger hier, daß man auf biegen&brechen bei irgendwelchen
Standard-Bibliotheken bleiben soll, deutet mir auf eben eine zu kleine
entwicklerische Potenz hin. Ebenso die falsche Aussage, daß es für
ungenutzten Flash kein Geld zurück gäbe. Das Geld kommt nämlich vom
nächstkleineren Chip.
Richtig ist hingegen, daß man schlichtweg Augenmaß haben sollte, was man
benutzt und was nicht. Leider ist eben auch richtig, daß Leute, deren
Fertigkeiten sich auf copy&paste beschränken, gar keine andere Wahl
haben - es sei denn, sie setzen sich auf ihren Hosenboden und lernen
dazu (sofern sie können und nicht zu faul sind). Das ist hier vermutlich
der tiefere Grund all der gehabten Diskussion.
W.S.
W.S. schrieb:> Das Geld kommt nämlich vom> nächstkleineren Chip.
In der Regel sind aber nicht die Libs der Hauptverbraucher an Flash.
Beim AVR belegt printf ~1kB (ohne float-support).
Wenn ich also ein 20kB Programm habe und nun mühsam das printf
rausoperiere, dann komme ich vielleicht auf 19,5kB runter, das reicht
aber nicht für den nächst kleineren Chip.
Der Hauptverbraucher an Flash ist in der Regel eine unüberlegte und
planlose Programmierung mit riesigen Copy&Paste Sequenzen.
Mit einem durchdachten Programmablaufplan, bevor man überhaupt Code
schreibt, kommt man dagegen oft auf 50% Einsparung.
@W.S. schrieb:> Arroganz ist, wenn jemand nix drauf hat und dennoch so tut, als hätte er> was drauf und die anderen nicht.
Der geht anders.
Ein hohes Niveau sieht nur von unten wie Arroganz aus. ;-)
> Die Ansichten einiger hier, daß man auf biegen&brechen bei irgendwelchen> Standard-Bibliotheken bleiben soll, deutet mir auf eben eine zu kleine> entwicklerische Potenz hin.
Du solltest an deinem Textverständnis arbeiten. Das hat so kein Einziger
weder formuliert noch gemeint.
> Richtig ist hingegen, daß man schlichtweg Augenmaß haben sollte, was man> benutzt und was nicht.
Ach ne?
W.S. schrieb:> Ebenso die falsche Aussage, daß es für> ungenutzten Flash kein Geld zurück gäbe. Das Geld kommt nämlich vom> nächstkleineren Chip.
Wer nur auf Kante näht, kann bald alles wegwerfen (wenn der Platz für
Änderungen nicht mehr reicht). Bisher ist mir noch kein Programm
aufgefallen, was kleiner geworden ist. Es bestand eher der Wunsch, dem
Kunden noch eine "Verbesserung" zu verkaufen.
0815 schrieb:> Hi,>> was ist besser. Die fertige Bibliothek(wo halt die elementaren Sachen> drin stehen, also die Stdio.h) für den Mikrocontroller vom Hersteller> verwenden oder selber schreiben? Was ist gängig in der Industrie?
Warum oder? Ich kenne das so, dass beides verwendet wird.
Da, wo es schon eine fertige und gut funktionierende Bibliothek für
etwas gibt (z.B. gmp, libcurl, ...) sollte man das Rad nicht neu
erfinden.
Freilich erstellen Firmen auch eigene Bibliotheken. Ist ja nicht so,
dass es für jede Branche und für jedes Produkt schon alle Libs
vorgefertigt gäbe, die man so brauchen kann.
Falk B. schrieb:> Rolf M. schrieb:>>>> Ich finde Schlimm, dass du damit Recht hast. Jura geht über fachliche>>>> Vernunft, weil unsere Gesetze und Gerichte von Juristen gemacht sind.>>>>>> Wer sollte sie sonst machen? Wurstfachverkäufer?>>>> Nicht nur Leute, die von Jura Ahnung haben, sondern auch Leute, die das>> Thema, das gesetzlich geregelt werden soll, wenigstens einigermaßen>> verstehen.>> Es gibt Fachjuristen.
Ja, die müssen dann aber beim Beschließen eines Gesetzes auch anwesend
sein, und nicht erst nachher, um zu versuchen, in das eigentlich
unsinnige Gesetz irgendwas brauchbares reinzuinterpretieren.
>> Wenn man dagegen>> kundenspezifische Einzellösungen baut, ist es praktisch immer viel>> billiger, den nächstgrößeren Boliden zu kaufen als durch selber>> schreiben irgendwelcher Libs das Programm zu optimieren.>> Das hat mit kundenspezifisch wenig zu tun sondern was mit Stückzahlen.
Deswegen schrieb ich ja das Wort "EINZELLÖSUNGEN" dazu - Stückzahl
eins. Kennst du da welche, die nicht kundenspezifisch sind?
> Wenn ich 100.000 Euro Entwicklungskosten habe, die meist zum größten> Teil Personalkosten (=Zeit) sind, ist es halt ein Unterschied ob ich die> auf 10 oder 10.000 verkaufte Produkte umlegen kann!
Bei dem, was ich tue, gibt's meist kein Produkt, sondern ein Gewerk, von
dem ich genau 1 verkaufe. Die Personalkosten verteilen sich also nicht.
Und genau davon sprach ich: Da lohnt es sich nicht selten, etwas
Fertiges für viel Geld zu kaufen, statt es für noch viel mehr Geld
selbst zu entwickeln.
> Time is Money ist kein leeres Geschwätz sondern Realität.
Sag ich ja.
Volle schrieb:> Nicht vergessen die Lizenzbedingungen für den Fremdcode prüfen und> einhalten.
Wenn man uC wie Stm32 oder AVR programmiert (natürlich lockbits nicht
vergessen) so kann keiner euch nachweisen welche Libs ihr genommen habt.
Ansonsen Libs nachschreiben bzw so abändern dass einige Funktionen an
anderer Stelle stehen. Sodass auch das Kompilat sich ändert....
Florian schrieb:> Volle schrieb:>> Nicht vergessen die Lizenzbedingungen für den Fremdcode prüfen und>> einhalten.>> Wenn man uC wie Stm32 oder AVR programmiert (natürlich lockbits nicht> vergessen) so kann keiner euch nachweisen welche Libs ihr genommen habt.>> Ansonsen Libs nachschreiben bzw so abändern dass einige Funktionen an> anderer Stelle stehen. Sodass auch das Kompilat sich ändert....
Dir wünsche ich aus vollem Herzen eine Klage an den Hals. Unterirdischer
gehts ja wohl nicht mehr, hier öffentlich zu gewerblichen
Urheberrechtsverletzungen aufzurufen! Ich glaub mein Schwein pfeift!
Ich möchte Dich mal sehen was Du dazu sagen würdest wenn einer Deinen
Code klauen und Umsätze damit generieren würde. Aber wahrscheinlich kann
das gar nicht geschehen weil Du noch nie was selbst geschaffen hast das
es wert gewesen wäre von jemand anderem zu Geld gemacht zu werden, nur
so lässt sich so eine kranke Einstellung erklären.
Florian schrieb:> Volle schrieb:>> Nicht vergessen die Lizenzbedingungen für den Fremdcode prüfen und>> einhalten.>> Wenn man uC wie Stm32 oder AVR programmiert (natürlich lockbits nicht> vergessen) so kann keiner euch nachweisen welche Libs ihr genommen habt.>> Ansonsen Libs nachschreiben bzw so abändern dass einige Funktionen an> anderer Stelle stehen. Sodass auch das Kompilat sich ändert....
Du empfiehlst also, gegen die Lizenzbedingungen bewusst zu verstoßen und
das einfach durch diese Maßnahmen zu verschleiern?
Naja, wenigstens ist so die Strafe höher, wenn es dann doch auffliegt.
Arduino Fanboy D. schrieb:> Und ebenso viel Sinn macht es, sich aus dem Library Baukasten zu> bedienen, wenn man schnell fertig werden muss/will.
Aber man sollte sich auch der negativen Auswirkungen bei dauerhaft
exzessiven und ausschliesslichem Gebrauch von (zusammengepanschten)
Bibliotheken auf den Charakter bewusst sein:
-Verlust der Fähigkeit sich in Specs einzulesen oder eigene klar zu
formulieren
-zunehmende Oberflächlichkeit
-gerät Programmiertechnisch" aus der Übung
-Verleugnen resp. Verharmlosen von Bugs aus ungesichteten Code
-der stete Drang Nachschub in Form von updates zu organisieren lenkt von
anderen Optionen der "Problemlösung" ab
Ist halt wie der Fahrradfahrer der aufs Auto umsteigt - man wird bequem,
fett und unsicher über die eigenen Fähigkeit und beschränkt den
Wettbewerb mit Nachwuchstalenten auf grimmiges Knurren und Verweis auf
verstaubte Trophäen.
;-)
Βιβλιοθηκονόμος schrieb:> Ist halt wie der Fahrradfahrer der aufs Auto umsteigt - man wird bequem,> fett und unsicher über die eigenen Fähigkeit und beschränkt
Wie oft fährst du mit dem Fahhrad Strecken > 50km?
Falk B. schrieb:> Βιβλιοθηκονόμος schrieb:>>> Ist halt wie der Fahrradfahrer der aufs Auto umsteigt - man wird bequem,>> fett und unsicher über die eigenen Fähigkeit und beschränkt>> Wie oft fährst du mit dem Fahhrad Strecken > 50km?
Lange Strecken sind keine akzeptierten Ausreden für totalen
Bewegungsmangel.
So wie man als Berufsfahrer auch mal Strecken zu Fuß gehen oder radeln
kann (Freizeitsport, Weg zur Arbeitsstätte), so kann man auch als
Entwickler mal ne Funktion selber schreiben, resp. fremde analysieren).
Wie heisst es so treffend: "Wer rastet, der rostet" und "Adipositas ist
keine Berufskrankheit"
Βιβλιοθηκονόμος schrieb:> kann (Freizeitsport, Weg zur Arbeitsstätte), so kann man auch als> Entwickler mal ne Funktion selber schreiben, resp. fremde analysieren).
Hat dis irgenendeiner bestritten oder gar verboten?
Die Argumentation lief die meiste Zeit doch nur gegen das "ich kann
alles besser, ich mach alles selber".
Falk B. schrieb:> Die Argumentation lief die meiste Zeit doch nur gegen das "ich kann> alles besser, ich mach alles selber".
Na und dann Argumentieren wir mal zur Abwechslung:
"Ich mach nichts selber, weil das ist mir zu groß und wenn ich
irgendwann komplett aus der Übung bin, dann ist das unvermeidbar"
Βιβλιοθηκονόμος schrieb:> Ist halt wie der Fahrradfahrer der aufs Auto umsteigt - man wird bequem,> fett und unsicher über die eigenen Fähigkeit und beschränkt den> Wettbewerb mit Nachwuchstalenten auf grimmiges Knurren und Verweis auf> verstaubte Trophäen.
Wenn Du aber mit dem Fahrrad zu spät kommst, fragt man Dich, warum Du
nicht das Auto genommen hast.
Wenn Du die Programmieraufgabe nicht termingerecht löst, fragt keiner
danach, daß Du printf, Ethernet, USB usw. zu Fuß nachentwickelt hast,
denn das war nicht Deine Aufgabe. Aber Dein Chef fragt sich, ob er Dich
abmahnen soll und die Mitbewerber lachen sich ins Fäustchen.
Will man effizient arbeiten, beschränkt man sich nur auf die eigentliche
Applikation, d.h. man wird schneller fertig und macht weniger Fehler.
Mark B. schrieb:> Da, wo es schon eine fertige und gut funktionierende Bibliothek für> etwas gibt (z.B. gmp, libcurl, ...) sollte man das Rad nicht neu> erfinden.
Wir nutzen auf Arbeit so ein kleines Bibliothekchen namens "Android"...
und nein, das entwickeln wir nicht selbst. Auch vermeiden wir unter
großen Schmerzen, daran Änderungen vorzunehmen.
Und das hat Gründe.
0815 schrieb:> oder selber schreiben?
Natürlich selber schreiben, alles, auch den Compiler, das BS deines PCs,
alles! :-<<<
Warum das Rad neu erfinden. Konzentriere dich auf das Neue, dein Problem
und vertraue der Generation vor dir. ;-)
Peter D. schrieb:> Wenn Du aber mit dem Fahrrad zu spät kommst, fragt man Dich, warum Du> nicht das Auto genommen hast.
Dann lautet die Antwort, dass man bei Verwendung eines Auto
möglicherweise noch viel später angekommen wäre. Warum wird auch in
diesem Thread die bedingungslose Überlegenheit von Autos postuliert?
Ach, ich vergaß, dass wir in Deutschland sind.
Βιβλιοθηκονόμος schrieb:> So wie man als Berufsfahrer auch mal Strecken zu Fuß gehen oder radeln> kann (Freizeitsport, Weg zur Arbeitsstätte), so kann man auch als> Entwickler mal ne Funktion selber schreiben, resp. fremde analysieren).
Mal ne Funktion/Lib selbst schreiben ist auch ne andere Hausnummer als
jede Lib selbst zu schreiben. Nicht hier Äpfel mit Birnen vergleichen
;)
Βιβλιοθηκονόμος schrieb:> Aber man sollte sich auch der negativen Auswirkungen bei dauerhaft> exzessiven und ausschliesslichem Gebrauch von (zusammengepanschten)> Bibliotheken auf den Charakter bewusst sein:
Ich möchte mal wissen, wie Du herausgelesen hast, daß auch nur ein
einziger hier so arbeitet. In meinen Augen ist das ein völlig haltlose
Unterstellung.
Natürlich kauft man im gewerblichen Umfeld einen professionellen
Compiler mit IDE, Bibliotheken und Supportvertrag. Gibt es Probleme mit
den Bibliotheken, dann wendet man sich an den Support. Man verschwendet
aber keine Zeit damit, Bibliotheken nachzuentwickeln.
Peter D. schrieb:> Natürlich kauft man im gewerblichen Umfeld einen professionellen> Compiler mit IDE, Bibliotheken und Supportvertrag. Gibt es Probleme mit> den Bibliotheken, dann wendet man sich an den Support. Man verschwendet> aber keine Zeit damit, Bibliotheken nachzuentwickeln.
Genau. Und aus dem selben Grund lässt man im gewerblichen Umfeld auch
keine ASICs entwickeln für Millionen und Abermillionen sondern klöppelt
alles aus klobigen Standardbauteilen zusammen, auch wenns dann zwölf mal
so groß wird und nicht mehr in so ein schnuckeliges kleines Gehäuse
passt wie das der unverantwortlich selbstfrickelnden Mitbewerber.
Und wer ganz klug ist entwickelt gar nichts mehr, reine
Zeitverschwendung, schließlich kann man heutzutage alles fertig in China
kaufen. Nur so wird man zur Hi-Tech Weltmacht.
Was wir also in Zukunft brauchen sind Fachkräfte die Tetris mit
Lego-Bausteinen spielen können und diese Bausteine fallen bekanntlich
vom Himmel wie jeder sicherlich weiß.
[Übertreibungen erhöhen die Anschaulichkeit]
Bernd K. schrieb:> Dir wünsche ich aus vollem Herzen eine Klage an den Hals. Unterirdischer> gehts ja wohl nicht mehr, hier öffentlich zu gewerblichen> Urheberrechtsverletzungen aufzurufen! Ich glaub mein Schwein pfeift!
Komm runter von der Palme.
Wenn jemand den Chip von Firma X einkauft und den mit den Lib's von
Firma X beglückt - welche diese Firma X genau dafür vorgesehen hat -
dann steckt da überhaupt keine Rechtsverletzung drin.
Aber indem dieser Jemand sich auf die dargebotene Lib von X eingelassen
hat, hat er sich fröhlich einen Ring durch die Nase ziehen lassen und
ist nun an der Kette der Firma X.
Wenn es bei der Firma Y nun einen Chip gibt, der für den Jemand
eientlich besser wäre, dann kann er den nicht benutzen, weil die Libs
von X partout nicht auf den Chip von Y passen.
Also wäre der Jemand drauf angewiesen, sich in den von Y dargebotenen
Libs umzusehen und sein ganzes Projekt auf das Zeugs von Y umzustellen.
Das wäre der Austausch des Rings durch die Nase von X nach Y.
Und: Selbstverständlich kennen die Firmen X und Y sich innig - und so
achten sie pingelig darauf, daß kein Kunde ohne erheblichen Mehraufwand
eine Lib vom einen mit dem Chip vom anderen verwenden kann.
Falls es zu den jeweiligen Libs nen Quellcode geben sollte, dann ist der
so gestaltet, daß das Umschreiben möglichst schön aufwendig ist und
inhaltlich an eine komplette Neufassung heranreicht.
Linux ist da ein klassischer Fall. Nichts von Unix im juristischen Sinne
verwendet, sondern alles "selbst und neu" geschrieben. Ähnlichkeiten
sind rein zufälliger Art. Das übliche Kleingedruckte eben.
Eigentlich ist das Problem klar: Firmen sind bemüht, ihre Kunden an sich
zu binden und keinen Vorschub zu leisten für Chips anderer Hersteller -
und Anwender sollten eigentlich bemüht sein, sich nicht freiwillig in
unnötige Abhängigkeiten zu manövrieren - auch wenn das Dargebotene auf
den allerersten Blick vorteilhaft aussehen sollte.
Es ist eben ein grundsätzlicher Interessenkonflikt.
W.S.
Bernd K. schrieb:> Und aus dem selben Grund lässt man im gewerblichen Umfeld auch> keine ASICs entwickeln für Millionen und Abermillionen sondern klöppelt> alles aus klobigen Standardbauteilen zusammen
Woher nimmst Du diese Gewißheit?
Man sollte immer die Lösungen nehmen, die für das Problem optimal
passen. Für viele Aufgaben wären ASICs der absolute Overkill.
Und ja, 0201 Kondensatoren mag ich nicht. Ich nehme die "klobigen" im
0603, die kann ich gerade noch händisch löten. Auf die Gehäusegröße hat
das eh keinen Einfluß.
Bernd K. schrieb:> Und wer ganz klug ist entwickelt gar nichts mehr, schließlich kann man> heutzutage alles fertig in China kaufen.
Schön wärs, wir können uns vor Entwicklungsaufgaben nicht retten, aber
Elektronikentwickler sind Mangelware.
W.S. schrieb:> Linux ist da ein klassischer Fall. Nichts von Unix im juristischen Sinne> verwendet, sondern alles "selbst und neu" geschrieben. Ähnlichkeiten> sind rein zufälliger Art. Das übliche Kleingedruckte eben.
Die Ähnlichkeiten sind nicht "zufällig", sondern nennen sich POSIX und
sind eine ISO- und IEEE-Norm.
Es gibt auch einen großen Unterschied, ob man eine eigene Implementation
einer Spezifikation schreibt, oder ob man fremden Code illegal in sein
Programm einbaut und dann ein paar Sachen ändert und umsortiert, um
damit diesen Tatbestand zu verschleiern.
Peter D. schrieb:> Schön wärs, wir können uns vor Entwicklungsaufgaben nicht retten, aber> Elektronikentwickler sind Mangelware.
Offenbar aber auch wieder nicht so sehr, als dass man bereit wäre, die
Gehälter ordentlich anzuheben.
Wie war das doch gleich? Wenn die Nachfrage groß ist und das Angebot
gering, dann steigt entsprechend deutlich der Preis...
Komischerweise soll das für Personalkosten aber nicht gelten. :-/
Mark B. schrieb:> Wie war das doch gleich? Wenn die Nachfrage groß ist und das Angebot> gering, dann steigt entsprechend deutlich der Preis...
Wenn der Preis allerdings die Mittel des Käufers übersteigt gibts gar
kein Geschäft und die Mittel des potentialen Käufers sinken weiter.
Siehe Stadt Berlin, da läuft ohne Zuschuß wie Länderfinanzausgleich
inzwischen garnichts und die Stadt verkommt zu einer H4-Verwahranstalt.
Peter D. (peda) hinterliess:
>Ich möchte mal wissen, wie Du herausgelesen hast, daß auch nur ein>einziger hier so arbeitet.
Siehe die Diskussion zu der Behauptung, das keiner eine USB-Bibliothek
selbst erstellt respektive schon der Gedanke daran dazu reine Blasphemie
wäre. [Übertreibungen erhöhen die Anschaulichkeit]
Und ausserhalb dieses threads die Hilflösung wenn ein ganz bestimmtes
Update einer (Arduino-)Bibliothek benötigt wird. Fällt mir persönlich
regelmäßig beim Lesen der make auf; da wird gross Hintergrundinfo zu
einem technischen Schmankerl versprochen die dann lediglich auf den
Verweis auf eine bekantermassen unvollständige und wacklige Bibliothek
besteht. Bspw.: https://www.heise.de/select/make/2018/1/1519688503646911
Βιβλιοθηκονόμος schrieb:> Siehe die Diskussion zu der Behauptung, das keiner eine USB-Bibliothek> selbst erstellt respektive schon der Gedanke daran dazu reine Blasphemie> wäre. [Übertreibungen erhöhen die Anschaulichkeit]
Du pickst Dir einzelne Meinungen heraus und unterstellst sie als
allgemein gültig. Dem ist nicht so. Das hat nichts mit Übertreibung zu
tun, sondern ist reines Klischeedenken.
Βιβλιοθηκονόμος schrieb:> Fällt mir persönlich> regelmäßig beim Lesen der make auf;
Ich bezweifle mal stark, daß hier auch nur ein einziger die make als
Fachzeitschrift ansieht. Sich auf die make zu beziehen, ist ein Witz.
Damit nimmt Dich niemand mehr ernst.
Du solltest Dir mal den Unterschied zwischen professionell und
Hobbybastler klarmachen. Den gibt es nämlich.
Peter D. schrieb:> Du solltest Dir mal den Unterschied zwischen professionell und> Hobbybastler klarmachen. Den gibt es nämlich.
Das vermischen hier viele und wer will es ihnen schon verdenken ;)
Peter D. schrieb:> Du solltest Dir mal den Unterschied zwischen professionell und> Hobbybastler klarmachen. Den gibt es nämlich.
Sicher gibt es den, der hat aber an sich erstmal nichts mit der Qualität
zu tun - weder in der Ausführung, noch im Ergebnis.
Es gibt aber auf einen Unterschied zwischen ordentlicher Arbeit und
"works for me". Und zwischen Embedded-Entwicklung und Web-Development
(und den vorherrschenden Mentalitäten).
Βιβλιοθηκονόμος schrieb:> [Übertreibungen erhöhen die Anschaulichkeit]
Starke Übertreibungen stellen in erster Linie den Übertreiber als
inkompetent und/oder böswillig dar. Klassisches Beispiel: Verkäufer.
Peter D. schrieb:> mal den Unterschied zwischen professionell und> Hobbybastler klarmachen. Den gibt es nämlich.> Natürlich kauft man im gewerblichen Umfeld einen professionellen> Compiler mit IDE, Bibliotheken und Supportvertrag. Gibt es Probleme mit> den Bibliotheken, dann wendet man sich an den Support.
Also falls man es nicht mit Support als RundUmSorglosPaket kaufen kann,
dann setzt man es erst nicht ein - das klingt sehrrrrr professionell!
SCNR
Axel Zucker schrieb:> Also falls man es nicht mit Support als RundUmSorglosPaket kaufen kann,> dann setzt man es erst nicht ein - das klingt sehrrrrr professionell!> SCNR
Tipp:
Wenn erkannt wird, dass eine Aussage falsch ist, dann bedeutet das noch
lange nicht, dass das genaue Gegenteil davon automatisch richtig ist.
Axel Zucker schrieb:> Also falls man es nicht mit Support als RundUmSorglosPaket kaufen kann,> dann setzt man es erst nicht ein
Schon wieder eine Aussage, die so niemand getroffen hat.
Wenn eine Lib mit Support angeboten wird, dann sollte man diese
bevorzugen. Erst wenn etwas dagegen spricht, schaut man sich nach
anderen Lösungen um oder entwickelt sie selber.
Sei doch mal ein bischen flexibel. Das gehört zu einem guten Entwickler
einfach dazu.
Es gibt für den Entwickler kein RundUmSorglosPaket. Daher muß er ständig
abwägen welche Komponente kann er kaufen und welche muß er selber
entwickeln.
Peter D. schrieb:> Es gibt für den Entwickler kein RundUmSorglosPaket. Daher muß er ständig> abwägen welche Komponente kann er kaufen und welche muß er selber> entwickeln.
Bei dem Erwerb eines RundUmSorglosPakets geht es aber häufig gar nicht
um eine technisch funktionsfähige Lösung, sondern um die Möglichkeit,
bei beliebigen Problemen auf einen Dritten zeigen zu können. Wenn man
dann in solchen Fällen eine juristische Klärung angestoßen hat, hat man
wieder Zeit gewonnen, um seine eigenen Leichen im Keller wegzuräumen. Ob
dabei irgendwann ein funktionsfähiges Produkt zu akzeptablen
Entwicklungskosten entsteht, ist völlig egal. So ist die Denkweise in
vielen Großunternehmen.
Peter D. schrieb:> Axel Zucker schrieb:>> Also falls man es nicht mit Support als RundUmSorglosPaket kaufen kann,>> dann setzt man es erst nicht ein>> Schon wieder eine Aussage, die so niemand getroffen hat.
Keine Aussage, sondern eine these. Oder eine persönliche Zusammenfassung
was an wahren Gehalt der wohlgefeilten Wortblasen "Professioneller
Entwicklung" durch Einkauf von 3rd party Produkte hier ankommt.
Andreas S. schrieb:
"Bei dem Erwerb eines RundUmSorglosPakets geht es aber häufig gar nicht
um eine technisch funktionsfähige Lösung, sondern um die Möglichkeit,
bei beliebigen Problemen auf einen Dritten zeigen zu können."
Na beim "Zeigen auf Dritte" bleibt es meistens nicht, da wird auf
(unendliche) Nachbesserung gepocht und der Supportvertrag ausgelutscht
bis zum geht nicht mehr. Deshalb sind solche Verträge auf genau
umrissene Szenarien beschränkt, typischerweise Installation und
Demoapplikation, thats it; gern mit deckel auf ein paar Mannstunden oder
Emailsupport mit nach oben offener Antwortzeit. Alles darüber hinaus
zählt zu Engineering Dienstleistungen, die extra und auf Stundenbasis
buchbar sind.