Java lernen sinnlos?
-
audacia schrieb:
byto schrieb:
Was kannst Du denn in Java durch die final-Beschränkung nicht lösen, was Du ohne lösen könntest?
Na, mit etwas Handarbeit läßt sich das alles natürlich auch in Java lösen. Aber warum benutzt du Java, wenn das doch auch in Assembler geht?
Bemühe mal Google auf der Suche nach nach "anonymous methods", "anonymous delegates" uns "closure".
Hast Du eigentlich irgendeinen meiner vorigen Posts gelesen? Ich bin mir durchaus drüber bewusst, dass andere Sprachen bessere Sprachfeatures bieten. Grade bzgl. Closures gibts ja genug Diskussionen innerhalb der Java Community.
Ich wehre mich lediglich dagegen, dass Java angeblich so schlecht sei, nur weils Sprachfeature XYZ nicht gibt. Sicher ist Java-Code nicht der kompakteste, trotzdem ist die Entwicklungszeit vergleichsweise gering, nicht zuletzt begünstigt durch den perfekten IDE Support.
Ich programmiere übrigens schlicht aus dem Grund in Java, weil mich mein aktueller AG dafür bezahlt. Wenn ich morgen ein Groovy oder Scala Projekt kriegen würde, hätte ich aber sicher nichts dagegen.
-
byto schrieb:
Wieviele Seiten lang willst Du eigentlich noch auf dem "gut genug" rumreiten? Wird doch langsam echt albern. Java hat in gewissen Bereichen die Nase vorne gegenüber C++ und in anderen Bereichen hat C++ die Nase vorne gegenüber Java.
Ja. Oder um es mit den Worten von neulich zu schreiben, Java füllt gewisse Lücken auf, die C++ nicht schließen kann oder will. Das ist aber kein Argument für irgendein "gut" für gute Programme, sondern paßt wunderbar bestärkend in mein Erklärungsmodell.
-
volkard schrieb:
Oder um es mit den Worten von neulich zu schreiben, Java füllt gewisse Lücken auf, die C++ nicht schließen kann oder will.
^^naja, auf die gefahr hin jemanden zu treffen, der 'mit dem herzen' diesem thread folgt, aber: die lücke, die C++ schliessen kann, ist verdammt klein. sie ist jetzt schon kaum wahrnehmbar und sie wird immer kleiner.
-
byto schrieb:
Hast Du eigentlich irgendeinen meiner vorigen Posts gelesen? Ich bin mir durchaus drüber bewusst, dass andere Sprachen bessere Sprachfeatures bieten. Grade bzgl. Closures gibts ja genug Diskussionen innerhalb der Java Community.
Ich wehre mich lediglich dagegen, dass Java angeblich so schlecht sei, nur weils Sprachfeature XYZ nicht gibt.
Da hast du offenbar meinen Post nicht gelesen:
audacia schrieb:
Und in der Kombination mit anonymen Methoden und RTTI kann man auch [...] anonyme Klassen simulieren - die sogar besser sind als anonyme Klassen in Java, da anonyme Methoden auf den Scope der umgebenden Methode zugreifen können.
Dieser harmlose Satz - über den man fachlich sicher streiten kann, denn die Simulation anonymer Klassen in Delphi hat, obgleich sie ein Komfort-Feature mehr bietet als Java, ihre eigenen Probleme - scheint bei dir gleich den "Java kommt in einem Vergleich schlechter weg"-Komplex ausgelöst zu haben. Ich kann meinen Worten nicht die Behauptung entnehmen, der du entgegentrittst. Cervantes hätte seine Freude.
-
audacia schrieb:
audacia schrieb:
Und in der Kombination mit anonymen Methoden und RTTI kann man auch [...] anonyme Klassen simulieren - die sogar besser sind als anonyme Klassen in Java, da anonyme Methoden auf den Scope der umgebenden Methode zugreifen können.
Dieser harmlose Satz - über den man fachlich sicher streiten kann, denn die Simulation anonymer Klassen in Delphi hat, obgleich sie ein Komfort-Feature mehr bietet als Java, ihre eigenen Probleme - scheint bei dir gleich den "Java kommt in einem Vergleich schlechter weg"-Komplex ausgelöst zu haben.
Nö, hat er nicht. Ich habe Dich lediglich darauf hingewiesen, dass Deine Aussage bzgl. anonymer Objekte in Java falsch ist. Offenbar willst Du Dich nun aus dieser Tatsache jetzt rauswinden.
-
byto schrieb:
falsch ist.
Stört dich, daß ich sagte, Javas anonyme Klassen könnten nicht auf den Scope der umliegenden Methode zugreifen? Du liegst richtig, das können sie, solange die Symbole final sind - aber deshalb unterstützt Java noch lange keine Closures. Was genau das war, was ich sagen wollte. Was du im Übrigen genau wußtest. Und bevor du mir weiter ausweichende Argumentation vorwirfst, wüßte ich wirklich gerne, welcher meiner Äußerungen du "Java [...] so schlecht sei, nur weils Sprachfeature XYZ nicht gibt." entnommen hast.
Aber Hauptsache, wir haben noch ein bißchen polemisiert. Sind ja erst auf Seite einundzwanzig.
-
auf Reflection, die gibt es in C++ nicht, eine der Dinge die ich in C++ vermisse, wie bereits gesagt
Vermisse ich nicht in C++.
smartpointer sind der inbegriff eines workarounds
Nein, sind sie nicht, da man sich aussuchen kann, wo sie eingesetzt werden. Ich habe sie genau einmal sinnvoll fuer Objekte genau einer speziellen Klasse verwendet. Sonst brauchte ich sie nicht. Dank C++ hatte ich diese Freiheit.
ML-, lisp-, scheme-, sonstwas-programmierer, ob er sich sowas wie C++ templates in seiner programmiersprache haben will
Ich programmiere in Scheme. Dort hat man Macros. Sie sind nicht zu verwechseln mit denen in C oder C++. Nur der Name ist gleich.
JIT-Optimierungen
Ich halte es immernoch fuer die groesste Marketingluege bei C# oder Java. Ueberall liesst man sowas wie "prizipiell" oder "moeglich" (alles im Konjunktiv) , aber nirgends steht was konkretes.
Kommt irgenwann mal ein anderes Beispiel fuer Op.ueberladung und Templates
Zumindestens fuer Templates und Typsicherheit: http://www.boost.org/doc/libs/1_39_0/libs/mpl/doc/index.html
Viele wären wahrscheinlich überrascht, wie selten man die Sicherheit und Performance statischer Typisierung bei vielen nicht-kritischen Programmaufgaben wirklich braucht
Irgendeine Marsmission: Der eine rechnet mit Fuss, der andere mit Meter ... bang 10 Mrd. Doller im Arsch. Ich mags einfach, wenn der Compiler mir sagt, dass ich gerade Mist baue. Der Hoehenparameter haette einfach an die Einheit "Meter" bzw. "Fuss" gebunden werden koennen und schon wuerde dieser subtile Bug bei der Compilation gemeldet.
nehme lieber das passende werkzeug für's jeweilige szenario, als'n leatherman oder 'swiss army knife' für alles
Genau das spricht gegen Java.
Ich wehre mich lediglich dagegen, dass Java angeblich so schlecht sei, nur weils Sprachfeature XYZ nicht gibt
Java ist so schlecht, weil es versucht, etliche Sprachfeatures anzubieten ohne davon auch nur eins wirklich gut umzusetzen.
Java füllt gewisse Lücken auf, die C++ nicht schließen kann oder will
C++ erhebt garnicht den Anspruch alles abzudecken. Diese Luecke wurde schon von vielen anderen Sprachen besetzt.
die C++ schliessen kann, ist verdammt klein. sie ist jetzt schon kaum wahrnehmbar und sie wird immer kleiner.
Bloedsinn. C++ will niemals Haskell oder Prolog Konkurrenz machen. Skripting und Co. stehen auch nicht auf der Jagdliste von C++.
Viele wären wahrscheinlich überrascht, wie selten man die Sicherheit und Performance statischer Typisierung bei vielen nicht-kritischen Programmaufgaben wirklich braucht
Irgendeine Marsmission: Der eine Rechnet mit Fuss, der andere mit Meter ... bang 10 Mrd. Doller im Arsch. Ich mags einfach, wenn der Compiler mir sagt, dass ich gerade Mist baue.
BOOST_FOREACH
Das einzig Gute an Boost, was ich bisher kennengelernt habe, ist die MPL. Manche benutzen ja auch sowas wie boost::exit_status ... Auch sollte Boost als Bibliothek nicht herangezogen werden, um ueber C++ zu urteilen. Es ist eben nicht die Sprache.
Und hier die ultimative Frage: Wer wuerde Java nutzen, wenn keine so umfangreiche Klassenbibliothek mitgeliefert werden wuerde? Wahrscheinlich niemand. Eine Klassenbibliothek kann niemals Maengel der Sprache ausgleichen, deswegen finde ich Java schlecht.
-
knivil schrieb:
auf Reflection, die gibt es in C++ nicht, eine der Dinge die ich in C++ vermisse, wie bereits gesagt
Vermisse ich nicht in C++.
Würdest du Reflection in Java, C# oder Delphi vermissen?
knivil schrieb:
Ich halte es immernoch fuer die groesste Marketingluege bei C# oder Java. Ueberall liesst man sowas wie "prizipiell" oder "moeglich" (alles im Konjunktiv) , aber nirgends steht was konkretes.
Da kann ich gerne nachhelfen: [1] [2]
knivil schrieb:
Viele wären wahrscheinlich überrascht, wie selten man die Sicherheit und Performance statischer Typisierung bei vielen nicht-kritischen Programmaufgaben wirklich braucht
Irgendeine Marsmission: ...
-
knivil schrieb:
Und hier die ultimative Frage: Wer wuerde Java nutzen, wenn keine so umfangreiche Klassenbibliothek mitgeliefert werden wuerde? Wahrscheinlich niemand. Eine Klassenbibliothek kann niemals Maengel der Sprache ausgleichen, deswegen finde ich Java schlecht.
Eine Gegenfrage: Wuerde irgendjemand C++ benutzen, mit den ganzen Templates, Macros, Op.uberladungen usw, wenn es nicht kompatibel zu C waere?
Btw, http://www.boost.org/doc/libs/1_39_0/libs/mpl/doc/index.html empfinde ich als ein Versuch einem Fisch beibringen zu fliegen. Oder einfach ein "Proof of concept", der Art "Mit Templates brauche ich keine richtigen Sprachfeatures, ich kann mir alle selbst nachprogrammieren". Die arme Seele die sich damit rumplagen muss, anstatt einfach Matlab, Scheme oder Prolog zu benutzen.
Ausserdem, ist es ein Beweis zu dem Standpunkt das C++ dir keine Sprachfeatures sondern Meta-Features bietet. Anstatt Lambdas und Dimensional Analysis in die Sprache zu integrieren (wo es hingehoert), bietet es dir die Moeglichkeit diese nachzubauen. Mit dem kleinen Nebeneffekt, dass jeder sie anderes Nachbaut und das man Library X nicht mit Library Y benutzen kann.
-
Eine Gegenfrage: Wuerde irgendjemand C++ benutzen, mit den ganzen Templates, Macros, Op.uberladungen usw, wenn es nicht kompatibel zu C waere?
Ich würde mal behaupten sehr wenige, die heutzutage C++ wählen tun dies wegen C-kompatibelität.
Btw, http://www.boost.org/doc/libs/1_39_0/libs/mpl/doc/index.html empfinde ich als ein Versuch einem Fisch beibringen zu fliegen. Oder einfach ein "Proof of concept", der Art "Mit Templates brauche ich keine richtigen Sprachfeatures, ich kann mir alle selbst nachprogrammieren". Die arme Seele die sich damit rumplagen muss, anstatt einfach Matlab, Scheme oder Prolog zu benutzen.
Scheme macht mit Lispmakros doch genau das gleiche?
Ausserdem, ist es ein Beweis zu dem Standpunkt das C++ dir keine Sprachfeatures sondern Meta-Features bietet. Anstatt Lambdas und Dimensional Analysis in die Sprache zu integrieren (wo es hingehoert), bietet es dir die Moeglichkeit diese nachzubauen. Mit dem kleinen Nebeneffekt, dass jeder sie anderes Nachbaut und das man Library X nicht mit Library Y benutzen kann.
Du hasts erfasst, bis auf das "wo es hingehört", denn das war genau mein Punkt - die Sprache kann sich entwickeln ohne sich zu verändern und das hält sie am Leben. Bis sich andere spezialisertere Sprachen soweit etabliert haben, dass es eine gewisse Bibliotheksauswahl gibt sind sie schon wieder veraltet. Änderungen in der Sprache hinken dem Bedarf immer hinterher, Lambdas werden in C++ btw. auch integriert werden, genauso kommt boost.function in die Standardbibliothek, das heißt die Features werden in C++ ebenso integriert, aber man kann die Features eben schon vorher nutzen und sich seine eigenen bauen.
Dass man Libraries nicht miteinander benutzen kann stimmt auch, aber in die Verlegenheit gekommen Bibliotheken so miteinander zu verbinden, hast du denn ein Beispiel wo es dich wirklich gestört hat?Wie gesagt, ich glaube niemand würde dir in deiner Beobachtung widersprechen, lediglich in der Deutung!
-
DEvent schrieb:
Ich glaub C++ler schreiben die ganze Zeit nur irgendwelche mathematische Bibliotheken. Kommt irgenwann mal ein anderes Beispiel fuer Op.ueberladung und Templates?
-
knivil schrieb:
nehme lieber das passende werkzeug für's jeweilige szenario, als'n leatherman oder 'swiss army knife' für alles
Genau das spricht gegen Java.
ist dir Java schon zu sehr 'general purpose'? dann bist du wohl eher ein freund von spezialisierten programmiersprachen, ne?
knivil schrieb:
die C++ schliessen kann, ist verdammt klein. sie ist jetzt schon kaum wahrnehmbar und sie wird immer kleiner.
Bloedsinn. C++ will niemals Haskell oder Prolog Konkurrenz machen. Skripting und Co. stehen auch nicht auf der Jagdliste von C++.
ich meinte es umgekehrt: nicht dass c++ sich in fremden territorien breit macht, sondern dass c++ immer weiter ins abseits gerät. seine blütezeit ist längst vorbei und ein comeback wird es nicht geben. auch schönheitsreparaturen und aufputschmittel, wie der neue standard, werden keine wiedergeburt nach sich ziehen, sondern sich eher negativ auswirken.
JustAnotherNoob schrieb:
... die Sprache kann sich entwickeln ohne sich zu verändern und das hält sie am Leben.
'entwickeln ohne sich zu verändern'!? wie geht'n das?
-
+fricky schrieb:
knivil schrieb:
die C++ schliessen kann, ist verdammt klein. sie ist jetzt schon kaum wahrnehmbar und sie wird immer kleiner.
Bloedsinn. C++ will niemals Haskell oder Prolog Konkurrenz machen. Skripting und Co. stehen auch nicht auf der Jagdliste von C++.
ich meinte es umgekehrt: nicht dass c++ sich in fremden territorien breit macht, sondern dass c++ immer weiter ins abseits gerät. seine blütezeit ist längst vorbei und ein comeback wird es nicht geben.
Das sehe ich auch so, habe ich auch schon vor ein paar Jahren hier geschrieben. C++ wurde in den 90ern massiv in Gebieten eingesetzt, die die Fähigkeiten von C++ gar nicht brauchen. In denen auch die Fähigkeiten der Entwickler nicht ausreichen. Das sind genau die Gebiete, die heute Java bzw. C# einnehmen. Geschäftsanwendungen hauptsächlich. Dafür hat man früher (wenn nicht VB) die MFC ausgepackt, heute halt Swing oder was auch immer. C++ ist auf dem Rückzug in "seine" Nische. Wowereit.
auch schönheitsreparaturen und aufputschmittel, wie der neue standard, werden keine wiedergeburt nach sich ziehen, sondern sich eher negativ auswirken.
Hier muss ich widersprechen. Wenn du dir die Änderungen im neuen Standard anguckst, dann gehen diese ganz eindeutig nicht in die Richtung, den neuen Mainstream-Sprachen (s.o.) Konkurrenz zu machen, sondern die Gebiete, in denen sich C++ seit der STL, Boost usw. hervortut, zu stärken. C++ festigt sich gerade seine Nische. Ob die groß genug ist, kann ich nicht beurteilen, aber geben tut es sie.
-
Bashar schrieb:
C++ festigt sich gerade seine Nische. Ob die groß genug ist, kann ich nicht beurteilen, aber geben tut es sie.
ich kann diese nische nicht erkennen, was nicht heissen soll, dass es keine gibt. vielleicht befindet sie sich irgendwo auf dem gebiet der 'generativen programmierung', dort nimmt man aber gern spezialisierte tools, die direkt mit grafischen oder formalen schemata als input umgehen können (z.b. aus UML Java-klassen erzeugen oder aus logik-schaltbildern VHDL-code machen, usw). wenn es eine nische gibt, dann ist sie sehr klein. und letzen endes wird c++, wie bisher, für dinge verwendet werden, für die es geeignetere werkzeuge gibt.
-
Rhabarber Rhabarber Rhabarber Rhabarber Rhabarber Rhabarber Rhabarber Rhabarber Rhabarber Rhabarber Rhabarber Rha - barber Rhabarber
-
Zusammenfassung schrieb:
Rhabarber Rhabarber Rhabarber Rhabarber Rhabarber Rhabarber Rhabarber Rhabarber Rhabarber Rhabarber Rhabarber Rha - barber Rhabarber
Oder auch einfach Rhabarberbarbara...
-
asc schrieb:
Oder auch einfach Rhabarberbarbara...
gibts was zu meckern? du hast doch mal selber erzählt, dass in deinem beruflichen umfeld verstärkt auf C# gesetzt wird, wo früher C++ angesagt war.
-
+fricky schrieb:
asc schrieb:
Oder auch einfach Rhabarberbarbara...
gibts was zu meckern? du hast doch mal selber erzählt, dass in deinem beruflichen umfeld verstärkt auf C# gesetzt wird, wo früher C++ angesagt war.
Quatsch Rhabarber Rhabarber Rhabarber!!!111
-
Was habt ihr gegen C??? Ich programmiere gern in C
Edit: oh, versehenes geeht ja um C++
-
+fricky schrieb:
Rhabarber
http://de.wikipedia.org/wiki/Generische_Programmierung
http://de.wikipedia.org/wiki/Generative_Programmierung