Ergebnis 1 bis 9 von 9
  1. #1
    Moderator Avatar von morly
    Registriert seit
    15.07.2012
    Ort
    Österreich
    Beiträge
    6.684
    Thanks
    789
    Thanked 2.764 Times in 1.357 Posts

    Programmieren? Kurzer Einblick was so passiert...

    Hi Leute,
    warum so ein langes Post? Tja: möchte mal einen kleinen Einblick ins Programmieren geben und was die beteiligten Leute hier so treiben...

    Zur Erklärung - das klingt alles so leicht: "kann das mal wer fixen" - "noch immer der Fehler" - "..."
    Unsere Images werden mit 2 Programmiersprachen realisiert, Python und C++. C bzw. C++ ist meiner Meinung nach eine der besten Programmiersprachen die es gibt, allerdings keine triviale Geschichte.

    Zum Beispiel ist hier der Programmierer alleine fürs komplette Speichermanagement verantwortlich. Speicher den ich anfordere (wird im sog. Heap abgelegt) wird dort reserviert und nicht mehr freigegeben - dafür bin ich selber verantwortlich. Viele programmieren voller Elan darauf los, wenn alles funktioniert sind alle happy - nur vergessen viele den angeforderten Speicher wieder freizugeben. Für alle die sich etwas auskennen:
    Code:
    Type *myVar;
    myVar = new Type;
    myVar = 0;
    Also: hier wird ein Pointer mit dem Typ Type angelegt und mit der zweiten Zeile (new) Speicher (im Heap) reserviert. Nur den Zeiger auf Null setzen (3. Zeile) gibt den Speicher nicht frei, da fehlt folgendes:
    Code:
    delete myVar;
    Also: Code funktioniert, nur der Speicher wird nicht freigegeben - je öfter sowas passiert, desto weniger Speicher ist vorhanden - und das delete kann man leicht mal vergessen. Was haben wir hier: ein sog. Speicherloch ("Memory Leak"). Dieser Fehler findet sich fast überall (auch bei komm. Software).
    Darum haben andere Programmiersprachen auch die sog. "Garbage Collection" (Java, C#, ...). Da genügt es wie im ersten Beispiel den Zeiger auf 0 zu setzen oder noch einfacher, dass die Variable die Gültigkeit verliert (Unterprogramm zu Ende, ...). Der "Garbage Collector" erkennt das von selber und gibt den Speicher frei... Aber das benötigt natürlich CPU Resources (ist also langsamer) - darum verzichtet C++ darauf.
    Tja - aber unsere Images sind nunmal in C bzw. C++ geschrieben und glaubt mir, da fehlen so einige "delete"

    Nun zum nächsten Punkt: wenn ihr etwas programmieren könnt und ich geb euch ne Aufgabe ist das wie das Lösen eines Rätsels - man arbeitet sich heran bis alles wie gefordert funktioniert. Viele vergessen den Code zu dokumentieren, also Kommentare hinzuzufügen, es geht ja eh alles. Und wenn man seinen eigenen (!!) Code ca. 4-6 Woche später wieder sieht weiss man nicht mehr was man geschrieben hat. Man benötigt auch für kleine Programme ne Weile wieder zu verstehen was man da so fabriziert hat. Sourcecode ist immer anders, auch für die selbe Aufgabe und vom selben Programmierer.

    Jetzt machen wir das ganze noch schwieriger: ihr schreibt ein kleines C++ Programm und gebt es einen anderen - der soll es verstehen/Debuggen/Fehler finden. Das ist wirklich schwer und selbst für kleine Programme bedarf es grosser Übung. Wenn einer gut programmieren kann heisst es noch lange nicht das er auch gut Sources lesen kann - auch das muss man üben. Und gerade C bzw. C++ ist bekannt dafür extrem effizienten code zu schreiben - aber diese Dinger sind extrem schwer zu lesen. So wurde die Lösung des 8-Damen-Problems in 3 Anweisungen programmiert - irre!

    So - und jetzt zu unseren Images: hier verstecken sich vieeeeeeeele C++ Files mit dazugehörigen Header Files - tausende und abertausende "Lines of Code" von vieeeeeelen verschiedenen Entwicklern. Zusätzlich noch Python Sources - die arbeiten natürlich zusammen. Jeder fixt etwas, dadurch entsteht was anderes, es wird was erneuert, altes bleibt bestehen, ... Seiteneffekte ohne Ende. Da muss man erst mal ansatzweise verstehen was die Programmierer alles so gemeint haben - dokumentiert ist ja auch nichts - das wird dann richtig komplex!!

    Ich will nicht irgendwie den schlauen Michl mimen - aber mal einen kleinen Einblick bieten was die Leute hier machen. Und da sind mal schnell 100 Stunden vorbei ohne das man gross weiter ist. Ihr seht schon - das geht etwas weiter als ein Modellauto zu kleben oder sonstiges (nichts gegen Modellbau - ist spitze!). Kurzum, hier sind viele Leute beteiligt die in der IT-Branche richtig Geld machen könnten - die leisten super Arbeit.

    Ich weiss auch, dass es niemand böse meint mit "blöder Tunerbug noch himmer nicht gefixt" oder so, aber vielleicht helfen die angeführten Zeilen einem "Nicht-Programmierer" etwas die Komplexität und Schwierigkeit zu verstehen.

    Also dann,
    bravo wer so weit gekommen ist und dieses riesige Post gelesen hat
    wir fighten weiter und versuchen natürlich weiter Fehler auszubügeln und Neuerungen zu implementieren.

    Happy Coding,
    morly
    "Every Setback is a Set Up for a Comeback"



  2. #2
    VIP Avatar von ReWard
    Registriert seit
    14.07.2012
    Beiträge
    3.860
    Thanks
    1.276
    Thanked 994 Times in 716 Posts
    Danke morly für die Super Beschreibung.

    Ich hoffe jetzt geht vielen mal ein Licht auf.

  3. The Following User Says Thank You to ReWard For This Useful Post:



  4. #3
    Best Betatester & VIP Avatar von Anskar
    Registriert seit
    08.05.2012
    Ort
    Thüringen am Fuße der Wartburg
    Beiträge
    6.107
    Thanks
    3.259
    Thanked 1.304 Times in 927 Posts
    Danke morly!
    Da sag ich mir "Schuster bleib bei Deinen Leisten" ist mir alles doch zu hoch, da teste ich lieber und gebe dann Feedback.
    Kapiert habe ich noch nicht mal ansatzweise etwas, liegt halt an den Grundvoraussetzungen.

    Mach weiter so ! Danke für Deinen unermüdlichen Einsatz!

    MfG
    2x Kathrein UFS 910/ 1x UFS 912/ 2x UFS 913 / Quad Plus / Samsung Galaxy S5

    >>>Hilfe zur Selbsthilfe: FAQ <<<



  5. The Following 2 Users Say Thank You to Anskar For This Useful Post:



  6. #4
    Moderator Avatar von morly
    Registriert seit
    15.07.2012
    Ort
    Österreich
    Beiträge
    6.684
    Thanks
    789
    Thanked 2.764 Times in 1.357 Posts
    Zitat Zitat von Anskar Beitrag anzeigen
    Kapiert habe ich noch nicht mal ansatzweise etwas, liegt halt an den Grundvoraussetzungen.
    Hi Anskar - hab ja ehrlich mit einem Feedback von dir gerechnet - auf dich ist Verlass!
    Weisst: musst nicht alles verstehen (Speicher, Pointer, ...) - hab das eben geschrieben um die Komplexität anzuführen von dem was hier betrieben wird.

    Und ehrlich - welchem Banker ist bewusst was er wirklich jeden Tag bedient - und welchem Arzt was er so durchklickt...

    Und wenn du sagst du verstehst es nicht hab ich eins geschafft - du weisst, das es kompliziert ist
    "Every Setback is a Set Up for a Comeback"

  7. The Following User Says Thank You to morly For This Useful Post:



  8. #5
    VIP Avatar von Macbest
    Registriert seit
    15.05.2012
    Ort
    HDMedia Universe
    Beiträge
    5.461
    Thanks
    4.709
    Thanked 1.237 Times in 994 Posts
    Das hast du sehr gut beschrieben morly, klasse.

  9. The Following User Says Thank You to Macbest For This Useful Post:



  10. #6
    Erfahrener Benutzer
    Registriert seit
    12.05.2012
    Beiträge
    123
    Thanks
    33
    Thanked 42 Times in 19 Posts
    Ich denke, debuggen(Fehlersuche) fremder Programme ist mit das Schwierigste was man sich vorstellen kann. Man muss auch bedenken, viele Dinge gibt es ohne Quelltext (Source) gerade im Receiver- und Handy-Bereich und nur weil ein Programm auf einer Architektur läuft, bedeutet es lange nicht, dass es auf anderen Architekturen ebenso läuft.
    Jedes Programm greift auf Betriebsystem und Treiber zu und C oder C++ sind ja auch nur Programmier-Hochsprachen, d.h. beim Übersetzen (compilieren) wird alles in die Maschinensprache des jeweiligen Prozessors übersetzt (PPC, MIPS, ARM, SH4, x86, IA64 usw.) und anschliessend wird <gelinkt> was bedeutet, dass ein Programm für das jeweilige Betriebssystem gebaut wird (es werden dazu auch noch Daten aus fertigen Bibliotheken hinzugefügt). Aber es geht ja noch weiter, jedes System enthält duzende Chips die ihrerseits wieder eine Firmware benötigen (an die kommt man ja meist nicht ran da in den Chip gebrannt). Und dieses ganze System greift in einander, vielfach sind noch Workarounds für bekannte Fehler nötig, da fertige Chips nur sehr schwer gefixt werden können. Das bedeutet man umgeht ein bekanntes Problem (nicht immer elegant). Also mal eben ist nicht ... Selbst Firmen wie Intel liefern gleich einige Dokumente mit die bekannte CPU-Fehler auflisten. Allerdings gibt es bei AMD und Intel den Microcode der beim Rechnerstart in den Prozessor geladen wird und vieles fixen soll. Ob es sowas auch im Embeddedbereich gibt kann ich nicht sagen. "Mal eben" oder "mal schnell" ist schwer beim Programmieren.

    Daher ein fettes DANKE SCHÖN an die Team-Leute !!!
    Geändert von balou1974 (20.09.2013 um 08:17 Uhr)

  11. The Following User Says Thank You to balou1974 For This Useful Post:



  12. #7
    Moderator Avatar von morly
    Registriert seit
    15.07.2012
    Ort
    Österreich
    Beiträge
    6.684
    Thanks
    789
    Thanked 2.764 Times in 1.357 Posts
    Zitat Zitat von balou1974 Beitrag anzeigen
    Ich denke, debuggen(Fehlersuche) fremder Programme ist mit das Schwierigste was man sich vorstellen kann.
    Genau das wollte ich ausdruecken. Ein bekannter Programmierer sagte mal zu mir: ich schreibe so viele Hacks wie moeglich, Kommentiere entweder unwichtiges oder falsch und erzeuge Code den niemand wirklich lesen kann (in seiner Programmierbude) - auf die Frage warum antwortete er: weil meinen Code niemand verstehen, warten oder aendern kann - somit bin ich unkuendbar...
    Anmerkung: er ist nicht mehr bei dieser Firma...
    "Every Setback is a Set Up for a Comeback"

  13. The Following 2 Users Say Thank You to morly For This Useful Post:



  14. #8
    Erfahrener Benutzer Avatar von svox
    Registriert seit
    25.03.2013
    Beiträge
    336
    Thanks
    51
    Thanked 28 Times in 20 Posts
    Zitat Zitat von morly Beitrag anzeigen
    weil meinen Code niemand verstehen, warten oder aendern kann - somit bin ich unkuendbar...
    Anmerkung: er ist nicht mehr bei dieser Firma...
    Hehe und er hat es sicherlich ernst gemeint.
    Geändert von svox (02.10.2013 um 19:25 Uhr)


  15. #9
    VIP Avatar von BPanther
    Registriert seit
    10.05.2012
    Ort
    Berlin
    Beiträge
    619
    Thanks
    33
    Thanked 157 Times in 114 Posts
    @morly: Danke, wirklich gut beschrieben.
    MfG BPanther

    Thx udog für das Bild.
    TV: Sony Bravia KDL-46HX755
    Boxen: 7x UFS910 (128MB RAM), UFS912, UFS913, AV700, AV7000, AV7500 (DVB-S/C/T), Edision Argus Pingulux, Vizyon820HD


Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •