Programmieren lernen am Mac — Vor- und Nachteile der verschiedenen Sprachen

AW: Programmieren lernen am Mac — Vor- und Nachteile der verschiedenen Sprachen

anegmawad schrieb:
ich vergesse jeden Tag mehr C++

dito, habs sicher 10 Jahre nicht mehr gebrauchen müssen! Bei Java ist es, wie _ebem_ schreibt == vergleicht auf Adresse ( also Identität).

Operator-Overloading vereinfacht und macht damit Code sicher einfacher lesbar. Ich kann Darii da schon verstehen. Auf der anderen Seite hat das aber etwas magisches, sprich: irgendetwas geschieht da implizit. Ich geb Dir recht in Obj-C Syntax sieht das dann endgültig merkwürdig aus!
 
AW: Programmieren lernen am Mac — Vor- und Nachteile der verschiedenen Sprachen

Wer für den MS-Zug gewappnet sein will lerne C# entweder mit Monodevelop auf dem Mac
Ist dass denn inzwischen nutzbar? Also die Versionen, die ich probiert hatte, konnte man vergessen. :noplan:
 
AW: Programmieren lernen am Mac — Vor- und Nachteile der verschiedenen Sprachen

Wichtig ist ja neben den eigenen Präferenzen (Overloading oder nicht) auch die Frage wie man mit einer Sprache umgeht. An C++, an Java und auch an C#gibt es ganz sicher berechtigte Kritik.

Für Java kann ich sagen das man sich einen Teil davon sparen kann, wenn man mal nachliest wie es von den "Vätern" denn eigentlich gedacht ist. Sehr empfehlen kann ich dies hier:

[ISBN]0321356683[/ISBN]

Jede Sprache hat ihre "Problemzonen", die Frage ist wie/ob man damit umgehen kann. Obiges Buch hilft bei wasserdichtem Java-Code eine Menge :)


ebenso sollte man gut geeigente Standard-Muster zur Problem-Lösung beherrschen ( sog. Design-Patterns). Ein guter Einstieg dazu ist dies hier:

[ISBN]0596007124[/ISBN]
@pdr: ich nutze es selbst nicht ( mir fehlt die Zeit). Setze hier aber eine fertige .Net Applikation größerem Umfanges ein. Die Programmierer schimpften am Anfang arg auf die vielen Bugzilla-gelisteten Probleme trotz Premium-Mitgliedschaftz. Da scheint sich aber im letzten Jahr viel getan zu haben- Vor allem wenn man nicht gleich zum neuesten .Net Environment übergeht. Der hiesige App-Server mit 20 Clients läuft superstabil inzwischen.
 
AW: Programmieren lernen am Mac — Vor- und Nachteile der verschiedenen Sprachen

Glaubt ihr, der TE kann euch noch folgen?
 
AW: Programmieren lernen am Mac — Vor- und Nachteile der verschiedenen Sprachen

Das ist ein generell wichtiger Hinweis. Das Allerallerallerallerwichtigste ist es zu verstehen, welches Konzept hinter bestimmten Spracheigenschaften steht. Vor allem wenn man solche Sachen liest wie:
Trotzdem ist es etwas gewöhnungsbedürftig, Objective-C zu schreiben wenn man C++ gewöhnt ist, es gibt durchaus erhebliche Unterschiede. Natürlich nicht in der Programmlogik sondern in der Syntax der Befehle.
 
AW: Programmieren lernen am Mac — Vor- und Nachteile der verschiedenen Sprachen

Operator-Overloading vereinfacht und macht damit Code sicher einfacher lesbar. Ich kann Darii da schon verstehen. Auf der anderen Seite hat das aber etwas magisches, sprich: irgendetwas geschieht da implizit. Ich geb Dir recht in Obj-C Syntax sieht das dann endgültig merkwürdig aus!

Ja, der Code wird lesbarer. Man erkauft sich damit aber ein Stück mehr Fehleranfälligkeit, da Fehler in der Operatorüberladung einfach schwerer zu sehen sind. Die implizite Magie ist das Gefährliche, genau wie das Spiel mit unnötigen oder nicht erlaubten Casts. Dann lieber "richtig" zusammen mit /* text */.
 
AW: Programmieren lernen am Mac — Vor- und Nachteile der verschiedenen Sprachen

ebenso sollte man gut geeigente Standard-Muster zur Problem-Lösung beherrschen ( sog. Design-Patterns). Ein guter Einstieg dazu ist dies hier:

[isbn]0596007124[/isbn]

Da schieb ich noch den Holub nach. Den sollte man sich direkt danach zu gemüte führen!

[isbn]159059388X[/isbn]
 
AW: Programmieren lernen am Mac — Vor- und Nachteile der verschiedenen Sprachen

Genau, weil Objekte mit o1.equals(o2); verglichen werden. Mit "==" vergleichst du den Inhalt der Adressen, bei Objekten also die Identität des Objektes! Wie stellst du den Vergleich an, wenn der "=="-Operator mit der Equivalenz des Inhaltes überladen wurde?
Es ging aber nicht um ein Wald und Wiesen Objekt, sondern um den Vorschlag die primitiven Datentypen durch Objekte zu ersetzen. Das geht durch "==" nämlich nicht völlig transparent.

Ja, die Typen werden zur Compile-Zeit überprüft. Ach und bei Casts sollte man sich in jeder Sprache genau überlegen, was man tut!
Wie gesagt, das lässt sich in Java nunmal nicht vermeiden, da Java auch bei Generics die Typen vergisst. Aus einer List<String> kommt dann irgendwann wieder ein Object raus, dass man nach String casten darf.


Es wäre völlig unproblematich, müsste aber auch [obj +:4] heißen.
Wozu man könnte doch genau wie in Smalltalk einfach + nehmen.

Operator-Overloading vereinfacht und macht damit Code sicher einfacher lesbar. Ich kann Darii da schon verstehen. Auf der anderen Seite hat das aber etwas magisches, sprich: irgendetwas geschieht da implizit. Ich geb Dir recht in Obj-C Syntax sieht das dann endgültig merkwürdig aus!
Also für mich ist Operatorüberladung reiner Syntactic-Sugar. Das ist nichts magisches und nichts implizites. Der Operator „+“ entspricht z.B. einfach dem Protokoll/Interface "add". Sprich er ruft bei Objekt a eine definierte Methode/sendet eine Nachricht mit Parameter b auf. Der Vorteil von Operatoren ist, dass sie viel einfacher zu merken sind. Bsp: NSMutableDictionary, NSMutableArray. Haben die Methoden objectForKey: und objectAtIndex:. Mit Operatorüberladung könnte sich das ganze zu
Code:
object = obj[key/index]
vereinfachen. Irgendwie habe ich auch das Gefühl dass alle bei Operatorüberladung sofort an C++ denken. Und selbst für C++ muss man eine Lanze brechen, an den Smart Pointers von Boost sieht man was man mit Operatorüberladung alles erreichen kann.
 
AW: Programmieren lernen am Mac — Vor- und Nachteile der verschiedenen Sprachen

Es ging aber nicht um ein Wald und Wiesen Objekt, sondern um den Vorschlag die primitiven Datentypen durch Objekte zu ersetzen. Das geht durch "==" nämlich nicht völlig transparent.

Stimmt, man muss sich an der Stelle schon bewusst sein, dass man ab jetzt mit Objekten arbeitet und dann den Regeln der Sprache folgen. Sonst geht's nach hinten los.

Wie gesagt, das lässt sich in Java nunmal nicht vermeiden, da Java auch bei Generics die Typen vergisst. Aus einer List<String> kommt dann irgendwann wieder ein Object raus, dass man nach String casten darf.

Das ist mir neu. Aus meiner List<String> kommen beim Itterieren Strings raus, ohne Cast!

Edit: Allerdings spucken die sog. Raw-Types nur Objekte dieses Typs raus, für den sie angelegt wurden, sprich ich schiebe in eine Liste von Strings ein Objekt vom Typ MyString hinein, welches von String abgeleitet ist. So erhalte ich aus der Liste an der Stelle ersteinmal nur einen String. Den muss ich, wenn ich ihn als MyString verwenden will, überprüfen und casten. Java ist nunmal statisch typisiert...
 
Zuletzt bearbeitet:
AW: Programmieren lernen am Mac — Vor- und Nachteile der verschiedenen Sprachen

Das dürfte ähnlich schwer sein, wie zu sagen: Ich mache grad den Führerschein - welches Auto brauche ich?

Wir hier entwickeln z.B. das gros in Visual FoxPro.
Nicht wirklich verbreitet (zumindest in DE), auf Windows beschränkt, aber FÜR UNS trotzdem die beste Wahl.

Ich sach mal so: Wenn ein Entwickler gut ist, dann ist die Sprache zweitrangig. Dem Endanwender ist es Wurscht, ob die Applikation jetzt in Java, C++, FoxPro, wasweissich geschrieben ist. Wenn sie ihren Zweck erfüllt und möglichst Fehlerfrei das tut, für was sie gedacht ist, wird sie Erfolg haben.

Wenn ich jetzt nochmals anfangen würde, würde ich ne verbreitete Sprache nehmen. Eine, die vor allem zu der Plattform passt, auf der ich Entwickeln will. Eine, zu der es GUTE Dokus bzw. Schulungen in einer Sprache gibt, die ich am besten nativ spreche.
Für Foxpro z.B. gibts im englischsprachigen Raum so ziemlich alles - was nützt es aber, wenn ich mit Hauptschul-Englisch schon meine Schwierigkeiten habe?

Genauso wie C. Is ne tolle Sprache, man kann mit detailierten C-Kenntnissen auf so ziemlich jeder Plattform was reissen, aber ohne das Grundverständnis, wie C aufgebaut ist, "wie es tickt", Grundsätze der Objektorientieren Programmierung, etc., wird man damit nicht glücklich werden.

Als erstes steht somit die Frage im Raum: Was will ich auf welcher Plattform entwickeln, wo lege ich meinen Schwerpunkt.
Und erst dann kann man drangehen und sich die verschiedenen Sprachen, die in dieses Raster fallen, anzusehen.

Grüße
Charlie
 
AW: Programmieren lernen am Mac — Vor- und Nachteile der verschiedenen Sprachen

Sage, was Du meinst, verstehe, was Du sagst.

Das sollte man bei operator-Überladungen immer im Hinterkopf haben (und nicht nur da).
Zum Thema Smart-Pointer in Boost:
Es ist sicher klug, zwischen dem Anwender und dem Hersteller eines Frameworks zu unterscheiden, der Anwender wird VIEL seltener die mächtigen Sprachkonstrukte benötigen als der Hersteller (und dieser wird idR mehr Ahnung von der Sprache haben).
 
AW: Programmieren lernen am Mac — Vor- und Nachteile der verschiedenen Sprachen

[…]
Wozu man könnte doch genau wie in Smalltalk einfach + nehmen.
[…]
Das wäre dann aber eine Parallelsntax, siehe mein obiges "Wenn schon, …"

Eine zweite Syntax zum verschicken von Nachrichten macht Code nicht lesbarer. Irgendwer hat mal bei C++ 8 verschiedene Möglichkeiten gezählt, eine Member-Funktion aufzurufen. Das ist verwirrend, nicht vereinfachend.
 
AW: Programmieren lernen am Mac — Vor- und Nachteile der verschiedenen Sprachen

Ein sehr angenehmer Einstieg in die Programmierung stellen auch Python und Ruby dar.
 
AW: Programmieren lernen am Mac — Vor- und Nachteile der verschiedenen Sprachen

Das habe ich schon zahlreich gehört. Muss ich unbedingt lernen. Wer hat eigentlich meine Zeit gestohlen?
 
AW: Programmieren lernen am Mac — Vor- und Nachteile der verschiedenen Sprachen

Ich kann das nur aus meiner persönlichen Sicht sehen.

Natürlich kommt es immer erstmal darauf an, was man eigentlich erreichen möchte.

Möchte man professionell Entwickeln, dann ist es eh egal was man als erstes lernt. Denn bei einer Sprache wird es nicht bleiben und es gibt auch kein richtig oder falsch. Da ist ja von ASM über Delphi bis C# alles irgendwo noch im Einsatz. Wobei ich bei den letzten Anzeigen eine Dominanz von C# und Java festgestellt habe.

Einem Hobby-Entwickler, der zum Spaß an der Freude eine Sprache lernen möchte, würde ich eine einfache Sprache empfehlen, in der man schnell Erfolge erzielt und ohne große Stolpersteine voran kommt.
C, Pascal, Ruby, bla... für was? Mit Java und C# hat man inzwischen so komfortable Sprachen, die einem sehr viel abnehmen. Man muss sich um so viel nicht mehr kümmern und kann sich einfach aufs Programmieren konzentrieren.

Vor kurzem hab ich erst ein kleines HowTo geschrieben darüber, wie man sehr gut eine zweite Programmiersprache lernen kann. Passt vielleicht auch ein wenig zum Thema: Zum HowTo.
 
Zuletzt bearbeitet von einem Moderator:
AW: Programmieren lernen am Mac — Vor- und Nachteile der verschiedenen Sprachen

Das ist mir neu. Aus meiner List<String> kommen beim Itterieren Strings raus, ohne Cast!
Hab leider grad kein Beispiel zur Hand, hatte aber irgendwas mit der type erasure zu tun.

Eine zweite Syntax zum verschicken von Nachrichten macht Code nicht lesbarer.
Gibt doch sowieso schon zwei verschiedene Arten von Nachrichten, die Schlüsselwortnachrichten und die unären Nachrichten. Da wird man von binären Nachrichten schon nicht sterben. ;)

Versteh mich aber bitte nicht falsch ich möchte das nicht für ObjC vorschlagen, das passt nicht in die Sprache, [[2 + 3] + 4] sieht trotzdem immer noch doof aus.

Ich finde den Vorteil von Operatorüberladung sieht man wirklich ganz gut am Beispiel von Smalltalk.

Code:
[x > y] whileTrue: [ x := x - 1 ].
"Ist definitv lesbarer als ein"
[x isGreaterThan: y] whileTrue: [ x := x minus: 1 ].
 
AW: Programmieren lernen am Mac — Vor- und Nachteile der verschiedenen Sprachen

Es gibt in Objective-C nicht zwei Arten, Nachrichten zu verschicken. Jetzt steht es schon 3 zu 1.

Dein Smalltalk-Beispiel ist nur sinnvoll, wenn man einen Datentypen Block kennt. Das kennt weder C++ noch Objective-C. Ansonsten finde ich das nicht lesbarer, weil > zunächst ein heimlich konotiert. Und wenn wir dann mit * anfangen …
 
AW: Programmieren lernen am Mac — Vor- und Nachteile der verschiedenen Sprachen

Es gibt in Objective-C nicht zwei Arten, Nachrichten zu verschicken. Jetzt steht es schon 3 zu 1.
Mir war zwar nicht klar, dass irgendwer mitzählt, aber ich habe nie geschrieben es es zwei verschiedene Arten gibt Nachrichten zu verschicken. Nur, dass es zwei verschiedene Arten von Nachrichten gibt([a foo] und [a foo: bar]). Die heißen nunmal so auch wenn es in ObjC anscheinend unüblich ist, zwischen ihnen zu unterscheiden (durch die []-Klammerei auch nicht nötig).

unary-selector: http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/OOPandObjC1/OOPandObjC1.pdf

zumindest der Parser kennt also den Unterschied.

macht dann wohl 2:2 (auch wenn ich nicht weiß wie die anderen drei Punkte herkommen ;))

Dein Smalltalk-Beispiel ist nur sinnvoll, wenn man einen Datentypen Block kennt. Das kennt weder C++ noch Objective-C. Ansonsten finde ich das nicht lesbarer, weil > zunächst ein heimlich konotiert. Und wenn wir dann mit * anfangen …
> bedeutet nunmal größer als ich finde das eindeutig. Ist leichter zu erfassen als erst den Namen lesen zu müssen.
 
Zuletzt bearbeitet:
Zurück
Oben Unten