Java: Immer noch keine echten Templates?
-
bashar:
also die köpfe einschlagen würde ich es nicht gerade nennen was wir machen
weil bis jetzt war hier noch kein richtiges geflameshade:
ob man eine sprache mag oder nicht mag sei dahingestellt
C++ kann sich nicht viel abschneiden weil es eine sprache für andere anwendungen ist
deswegen hat ja auch MS C# herausgebracht
ich war selber früher nicht begeistert von java, doch jetzt benutze ich es gerne und schreibe schon mehr damit als mit C++
(hat bei mir Visual Basic ersetzt, welches ich für RAD programmierung benutzt habe, und habe dann J2EE wie auch J2ME gelernt)
und im server bereich ist J2EE eine wirklich gute technik um lösungen darauf aufzubauensir:
also richtig prozedural kann man das ja nicht nennen
den man muss es immer noch im kontext einer klasse machen - obwohl - ich geb dir recht - man kann dann innerhalb dieser klassse einfach prozedural dahinprogrammierengomberl
-
gomberl schrieb:
ob man eine sprache mag oder nicht mag sei dahingestellt
Jo, ich habs ja probiert. Aber jedesmal wenn ich versuche etwas in Java zu machen dreh ich durch...
C++ kann sich nicht viel abschneiden weil es eine sprache für andere anwendungen ist
Ja, aber es ging um OO Konzepte. Und das 'Problem' hierbei ist, dass viele Leute glauben dass Java deshalb besser sein muss als C++ weil es 'perfekt' OO ist. Was aber ein Blödsinn ist. 'echte' OO habe ich bei Ruby
deswegen hat ja auch MS C# herausgebracht
Jo, und C# gefällt mir persönlich viel besser als Java - aber auch hier sind die Konzepte im Prinzip gleich. Weder Java noch C# haben etwas revolutionierendes - mit Ausnahme des JITens, das ist in der Tat ein genialer Ansatz (der aber nix mit der Sprache zu tun hat)
ich war selber früher nicht begeistert von java, doch jetzt benutze ich es gerne und schreibe schon mehr damit als mit C++
(hat bei mir Visual Basic ersetzt, welches ich für RAD programmierung benutzt habe, und habe dann J2EE wie auch J2ME gelernt)Ich suche momentan noch nach einer vernünftigen Verbindung von RAD GUI im Frontend und C++ als mächtiges Backend.
Meine Ideen mit Java in dieser Hinsicht musste ich aber leider fallen lassen (aus diversen Gründen)
und im server bereich ist J2EE eine wirklich gute technik um lösungen darauf aufzubauen
auf jeden Fall. Ich will Java hier nicht schlecht machen. Ich will nur nicht dass Java besser als c++ dasteht :p
also richtig prozedural kann man das ja nicht nennen
den man muss es immer noch im kontext einer klasse machen - obwohl - ich geb dir recht - man kann dann innerhalb dieser klassse einfach prozedural dahinprogrammierenExakt. Und viele Anfänger denken 'ha! ich programmiere OO' - aber in wirklichkeit ist es prozedual in Klassen gepackt.
Denn OOP zeichnet sich zumindest bei mir durch mehr aus als Klassen zu verwenden.
-
Cengiz: reines Wunschdenken
-
Ja, hab ich auch festgestellt ...
-
Aber selbst bei mehreren Klassen muss es noch lange kein OO sein sondern kann
auch nur ein objektbasierter Ansatz sein.Und ob jetzt die Main Funktion innerhalb einer Klasse aufgerufen wird und danach
alles prozedural geschieht oder die Main Funktion direkt aufgerufen wird wie in
c++ macht ja nicht den Unterschied.
-
4 Leerzeichen schrieb:
Aber meine Erfahrung zeigt mir, dass Werkzeuge oft dann besonders verbreitet sind, wenn sie nicht so "schwer" sind. C++ ist zwar viel ausgereifter, viel
performanter und bietet tausendmal mehr Möglichkeiten (Template-Metaprogramming) als Java, trotzdem findet Java vor allem bei den nicht ganz so begabten "Entwicklern" eine weite Verbreitung, da man sich dann trotzdem wie ein "richtiger" Programmiere fühlen kann, obwohl man gar nicht zu wirklich richtiger Programmierung in Lage ist.Programmiere ein mit kommerziellen Produkten vergleichbares MMORPG in Java und eins in C++, und dann sag' mir daß es mit Java nicht "schwer" wäre...
*vonvornhereinnichtssinnvollesbeisteuernwollt'*
-
shade:
Jo, ich habs ja probiert. Aber jedesmal wenn ich versuche etwas in Java zu machen dreh ich durch...
wieso dieses? wenn du aus der C++ ecke kommst dann solltest du mal keine probleme mit der sprache haben? oder an was haengt es?
Java ist nicht perfekt OO - das faengt schon bei den datentypen an.
ruby is meiner meinung nach vollkommen irrelevant in der praxis. es ist gut um OO zu programmieren aber in der praxis nicht anwendbar da einfach unperformant. zumindest ist das bei meinen evaluierungen rausgekommen.C# an sich ist ne feine sache. ein verbessertes java von der struktur her - meine meinung. das .net framework bietet auch extrem viel.
also backends schreibe ich meistens auf J2EE basis. zumindest wenn ich massiv leistung brauche.
auf jeden Fall. Ich will Java hier nicht schlecht machen. Ich will nur nicht dass Java besser als c++ dasteht
wie ich bereits vorher gesagt habe sind es verschiedene sprachen und haben verschiedene anwendungsgebiete
dementsprechend sind sie fuer mich gar nicht in dem ausmasse vergleichbar das ich mir anmassen wuerde zu sagen eines der 2 ist besser
ich wuerde eher sagen klassen richtig zu verwenden - das ist OOP
Sir:
richtig OO ist halt nicht immer einfach - und viele durchschauen es nicht - man braucht halt viel erfahrung
-
4 Leerzeichen schrieb:
C++ ist zwar viel ausgereifter
<provozier>
Soll das ein Witz sein? C++ und ausgereift? C++ mit seiner Standardbibliothek ist alles andere als ausgereift. Aus meiner Sicht wurden bei C++ einfach möglichst viele Features zusammengewürfelt ohne, dass dahinter ein großartiges Gesamtkonzept steht. Es ist kein Wunder, dass man damit ein Programmiersprachen-Monster geschaffen hat, das nahezu keiner in seiner Gesamtheit beherrschen kann. Ich habe hier schon oft Leute gesehen, die praktisch als "C++ Gurus" angesehen werden, die aber selbst behaupten, dass sie die Sprache noch längst nicht in ihrer Gesamtheit beherrschen bzw. ausnutzen. Mit der Standardbibliothek ist es genau das Gleiche. Schon in "The C++ Standard Library" von Nicolai M. Josuttis steht:The standard library, however, was not based on a book or on an existing library. Instead, different, existing classes were integrated. Thus, the result is not very homogeneous. You will find different design principles for different components.
Ehrlich gesagt ist es kein Wunder, dass es bei dem Entstehungsprozess (bzw. Standardisierungsprozess) von C++ extrem lange gedauert hat, dass halbwegs standardkonforme Compiler entstanden sind. In der Sprache wird einfach keine klare Linie verfolgt.
</provozier>
-
Gregor schrieb:
4 Leerzeichen schrieb:
C++ ist zwar viel ausgereifter
<provozier>
Soll das ein Witz sein? C++ und ausgereift? C++ mit seiner Standardbibliothek ist alles andere als ausgereift. Aus meiner Sicht wurden bei C++ einfach möglichst viele Features zusammengewürfelt ohne, dass dahinter ein großartiges Gesamtkonzept steht. Es ist kein Wunder, dass man damit ein Programmiersprachen-Monster geschaffen hat, das nahezu keiner in seiner Gesamtheit beherrschen kann. Ich habe hier schon oft Leute gesehen, die praktisch als "C++ Gurus" angesehen werden, die aber selbst behaupten, dass sie die Sprache noch längst nicht in ihrer Gesamtheit beherrschen bzw. ausnutzen. Mit der Standardbibliothek ist es genau das Gleiche. Schon in "The C++ Standard Library" von Nicolai M. Josuttis steht:The standard library, however, was not based on a book or on an existing library. Instead, different, existing classes were integrated. Thus, the result is not very homogeneous. You will find different design principles for different components.
Ehrlich gesagt ist es kein Wunder, dass es bei dem Entstehungsprozess (bzw. Standardisierungsprozess) von C++ extrem lange gedauert hat, dass halbwegs standardkonforme Compiler entstanden sind. In der Sprache wird einfach keine klare Linie verfolgt.
</provozier>
...wenn schon einer Stroustrup heißt...
-
und es zuerst "C with Classes" tauft
-
gomberl schrieb:
Jo, ich habs ja probiert. Aber jedesmal wenn ich versuche etwas in Java zu machen dreh ich durch...
wieso dieses? wenn du aus der C++ ecke kommst dann solltest du mal keine probleme mit der sprache haben? oder an was haengt es?
Es hängt an vielen Kleinigkeiten. zB komme ich mit C# vernünftig aus...
Ich komme halt mit Java nicht klar - das ist keine Kritik an Java, sondern einfach meine persönliche Erfahrung.
-
shade: Nimm das nicht persönlich, aber das ist totaler schwachsinn.
Wenn du gut mit C++ auskommst, gut mit C# (speziell C#) auskommst dann sehe ich überhaupt keinen einzigen grund wo du "durchdrehen" solltest wenn du java nutzt. Sicher gibt es einige bereiche wo die anderen Sprachen Java überlegen sind und einige dinge die man einfach anders hat.
Aber für mich klingt das alles zu sehr nach gewohnheitsdenken (wie geht das bei C# ... hmm) und sehr nach stereotypisierung (ich glaube das wort habe ich gerade erst erfunden)das war nur meine subjektive meinung
gomberl
-
Ich denke auch, dass das nur eine Frage der Gewohnheit ist. "Java" wird nunmal mit J geschrieben und nicht mit C
-
CengizS schrieb:
Ich denke auch, dass das nur eine Frage der Gewohnheit ist. "Java" wird nunmal mit J geschrieben und nicht mit C
Echt?!? A-Du-Scheibe!!
Demnach bist Du also eher der C-Coder?!?
-
Ich habe keine Vorurteile wie mach andere Personen (das ist keine Anspielung also bitte net das Flamen anfangen :))
Ich könnte mich aber auch umbenennen ... JengizS ... etwas gewöhnungsbedürftig - nee lieber docht nicht
-
soweit ich weis ist java die sprache, welche oop nach heutigen maßstäben zur perfektion gerieben hat,soweit, dass sich c++ da noch ne große scheibe von abschneiden kann.
???
Smalltalk war schon viel früher da und Javas OO-Fähigkeiten sind doch beinahe minimalistisch verglichen mit Smalltalk.Ich kann in Java wunderbar prozedural programmieren...
Ach du scheiße, was siehst du denn bitte als "wunderbar" an?
Jo, ich habs ja probiert. Aber jedesmal wenn ich versuche etwas in Java zu machen dreh ich durch...
Kenn ich. Java ist auch nix für mich.
Ja, aber es ging um OO Konzepte. Und das 'Problem' hierbei ist, dass viele Leute glauben dass Java deshalb besser sein muss als C++ weil es 'perfekt' OO ist. Was aber ein Blödsinn ist. 'echte' OO habe ich bei Ruby
Naja.
Es hängt an vielen Kleinigkeiten. zB komme ich mit C# vernünftig aus...
Uff, ich nicht wirklich.
Was ich aber sehr interessant finde ist C++/CLI. Was ich bis jetzt so gelesen habe ist ziemlich genial!
------------------------
BTW, Klassen sind nicht grundlage für OOP. Es gibt reine OO-Sprachen, die ohne Klassen auskommen. Die verfolgen dann das Prinzip der Prototype-Based-OO (Beispiel: Self).
Auch BETA hat nicht direkt Klassen aber man kann Pattern quasi als solche verwenden.
-
Wenn ich jetzt ausführe was mich persönlich an Java stört, dann leite ich damit nur einen flamewar ein.
Ich habe einen kleinen Webserver (mit Plugins für verschiedene Protokolle - implementiert habe ich diese aber nicht :p) in Java geschrieben.
Und es war für mich eher eine Qual. Wobei Qual natürlich übertrieben ist - aber ich kam mit einigen Konzepten einfach nicht klar. Dagegen habe ich meine Matura (Abitur) Arbeit in C# entwickelt - das lief das eigentlich ganz vernünftig. Natürlich stören mich auch hier einige Sachen, aber eben signifikant weniger als an Java.
Das will ich nur kurz angemerkt haben, nicht das jemand denkt, ich habe noch nix mit Java gemacht und habe bloss Vorurteile.
Aber man muss ja nicht mit jeder Sprache gut auskommen
Auf C++/CLI bin ich aber auch extrem gespannt.
Und BETA muss ich mir mal langsam wirklich ansehen... steht seit ewigen Zeiten auf meiner 'Todo' Liste.
@Helium:
mit 'perfekt OO' meine ich das OO von 'Java ist perfekt OO' - und nicht Objekt Orientiert wie ich es sehe.Wenn man Java als 'perfekt OO' bezeichnet, muss Ruby 'perfekter OO' sein - denn dort ist alles ein Objekt.
Für mich persönlich haben 'Objekte' ansich nichts mit OOP zu tun. Für mich ist OOP mehr ein Konzept, zudem ich keine Klassen und Objekte im herkömmlichen Sinn brauche (obwohl es mit ihnen oft wesentlich einfacher, schöner und besser ist) - ich kann mir 'Objekte' zB auch gut als Handles vorstellen.
-
Shade Of Mine schrieb:
Wenn ich jetzt ausführe was mich persönlich an Java stört, dann leite ich damit nur einen flamewar ein.
Wenn du begründete Kritik äußerst, dann läßt sich immer darüber reden ohne, dass es eskaliert. Oder haben deine Kritikpunkte keinen nachvollziehabren Hintergrund?
-
Shade: sehe ich genauso wie Gregor. Speziell weil ich ja selber aus der C++ Ecke komme und absolut nicht der meinung bin das Java "besser" als C++ ist.(Auch nicht als C#). Also mich würde es schon sehr interessieren was dich stört.
Ich versteh zum beispiel nicht was du mit "Konzepten" meinst nicht.
Weil in dem Bereich unterscheiden sich C# und Java nicht soweit voneinander.Stimmt - ich komm mit ruby nicht so besonders gut aus - eigentlich komm ich mit ruby gar nicht aus - aber was solls
man kann auch wunderschoen Objektorientiert in C programmieren - mit function pointern und allem drum und darn. Das waren noch zeiten.
So ne mischform aus OOP und modularer/strukturierter programmierung.gomberl
Nur zur Info:
Ich hab mein Matura - Spezialgebiet in C++ geschrieben (COM / DCOM) - da war das .Net gerade in der Beta heraussen. War ganz lustig. Hab dann auch vergleich mit CORBA und RMI/EJB gemacht.
-
Gregor schrieb:
Wenn du begründete Kritik äußerst, dann läßt sich immer darüber reden ohne, dass es eskaliert. Oder haben deine Kritikpunkte keinen nachvollziehabren Hintergrund?
Nachvollziehbar? Für mich schon, aber jeder Javaianer mit dem ich bisher darüber gesprochen habe, dachte anders
Ich mag zB die 'checked Exceptions' nicht.
siehe auch: The Trouble with Checked ExceptionsDass socket.close() eine Exception wirft mag ich auch nicht.
Die Threads mit dem Interface Runnable, finde ich in C# besser gelöst -> DelegatesDann mag ich das Konzept von C# und Java nicht, dass ein Objekt 'undefiniert' sein kann (NULL Pointer Exception). Ich habe gerne alle Objekte in einem 'funktionierenden' zustand.
Generell finde ich die Exception sehr komisch gelöst. Alles wirft ne Exception - auch wenn es IMHO nur ein simpler 'Status' ist. zB EOFException - EOF ist IMHO eben kein Fehler und schon garnicht eine 'Ausnahme'.
Socket sock=null; try { sock=new Socket(); } catch(...) { ... } finally { try { if(foo) foo.close(); } catch(HabIchVergessenException) { } }
Bei sowas frage ich mich: warum keine Destruktoren? Und warum wirft der 'Dtor'? Ich kann meistens dann sowieso nix machen. Höchstens den Fehler loggen...
Da finde ich D sehr interessant: ich kann die 'unwichtigen' Resourcen wie zB Speicher dem GC überlassen - denn da ist es mir ja egal wann er freigegeben wird. Aber zB eine DB Verbindung oder ähnliches würde ich gerne nur solange offen lassen wie nötig. Denn ich will die DB ja nicht sinnlos warten lassen... Da mache ich das Objekte dann 'auto', sprich es wird zerstört wenn es out of scope geht.
Und Operatorenüberladung fehlt mir auch gewaltig. Ich kann mich einfach nicht an
i.add(5);
gewöhnen. Ich weiss dann nie, returned add jetzt ein neues Objekt, oder ändert es i?Die Artikel auf www.aritma.com fand ich da auch sehr interessant. Vorallem die Artikel mit Bruce Eckel und Anders Hejlsberg über das Design von .NET
Wie man sieht sind die meisten Argumente ja auch oft 'pro Java' Argumente (wie zB: GC kümmert sich um alles, operatoren überladung macht die Sache unnötig komplex,...). Mir ist schon klar, dass viele Leute Java so gut finden wie es ist. Nur ich gehöre halt nicht dazu.
Und ich hoffe es gibt jetzt keinen Flamewar...