Hilfe, ich muss C lernen ... und schon fangen die Probleme an

Aha, was JAVA angeht, gehen die Meinungen schon mal auseinander. ;-)

Aber wenn ich das richtig verstanden habe, ist der beste Weg, direkt Objective-C und Cocoa zu lernen. Und dazu noch sowas wie "Entwurfsmuster von Kopf bis Fuß", oder?

Gibt es denn für Objective-C ein brauchbares Buch in Deutsch oder sollte man lieber gleich auf die Originale zurückgreifen?
 
Ich habe im Studium auch mit C/C++ angefangen und nach einem Jahr durften wir jetzt endlich auf C# umsteigen. Java wäre mir zwar lieber gewesen wegen der Plattformunabhängigkeit, aber auch C# ist eine echte Erleichterung gegenüber dem alten C-Mist. Damit macht Programmieren endlich wieder etwas Spaß. ;)

Ich denke zwar, dass C das Latein der Programmiersprachen ist, man von dort also relativ leicht auf die meisten anderen Sprachen umsteigen kann – aber wenn man es nicht braucht, würde ich damit trotzdem nicht anfangen. Bei Windows verbreitet sich C# immer mehr, sogar Microsofts XNA-Spiele-Entwicklungsumgebung basiert darauf. Mit Java kann man Programme für so ziemlich jede Hardware schreiben und auf dem Mac kommt man kaum an Obj-C vorbei (das ich mir auch irgendwann mal näher ansehen werde, laut c’t sollen die Unterschiede zu C++ aber nicht soo gravierend sein?). Wofür braucht man heute noch C++? Höchstens wenn man Software weiterentwickeln muss, die bereits in C++ geschrieben ist oder wenn man auf einer tieferen Ebene programmiert, also Betriebssysteme oder andere Hardware-nahe Anwendungen vielleicht.
 
coricora schrieb:
Aha, was JAVA angeht, gehen die Meinungen schon mal auseinander. ;-)

Nein, definitiv nicht! Es kommt immer auf den Verwendungszweck an. Für das iPhone ist Java nunmal keine Wahl, für Web-Applikationen oder andere Mobilfunkplattformen als das iPhone sehr wohl!


Was Literatur angeht, so haben wir hier auch Autoren solcher Bücher unter den hiesigen forenusern. Ich empfehle die angepinnten Threads hier im Entwicklerforum durchzulesen, das erspart mir aktuelle Links und Hinweise zu Learning Cocoa-Büchern nochmal herauszusuchen.

Angel schrieb:
Ich denke zwar, dass C das Latein der Programmiersprachen ist, man von dort also relativ leicht auf die meisten anderen Sprachen umsteigen kann

Sehe ich nicht so! Programmiersprachen sind Werkzeuge und es nutzt einem der beste Schraubendreher nix, wenn man nur eine Schachtel Nägel hat! Es kommt immer auf den Job an der erledigt werden soll. Byte-Codesprachen oder Just-In-Time Compiler sind eine tolle Sache. Zur Programmierung von Mikorcontrollern oder zur Erweiterung von Betriebssystemen nutzen sie einem jedoch wenig. Neben der Verfügbarkeit eines Werkzeugs auf einer Plattform sind also auch noch die technischen Anforderungen (Executable oder Bytecode) entscheidend. Danach kommen dann etwa persönliche Präferenzen was z.B. OO-Strategien angeht.

Bestes Beispiel dafür ist Objective-C. Ja es ist elegant und durch seinen eigenen OO-Ansatz sogar hoch effektiv. Auf dem Mac wissen das sogar mehr Leute als überhaupt programmieren können. Auf anderen OSen wo die Frameworks schlicht in anderen Sprachen verfasst sind interessiert dieser akademische Vorteil reell sehr wenig. Würde Ergonomie und Effizienz einer Sprache hier die Entwicklung wirklich vorantreiben Windows und Linux müßten längst auf den Objective-C Zug aufgesprungen sein. Nun dem ist nicht so und auch ganz neue Sprachen wie etwa D haben es schwer.

Ein anderes Beispiel: ASP.Net und Java-Freaks streiten sich gern darum wem denn nun die Zukunft im Web gehöre. Zählt man die verwendeten Installationen ist das aber gar das "furchtbare" PHP mit dem man ja angeblich überhaupt nicht programmieren könne ( das Gerücht stammt aus einer Zeit da PHP gern von Informatikfremden Usern benutzt wurde und zu in der tat üblen Lösungen geführt hat). Auch wenn PHP Objekte quasi erst auf dem 2ten Bildunsgweg gelernt hat und sowas simples wie Namensräume als Innovation gefeiert werden ist es doch ein solides Werkzeug in seiner Nische wie die Zahl an Installationen und die Lernkurve der Newbies zeigt.

Programmiersprachen sind keine Religion und kein Fußballverein, sie sind Werkzeuge auf dem Weg zu einer Lösung!
 
Zuletzt bearbeitet:
Was Literatur angeht, so haben wir hier auch Autoren solcher Bücher unter den hiesigen forenusern. Ich empfehle die angepinnten Threads hier im Entwicklerforum durchzulesen, das erspart mir aktuelle Links und Hinweise zu Learning Cocoa-Büchern nochmal herauszusuchen.

Danke. Werd ich mich gleich mal schlau machen. :)
 
Ich finde C eigentlich gar nicht mal so schlecht um mit Programmieren anzufangen. Klar es ist eine sehr Hardware nahe Sprache und jemand der per Java/C# eingestiegen ist schreckt das ab, aber C hat auch seine sehr guten Seiten! Und vor allem was das Memorymanagement angeht ist es doch immer noch extrem wichtig, dass man kapiert was dahinter abgeht und das ist mit C einfacher zu lernen als bei Java und c# wo man das nicht direkt in die Hand nehmen kann!
Und jemand der nichts von Memorymanagement und sich in Cocoa/iPhone programmen probiert, kann gleich wieder aufhören!
 
re

Ich mußte mich im Grundstudium auch durch C quälen, aber im Nachhinein bereue ich es nicht wirklich. Wer mit C die Grundlagen der Programmierung verstanden hat, der wird sich auch in den objektorientierend Welt zurechtfinden.

Ich warte zur Zeit noch auf das Buch von Armin Negm-Awad (klick mich), es soll laut unbestätigten Gerüchten besonders gut für Ein und Umsteiger geeignet sein. Leider läßt es noch auf sich warten, aber so lerne ich hoffentlich etwas für meine anderen Prüfungen :)

mfg
Flo
 
Sehe ich nicht so! Programmiersprachen sind Werkzeuge und es nutzt einem der beste Schraubendreher nix, wenn man nur eine Schachtel Nägel hat!
Jetzt hast du aber den falschen Absatz von mir zitiert, oder? :kopfkratz:
Natürlich gibt es immer noch Einsatzgebiete, in denen kein Weg um den Programmier-Opa herumführt (ein paar hatte ich ja selbst aufgezählt). Aber für die meisten Anwendungen gibt es moderne Sprachen, die ihre Aufgabe genauso gut machen und einem wesentlich Arbeit abnehmen, was nebenbei auch zu einem fehlerfreieren Code führt. Und Microsofts XNA zeigt, dass diese Sprachen durchaus auch ziemlich leistungsfähig sind.

Nebenbei möchte ich auch bald meine ersten Schritte in der Mac-Programmierwelt machen. Bisher habe ich nur in einem virtualisierten Windows gelernt (eben Studium). Weil ich schon immer von Pythons einfacher Syntax beeindruckt war und gleichzeitig etwas vom C-Anteil von Obj-C abgeschreckt bin, habe ich mir überlegt erstmal mit Python anzufangen. XCode bietet dafür ja eine Bridge, es scheint also recht gut unterstützt zu sein. Welchen Vorteil würde mir Obj-C bieten, mal von der iPhone-Entwicklung abgesehen? Cocoa ist doch Cocoa.
 
Nein, definitiv nicht! Es kommt immer auf den Verwendungszweck an. Für das iPhone ist Java nunmal keine Wahl, für Web-Applikationen oder andere Mobilfunkplattformen als das iPhone sehr wohl!
Bei Web-Apps greife ich lieber zu Sachen wir Ruby on Rails. Ich steh nicht darauf unnötig viele XML-Situps zu machen.
 
Mal Off-Topic :D

Das Buch hatte ich auch vor Ewigkeiten mal. Hab ne angefangen. Der Mann (Erlenkötter) hat mir den Weg zum HTML offenbart ... Gepriesen sei er!

Off-Topic Ende
 
Das möchte ich so nicht stehen lassen. C ist eine Programmiersprache, die viele Schweinereien erlaubt und damit recht flexibel ist. Die meisten modernen Programmiersprachen lassen sich auf C zurückführen. Allerdings versaut es einen Anfänger auch in der Sichtweise auf die Dinge.

Nein es öffnet die Sicht auf das was möglich ist. Die wird dann von den "Paradigmen" wieder eingeschränkt. Zumal diese Paradigmen keineswegs allgemeingültig sind und bei genauer Betrachtung oft vollkommen Sinnlos angewand werden (nicht alles braucht Objektorientierung)

Java wäre so ziemlich das letzte was ich einem Anfänger empfehlen würde.

Wofür braucht man heute noch C++? Höchstens wenn man Software weiterentwickeln muss, die bereits in C++ geschrieben ist oder wenn man auf einer tieferen Ebene programmiert, also Betriebssysteme oder andere Hardware-nahe Anwendungen vielleicht.
Was ist an C++ auszusetzen? Mit Qt gibt es auch ein wundervolles Grafikframework das auf allen Platformen seeehhrr gut läuft. Und mit Hardwarenah hat C++ ehr wenig zu tun, Assembler - das ist geil ;)

Daher: Lernen was man braucht nich lernen was die Foren-Onkels sagen dass sie brauchen. Wie schon erwähnt Werkzeug nicht Religion^^
 
Zuletzt bearbeitet von einem Moderator:
Bei Web-Apps greife ich lieber zu Sachen wir Ruby on Rails. Ich steh nicht darauf unnötig viele XML-Situps zu machen.

ja und ich präferiere PHP, aber ab einer gewissen Größe des Projektes lernt man doch die Situps sc hätzen ;)
 
Was ist an C++ auszusetzen? Mit Qt gibt es auch ein wundervolles Grafikframework das auf allen Platformen seeehhrr gut läuft.
Gut laufen tut es aber nur aus Programmiererperspektive – eine plattformübergreifend mit Qt entwickelte Anwendung ist von der Benutzbarkeit her ein Alptraum.
 
Gut laufen tut es aber nur aus Programmiererperspektive – eine plattformübergreifend mit Qt entwickelte Anwendung ist von der Benutzbarkeit her ein Alptraum.

Absolut nicht - Gerade für platformübergreifende Programmierung ist es das beste was zur Zeit verfügbar ist. Die Javaoberflächen sind dagegen eine Ausgeburt der Häßlichkeit und ein Bedienalptraum.

Qt kommt gegen die nativen Oberflächen natürlich nicht an aber alles andere schlägt es.
 
Absolut nicht - Gerade für platformübergreifende Programmierung ist es das beste was zur Zeit verfügbar ist. Die Javaoberflächen sind dagegen eine Ausgeburt der Häßlichkeit und ein Bedienalptraum.
Das Beste mag es sein – gut ist das Ergebnis aber trotzdem nicht. Und ja, natürlich sind die Javaoberflächen (so sie denn auf plattformübergreifend ausgelegt sind) ebenfalls noch unpassender.

Qt kommt gegen die nativen Oberflächen natürlich nicht an …
Eben.

… aber alles andere schlägt es.
Das macht es zum Einäugigen unter den Blinden – mit 7 Dioptrien.

Wer eine gute Benutzeroberfläche haben will, kann diese nun einmal nicht plattformüberfreifend entwickeln. Da muß man dann einfach für jede Plattform einzeln ran.
 
Ich glaube es gibt nicht die richtige Sprache. Am besten alles lernen und können ;)
Da dies aber kaum verwirklichbar ist sollte man sich überlegen für was man die Sprache braucht.

z.B. Im Bereich der physikalischen Chemie gibt es im Moment kein Weg an C++ vorbei, da die anderen Sprachen nicht Hardware nah genug sind (daher auch langsam) aber Assembler für Chemiker zu unhandlich ist und zu schwer ist :D
Ausserdem wer braucht in dem Gebiet schon eine GUI haupsache der Hochleistungsrechner wird nicht mehr als 1h belegt :p

Also sollte man sich überlegen für was man programmieren will und sich dannach die Sprache aussuchen.
 
Das Beste mag es sein – gut ist das Ergebnis aber trotzdem nicht. Und ja, natürlich sind die Javaoberflächen (so sie denn auf plattformübergreifend ausgelegt sind) ebenfalls noch unpassender.

Das Beste ist ohnehin Ansichtssache und hängt wohl in erster Linie vom Anwendungsziel ab. Ich meine Java-Oberflächen können sich sehr gut in bestehende Systeme einbinden, siehe SWT (Eclipse). Unterschiedliche Bedienphilosophien sind mit keinem Werkzeug in einem Ritt zu bewältigen und man muss Kompromisse finden oder Speziallösungen schaffen, da kommt auch Qt nicht umhin.

Für mich ist Java für Anwendungen bei denen es nicht in erster Linie um Performance geht immer noch erste Wahl, vor allem weil ich hier die in meinen Augen komfortabelsten Werkzeuge für Debugging und Fehlersuche habe und die Behandlung von Fehlern besonders bei komplexeren Systemen in der Regel den größeren Teil der zu lösenden Probleme einer Programmieraufgabe umfassen.
 
Wer eine gute Benutzeroberfläche haben will, kann diese nun einmal nicht plattformüberfreifend entwickeln. Da muß man dann einfach für jede Plattform einzeln ran.

Da gibt es genug prominente Beispiele die das Gegenteil beweisen.

EDIT: Vorallem bei Qt4 merkt man nicht mehr viele unterschiede zu nativen Mac Applikationen.
 
Zuletzt bearbeitet von einem Moderator:
ja und ich präferiere PHP, aber ab einer gewissen Größe des Projektes lernt man doch die Situps sc hätzen ;)

Von welcher Größe sprichst du? Die kostspieligen Assets sind doch in der Regel die Programmierer. Und da ist es doch von Vorteil, wenn man schnell zu Ergebnissen kommt.
Gerade wenn es darum geht eine Greenfield Appliklation zu erstellen ist man doch mit Ruby on Rails superschnell bei einem Ergebnis.
 
Das Beste ist ohnehin Ansichtssache und hängt wohl in erster Linie vom Anwendungsziel ab. Ich meine Java-Oberflächen können sich sehr gut in bestehende Systeme einbinden, siehe SWT (Eclipse). Unterschiedliche Bedienphilosophien sind mit keinem Werkzeug in einem Ritt zu bewältigen und man muss Kompromisse finden oder Speziallösungen schaffen, da kommt auch Qt nicht umhin.
Und genau das meine ich: Man kann it Qt keine betriebssystemübergreifend konzipierte Oberfläche schaffen, da die Betriebssysteme teils sehr abweichenden Konzepten folgen.

Da gibt es genug prominente Beispiele die das Gegenteil beweisen.
Dann wird es Dir ja leicht fallen, mir auch nur eine größere Anwendung zu zeigen, die mit von einer Codebasis sowohl unter Windows als auch unter Mac OS X eine heimische Oberfläche bietet.
 
och Leute, Ihr seid meilenweit OffTopic!

Hier ging es um C lernen, mit einem Schlenker zu "womit programmiert man iPhones!?" Wer jetzt welche Sprache präferiert mag für die Bar interessant sein, für Fachleute sollte jede Sprache ein austauschbares Werkzeug darstellen!
 
Zurück
Oben Unten