Allgemeine Vorgehensweise beim programmieren

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Allgemeine Vorgehensweise beim programmieren

    Hallo zusammen,

    ich bin Anfänger im programmieren, habe schon einige Bücher über Objective-C und Cocoa gelesen und kann auch Programmcode lesen und verstehen, denke ich. Mit Hilfe von Code Snippets kann ich auch schon kleinere Programme bauen. Was ich allerdings in keinem der Bücher gelesen habe, ist die allgemeine Vorgehensweise beim programmieren. Das soll heißen, ich verstehe nicht wie ich vorgehen muss, wenn ich etwas entwickeln will, wofür ich kein Code Snippet habe.
    Ich wollte z.B. eine einfache App bauen, in der ich mit dem Finger auf dem iPad malen kann, ein ganz einfaches Malprogramm ohne Schnickschnack. Ich habe den Reference-Guide von Apple mit sämtlichen Suchanfragen durchsucht, die mir eingefallen sind, habe aber nichts gefunden, was mir in irgendeiner Art und Weise weiter helfen konnte.
    Wie geht ihr vor, wenn ihr soetwas programmieren wollt? Wie geht man allgemein vor bei solchen Dingen?

    Ich habe den passenden Quelltext zwar über google gefunden, wäre aber selber niemals darauf gekommen.

    Ich hoffe es gibt hier jemanden, der mir das fehlende Wissen zur allgemeinen Vorgehensweise vermitteln kann, denn in Büchern steht es anscheinend nicht und über google oder hier die Forumssuche habe ich auch nichts gefunden. Vielleicht habe ich ja auch etwas grundsätzlich noch nicht verstanden. Mich wundert, dass solche Fragen noch nicht vorgekommen sind..

    Vielen Dank schonmal!
  • Ich denke, das meiste ergibt sich aus Erfahrung. Wenn du die Grundlagen beherrscht und dir zu verschiedenen Themengebieten Tutorials durchliest (oder eben Code Snippets (wobei du diese nicht nur Copy+Pasten solltest, sondern auch verstehen)), dann weißt du bei einem Problemfall bzw. einer Aufgabenstellung, mit welchen Ansatz du arbeiten kannst, welche Frameworks du benötigst etc.. Klar solltest du nicht einfach nach "Malprogramm" googlen, sondern eher nach den Grundlagen, die du dafür benötigst! Also z.B. UIView, CoreGraphics Grundlagen etc..
    Das sind meine bescheidenen Ansätze, wobei ich bei mir auch noch nicht von sehr viel Erfahrung reden kann!
  • Im allgemeinen gibt einem das MVC-Architekturmuster schon einen ganz guten Leitfaden. In Deinem Fall sind erstmal zwei Komponenten wichtig ein View für die Darstellung der Zeichnung und ein Viewcontroller für die Auswertung der Gesten und der Umwandlung in Zeichenbefehle für den View. Das kannst Du als Basis nehmen, um dann sukzessive Deine App zu entwickeln. Die nächsten Schritte könnten beispielsweise sein:
    1. Wie zeichnet eine View in Cocoa Touch seinen Inhalt?
    2. Wie kann ich Nutzereingesten empfangen und verarbeiten?
    3. Wie und wo kann sich die App die gezeichneten Inhalte merken, damit die App den Bildschirminhalt jederzeit wiederherstellen kann?
    4. ...
    In der Regel führt die Beantwortung und Umsetzung einer Frage wieder zu weiteren Fragen, und dabei entsteht dann daraus (hoffentlich) eine App. Und bei offenen Fragen gibt es ja immer noch das Forum. ;)
    „Meine Komplikation hatte eine Komplikation.“
  • Eigentlich ist Programmieren ja ganz einfach - man muss nur genau wissen, was man eigentlich will ;)
    Dann zerlegt man sein Problem in Teilaufgaben, die man lösen kann. Eigentlich so, wie im realen Leben auch:
    Wenn ich ein Regal bauen will, brauche ich einen groben Bauplan, muss das Material besorgen, Einzelteile zuschneiden, Verbindungen herstellen (Schrauben? Nägel? Leim?...) - und wenn ich das alles erledigt habe, ist der eigentliche Zusammenbau nur noch Formsache.
    Beim Malen muss ich erst einmal den Finger "verfolgen", und dann die richtigen Pixel einfärben.
    Zu den Teilaufgaben findet man in der Regel Dokumentation, aber je mehr Grundlagen man kennt, desto leichter findet man die richtigen Werkzeuge für neue Probleme (und falls dir das zu anstrengend vorkommt: Einfach mal ein bisschen mit Assembler arbeiten (oder mit der Hand in die Kreissäge fassen ;-))
  • Eigentlich hat t-no genau das gesagt, was ich schreiben wollte - genau so ist es: Analytisches Denken.

    Aus diesem Grund finde ich den Programmiereinstieg mit Snippets schwierig: Man bekommt zwar schnelle Erfolge, aber im Grunde lernt man nicht seine Werkzeuge kennen, sondern nur die Heißklebepistole, mit der man fertige Teile zusammenpappt. Das kann in einigen (wenigen) Fällen sinnvoll sein, in den meisten gibt es bessere und richtigere Wege.
    Multigrad - 360°-Produktfotografie für den Mac
  • Und noch eins ergänzt, ansonsten haben t-no und mattik das m. E. Wichtigste geschrieben: Verliere beim Programmieren nicht das Ziel aus dem Auge: Für welche Zielgruppe ist Deine Anwendung, welchen Zweck verfolgt sie? Nicht immer sind mehr Features, Optionen und Wahlmöglichkeiten der richtige Weg. Gerade in der Apple-Welt herrscht(e) eher ein Hang zum Minimalismus .. Ich liebe den Ausspruch "Perfektion ist nicht dann erreicht, wenn man nichts mehr hinzufügen, sondern nichts mehr weglassen kann".

    Ansonsten: Eine Problemstellung in Teilaufgaben zerlegen, diese anfangs ruhig einfach lösen, um den Blick auf das Gesamte nicht zu verlieren. Dann iterativ die Teilaufgaben perfektionieren. Ich arbeite anfangs häufig mit Dummy-Funktionen, die z. B. fest codierte Ergebnisse liefern, und erst später mit den notwendigen Funktionen ergänzt werden. Dann lassen sich Architekturen schon von Anfang an umsetzen. Löse Problem erst, wenn sie da sind ... und ziehe einfach lesbaren Code den super-optimieren Einzeilen-Statements vor.

    Puh, so viele (gutegemeinte) Ratschläge, ich komme mir oberlehrerhaft vor ... dann lieber WEG :D

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Vielen Dank an alle, für die schnellen Antworten!

    Ihr habt natürlich Recht, ich hätte viel weiter "unten" anfangen müssen zu suchen und auf Pixelebene denken müssen. Ich dachte nur irgendwie, dass es vielleicht in irgendeinem Framework von Apple schon die Funktion zum "malen" gibt.
    Trotzdem habe ich anscheinend noch irgendeine Wissenslücke um korrekt mit dem Reference Guide von Apple umgehen zu können.
    Klar, ich kann alle meine Funktionen die ich brauche googlen und man findet ja mittlerweile auch schon zu den meisten Sachen, Tutorials oder Code Snippets, aber ich würde gerne auch wirklich die Vorgehensweise verstehen und nicht den gefundenen Code mit der Heißklebepistole zusammenkleben, wie mattik so schön gesagt hat. ;)

    @MyMattes ein richtiges Ziel habe ich derzeit garnicht, also ich teste nur verschiedene Dinge um das Programmieren an sich zu verstehen. Ich habe keine App oder kein Projekt an dem ich arbeite. Ich hatte nur einige Bücher und Tutorials durchgearbeitet um dann zu merken, dass ich aufgeschmissen bin, wenn ich keine Code Snippets habe. Das malen ist ja nur eine kleine Aufgabe (dachte ich zu mindestens am Anfang).

    Um also einfach bei dem Beispiel mit dem malen zu bleiben.
    Ich weiß, dass ich die Methoden tochesBegan, touchesMoved und touchesEnded habe, mit denen ich dann die Position des Fingers abfragen kann.
    Die nächsten Schritte sind dann ja, die Positionen zu speichern und anschließend mit farbigen Pixeln zu verbinden.
    In dem Beispiel, welches ich über google gefunden habe, wurde dies mit einem Bezier Pfad gelöst (UIBezierPath). Und genau da ist mein Problem. Wie wäre ich darauf gekommen? Ich hätte die Referenz mit sämtlichen Begriffen durchsucht, aber auf einen Bezier Pfad wäre ich nicht gekommen.
    Ist es hier wirklich nötig immer zu googlen oder fehlt mir einfach die Erfahrung um die Begrifflichkeiten zu kennen?

    Wie wärt ihr vorgegangen? Also Schritt für Schritt mit diesem Beispiel. Wonach hättet ihr im Reference Guide als erstes gesucht?
  • Problemzerlegung wie oben schon gesagt.

    Wie und womit 'zeichnet' man überhaupt? und das führt dich schon meist in die Richtung die interessant wird.

    zb liefert "Cocoa drawing" schon als erstes Ergebnis den Drawing Guide und ab da ist dann lesen und verstehen angesagt… Was dich weiter und tiefer hinab in den Kaninchenbau führt.
    snafu
    :() { :|: &};:
    sometimes i dream in hex
    Obey gravity! Because its a law!
  • Snap schrieb:


    Ich hoffe es gibt hier jemanden, der mir das fehlende Wissen zur allgemeinen Vorgehensweise vermitteln kann, denn in Büchern steht es anscheinend nicht und über google oder hier die Forumssuche habe ich auch nichts gefunden. Vielleicht habe ich ja auch etwas grundsätzlich noch nicht verstanden. Mich wundert, dass solche Fragen noch nicht vorgekommen sind..


    Auch wenn Du mit Deiner Vorgehensweise zum veritablen Agenturprogrammierer avancieren kannst, gibt es ein paar Dinge, die Du Dir anlesen solltest. Mit Snippet-Zusammenkleben und Bauernschläue kommt man erschreckend weit. Im Fehlerfall, oder wenn wirklich mal ein neuer Algorithmus gefragt ist, stehst Du damit allerdings im Regen. Hier ein paar Literaturtipps:
    Wenn Du das erste Buch gelesen hast, kannst Du hier die richtigen Fragen stellen. Wenn Du das zweite gelesen hast, kannst Du Dir die meisten Antworten darauf selber geben. Und das dritte Buch ist wg. der erforderlichen Transferleistung (Programmiersprache ist Scheme) harter Tobak, aber wenn Du das durchgearbeitet hast, kennst Du das Lambda-Kalkül, weisst wie man einen Compiler baut und wie Assembler funktioniert. Dann bist Du ein echter Mann, mein Sohn. :P