1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

Programmieren lernen

Dieses Thema im Forum "AppleScript" wurde erstellt von gilmour, 08.03.08.

  1. gilmour

    gilmour Jamba

    Dabei seit:
    13.12.07
    Beiträge:
    54
    Hallo, ich würd gern lernen programme für Mac OS X zu programmieren. Ich habe noch nie programmiert. Und wollt wissen was man dafür alles lernen muss und ob es nützliche Internet seiten oder Bücher dazu gibT?
     
  2. Kwoth

    Kwoth Jakob Fischer

    Dabei seit:
    06.07.05
    Beiträge:
    2.914
    Mein Tipp:

    [​IMG]

    Objective-C und Cocoa. Von Klaus M. Rodewig (Autor), Amin Negm-Awad (Autor)
     
  3. tommy

    tommy Jamba

    Dabei seit:
    27.08.05
    Beiträge:
    59
    Hallo,

    ja auf alle Fälle http://developer.apple.com/de dort kannst Du auch xCode kostenlos downloaden. Ebenfalls findest Du da auch verschiedene Referenzen zu den Frameworks.

    Jetzt solltest Du erst einmal überlegen was Du später einmal programmieren möchtest. Mehr Web-Programmierung oder Systemprogrammierung? Für System steht da ganz klar Objective-C und C/C++ ganz oben. Objective-C hat etwas an Abschreckung, da es für Anfänger absolut nicht ganz klar ist als bei C99.

    Java bietet einen schönen Einstieg und nimmt Dir auch die Speicherbereinigung ab. Man kann damit "fast alles" anstellen, nur etwas langsamer. Gleicht aber die Entwicklungszeit wieder aus.

    Objective-C schöne native Anwendungen mit Cocoa
    Java der Alles-könner (andere Frameworks -> auch Java: z.B.: QT)
    C/C++ siehe Obj-C nur das man auch andere Frameworks nutzen kann

    Wenn Du also Software portieren willst nimm Java. Als Einsteiger wirst Du es auch schwerer bei Objective-C haben, da es weniger Material dazu gibt. Zwei drei deutsche Bücher gibt es auf dem Markt im 30-50 Euro Bereich.

    Nun dann viel Spaß bei Deinem Vorhaben :)
    Probiere ruhig etwas rum was Dir mehr gefällt. Das erste muss nicht gleich das beste sein!

    Gruß, Tommy

    edit:
    AppleScript gibt es noch, aber nicht gerade für große Dinge. Ansonsten noch Ruby, Perl, TCL und ein paar andere Konsorten. Viel halte ich aber davon nicht im GUI Bereich.
     
  4. gilmour

    gilmour Jamba

    Dabei seit:
    13.12.07
    Beiträge:
    54
    Du meinst also Java wäre am besten als Einstieg. Gibts da irgendwelche Internet seiten wo man als anfänger was lernen kann oder empfelens werte bücher für anfänger für Java?
     
  5. Bier

    Bier Pomme au Mors

    Dabei seit:
    24.08.07
    Beiträge:
    867
    Java ist ja auch so leicht... klar. Ich würd ja gleich mit Bytecode anfangen... ah neh, Java funktioniert ja schon auf der Ebene. Hmmh, was nehmen wir dann: Marbolge?

    Programmieren kann man nicht mit einer _Sprache_ lernen. Ich lerne schließlich Sprechen, dann inhaltsbezogene Sätze bilden. Eine Sprache eignet sich so was von schlecht zum Erlernen von Programmierkonzepten...
    Pseudo-code, algorithmisch orientiert, möglichst C-nah. Dann die Prinzipien wie Schleifen, Methoden, OOP lernen. Dann erst eine Sprache. Anders geht das sowieso nicht. Wäre ja auch recht verwunderlich wenn man loslegen könnte mit Objective C... Nach dem Motto: was wir nicht können, kann für uns das Framework. Herrliche Idee.
     
  6. tommy

    tommy Jamba

    Dabei seit:
    27.08.05
    Beiträge:
    59
    http://www.galileocomputing.de/openbook/javainsel7/

    Das gibts von Galileo auch in der C Version. http://pronix.de mit einer speziellen Linux Ausgabe. Irgendwo liegt auch eine Win-API Ausgabe rum.

    Mit Java wirst Du auf jedenfall schnell Erfolge haben, da alles "da ist von Haus aus". Ich habe damals mit Assembler angefangen, die einzigste Quahl...

    Objective-C ist da eh der falsche Kandidat :-D Diese + und - haben mich anfangs völlig konfus gemacht, und erst diese Klammern [] erinnern mich mit grauen an TCL.
     
  7. tfc

    tfc Ontario

    Dabei seit:
    21.07.07
    Beiträge:
    348
    Wenn man noch nie programmiert hat, dann ist Python oder Ruby wohl eine bessere Wahl.

    Wenn man damit schon ein paar Anwendungen geschrieben hat, dann muss man sich beim Umstieg auf eine der C-Sprachen zwar schwer umerziehen, was das Handling mit Datentypen angeht, aber das ist leichter hinzukriegen, wenn man mit Programmierung allein vertrauert geworden ist.
     
  8. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865
    Die Syntax von Objective-C verfolgt aber das Ziel, natürliche Sprache nachzubilden:

    [Lisa wirf:[ball mitDerFarbe:rot] zu:Tom];

    ist gültige Objective-C Syntax

    Alex
     
  9. tommy

    tommy Jamba

    Dabei seit:
    27.08.05
    Beiträge:
    59
    Ein C Verwöhnter "Tom getBall(Lisa)" finde ich ist anfangs logischer. Diese Klammern können leicht etwas komplexer erscheinen lassen als es wirklich ist. Daher finde ich OBJ-C für den Einstieg unpassend. Aber wer ins kalte Wasser fällt, ja der lernt schwimmen :-D
     
  10. Zettt

    Zettt Doppelter Melonenapfel

    Dabei seit:
    16.10.05
    Beiträge:
    3.374
    Mal so nebenbei...

    Hast du vielleicht ein paar Online-Resourcen wo man sich bisschen in das Thema OOP einpfriemeln kann? Irgendwie tu ich mich da doch noch ziemlich hart.
    Auch das mit den Klassen hab ich noch nicht ganz verstanden :(
     
  11. tommy

    tommy Jamba

    Dabei seit:
    27.08.05
    Beiträge:
    59
    darüber gibt es ganze Bücher, aber ein paar C++ und Java Bücher greifen das ganz gut auf. Kostenlos "Java ist auch eine Insel" von Galileo, oder Java Core von Sun. Allerdings kosten die beiden Bücher um die 100 Euro im Set.. also solltest Du Dir das überlegen.

    Aber was verstehst Du an den Klassen nicht, vielleicht kann man Dir da ja eine Erleuchtung bringen? Achja, bist Du nun bei Java, Objective-C oder ganz wo anders gelandet? Das Prinzip ist eigentlich immer gleich. Nur das optische ist manchmal anders :)

    http://www.complang.tuwien.ac.at/franz/objektorientiert/skript07-1seitig.pdf
    Wenn Du etwas mit C oder PHP...(ohne OOP) programmierst und keine Klassen hast wirst Du vielleicht schneller hinter der Wertschätzung kommen Software Komponenten wieder zu verwenden. Anfangs fand ich Klassen totalen Overhead, und habe C++ auch aus dem Grund hingeschmissen. Ging ja alles toll mit C. Doch irgendwann hat man das Rad 50 x erfunden, und dann fragt man sich obs nicht auch besser geht und schaut neidisch zu Java :)

     
    #11 tommy, 10.03.08
    Zuletzt bearbeitet: 10.03.08
  12. Zettt

    Zettt Doppelter Melonenapfel

    Dabei seit:
    16.10.05
    Beiträge:
    3.374
    Naja gehoert ja eigentlich nicht zum Thread aber na gut.

    Also bisher habe ich noch nicht verstehen koennen was Klassen genau sind. Vielleicht fehlt mir da mal ein konkretes praktisches Beispiel.

    Ich lese gerade "Objective-C und Cocoa" darin werden natuerlich auch staendig neue Klassen erstellt.
    Nur frag ich mich auch immer "Wieso, warum, weshalb?"

    Befreundete Programmierer wenn man fragt bekommt man meist folgende Antwort:
    Das ist nicht das Problem. Das hab ich schon verstanden Klasse klasse und so. Nur irgendwie weiss ich in der Praxis wenn ich vor, sagen wir, einem Ruby Skript sitze nie wann es jetzt an der Zeit ist eine Klasse zu definieren.
    Ist das verstaendlich oder Bloedsinn?

    EDIT:
    Das verlinkte PDF ist ganz gut. Danke
    Versteh ich das richtig, dass ich eine Klasse immer dann erstelle, wenn ich eine gewisse Sammlung von Methoden zusammenfuehren moechte? (Im Sinne von einheitlich machen) Oder greift ist das in Wahrheit noch weiter?
     
    #12 Zettt, 10.03.08
    Zuletzt bearbeitet: 10.03.08
  13. tommy

    tommy Jamba

    Dabei seit:
    27.08.05
    Beiträge:
    59
    Man sollte keine Wollmilchsau-Klassen erstellen. Wie ichs oben versucht habe zu erklären, die Klassen sollten wiederverwendbar sein. Ob man nun eine Klasse unbedingt für einen einfachen Ping in C++ anlegen muss, ist wohl jedem selbst überlassen. In Java muss man es eben.. egal obs eben ein Hello-World ist.

    Der Sinn kommt bei größeren Projekten, wenn man wirklich 2 Varianten zur Auswahl geben möchte.
    Datenbank oder eine Datei im FS für die Konfiguration.
    Beispiel 2 wäre ein Fenster mit dem WinAPI und C++. Um nicht ständig 120 Codezeilen für 1 Fenster zuzuschreiben haust Du >>wiederverwendbar<< alles in Klassen. Danach kann man z.B. Buttons hinzufügen über eine Liste... usw.

    edit:
    Wichtig wäre da der Aspekt der Vererbung. Deine Fensterklasse sollte also vererbar sein, dass man Dinge hinzufügen kann ohne wieder von vorn anzufangen. Wäre ganz ideal wenn der Sourcecode verschlossen ist, sonst guckt man in die Röhre.

    Bei PHP fange ich ohne OOP gar nicht erst an. Ein Freund von mir findet das total verrückt. Naja, bis jetzt konnte ich ihm noch nicht zu Klassen überreden, wobei das in PHP 5 ja nicht schlecht ist.

    Overloading könnte man bei der Vererbung dann mit einordnen. Gefällt Dir etwas nicht an der Mutterklasse überschreibst Du es einfach. Tja bei normalen C,Perl(..) Funktionen ist es schon wieder nervig.. austauschen!
     
    #13 tommy, 10.03.08
    Zuletzt bearbeitet: 10.03.08
  14. Zettt

    Zettt Doppelter Melonenapfel

    Dabei seit:
    16.10.05
    Beiträge:
    3.374
    Achso.

    Das steht auch in diesem PDF, dass man eben mit einer Klasse nur das "interface" anderen Programmierern zeigen muss, damit diese auf die Klasse zugreifen koennen. Die Klasse macht dann eben irgendwas bestimmtes - was verborgen ist.
    Wichtig ist nur, dass man dadurch Fehler leichter aufspueren kann, wenn man zur Laufzeit feststellt es gibt an dieser oder jenen Stelle Probleme, dann liegt das wohl an der Klasse sowieso und der Methode x.
    Und der Code wird natuerlich wiedervendbar. Da hast du Recht.

    Klar keine Wollmilchsau, sonst geht das Argument der Fehlersuche ja wieder in Sack.
    Man buendelt also gewisse Funktionen eines Programmes zu einer Klasse?!

    OOP in PHP? o_O What?
     
  15. tommy

    tommy Jamba

    Dabei seit:
    27.08.05
    Beiträge:
    59
    klar schon seit PHP4.. mit der 5 kamen Konstruktoren/Dekon. dazu, und natürlich public, private sowie Schnittstellen und ein paar andere Dinge. Die neueren Frameworks sind ja auch objektorientiert.

    Man sollte auch darauf achten mit den Variablen, beispielsweise man hat "public String Content" nun kommt ein kluger Kopf auf die Idee das die Variable Content kein String-Objekt mehr ist sondern XmlString. Falscher Typ -> geht nicht zu kompilieren..

    Abhilfe wäre damit

     
  16. Amin Negm-Awad

    Amin Negm-Awad Süsser Pfaffenapfel

    Dabei seit:
    01.03.07
    Beiträge:
    665
    Nein, das Prinzip ist nicht immer gleich. "Es gibt Klassen und es gibt Instanzen" ist viel zu kurz gedacht. Genau genommen interessiert sich Objective-C gar nicht um Klassen. Sie sind eine Programmierhilfe, aber zur Laufzeit unbedeutend. Das ist definitiv ein anderes Prinzip als etwa in C++.

    Jepp, das ist ein Problem: Die meisten Leute verstehen recht schnell, was eine Klasse ist. Dabei konzentrieren sie sich jedoch zu sehr auf die Funktion als Typ. Der Grund dürfte darin liegen, dass etwa in C++ eine Klasse auch nur ein Typ ist.

    Warum also?
    Eine Klasse ist ja die Vorlage einer Verbindung von Code und Daten zu einer Einheit. Sie kann damit als Vorlage dienen. Das erleichtert die Programmierarbeit, hat aber erst einmal nichts mit OOP zu tun. Ganz morderne Programmiersprachen verzichten ganz auf Klassen (Prototypes).Die richtige Frage lautet: Wozu Objekte?

    Damit kannst du funktionale Module deiner Applikation strukturieren. Nimm ein Textfeld-Objekt. hier werden die User-Eingabe, Farben, Ränder usw und der Code, der Tastendrücke verwaltet zu einer Einheit. Wie machst du das ohne Objekte?

    Du fängst dann an ein Objekt zu erstellen, wenn du eine Funktionseinheit in deinem Programm hast. Schau dir etwa Absolute Beginners an: Es wird ein Umrechnungsobjekt programmiert. Wieso? Weil Umrechnen eine funktionale Einheit der Applikation ist.

    Weil ich so ein Umwandlungsobjekt habe, muss ich mir eine Umwandlungsklasse programmieren, die ich dann instantiere.
     
  17. Amin Negm-Awad

    Amin Negm-Awad Süsser Pfaffenapfel

    Dabei seit:
    01.03.07
    Beiträge:
    665
    Die Wiederverwertbarkeit ist zwar ein ganz gerne genommenes Argument, stimmt aber nicht. Der Code wäre exakt ebenso wiederverwertbar, wenn man ein klassisches C-Modul hätte, welches ein paar Namenskonventionen folgt und außerdem immer einen Parameter self oder this hat.

    Der Unterschied liegt in der Kapselung und dort auf logischer Ebene: Ein Objekt ist eine gekapselte Einheit. Es hat Türen zum Betreten, es lässt sich im Ganzen herstellen, es lässt sich im Ganzen referenzieren, kopieren usw. Es kommt auf die Denke an: Das ist eine Einheit. Denke sie auch als Einheit.

    Klassen sind nicht notwendig und dienen nur zur Programmiererleichterung. Wie gesagt: Man kann ohne Not auf Klassen verzichten.
    +++
    Um auf die Ausgangsfrage zurück zu kommen: Du erstellst ein Objekt, wenn du ein "Ding" in deinem Programm abbilden willst. Einen Text, einen Button, eine Maschine usw.
     
    #17 Amin Negm-Awad, 11.03.08
    Zuletzt bearbeitet: 11.03.08
    Zettt gefällt das.
  18. Zettt

    Zettt Doppelter Melonenapfel

    Dabei seit:
    16.10.05
    Beiträge:
    3.374
    Ich fasse mich mal kurz, weil ich gerade keine Frage mehr erwidern kann:

    Achsooo :oops: und dankeschoen!

    Mir ist gestern abend noch gekommen, dass das im Buch ja eigentlich auch ganz gut erklaert wird, einem aber halt nicht so ins Gesicht springt. Ich denke mal das liegt daran, dass "Objective-C und Cocoa" kein Buch ist was sich ausschliesslich mit OOP und Klassen allgemein beschaeftigt.
     
  19. hanebambel

    hanebambel Becks Apfel (Emstaler Champagner)

    Dabei seit:
    31.08.04
    Beiträge:
    333
  20. Amin Negm-Awad

    Amin Negm-Awad Süsser Pfaffenapfel

    Dabei seit:
    01.03.07
    Beiträge:
    665
    In dem Buch ist das nur deshalb so "leicht" erklärt, weil es einfach gemacht wird. Man kann da wunderbar theoretisieren. Klar. Man muss es aber häufig nicht, wenn man nicht Sprachdesigner ist. Und viele Bücher wollen mit Theoriewissen protzen. Hilft's dem Leser?

    In der nächsten Auflage ist das "Wie entstand OS X"-Kapitel durch ein Einführungskapitel in OOP ersetzt worden, aber sehr bezogen auf Objective-C. Es wird auch nicht theoretisiert, sondern erläutert warum man das überhaupt braucht, als anwendungsbezogen. Dabei gehe ich übrigens von Nachrichten aus, komme zu Objekten und erst dann zu Klassen. Mal eine (unlektorierte und unformatiert, aber ich denke man sieht die "Einrückungen" am Text.) Leseprobe ohne Bilder.
    Und man sieht schon: Das würde für C++ nicht so stimmen. Aber Kay hatte ja auch seine eigene Meinung zu C++ …
     

Diese Seite empfehlen