Hi,
wie Programmiert Ihr Euere (Hobby-)Projekte ? Wie machen es die Profis ?
Nutzt Ihr Routinen von Anderen oder entwickelt Ihr alles selbst ? Wie
ist Euere Erfahrung bzgl. Resourcenbedarf (Programmgröße, Laufzeit etc.)
beim Einsatz von "fremden" Code-Teilen?
Ein Beispiel ist m.E. printf(). Das kann mehr als ich jeh brauchen
werde. Nutzt Ihr solche Routinen (mit allen Nachteilen, wie Codegröße,
RAM-Verbrauch etc.) bei Eueren Projekten? Was ist mit LCD-Libraries,
TCP-Stacks etc dies es hier gibt ?
Das würde mich sehr interessieren, wie Ihr damit umgeht ....
Gruß
Andreas
Im Normalfall schreibe ich das meiste selbst: Dann verstehe ich den
Code, und kann ausschließen, dass der Fehler von jemand anderem
verursacht wurde. Und ich habe keine Probleme mit den Lizenzen.
Allerdings gibt es durchaus einiges an sehr guten Code wie z.B. das
Dateisystem von ELM Chan, oder so manch eine Routine von Peter Danegger.
Besser bekommen es die meisten nicht hin, und vor allem nicht in kurzer
Zeit.
Ich nehme printf(), wenn es Sinn hat, weil ich damit z. B. einfach
eine kürzere Entwicklungszeit erreichen kann. Atmel hat mir bislang
noch nicht angeboten, für nicht genutzten Flash Geld zurück zu
zahlen. ;-)
Beispiel printf: wenns mehr kann als Du brauchst - wieso nimmst Du dann
nicht das "zuviel" raus und behältst denn Rest? Ist dann sicher nicht
größer und mindestens so robust wie selbtsgeschriebenes.
Hi,
ich habe in einem Projekt nun auch fremden Code benutzt.
Der Code ist jeweils für einen bestimmten Fall geschrieben, der (ist
meine Beobachtung) nicht 100%ig passt. Dies führt entweder dazu, dass
ich größeren/langsameren Code bekommen oder dass die Änderungen soviel
Zeit benötigen, dass ich es (vielleicht) gleich hätte schreiben können.
Daher frage ich mich wie ihr das macht. Das Rad jedesmal neu zu erfinden
ist sicherlich nicht sinnvoll...
Ein größeres Beispiel: Wenn ich jetzt einen Web-Server bauen wollte,
würde ich wahrscheinlich monate benötigen bis ich TCP/IP und die
Implementierung verstanden hätte - Allerdings bin ich mir nicht sicher,
ob ich irgendwelche fremde Stacks zum laufen bekommen würde .....
Nochmal: Wie geht Ihr damit um ?
Gruß
Andreas
Also müsste ich was mit TCP/IP machen würde ich es selbst machen. Nicht
weil es andere schlechter machen (wohl eher das Gegenteil), aber am Ende
bin ich dann stolz, dass ich alles selber gemacht habe und ich habe dann
wirklich Ahnung von der Materie. Wer nicht so viel Zeit da reinstecken
will kann natürlich fremden Code nehmen, jedoch wirds bei Firmen dann
kritisch mit den Lizenzen wenn z.B. ein Codeteil und GPL steht und die
Firma den Code z.B. nicht veröffentlichen will.
Bis jetzt habe ich immer alles selbst programmiert. Dabei habe ich das
meiste gleich so gemacht, dass ich es ohne großen Aufwand in ein anderes
Projekt integrieren kann. Z.B. ne Debug-Schnittstelle etc.
Ausser der C-Standardbibliothek nutze ich recht selten fremden Code. Und
wenn, dann nur in Fällen, wo selber-schreiben ausserhalb der
Möglichkeiten bzw. des Sinnvollen liegt und es sich um qualitativ sehr
guten Code handelt. Ein paar dutzend Zeilen Copy-und-Pasten lohnt sich
meistens nicht, auch wenn es manchmal schneller ginge.
Andreas,
Fuer Peripherieschaltungen aller Art baue ich mir immer gepruefte
Bibliotheken die ich dann bei Bedarf immer wieder verwende. Spart eine
Unmenge Zeit und man kann sich darauf verlassen dass es funktioniert.
Wenn man guten Beispielscode findet, dann befasse ich damit bis ich den
Code richtig verstehe und passe ihn dann auf meinen Bedarf an. (AVR,PIC,
ARM7)
Hersteller haben oft gute Application Notes und Beispielcode als
Anfangspunkt.
Auch habe ich mir komplette Application Templates geschaffen. Wenn zum
Beispiel ein RS232 command interpreter notwendig ist, habe ich das fix
und fertig als Anfangspunkt. In diesem Template habe ich auch schon
Support fuer EEPROM, TIMERS, UARTs, buffered RS232 Senden, ADC, etc
Damit kann man neue Anwendungen oft in ganz kuerzer Zeit auf die Beine
stellen
Bis jetzt habe ich Standard AVR/PIC Peripheriebibliotheken fuer:
LCDs (HD44780, SD1530, KS0108)
DS1302, DS1307, DS1306
24CXXXX EEPROMs
DAC
LTC1257, LTC1669, LTC2408AD5262
TMP101, LM75, LM71, DS1820PCF8574A, PCA9698, PCA9554, MAX7301,MAX6957
74HC164, 74HC595, 75HC589
LMX2316, ADF4106
PCF8577, MAX7219
MS5534A
SHT75
CMP03, VECTOR 2X
Gruss,
Gerhard
"If you must steal, then steal only from the best"; -)
- Unbekannter Herkunft
Also das hängt von der Architektur ab:
Unter Linux benutz ich selbstverständlich die C-Bibliotheken, wär ja
auch blöde, wenn ich alles nochmal neu erfinden würde. Speicherplatz
würde das denn auch nicht sparen, da besagte Bibliotheken zumeist
sowieso schon geladen sind, weil fast alle anderen Programmierer genauso
denken^^
Aufm AVR erübrigt sich das Problem, weil ich fast ausschließlich
Assembler programmiere. Was ich bisher an fertigem C-Code benutzt hab,
ging ausnahmslos immer in die Hose.
Hallo
gerade im beruflichen Bereich, versuche ich möglichst den Code slbst zu
schreiben. Aber nicht weil meiner dann besser ist, sondern da es je nach
vorliegendem Code sehr viel Zeit in Anspruch nimmt diesen zu verstehen
bzw. ich ja auch zukünftig eine Verantwortung bzw. die Wartung des
Gesamtproduktes habe. Sollte z.B. ein Fremdcode einen Fehler im Feld
hervorrufen, so wird die Aussage :"Das hab ich aber nicht gemacht" nicht
akzeptiert vielmehr wird dann verlangt, den Fehler sehr schnell zu
beheben. Ich verspreche mir halt von meiner Vorgehensweise dann doch
eine schnellere Fehlersuche und eine bessere Modifiktion auf neue
Gegebenheiten.
Das Obige soll aber nicht heißen, das ich völlig gegen die Verwendung
von fremden Code bin. Dennoch sollte jeder für sich abschätzen, wann und
wie man eigenen bzw. fremden Code einsetzt.