Programmieren lernen - welche Sprache?

Status
Für weitere Antworten geschlossen.
Nein, Objective C ist seit NeXT-Zeiten schon die bevorzugte Programmiersprache von Steve Jobs. Mit Leopard kam nur eine Erweiterung der Laufzeitumgebung hinzu, die jetzt einen Garbage Collector enthält. Zum Speichermanagement gehört für mich übrigens auch das Wissen um den Unterschied von Adresse und Datum. Das Wissen brauchst du bei Java nicht. Objecte werden immer by reference adressiert, statische Werte immer by value...[…]
Wie in Objective-C. Kann es sein, dass du dich da nicht ausreichend informierst?
(Man kann in Objective-C Skalare auch mit Pointern adressieren, was aber nicht wirklich notwendig ist.)
 
Nein, mir geht es darum, dass ich bereits vor 233647848723678 Beiträgen gesagt hatte, dass der OP mutmaßlich Leopard hat.

Danach kamen 7234987534928 Beiträge von dir, die dann in der Feststellung mündeten: Dazu braucht er aber Leopard.

Mir ging es nicht um den Rechner des Programmierers sondern um den Rechner, der den Code ausführen soll! Ohne die RT in Leopard wird das nicht funktionieren!

Wie in Objective-C. Kann es sein, dass du dich da nicht ausreichend informierst?
(Man kann in Objective-C Skalare auch mit Pointern adressieren, was aber nicht wirklich notwendig ist.)


Ich muss zugeben, ich kannte ObjC nicht besonders gut. Gestern hab ich mir die Doku von Xcode durchgelesen und bin zu dem Schnuss gekommen, das ist nichts für Anfänger. Die Syntax ist viel zu kompliziert.
Ach und du musst zwar keine Pointer verwenden, kannst es aber!

Zapfenzieher schrieb:
Java verwendent einen ganz andern OOP-Ansatz als C++.

Hm, wie meinst du das? Du hast Klassen, du hast Objekte, du hast Instanzen, du hast Schnittstellen. Polymorphie, Vererbung.. Ok, du hast Mehrfachvererbung von Klassen. Der OO-Ansatz ist IMHO doch ziemlich der gleiche und die Syntax ist auch nicht weit voneinander entfernt, zumindest nicht so weit wie die von Objective-C.

(noch etwas offtopic zum ablästern:
* Java ist langsamer, weil der GC mit läuft. Das muss bezahlt werden! Aber so dramatisch ist das nicht mehr: http://shootout.alioth.debian.org/ Schaut auf die Zahlen, max 15% bei diesen synthetischen benchmarks!)
 
Zuletzt bearbeitet von einem Moderator:
Mir ging es nicht um den Rechner des Programmierers sondern um den Rechner, der den Code ausführen soll! Ohne die RT in Leopard wird das nicht funktionieren!
Schön, dass du das mittlerweile gelernt hast.

Darf ich dich sinngemäß zitieren:
"Was hat denn das mit dem Betriebssystem zu tun?"
 
Ich hatte eingeräumt, vom GC in Leopard nicht gewusst zu haben! Den mit einbezogen entsteht in diesem Fall eine explizite Abhängigkeit vom Betriebssystem! Der Code wird nur auf Leopard mit Xcode compilierbar und vor allem ausführbar sein!

PS. verklemm dir bitte den Unterton!
 
:suspect: hey Programmierer sind nicht emotional :)
 
Können sich die streitbaren Experten ;) hier mal dazu äußern:

Bis jetzt habe ich von Java-Anwendungen keine hohe Meinung. Das liegt z.B. daran, daß ich bis jetzt Java-Programme sowohl auf der Windows- als auch Mac-Plattform stehts als "Fremdkörper" empfunden habe, die von der Optik der GUI stark von der "Standard-Optik" (z.B. Menüelemente) abweichen und ansonsten eher träge auf Nutzereingaben reagieren. Oder habe ich da nur unsinnige Vorurteile aufgebaut?

Ist da was dran? Und falls ja: Dann bräuchte man für den Mac Obj.-C und was für Win? Gibt es eine Sprache für Mac und Win gleichermaßen, mit der sich Programme kompilieren lassen, die auf beiden Plattformen nicht wie Fremdkörper wirken?

Grüße fox78
 
Gibt es eine Sprache für Mac und Win gleichermaßen, mit der sich Programme kompilieren lassen, die auf beiden Plattformen nicht wie Fremdkörper wirken?
Ich bin zwar kein streitbarer Experte, aber ich versuche trotzdem mal zu antworten. ;)

Es ist nicht unbedingt ein Problem der Sprache, es ein Problem der verwendeten Funktionen zur Erstellung der Benutzeroberfläche. Diese sind unterschiedlich. Verwendet man stattdessen ein Plattformübergreifendes Toolkit(Qt, wxWidgets) so wird man trotzdem irgendwo noch Unterschiede feststellen – zumindest unter OSX. Bei Windows kocht ja seit längerem jeder sein eigenes Süppchen (und Microsoft macht da kräftig mit), dass man da meist auf recht unverdächtige Ergebnisse kommt (oder könntest du auf Anhieb sagen, wie eine „echte“-Windows-Anwendung auszusehen hat).

Die Sprache ist da weniger wichtig kannst du fast alles nehmen.
 
  • Gefällt mir
Reaktionen: fox78
Ich weiss, was Mehrfachvererbung bedeutet und wo der Unterschied zwischen Mehrfachvererbung bei Klassen und bei Interfaces liegt ;) Die Macher von Java haben das damals mit Absicht nicht in die Agenda aufgenommen, da Mehrfachvererbung bei Klassen zu unschönen effekten führen kann...

C++ ist mächtiger als Java. Das ist unbestritten! Der OO-Ansatz ist aber vergleichbar, im Gegensatz zu zum Beispiel Erlang.
 
Ich weiss, was Mehrfachvererbung bedeutet und wo der Unterschied zwischen Mehrfachvererbung bei Klassen und bei Interfaces liegt ;) Die Macher von Java haben das damals mit Absicht nicht in die Agenda aufgenommen, da Mehrfachvererbung bei Klassen zu unschönen effekten führen kann...

C++ ist mächtiger als Java. Das ist unbestritten! Der OO-Ansatz ist aber vergleichbar, im Gegensatz zu zum Beispiel Erlang.

Man sieht schon, dass Java Bibliotheken relativ anderst aufgebaut sind als C++ Bibliotheken. Boost ist verschieden aufgebaut als die Java Standardbibliotheken um ein Beispiel zu nennen.

Ich bin der Meinung, dass man Konzepte nich eins zu eins vom Java auf C++ und umgekehrt übertragen kann. Natürlich ist beides OO.

Wirklich Programmieren kann ich allerdings nur C++. Ich habe vielleicht ein paar Java Programme mit je etwas 20 Klassen programmiert und das wars dann. Dabei hatte ich oft Mühe, weil die Struktur verschieden ist.

Ich habe mich vielleicht ungenau ausgedrückt. Ich meine einfach, wenn man sauber OO in C++ machen kann heisst dass noch nicht, dass man das auch in Java kann und umgekehrt.
 
Ich bin der Meinung, dass man Konzepte nich eins zu eins vom Java auf C++ und umgekehrt übertragen kann. Natürlich ist beides OO.

Ich hab nicht behauptet, dass man die Konzepte aus C++ auf Java übertragen kann. Vieles ist in Java nicht möglich. Man muss sich in einigem Umgewöhnen. Das betrifft den umgekehrten Weg aber auch. Im Endeffekt ist es, was OO betrifft, aber zu 80% Syntax.

In deinen Anspielungen auf die Bibliotheken von Java sehe ich allerdings keinen Bezug zu OOP. In Java sind es Archive der Klassen in ihrer Packetstruktur (Zip-Dateien mit Metadaten, welche das Paket beschreiben) und damit in der Struktur den statischen Bibliotheken von C/C++ ähnlich. In der Handhabung sind es aber eher dynamische Bibliotheken. Der Classloader sucht sich in den Archiven das Paket und darin die Klasse.

Ich habe mich vielleicht ungenau ausgedrückt. Ich meine einfach, wenn man sauber OO in C++ machen kann heisst dass noch nicht, dass man das auch in Java kann und umgekehrt.

Absolut richtig. Dazu muss man wissen, was Eigenheit der Programmiersprache und was das Paradigma dahinter ist. Ich traue mir jetzt auch nicht zu, von 0 auf 100 guten Code in ObjC zu schreiben (Ich hab mit der Sprache noch nicht eine Zeile geschrieben, hab mir gerade erst die Syntax angesehen).

Schliesslich gibt es unterschiedliche Ansätze, programmieren zu lernen.

1) man lernt eine Sprache, dann die nächste und eine weitere.
2) man lernt anhand einer Sprache verschiedene Paradigmen (Strukturiert, Funktional, OOP, AOP,..)

Der erste Weg ist der, der schneller Erfolge verspricht, da man sich nicht um die Theorie kümmern muss, der zweite ist Theorie-lastig, erleichtert aber später das Lernen weiterer Sprachen. Ich würde mir mit meinem Wissen zutrauen, ObjC in 14 Tagen drauf zu haben und damit sauberen Code zu schreiben (die Feinheiten aussen vor gelassen).
 
guude,

ich hab den thread zwar nur ueberflogen, aber wenn er bei NULL anfaengt :D ist es doch egal welche sprache er lernt, er sollte sie nur richtig lernen. soll heissen, sich gleich einen stil anzugewoehnen und den auch durchziehen. also prefixen bei c/c++ zum beispiel.

aber schau dir ruhig mal ruby an. da ist die lernkurve ziemlich hoch und du bist motiviert. ansonsten kann ich noch zu scheme oder pascal raten

regards,
buk
 
Ist es überhaupt möglich mit Java 100% zum MacOSX Gui konsistente Anwendungen zu bauen? Habe auch die meiste Erfahrung mit Java und würde das gerne weiter verwenden wenn ich unter MacOSX etwas kleineres entwickeln möchte. Natürlich könnte ich auch Python nehmen, aber ich finde Java Syntax einfach schöner. Auch wenn eigentlich alle das Gegenteil sagen. :D
 
den[N]is;3984038 schrieb:
Ist es überhaupt möglich mit Java 100% zum MacOSX Gui konsistente Anwendungen zu bauen? Habe auch die meiste Erfahrung mit Java und würde das gerne weiter verwenden wenn ich unter MacOSX etwas kleineres entwickeln möchte. Natürlich könnte ich auch Python nehmen, aber ich finde Java Syntax einfach schöner. Auch wenn eigentlich alle das Gegenteil sagen. :D
Ja, es ist möglich. Und wer eine Diskussion über Syntaxschönheit führt, belegt damit, dass er von Programmieren keine Ahnung hat. *Sorry* Aber wenn in diesem Thread eine noch unwichtigere Eigenschaft einer Programmiersprache gefunden wird ("ansonsten ist das ja ohnehin alles gleich"), könnte mir dann jemand eine Mail schicken?

Danke!
 
Ja, es ist möglich. Und wer eine Diskussion über Syntaxschönheit führt, belegt damit, dass er von Programmieren keine Ahnung hat. *Sorry* Aber wenn in diesem Thread eine noch unwichtigere Eigenschaft einer Programmiersprache gefunden wird ("ansonsten ist das ja ohnehin alles gleich"), könnte mir dann jemand eine Mail schicken?

Danke!

Ob er Schönheit im Sinne von Attraktivität gemeint hat oder vielleicht eher in Form von Lesbarkeit? Kennst du BF oder Whitespace? Dein Post ist übrigens mindestens genauso sinnfrei wie das, was du so schön kritisierst!

Eines muss ich aber einräumen. Einen Favoriten in Schönheit/Lesbarkeit könnte ich zwischen Java oder Python nicht küren. Dazu ist mir die Syntax noch zu ähnlich (beides C-ähnlich).
 
@anegmawad
Ich meinte damit Lesbarkeit aber Danke für die Unterstellung keine Ahnung zu haben. Ich hab dich auch gerne. :) Leider scheint der Umgangston normal zu sein.
Danke trotzdem für die Antwort auf meine eigentliche Frage.
 
Zuletzt bearbeitet:
den[N]is;3984295 schrieb:
@anegmawad
Ich meinte damit Lesbarkeit aber Danke für die Unterstellung keine Ahnung zu haben. Ich hab dich auch gerne. :) Leider scheint der Umgangston normal zu sein.
Danke trotzdem für die Antwort auf meine eigentliche Frage.
Ich meinte eigentlich nicht dich.

Es scheint nur so zu sein, dass die Syntaxschönheit^WLesbarkeit bei diesen Diskussionen gerne genommen wird. Sie belegt gar nichts über die Fähigkeiten einer Programmiersprache. Im Übrigen wird dies dann auch noch zu allem Überfluss in keiner Weise fachlich belegt. Es reduziert sich auf ein "Ich finde [Jave|C|Obejctive-C|C++|Python|InsertYourProgrammingLanguageHere] schöner".

Gleichzeitig wird inhaltlich Unfug ins Forum geschrieben.

Bringt dem OP unglaublich viel …
 
Ich meinte eigentlich nicht dich.

Es scheint nur so zu sein, dass die Syntaxschönheit^WLesbarkeit bei diesen Diskussionen gerne genommen wird. Sie belegt gar nichts über die Fähigkeiten einer Programmiersprache. Im Übrigen wird dies dann auch noch zu allem Überfluss in keiner Weise fachlich belegt. Es reduziert sich auf ein "Ich finde [Jave|C|Obejctive-C|C++|Python|InsertYourProgrammingLanguageHere] schöner".

Gleichzeitig wird inhaltlich Unfug ins Forum geschrieben.

Bringt dem OP unglaublich viel …

Ich weiss ja nicht, wie du das meinst, aber gerade beim Erlernen der Sprache ist die Lesbarkeit und Strukturiertheit einer Sprache sehr wichtig! Die Fähigkeiten was Funktionsumfang und Mächtigkeit der Ausdrucksmöglichkeiten angeht, stehen da im Hintergrund. Der Lernende muss ersteinmal begreifen, was er schreibt und da sind eingegrenzte sprachliche Mittel allemal besser als die volle Ballung. Java hat nicht ohne Grund Modula als bevorzugte Lehrsprache abgelöst - und nicht C++. Sicher muss man solche Behauptungen belegen... Das ist aber eher etwas für eine Diplomarbeit als einen Forenbeitrag...
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben Unten