# C++, vc++, c#, .NET ?!?



## Kruemel (15. Apr 2011)

Hi!

Was haltet ihr eigentlich von C++ verglichen mit Java? Ich würde gerne C++ lernen, die vielfalt ist allerdings erschreckend ^^ 

Sind Visual C++ oder diese .NET Framework Geschichten empfehlenswert?

Habe schon C gelernt, will jetzt bei C++ nichtwieder mit den Consolenfenster anfangen, 
da wäre Visual C++ wohl der richtige Weg, oder?

Ist das gebräuchlich (professionell)?

Gruß, Kruemel


----------



## Marco13 (15. Apr 2011)

Ah, endlich mal wieder ein "Welche Sprache tut eigentlich die besteste sein?"-Thread 

Visual Studio ist schon OK. Bei nicht-Konsolen-Anwendungen hat man entweder die Wahl zwischen der reinen Windows-API (Buch von Charles Petzold) oder speziellen Bibliotheken (Qt & Co....)


----------



## tfa (15. Apr 2011)

@Kruemel
Was möchtest du denn erreichen? Welche Art von Programmen möchtest du schreiben?


----------



## Gast2 (15. Apr 2011)

generell schließe ich mich der Frage von tfa an ....




Kruemel hat gesagt.:


> Was haltet ihr eigentlich von C++ verglichen mit Java?


nichts - das sind zwei völlig verschiedene Sprachen



> Ich würde gerne C++ lernen, die vielfalt ist allerdings erschreckend ^^


welche Vielfalt - den Wildwuchs den MS mit C++/CLI geschaffen hat?



> Sind Visual C++ oder diese .NET Framework Geschichten empfehlenswert?


was willst Du C++ oder C++/CLI ... in letzterem Fall - lass die Finger davon ... da wirst Du nicht glücklich mit VisualStudio ... wenn Du das .NET Framework verwenden willst, nimm C# und in Ausnahmefällen (also wenn Du die Windows-API benötigst) schreibt eine DLL auf Basis von C++/CLI (Stichwort Wrapper)



> Habe schon C gelernt, will jetzt bei C++ nichtwieder mit den Consolenfenster anfangen,
> da wäre Visual C++ wohl der richtige Weg, oder?


nein ... C++ mit irgend einem Framework (Qt oder so) ... aber nicht C++/CLI



> Ist das gebräuchlich (professionell)?


???:L


----------



## Kruemel (15. Apr 2011)

Danke für eure Antworten erstmal.

Gegen Visual C++ und C# bzw. .NET Sachen spricht für mich dieses Drag&Drop editing. Das mag ich nicht. Auch z.B. JavaBeans ist nix für mich...

Ich denke ich werd ganz einfach mit hundsgewöhnlichem C++ mit Code::Blocks anfangen, WinAPI lernen, später sollte der Umstieg auf Visual C++ (das einem bestimmt die Arbeit erleichtert wenn man schon mal'n Plan hat) leicht fallen.

Das mit professioneller Anwendung interessiert mich deßhalb weil ich später in diese Richtung arbeiten werden. C++ habe ich aber erst im Hauptstudium, deßhalb weiß ich nicht so recht wo ich anfangen soll...

Was mich in der Hinsicht allerdings frappiert ist, dass fast jedes aktuelle Computerspiel die Visual C++ Runtime Engine installiert, deßhalb dachte ich dass das wohl doch sehr verbreitet ist.

Wird dieses Paket gezwungenermaßen benötigt um Visual C++ Programme auszuführen? Das ist nämlich Käse, da ist C++ ohne Visual wohl besser.

Gruß, Kruemel

Edit: Kennt jemand ein super C++ Buch?


----------



## tfa (15. Apr 2011)

Du bist dir aber schon bewusst, dass C++ alles andere als eine moderne und "schöne" Programmiersprache ist. Wenn man die Wahl hat, sollte man auf jeden Fall was anderes nehmen.


----------



## Marco13 (15. Apr 2011)

Kruemel hat gesagt.:


> Gegen Visual C++ und C# bzw. .NET Sachen spricht für mich dieses Drag&Drop editing. Das mag ich nicht.



Ich bin nicht ganz sicher: Es gab wohl mal eine Zeit, wo "Visual C++" sich nur auf besagtes Clickibunti-Ding bezog. Aber mit Visual Studio kann (und sollte) man genauso fies-low-levelig Code hintippen wie mit jeder anderen IDE auch...


----------



## Kruemel (15. Apr 2011)

@ tfa: Was wäre in deinen Augen moderner?


----------



## Landei (15. Apr 2011)

C# und F# sind die "modernsten" Sprachen für .NET

Es gibt übrigens auch Sprachen, die sich sowohl auf .NET als auch auf der JVM ausführen lassen (natürlich bestehen Plattform-Abhängigkeiten je nach verwendeten Bibliotheken). Soweit ich weiß geht das mit Fantom und Scala.


----------



## Kruemel (15. Apr 2011)

Folgender Absatz aus Coding for Fun mit C++ hält mich irgendwie von C# ab ^^

Liebe Leserin, lieber Leser,
welche der folgenden Aussagen trifft am ehesten auf Sie zu?
Ich kann C++.
a) Nein, aber klingt interessant. (0 Punkte)
b) Ja, ein bisschen. (5 Punkte)
c) Klar! (10 Punkte)
d) Nein, aber ich kann C#. (–100 Punkte)   <--- :autsch:

Hat C# Nachteile die diese -100 Punkte rechtfertigen?

Gruß, Kruemel


----------



## maki (15. Apr 2011)

Du musst lernen, das solche Aussagen nicht auf objektiven Kriterien basieren, sondern schlicht Propaganda sind, oder um es deutlicher zu sagen: Bullshit 

Ein BS Beispiel von mir:
Diese Frage dient dazu, die Masochisten von den gesunden Leuten zu trennen, oder wer sollte 2011 sonst Spass daran haben in C++ zu programmieren?

Wenn du hier (in einem Javaforum) fragst werden die viele sagen das C++ veraltet und überholt  ist, und sowieso nur noch eine irrelevante Randerscheinung in der heutigen Softwareentwickluing darstellt.
Dann werden viele Leute sagen, dass C# nur eine schlechte Java Kopie von M$ ist, und wie immer kopiert M$ sehr schlecht.
usw.


----------



## Gast2 (15. Apr 2011)

Kruemel hat gesagt.:


> Hat C# Nachteile die diese -100 Punkte rechtfertigen?



[DUKE]STOPP !![/DUKE]

ab hier hast Du 2 Möglichkeiten


Du machst weiter wie bisher (komische Foren lesen und nicht nachdenken)
Du fängst an Programmiersprachen als Werkzeuge zum Lösen eines Problems zu betrachten

ich rate zu letzterem ... unter Linux bevorzuge ich Java - wobei ich auch schon C verwendet habe ... Windows hat bei mir einen .NET Vorteil ... Webseiten mache ich mit PHP ... auf einem Mikrocontroller verwende ich (unter diversen Umständen) Assembler

es geht nicht darum welche Sprache gerade ab beliebtesten ist - sondern welche Sprache sich zum Lösen des Problems am besten eignet

hand, mogel


----------



## schlingel (15. Apr 2011)

Die Frage ist auch ob du dich auf eine Plattform festlegen möchtest.

Wenn du z.B. C++ lernst und als UI-Framework GTK wählst, dann hast du gute Chancen dass die Anwendung auf Linux, Mac und Windows läuft. Wenn du QT nimmst, was ja als Framework nicht nur UI abdeckt, stehen die Chancen sogar schon sehr gut.

Wenn du dir denkst Windows ist vollkommen OK und du möchtest bei der Plattform bleiben spricht auch nichts gegen C++ auf Windows. Der Unsinn dass du dann sofort C++/CLI programmieren musst stimmt natürlich nicht. Die Wahl steht dir offen, du kannst weiterhin vollkommen native Win-API Anwendungen schreiben oder auch nicht.
C++/CLI hat jedoch den Vorteil, dass sich damit ganz leicht Brücken zwischen der .Net-Welt und der nativen Windows-Welt basteln lassen. Was man nicht vergessen darf sind dann die zusätzlichen MS-Frameworks, MFC, ATL usw. usf. Mehraufwand für diese Plattform.

Das Drag&Drop-Editing hat mich auch immer abgeschreckt. Da in sehr vielen Tutorials alles mit den build-in Tools in Visual Studio erledigt wird. Darauf bist du aber nicht angewiesen. Du  kannst alles auch ganz normal coden. Obwohl mich diese Klick-Editoren nie interessiert haben da ich als Anfänger nicht verstanden habe was da passiert, war ich dann doch C#-Entwickler für 2,5 Jahre.

F# ist denke ich zur Zeit das interessanteste auf der .Net-Plattform auch wenn C# sehr viele Features daraus inkludiert. Doch funktionale Sprachen üben auf mich eine eigene Faszination aus.


----------



## Marco13 (15. Apr 2011)

Das hier teilweise auf die Plattform angespielt wurde: Man kann sich praktisch beliebig lange mit C++ beschäftigen, und lernt immer neues (von den Basics über STL bis Boost) ohne dass die Frage der Plattform eine Rolle spielt. Bei GUIs ist das noch am "kritischsten", aber mit Dingen wie Qt kann man da auch einigermaßen flexibel bleiben.


----------



## Sym (18. Apr 2011)

mogel hat gesagt.:


> [...]es geht nicht darum welche Sprache gerade ab beliebtesten ist - sondern welche Sprache sich zum Lösen des Problems am besten eignet[...]


Nicht ganz. Es geht auch darum, welche Sprachen man beherrscht. Nur weil eine Sprache optimal geeignet wäre, heißt dies nicht, dass man diese unbedingt verwenden sollte. 

Ich würde für das Lernen einer Sprache auch etwas moderneres verwenden. Java ist sehr verbreitet und kann sehr viel. Damit wird man bestimmt glücklich. C# ist in manchen Bereichen immer ein wenig schneller innovativ.  Beides (in meinen Augen) schöne Sprachen.


----------



## Gast2 (18. Apr 2011)

Sym hat gesagt.:


> Es geht auch darum, welche Sprachen man beherrscht.


das die Fähigkeiten zu einer Sprache durchaus hier eine Rolle spielen sollte wohl klar sein ... wenn ich ein Programm mit reiner GUI & nur Windows und sonst nichts schreiben muss, werde ich C# den Vorzug geben - da ich mich in GUI Dingen unter C# besser auskenne ... obwohl hier beide Sprache eindeutig gleichberechtig sind ... würde ich mich mit Java & GUI besser auskennen würde Java den Zuschlag erhalten - zumal ich dann dem Kunden das Programm nochmal für Linux verkaufen kann


----------



## darekkay (18. Apr 2011)

Sym hat gesagt.:


> Nicht ganz. Es geht auch darum, welche Sprachen man beherrscht. Nur weil eine Sprache optimal geeignet wäre, heißt dies nicht, dass man diese unbedingt verwenden sollte.



Auf der anderen Seite sollte man auch mit dem Fortschritt gehen - nur weil ich eine Sprache sehr gut beherrsche, heißt es nicht, dass ich sie bis in alle Ewigkeiten benutzen soll oder kann 
Als Programmierer sollte ja die Aneignung einer neuen Sprache eher weniger Probleme bereiten.


----------



## Sym (18. Apr 2011)

Da habt ihr beiden natürlich recht. 



mogel hat gesagt.:


> [...] würde ich mich mit Java & GUI besser auskennen würde Java den Zuschlag erhalten [...]



Oh je, ich glaube ich würde mich trotzdem nicht für Swing entscheiden...


----------



## Spitfire777 (19. Apr 2011)

Naja, also Oracle ist nun auch nicht wirklich die Heilsarmee im Vergleich zu "M$".

Java und C# kann man nur im Detail vergleichen, wobei MS bei C# einige praktische Dinge "dazuerfunden" hat.


----------



## Gast2 (19. Apr 2011)

Sym hat gesagt.:


> Oh je, ich glaube ich würde mich trotzdem nicht für Swing entscheiden...



Java GUI != Swing


----------



## Sym (19. Apr 2011)

SirWayne hat gesagt.:


> Java GUI != Swing


In den meisten Fällen wird das gleich gesetzt. Vielleicht weil es beim SDK dabei ist?


----------



## Gast2 (20. Apr 2011)

Sym hat gesagt.:


> In den meisten Fällen wird das gleich gesetzt.



Quelle?


----------



## Sym (20. Apr 2011)

SirWayne hat gesagt.:


> Quelle?


Swing gehört nun einmal zu Java dazu und ist die Standard-Java-UI. Früher war die Standard-Java-UI AWT. Das es andere und auch ggf. bessere UIs für Java gibt, möchte ich nicht bestreiten. 

In den Projekten die ich kennenlernen durfte, war es bisher häufig so, dass Java UI mit Swing gleichgesetzt wurde. Und mir ging es bei meiner Aussage auch nur um meine persönliche Abneigung, Swing zu benutzen.


----------



## Gast2 (20. Apr 2011)

Sym hat gesagt.:


> Swing gehört nun einmal zu Java dazu und ist die Standard-Java-UI.



Wird sich mit Jigsaw ändern.


----------



## Sym (20. Apr 2011)

SirWayne hat gesagt.:


> Wird sich mit Jigsaw ändern.


Ja, aber es ist aktuell noch nicht so. 

Was möchtest Du mir eigentlich mitteilen?


----------



## Gast2 (20. Apr 2011)

Sym hat gesagt.:


> Ja, aber es ist aktuell noch nicht so.
> 
> Was möchtest Du mir eigentlich mitteilen?



Immer noch das gleiche ^^

Java GUI != Swing


----------



## JimPanse (20. Apr 2011)

Ich mache jetzt einfach mal mit!

Also es kommt immer auf den Anwendugsfall drauf an welche Programmiersprache oder Plattform du verwendest!

Programmieren Lernen: Java oder C#
Kleine schmutzige Web-Anwendungen: PHP 
Große + verteilte Systeme: .NET oder Java EE




Kruemel hat gesagt.:


> Was mich in der Hinsicht allerdings frappiert ist, dass fast jedes aktuelle Computerspiel die Visual C++ Runtime Engine installiert, deßhalb dachte ich dass das wohl doch sehr verbreitet ist.



Jap bei Computerspielen wirst du wohl C/C++ brauchen dann aber auch OpenGL/Glut/SDL /Boost etc... 

C++: OGRE – Open Source 3D Graphics Engine oder Horde3D - Next-Generation Graphics Engine
Orge3D & Horde hatte ich im Studium und wir haben einige ganz nette Sachen damit erstellt.

Das Java Gegenstück:
Java: jMonkeyEngine 3.0 | Java OpenGL Game Engine

Wobei Java auch native Bibliotheken hierfür braucht um direkt mit den Resourcen des Betriebssystem zu arbeiten (wie auch SWT, Java3D usw).


----------



## Kruemel (20. Apr 2011)

Danke für die vielen Infos und Anregungen.

Hab mir aus der Bibliothek ein C++ und ein C# Buch geholt, heute bin ich jetzt den ganzen Tag an C# gesessen. Macht richtig Spaß! Auch das Drag und Drop und so hat durchaus was für sich, obwohl es sich ein bisschen wie Kinderspielzeug anfühlt.

Diese Click-Editoren hab ich nur mit Visual Basic 5 oder 6 (also echt lange her) und Delphi kennengelernt, da hat sich ja zu C# und .NET einiges getan, gerade die Layoutmanager sind auch echt gut zu handlen finde ich.

Ich werde wohl bei C# bleiben, ist eine zukunftsorientierte Sprache. Was mich stört ist dass das .NET Framework installiert sein muss aber nu gut irgendwo muss man Abstriche machen ^^

Vielen Dank euch allen, habt mich quasi "bekehrt" ^^

Gruß, Kruemel

Edit: Zu 3D Games, XNA für C# sieht auch stark aus:
XNA Racing Game


----------



## Gast2 (20. Apr 2011)

Kruemel hat gesagt.:


> Was mich stört ist dass das .NET Framework installiert sein muss aber nu gut irgendwo muss man Abstriche machen ^^


wow ... bei java musst Du die Runtime installieren ... bei C++ musst Du die Runtime installieren ... bei $WHATEVER musst Du $WHATEVER installieren -.-


----------



## Kruemel (20. Apr 2011)

Seit wann braucht C++ oder C eine Runtime? Die Visual Sachen, klar, aber reines C oder C++ doch nicht?


----------



## JimPanse (20. Apr 2011)

Kruemel hat gesagt.:


> Vielen Dank euch allen, habt mich quasi "bekehrt" ^^



Na hoffentlich doch nicht zu einem .NET Anwender 



Kruemel hat gesagt.:


> it: Zu 3D Games, XNA für C# sieht auch stark aus



Joar XNA ist ziemlich simple aber halt die Bindung zu Microdoof und dem Windoof Betriebssystem ist manchmal hinderlich ;-)
Aber um zum Lernen und ausprobieren sicherlich eine gute Wahl!

Na dann viel Erfolg!


----------



## Gast2 (21. Apr 2011)

Kruemel hat gesagt.:


> Seit wann braucht C++ oder C eine Runtime? Die Visual Sachen, klar, aber reines C oder C++ doch nicht?



Laufzeitbibliothek ? Wikipedia


----------



## Gast2 (21. Apr 2011)

Bezüglich der Drag'n'Drop GUI Editoren in Visual Studio. Was verwendest du? Die Windows Forms oder WPF? Ich würde dir sehr ans Herz legen dir mal WPF anzusehen. Da hast du die gesammte GUI als XML beschrieben und kannst sehr gut nachvollziehen was da passiert und auch on the fly händisch ändern.

Von den ganzen neuen und sehr coolen Databinding Features mal ganz abgesehn. Man spart sich irre viel Code und rumgemurkse dadruch.


----------



## ice-breaker (22. Apr 2011)

mogel hat gesagt.:


> Laufzeitbibliothek ? Wikipedia


das was von C benötigt wird, steckt aber schon im Betriebssystem, deswegen ist das Argument, dass man auch für C weitere Software installieren muss eher weniger haltbar


----------



## Gast2 (22. Apr 2011)

ice-breaker hat gesagt.:


> das was von C benötigt wird, steckt aber schon im Betriebssystem


???:L ... das was von Java benötigt wird, steckt aber schon im Betriebssystem ... ansonsten -> statisches Linken

bei C wird die Laufzeitbibliothek (dummerweise) statisch gelinkt - dennoch existiert die Laufzeitbibliothek ... C ist ebenfalls wie Java Plattform unabhängig - solange Du Dich an den Standard hälst ... die Laufzeitbibliothek ist dafür zuständig das ein printf auf Linux etwas auf der Console ausgibt und auf Windows ... in der Laufzeitumgebung erfolgt dann der entsprechende BS-Aufruf

allerdings hat statisches Linken den Nachteil das bei einem Fix der Laufzeitbibliothek alle Programm (zumindest) neu gelinkt werden müssen ... das ist schlecht ... besser ist es die Laufzeitbibliothek dynamisch zur Laufzeit nachzuladen (Java/C#/Boost/Gtk/...) ... dadurch wird zwar immer alles mitgeliefert ... allerdings sind auch alle Programme die die Laufzeitbibliothek nutzen sofort gefixt


----------



## Kruemel (25. Apr 2011)

Nochmals dazu:

Habe festgestellt das Windows 7 schon automatisch das .NET Framework bereitstellt, es ist schon enthalten, eine extra installation ist also nicht nötig was .NET Programme natürlich anwenderfreundlicher macht.

C# ist schon :toll:

Gruß, Kruemel


----------



## Gast2 (27. Apr 2011)

Kruemel hat gesagt.:


> Habe festgestellt das Windows 7 schon automatisch das .NET Framework bereitstellt, es ist schon enthalten, eine extra installation ist also nicht nötig was .NET Programme natürlich anwenderfreundlicher macht.



Nur bedingt richtig. Windows 7 bringt nur .NET 3.5SP1 mit. Wenn du 4er Features und APIs verwenden willst musst du es auch nachinstallieren lassen. Für ältere Windows Versionen sieht es da noch schlechter aus. Ich glaube bei Vista war .NET 1.1 (maximal 2.0) mit bei.


----------



## schlingel (27. Apr 2011)

Hallo, man darf aber nicht vergessen, dass die Runtimes z.B. für den MSI-Service gebraucht werden. Das heißt die Chancen stehen sehr gut, dass die Version 3.5 SP1 installiert ist. 

Zudem, rate ich dir strikt davon ab Version 1.1 zu verwenden. Während Version 2.0 bis 4.0 auf der selben Basis aufbauen, fühlt sich .net v1.1 wie Java 1.4.2 an. Das kann man total vergessen wobei auch noch zu erwähnen ist, dass in v1.1 noch keine Delegates und Generics vorhanden sind und damit viel von C# fehlt.


----------



## Spitfire777 (29. Apr 2011)

Also mir gefällt C# eigentlich richtig gut, vor allem das Umschreiben von Operatoren zur Anwendung auf eigene Typen find ich ziemlich sexy 
Ich bin davon überzeugt, dass MS mit .NET einiges an verlorenen Posten wieder gut machen kann, aber mal sehn, was die Zukunft bringt^^


----------



## maki (29. Apr 2011)

> Also mir gefällt C# eigentlich richtig gut, vor allem das Umschreiben von Operatoren zur Anwendung auf eigene Typen find ich ziemlich sexy


Du meinst operator overloading?
Mann bin ich froh dass es sowas in Java nicht gibt


----------



## Marco13 (29. Apr 2011)

Spitfire777 hat gesagt.:


> Also mir gefällt C# eigentlich richtig gut, vor allem das Umschreiben von Operatoren zur Anwendung auf eigene Typen find ich ziemlich sexy



Ja, vermutlich Operator Overloading. Das gibt es auch in C++ und vielen anderen Sprachen. Und das kann wirklich "sexy" sein. Wer schonmal versucht hat, ein paar vermeintlich triviale Berechnungen von 'float' auf 'BigDecimal' umzustellen, weiß das. Aber wer glaubt, dass ein "Ring" immer an einen Finger gehört, ein Finger Teil von einem "Körper" sein muss, und mehrere Körper eine "Gruppe" bilden, sollte von Operatorenüberladung IMHO tunlichst die Finger lassen...


----------



## maki (29. Apr 2011)

> Ja, vermutlich Operator Overloading. Das gibt es auch in C++ und vielen anderen Sprachen. Und das kann wirklich "sexy" sein.


Wie sexy ist Operator Overloading wenn die Priorität der Operatoren nicht festgelegt ist?
Klar wäre es toll gewesen wenn eingebaute Number Typen wie BigDecimal Op Ov. hätten, bei String ging es ja auch, zumindest beim +.
Während es für arithmethische Operationen unzweifelhaft Vorteile hätte, wäre es für alle anderen Fälle wohl ein Rückschritt, bei Arithmetik verstehe ich den Vorteil von + zu add(..), bei person1 + person2 muss man sich schon sehr fragen was das soll.
Aber jedem Entwickler sollte man nicht die Möglichkeit geben Operatoren zu überladen, denn die meisten sind sich nciht über die Konsequenzen im klaren.


----------



## Marco13 (29. Apr 2011)

maki hat gesagt.:


> bei person1 + person2 muss man sich schon sehr fragen was das soll.



Das hatte ich ja auch (etwas verschlüsselt) angedeutet. Aber gerade bei "Person" ist doch viel Spielraum für Phantasie ... :reflect:


----------



## maki (29. Apr 2011)

LOL
[c]baby = peter -> susi;[/c]


----------



## Landei (29. Apr 2011)

Ich finde Operatorüberladung - wenn sie richtig implementiert ist - gut. Hier z.B. Parser Combinators in Scala:


```
lexical.delimiters ++= List("(", ")", "+", "-", "*", "/")

 def factor: Parser[Int] = "(" ~> expr <~ ")" | numericLit ^^ (_.toInt)

 def term : Parser[Int] = (
   factor ~ "*" ~ term ^^ { case x ~ "*" ~ y => x * y } |
   factor ~ "/" ~ term ^^ { case x ~ "/" ~ y => x / y } | factor )

def expr : Parser[Int] = (
  term ~ "+" ~ expr ^^ { case x ~ "+" ~ y => x + y } |
  term ~ "-" ~ expr ^^ { case x ~ "-" ~ y => x - y } | term )
```

Man stelle sich das in Java-Syntax vor...

Auch gut finde ich, wenn man Bezeichner wie Operatoren verwenden kann, z.B. wie in Haskell (wobei man Backticks ` verwenden muss):

```
sortBy (compare `on` fst) [(1,2),(5,2),(3,6)]

--anstatt der "normalen" Schreibweise
sortBy (on compare fst) [(1,2),(5,2),(3,6)]
```

Das Argument vom "Mißbrauch" mag ich gar nicht mehr hören, es ist so absurd wie eine Pistole bauen zu wollen, mit der man sich nicht selbst in den Fuß schießen kann. Das heißt nicht, dass man auf alle Sicherheitsmaßnahmen verzichten sollte, aber diese dürfen eben nicht so weit gehen, dass sie die Gebrauchsfähigkeit einschränken. Eine Sprache, in der man keinerlei "Unsinn" anstellen könnte, wäre so beschränkt, dass sie sich nicht zu lernen lohnt.


----------



## Gast2 (29. Apr 2011)

Landei hat gesagt.:


> Das Argument vom "Mißbrauch" mag ich gar nicht mehr hören, es ist so absurd wie eine Pistole bauen zu wollen, mit der man sich nicht selbst in den Fuß schießen kann. Das heißt nicht, dass man auf alle Sicherheitsmaßnahmen verzichten sollte, aber diese dürfen eben nicht so weit gehen, dass sie die Gebrauchsfähigkeit einschränken. Eine Sprache, in der man keinerlei "Unsinn" anstellen könnte, wäre so beschränkt, dass sie sich nicht zu lernen lohnt.



dito ... wenn man es übertreibt (aus Plus ein Minus zu machen) ist es absoluter Mist ... ansonsten


```
MyStack stack = new MyStack();
stack = 5;
stack = 4;
System.out.println(stack);
System.out.println(stack);
// Ausgabe -> erst 4 dann 5
```

ist schon etwas Grenzwertig ... wobei es aber genau das darstellt was ein Stack macht


----------



## Spitfire777 (29. Apr 2011)

Ich denke, es liegt beim Programmierer, wo er Operator Overloading einsetzt. Natürlich wird es in unpassenden Kontexten zu sehr verwirrendem Code und zu mehr Fehlerquellen führen. Schließlich muss ich i.d.R. z.B. beim Vergleichsoperator auf komplementäre Operatoren achten, z.B. das Overloading von "==" impliziert auch das Overloading von "!=", usw.

Jedoch kann man mit Operator Overloading Operationen als kurze und klare Aussagen darstellen und hat mir in größeren Klassen die Lesbarkeit bisher, passend eingesetzt, deutlich vereinfacht, wobei ich z.B. arithmetische Opertoren bisher eigentlich eh immer nur mit Zahlentypen verwendet habe.

Und wenn jemand sowas macht:

```
bundesland = person1 + schlechtesWetter;
```
...dann hat der jenige wirklich ne Pistole verdient, mit der man sich ins Bein schiessen kann.

Ob OO im Einzelfall nützt, oder nicht... Nur auf solche Weise können neue Innovationen entstehen, wenn man neue Denkrichtungen verfolgt. Und auch wenns halt nunmal vom "bösen Redmon(d)ster" ist.


----------



## Landei (30. Apr 2011)

mogel hat gesagt.:


> dito ... wenn man es übertreibt (aus Plus ein Minus zu machen) ist es absoluter Mist ... ansonsten
> 
> 
> ```
> ...



Ich würde sowas bevorzugen:

```
stack += 5;
stack += 4;
```

oder sogar:

```
5 -> stack;
4 -> stack;
```


----------

