Forum: Compiler & IDEs Wie ist Euere C-Programmier-Vorgehensweise bzgl. fremdem Code ?


von UBoot-Stocki (Gast)


Lesenswert?

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

von Benedikt K. (benedikt)


Lesenswert?

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.

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


Lesenswert?

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. ;-)

von die ??? (Gast)


Lesenswert?

"Wenn man sich auf andere verlässt ist man verlassen."

  Beitrag "Re: Breitband-NF-Phasenschieber, DSP mit AVR"

von Gerd G. (gege)


Lesenswert?

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.

von UBoot-Stocki (Gast)


Lesenswert?

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

von Timmo H. (masterfx)


Lesenswert?

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.

von mr.chip (Gast)


Lesenswert?

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.

von Gerhard. (Gast)


Lesenswert?

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, LTC2408
AD5262
TMP101, LM75, LM71, DS1820
PCF8574A, 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

von Sven P. (Gast)


Lesenswert?

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.

von gast (Gast)


Lesenswert?

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.