PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Javabücher überheblich?


Gast
2006-08-02, 16:55:09
Hi Leute,

ich hab mich letzte zeit mal mit java geschäftigt.
was mir auffiel, irgendwie sind der grösste teil
der java-programmierer komisch.

die vergöttern java, haben warscheinlich nen altar zu hause
und singen god bless java, ka.

fast in allen büchern machen die zb c++ schlecht,
im allgemeinen, alles was komplizierter ist, ist für die böse.

pointer in c++ sind se am meckern

zitat aus Java ist auch eine Insel

Beispiel Dass das Pfuschen in C++ leicht möglich ist und wir Zugriff auf
private Elemente über eine Zeigerarithmetik bekommen können, zeigt das
folgende Programm. Für uns Java-Programmierer ist dies ein abschreckendes Beispiel.

#include <string.h>
#include <iostream.h>
class Ganz_unsicher {
public:
Ganz_unsicher() { strcpy(passwort, "geheim"); }
private:
char passwort[100];
};
void main()
{
Ganz_unsicher gleich_passierts;
char *boesewicht = (char*)&gleich_passierts;
cout << "Passwort: " << boesewicht << endl;
}

Dieses Beispiel demonstriert, wie problematisch der Einsatz von Zeigern sein
kann. Der zunächst als Referenz auf die Klasse Ganz_unsicher gedachte Zeiger
mutiert durch die explizite Typumwandlung zu einem Char-Pointer boesewicht.
Problemlos können über diesen die Zeichen byteweise aus dem Speicher
ausgelesen werden. Dies erlaubt auch einen indirekten Zugriff auf die privaten
Daten.



Für uns Java-Programmierer ist dies ein abschreckendes Beispiel. hehe
das zieht sich durch mehrere bücher und lernmaterialien, wo jede andere
programmiersprache neben java schlecht ist.

und dann die vergötterung ihres garbage collectors, der ihre objekte
von allein zerstört nach ner einer funktion.

zeigen nich die vor und nachteile, wie ich aus anderen büchern
von anderen sprachen kenne,im ganzen recht subjektiv.

ist das euch auch schon mal aufgefallen? sollte man nich objektiv sein?
ich finde java ja ganz gut, aber lese sehr ungern über java, da wird einem
teileweise schlecht.

Monger
2006-08-02, 17:20:45
Wieso? Sie haben doch recht! :D

Okay, mal im Ernst: Java ist historisch gesehen ganz stark an C++ gekoppelt. Die Entwickler von Java waren ja vorher in der C++ Welt zu Hause (wie ja im Prinzip fast jeder), und die Hauptmotivation für die Entwicklung von Java war eben, gewisse Probleme in C++ übergehen zu können.


Java ist gewissermaßen die erste Sprache der aktuellen Generation. Es gibt inzwischen viele andere Sprachen die allesamt interessant sind (und ich bin der festen Überzeugung, dass die .NET Welt Java früher oder später vom Tisch fegen wird) wie z.B. Python, Ruby etc. , nur Java nimmt halt verständlicherweise eine gewisse Vorreiterrolle für sich in Anspruch.

Es IST elitär und es IST überheblich, aber im historischen Zusammenhang finde ich das verständlich.

Gast
2006-08-02, 17:28:26
Java überzeugt nicht.

Und aus diesem Grund werden wir auch weiterhin bei der ausgereiften HighLevel-Programmiersprache des bewährten Weltmarktführers bleiben, mit der wir in den vergangenen Jahren hervorragende Erfahrungen gemacht haben.

Die kostet nicht nur nichts, sondern überzeugt auch noch durch einen schnellen Return on Investment durch vorbildliche Sicherheit, Stabilität, Kompatibilität, Performance, Usability, Skalierbarkeit, Multiple Inheritance, echte Templates, Template Metaprogramming, Multi-Paradigms, funktionale Aspekte und Kontinuität in der Sprachpolitik.

Und das ist es schliesslich, worauf es Experten wie meinen hochqualifizierten Softwareentwicklern und mir im harten Tagesgeschäft des internationalen Wettbewerbs ankommt.

Ideologisch motiviertes Bastelwerk, halbherzig zusammengeschustert durch praxisfremde Marketingstrategen mit Zwangs-OOP-Fixierung, hat keinerlei Chance, will man sich tagtäglich aufs Neue den Herausforderungen der Globalisierung und der mit dieser einhergehenden ständig wechselnden Anforderungen an das Entwicklungswerkzeug erfolgreich stellen. Da können einfach nur Lösungen von Profis für Profis zum Einsatz kommen, die hervorragend durch das Stroustrupsche Meisterwerk abgedeckt werden.

Trap
2006-08-02, 18:02:40
Es IST elitär und es IST überheblich, aber im historischen Zusammenhang finde ich das verständlich.

And you're right: we were not out to win over the Lisp programmers;
we were after the C++ programmers. We managed to drag a lot of them
about halfway to Lisp. Aren't you happy?

--Guy Steele

Gast
2006-08-02, 18:07:26
na so meinte ich das nicht, finde es halt besser wenn man objektiv bleibt
und die vor und nachteile schildert und jeder selbst abwägen kann was er
will, ich verstehe pointer auch nich immer, aber zwingt mich auch keiner
sie zu benutzen deswegen mache ich sie nicht schlecht.

und ich finds schlimm das lehrer und dozenten die einem das beibringen sollen
teilweise noch schlimmer sind, hab von nem kumpel sein ausbildungsmaterial
hier, wenn ich das zeigen würde, würde man teilweise in schallendes gelächter
ausbrechen.

klar gibts dieses schlecht machen in vielen bereichen, hab hier auch
schon closed threads gesehen c++ und vb.

viel mir halt nur grad bei java sehr gravierend auf.

das java was kann zeigt mir zb chrome, nen java spiel falls ihr das kennt.
war davon beeindruckt:)

hab mir schon viele sprachen angeguckt, und mich für c++ entschieden.
aber mache nicht nur c++, weil es nich grad für alles optimal is.
mache auch gerne andere sprachen.

ich reg mich auch nich drüber auf finds eher lustig.

Monger
2006-08-02, 18:18:56
na so meinte ich das nicht, finde es halt besser wenn man objektiv bleibt
und die vor und nachteile schildert und jeder selbst abwägen kann was er
will, ich verstehe pointer auch nich immer, aber zwingt mich auch keiner
sie zu benutzen deswegen mache ich sie nicht schlecht.


Java ist nunmal eine ideologisch verklärte Sprache. Ich wette, nirgendwo sonst wird soviel über Eleganz und Schönheit fabuliert wie eben in Java.

Pascal war ursprünglich mal die Sprache der Schulen und Universitäten: eine Sprache, die einzig und allein zu Lehrzwecken entwickelt wurde. Ich glaube, Java ist quasi der geistige Nachfolger davon. Java wird in fast jedem Studiengang gelehrt, C/C++ imho längst nicht mit der selben Vehemenz. Java lässt sich aufgrund der Plattformneutralität relativ gut überschauen, während man z.B. in C# mit den verschiedensten Windows Technologien geradezu bombardiert wird.

Und Java tut auch alles, um sich eine eigene kleine Welt zu erschaffen: eine eigene VM, möglichst keine Anbindung an Technologien die man vielleicht gebrauchen könnte (oder kann mir jemand erklären, wie ich direkt mit Java COM Komponenten verwenden kann?), und möglichst nichts miteinfließen was die Sprache verunreinigen könnte. Das grenzt schon an religiösem Wahn.

Gast
2006-08-02, 18:25:51
http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html

HajottV
2006-08-02, 19:04:28
Java überzeugt nicht.

[...] ausgereiften HighLevel-Programmiersprache des bewährten Weltmarktführers [...] in den vergangenen Jahren hervorragende Erfahrungen gemacht [...] kostet nicht nur nichts [...] schnellen Return on Investment durch vorbildliche Sicherheit, Stabilität, Kompatibilität, Performance, Usability, Skalierbarkeit, Multiple Inheritance, echte Templates, Template Metaprogramming, Multi-Paradigms, funktionale Aspekte und Kontinuität in der Sprachpolitik.[...] Experten wie meinen hochqualifizierten Softwareentwicklern und mir im harten Tagesgeschäft des internationalen Wettbewerbs [...] Herausforderungen der Globalisierung und der mit dieser einhergehenden ständig wechselnden Anforderungen an das Entwicklungswerkzeug [...] Lösungen von Profis für Profis zum Einsatz kommen, die hervorragend durch das Stroustrupsche Meisterwerk abgedeckt werden.

:lol:

So, jetzt mal zu den vernünftigen Posts in diesem Thread:

Ich bin eigentlich ein alter C++ Programmierer, aber die Vorzüge von Java hab ich schon zu schätzen gelernt und vermisse sie schon in C++.

Letztendlich gibt es aber nicht die beste Sprache an sich, sondern die Sprache mit der ich für ein bestimmtes Problem am schnellsten ans Ziel komme.

Dabei hängt die Wahl der Programmiersprache vom Problem und vom Programmierer (wer Java beherrscht, aber C++ nicht, wird ziemlich sicher schneller in Java zum Ziel kommen) ab.

Je nach Problem kann das Werkzeug der Wahl kann dann Java sein... ...oder C++ oder AWK oder Perl oder XSLT...

Wer nur einen Hammer hat, wird jedes Problem als Nagel betrachten.

Gruß

Jörg

sth
2006-08-02, 21:12:51
Java ist eine nette Sprache und hat klare Vorteile gegenüber vielen anderen Sprachen.

Trotzdem ist es für mich nur eine Sprache wie andere auch. Wenn ich ein Projekt starte dann überlege ich mir vorher, welche Sprache dafür angesichts der Anforderungen am geeignetsten scheint. Das kann mal Java sein oder eben auch mal C++ oder C oder was ganz anderes.

Der größte Fehler an Java ist nicht in der Sprache an sich zu finden sondern es sind einige der Leute darum, die Java als ein großes göttliches - und damit unausweichliches - Geschenk verkaufen, welches gekommen ist um jedes Problem der Welt zu lösen. In einem Atemzug werden dann gleich sämtliche etablierten Programmiersprachen in Grund und Boden gebasht. Das nervt unheimlich, denn die meisten dieser Fanatiker haben meist noch nie mit etwas anderem als Java gearbeitet und zitieren nur dumme Sprüche. Bloß nicht über den Tellerrand hinausblicken. Solche Leute können einem manchmal echt das Arbeiten mit Java vermiesen. Es sind aber glücklicherweise nicht alle Java-Programmierer so drauf ;)

tokugawa
2006-08-02, 22:04:22
Pascal war ursprünglich mal die Sprache der Schulen und Universitäten: eine Sprache, die einzig und allein zu Lehrzwecken entwickelt wurde. Ich glaube, Java ist quasi der geistige Nachfolger davon. Java wird in fast jedem Studiengang gelehrt, C/C++ imho längst nicht mit der selben Vehemenz. Java lässt sich aufgrund der Plattformneutralität relativ gut überschauen, während man z.B. in C# mit den verschiedensten Windows Technologien geradezu bombardiert wird.



Naja grad auf Unis wird im Prinzip nicht wirklich irgendeine Sprache "gelehrt", nur wird oft Java verwendet um andere Dinge zu lehren (Algorithmik, Programmiermethodik, OO-Design, usw.). Ist ein Mythos dass man z.B. in Informatik auf einer Universität das Programmieren lernt - wenn man's sich nicht selbst beibringt oder schon vorher konnte, wird man's schwer haben.

Zum zum Thema: Ich hab noch nie verstanden wieso Leute die von einer Programmiersprache überzeugt sind, ihren Dampf so ablassen müssen, dass sie andere Sprachen und noch schlimmer, die Leute, die die anderen Sprachen verwenden, niedermachen. So eine Art des Programmiersprachen-Faschismus ist jedenfalls ziemlich bedenklich. Meine Device lautet: Jedem das Seine.

Gast
2006-08-03, 18:07:19
Passend zum Thema "sinn und unsinn von Java":

http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

und eine Art "Teil 2":

http://www.joelonsoftware.com/items/2006/08/01.html

Gast
2006-08-03, 19:05:28
Und noch einer:

http://opal.cabochon.com/~stevey/blog-rants/lisp-wins.html

Gast
2006-08-04, 13:40:14
Manche muessen halt mit einer stumpfen Klinge schneiden, weil sie sich sonst immer selbst verletzen, natuerlich verteufeln sie dann scharfe Klingen, weil man mit einer stumpfen auch irgendwie zum ziel kommt ohne drauf achten zu muessen sich nicht ins eigene Fleisch zu schneiden.
Ich bevorzuge trotzdem spezialisten mit einem Skalpel.

darph
2006-08-04, 14:06:23
So eine Art des Programmiersprachen-Faschismus ist jedenfalls ziemlich bedenklich. Meine Device lautet: Jedem das Seine.
Eh. Ungünstige Wortwahl. :redface:

Aber Egal. tokugawa: Auf der Uni lernt man durchaus Programmieren. Wie schon gesagt wird halt meist eine Sprache hergenommen, um andere Sachen zu lernen. Wir verwenden hier Java. Könnte auch eine beliebige andere Sprache sein. An der Uni gibt es keine Vorlesung/keinen Kurs "Jetzt lernen wir Java" - klar. Aber es werden Mechanismen in der Programmierung gelehrt, die man eben können sollte. Beispielsweise Software Engineering oder Design Patterns. Beispielimplementationen werden dann anhand von Javaprogrammen vorgeführt, weil jeder, der hier studiert zumindest Java kann. Irgendwo muß es halt schon einen "common ground" geben.


Gast:
Now, I freely admit that programming with pointers is not needed in 90% of the code written today, and in fact, it's downright dangerous in production code. OK. That's fine. And functional programming is just not used much in practice. Agreed.

But it's still important for some of the most exciting programming jobs. Without pointers, for example, you'd never be able to work on the Linux kernel. You can't understand a line of code in Linux, or, indeed, any operating system, without really understanding pointers.Und genau da liegt doch das Kaninchen im Curry begraben: Diese "most exciting jobs" bekommt man entweder als Teil der "upper five percent" der Abschlüsse, oder als Quereinsteiger, der sich alles sowieso außerhalb der Uni beigebracht hat. Für den Rest hat dieses Latein der Informatik schlicht keinerlei praktische Relevanz (mehr), wie der Autor schreibt. Klar, er kommt zum Ergebnis, daß es mehr schlechte oder zumidnest nicht ganz so gute Informatiker gibt/geben wird, weil das Aussieben seichter geworden ist. Nur stellt sich halt die Frage inwieweit das ein praktisches Problem sein wird: Diejenigen, die es vorher geschafft haben, werden es jetzt auch schaffen und "Pointer verstehen" und die tollen Jobs kriegen. Der Rest bekommt die Art von Jobs, die für Pointerversteher, um mal beim Aufhänger der Autors zu bleiben, doch unter deren Würde sind.

Monger
2006-08-04, 14:42:59
Passend zum Thema "sinn und unsinn von Java":

http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

und eine Art "Teil 2":

http://www.joelonsoftware.com/items/2006/08/01.html

Also, gerade die beiden Artikel fand ich grottenschlecht. Wenn ich jemals eine Keule gegen die Java Kritiker haben will, werde ich ihnen genau diese Artikel unter die Nase reiben. Im Prinzip reitet er darauf rum, dass Java zu leicht ist, und die Studenten nix mehr lernen. Tolles Argument gegen eine Sprache...

Diesen Artikel http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html (auf den darin verlinkt wird) finde ich durchaus diskussionswürdig.

Es stimmt schon: Java erkauft sich die eigene Stabilität, indem man einen bedeutenden Teil an Flexibilität aufgibt.

Java ist eher darauf etwas statisches zu modellieren als etwas dynamisches. Das macht es sehr stabil, aber auch sehr unflexibel.
Die Alternative finde ich aber auch nicht prickelnd: imo ist eine Methodensignatur alleine einfach nicht aussagekräftig genug. Eine Methode muss immer in ihrem Kontext (also eindeutige Namespaces wie eben Objekte) betrachtet werden.

HellHorse
2006-08-04, 15:56:15
Also, gerade die beiden Artikel fand ich grottenschlecht.
Ich weiss nicht, was die Leute an Joel finden, echt nicht. Der ist ja sogar gegen exceptions, weil er sie nicht versteht. Statt dessen sollte man lieber status codes zurückgeben und prüfen. Und wenn deswegen der Code dreimal grösser wird, dann ist das halt so. Eine Methode, die drei Bildschrime füllt? Das ist gut so!
Auch sein Artikel zu Unicode ist im Vergleich zum entsprechenden Artikel von Tim Bray einfach nur schlecht.

division
2006-08-05, 02:26:12
Ich persönlich mag Java nicht so gerne.

Der Aussage das es immer wichtig ist, das richtige Werkzeug zum Aktuellen Problem zu nehmen, stimme ich voll zu. Das ist man ja aber eigentlich schon aus dem Alltag gewohnt.

Brot schneiden -> Messer
Kaffe zu heiss in der Hand -> Tasse nehmen
etc.

Was ich mich immer nur frage:

Warum sind die Weltverbreitetsten Softwareprodukte denn nicht nach Java portiert wenn das soooo genial ist wie alle in den Büchern behaupten.

Warum habe ich noch nicht gelesen: We reached a performance boost about 100% in our SQL Server Engine after redesiging it in Java"

Warum hat VMWare den ESX Server nicht in Java gebastelt?

Warum habe ich IMMER Probleme wenn ich Software benutzen muss die in Java Programmiert wurde?

Warum dauert es manchmal 20 sek. bis diese Java VM mal in Gang kommt um das bischen Code von der Homepage zu deuten?

Und die Geschichte mit den Privaten Daten in einer Klasse auslesen per Zeiger auf den Speicher ist nun auch langsam mal echt alt.

Klar kann man das machen.... ich kann auch meine Auto scheibe einschlagen und die Top Secret Papiere rausnehmen.

Viel interessanter ist es doch, sich damit zu beschäftigen, wie ma die Daten in dem privat Bereich auch private bekommt, oder noch viel mehr, rauszufinden warum das in c++ so gelöst wurde.

Da ist man genau wieder bei der Sache mit dem Altag.

Schloss ist zu -> Brecheisen -> Stahltür
Private Bereich der C++ Klasse -> Zeiger umbiegen -> Verschlüsseln

Wo ist der Unterschied?

Da hätte man gleich mal die Gelgenheit sich mit dem PGP Algorithmus auseinander zu setzen.

Was ich halt damit sagen will: Man muss halt in c++ die Augen aufmachen und nachdenken. Das ist bekanntermassen im Leben immer Sinnvoll.
Meiner Meinung ist es falch diesen Sachen aus dem Weg zu gehen, in dem man sich drauf verlässt das jemand bei Sun das Nachdenken für mich übernimmt.

Monger
2006-08-05, 09:55:58
Warum sind die Weltverbreitetsten Softwareprodukte denn nicht nach Java portiert wenn das soooo genial ist wie alle in den Büchern behaupten.

Warum habe ich noch nicht gelesen: We reached a performance boost about 100% in our SQL Server Engine after redesiging it in Java"

Wir sprechen hier ja über die Sprache, und nicht die JVM. Und da geht es vorwiegend um Zeitersparnis zur Entwicklungszeit - und eine Portierung erreicht nunmal genau das Gegenteil: man verbrät zusätzlich Zeit und Geld für buchstäblich gar nichts.

Das ist imho auch gleichzeitig der wichtigste Grund, weshalb in der Industrie teilweise mit hornalten Sprachen gearbeitet wird. Nicht etwa, weil es so toll und so schnell ist, sondern weil die Leute darauf geschult sind, weil man die Entwicklungstools gewohnt ist und seine Bibliotheken irgendwo rumliegen hat.
In einer Abteilung meiner Firma haben sie vor kurzem versucht, von Visual Studio 6 auf Visual Studio 2003 umzusteigen - keine Chance! Nach ein paar Wochen sind sie wieder zu VS6 zurückgekehrt, weil man Probleme hatte sich mit anderen Abteilungen abzugleichen.

Eine andere Sprache zu wählen macht nur Sinn, wenn man das ganze Projekt dann auch mit dieser Sprache durchzieht, und sich nicht mit bestehenden Entwicklungen beißt. Ansonsten verliert man mehr Zeit als man gewinnt.

Gast
2006-08-05, 15:38:20
Durch den fehlenden Java-Standard, glaubt jeder Javaprogrammierer die Sprache zu beherrschen, wobei keiner die Sprache beherrscht, da es die Sprache praktisch nicht geben darf, da diese ja nicht standardisiert ist! Und deswegen bleiben wir weiterhin bei C++, mit dem wir in den vergangenen jahren hervorragende Erfahrung gemacht haben. Neumodischer Bytecode-Dreck, amateurhaft zusammengeschustert hat keine chance, will man sich jeden tag aufs neue den Anforderungen des täglchen Wettbewerbs stellen. Lahmarschigen code kann schliesslich niemand brauchen, denn Performance ist das A und O wenn es darum geh hochqualitative Software zu entwickeln. Dazu kommt, dass Java praktisch keine Flexibilität besitzt, dank zwangs OOP. Im Grunde genommen ist java nur ein billiger C++ clone, der sich strikt von C++ distanziert! Welch ironie! Also meines Wissens nach kann man Java komplett in die Tonne kloppen.

Langwierige Studien besagen, dass Java uneffizient ist.

Gast
2006-08-05, 15:51:24
Das Beispiel im ersten Post ist doch gar kein C++.

Aqualon
2006-08-06, 01:05:44
Was soll es denn sonst sein? Das einzige negative ist, dass heutzutage keiner mehr .h beim includen von Headerfiles hinschreiben sollte.

@divison: Selbst wenn du die Daten verschlüsselst, sind sie irgendwann unverschlüsselt im Hauptspeicher und können abgegriffen werden. Davon abgesehen halte ich private für keinen Schutzmechanismus vor dem unerlaubten Lesen von Daten, sondern einen Mechanismus, der verhindert, dass Variablen direkt von aussen ohne die Benutzung entsprechender Methoden geändert werden. Und das wird man in C++ selbst mit Verschlüsselung nicht hinbekommen, ausser du speicherst immer noch einen hash-Wert um zu merken, wenn eine Variable direkt geändert wurde. Was das aber für die Performance bedeutet will ich gar nicht wissen.

Aqua

Gast
2006-08-06, 02:41:59
Was soll es denn sonst sein? Das einzige negative ist, dass heutzutage keiner mehr .h beim includen von Headerfiles hinschreiben sollte.
Die Header unterscheiden sich auch deutlich. Es ist nicht nur das ".h".
<iostream.h> ist eine Krankheit.