Warum wird soviel in Java/C# entwickelt?
-
volkard schrieb:
FIA schrieb:
Warum wird auf Sprachen wie Java und C# mehr Wert gelegt?
weil die vorstandsvorsitzenden immer öfters reine wirtschaftler ohne jedes technische verständnis sind. und von da zieht es sich nach unten, daß technikunverständnis was tolles ist und zeichen für erfolg. daher auch studiengänge wie "wirtschaftsinformatik". und diese leute hören halt auf buzz-words.
Was ist denn bitte an Java technisch schlecht? Java hat die beste Standardbibliothek die ich kenne (echt "alles" ist da drin über irgendein krasses Design-Pattern gelöst und sehr schön objektorientiert, was ich sehr mag), Java-Code ist sehr stabil und sicher, weil in Java alles unglaublich fail-fast ist (Collections, Iteratoren, anständige Fehlerbehandlung bei I/O-Sachen, ... ).
Die Sprache Java selber hat sein Haupt-Designziel, dass Java Code leicht lesbar und wartbar (auch von anderen) ist, sehr gut erreicht.Wenn du die Sprache nicht magst, ist das eine unanfechtbare Sache. Aber das mit der Technik musst du mir genauer erklären. Etwas ist nicht technisch besser, weil es in Assembler gehackt ist.
Ich muss auch kein Wirtschaftsfuzzi sein, um zu erkennen, dass ich in Java verdammt viel schneller was auf die Beine stellen kann.devil81 schrieb:
otze schrieb:
ein wort: plattformunabhängigkeit.
http://bash.org/?338364
:xmas1:
Java hat Vorteile, aber es ist nicht Plattformunabhängig.
Java ist eine Plattform, wie Windows oder Linux.
Nur das sie halt kein OS ist, sondern nur eine
Umgebung, die noch auf ein OS portiert werden muss.Devil
Natürlich ist die Java-Plattform eine eigene Plattform. Aber wie willst du das denn sonst nennen? Der Bytecode ist prinzipiell unabhängig von Prozessorarchitektur und Betriebssystem.
Marc++us schrieb:
Das soll jetzt nicht die Sprachen Java oder C# abwerten - Fakt ist, daß diese weniger Wissen vom Entwickler verlangen als C++. Um Objekte korrekt als Parameter zu übergeben muß man bereits einiges verstanden und gelesen haben, die Masse der Entwickler ist nicht bereit einen solchen Fortbildungsaufwand zu betreiben und will einfach loshacken.
Da stimme ich voll zu, ich würde aber nicht alles auf die Qualifikation schieben. Ein paar Details in C++ kosten einfach auch mehr Aufwand.
In Java schreibe ich mit wenigen Zeilen ein Programm, dass Objekte serialisiert, zippt und per Socket in einem Hintergrund-Thread an jemand anders schickt, der das Objekt wieder herstellt.
Dafür hast du in C++ faktisch ungleich mehr Aufwand und wie willst du denn rechtfertigen? Ist es dann schneller? Wenn ich etwas übers Netzwerk verschicke, welche Rolle spielt das dann? Manchmal ist ein Mehraufwand einfach nicht zu rechtfertigen und das hat nicht immer was mit Qualifikation zu tun.
-
Das mit dem Mehraufwand stimmt natürlich, das ist ja auch ein Grund warum sich VB immer noch so wacker schlägt und eine berechtigte Stellung hat.
Ich denke Hauptfehler bei C++ ist es, daß eben die "wichtigen" Libs nicht vom Standardisierungsgremium angepackt wurden. Es ist ein Unding, wenn eine Sprache heute keine einheitliche Schnittstelle für Sockets und Datenbanken mitbringt, oder für Sachen wie Dateirechte und Verzeichnishandling. Auch fehlende Threadunterstützung ist einfach nicht mehr vertretbar. *1) Diese Dinge (bwz. deren Abwesenheit) sind meines Erachtens die potentiellen Sargnägel für C++.
*1) GUI ist noch vertretbar, da es hier viele Unterschiede gibt.
-
@Optimizer: Sehr guter Beitrag! Studierst Du eigentlich(schliesse ich mal aus Deinem Beitrag)?
-
Ja, aber das muss ja nichts heißen.
-
Marc++us schrieb:
Es ist ein Unding, wenn eine Sprache heute keine einheitliche Schnittstelle für Sockets und Datenbanken mitbringt, oder für Sachen wie Dateirechte und Verzeichnishandling. Auch fehlende Threadunterstützung ist einfach nicht mehr vertretbar. *1) Diese Dinge (bwz. deren Abwesenheit) sind meines Erachtens die potentiellen Sargnägel für C++.
*1) GUI ist noch vertretbar, da es hier viele Unterschiede gibt.
Ja, ich denke auch, dass C++ sich noch deutlich besser gegenüber anderen Sprachen behaupten würde, wenn das der Fall wäre.
Und ich sehe die Komplexität von C++ nicht als Nachteil. Es ist dadurch um so mächtiger.
-
Warum wird soviel in Java/C# entwickelt?
Ich denke einzig und allein deswegen, weil es so eine große, standardisierte Bibliothek gibt.
Die Sprachen selber können doch nix :->
-
DrGreenthumb schrieb:
Ich denke einzig und allein deswegen, weil es so eine große, standardisierte Bibliothek gibt.
Die Sprachen selber können doch nix :->
lol...na du bist der experte...ist natürlich immer besser wenn ich das Rad neu erfinden muss.
-
DrGreenthumb schrieb:
Die Sprachen selber können doch nix :->
Da täuscht du dich, mein lieber. Es gibt in Java und C# Sprachmittel, die ich in C++ bitterböse vermisse.
Interfaces (seltsamerweise gibt es ja genug Leute, die 'pure abstract classes' als Workaround benutzen
vgl. Delegates/nested Classes/Funktionszeigermeistens sind es aber sogar eher ganz triviale Sachen, wie
only static const integral data can be initialized inside a class or struct
was einfach dämlich ist. Wieso kann ich nicht
class Foo { static const double PI = 3.14; }
schreiben?
Und gerade bei C# ist es wirklich dumm, zu behaupten, dass es nichts kann. Sogar ohne unsafe mode ist die Feature-Liste beachtlich (was man positiv oder negativ sehen kann).
-
Interfaces (seltsamerweise gibt es ja genug Leute, die 'pure abstract classes' als Workaround benutzen
Entweder versteh ich Interfaces nicht oder Interfaces sind einfach nur abstrakte Klassen.
Ich kenn Java nicht sehr gut, aber bis auf Nested Klassen, die in Java eindeutig besser sind, gibt es keine lustigen Sprachfeatures, wie Templates. Wie gesagt, man kann das als Vorteil sehen, weil die Sprache dadurch leichter beherschbar wird.
Das man innerhalb der Klasse nur Integral Konstanten deklarieren kann, ist wirklich ein wenig merkwürdig. Aber niemand will hier behaupten, dass es an C++ keine Ecken und Kanten gibt, genauso wie es in Java auch Dinge gibt, wo man sich an den Kopf fassen muss.
-
Die Sprache Java selber hat sein Haupt-Designziel, dass Java Code leicht lesbar und wartbar (auch von anderen) ist, sehr gut erreicht.
Ne das ziel gut lesbar hat Java schon deshalb nicht erreicht, weil es eine C-artige Synthax verwendet.
Interfaces (seltsamerweise gibt es ja genug Leute, die 'pure abstract classes' als Workaround benutzen vgl. Delegates/nested Classes/Funktionszeiger
Interfaces in Java sind aber auch nicht der Hit. Es gibt Sprachen, in denen Interfaces deutlich besser gelöst sind. In Java sind Interfaces doch wirklich nur wie ABCs.
Delegates/nested Classes/Funktionszeiger
Verstehe ich jetzt nicht.
Delegates sind cooler als nested Classes, wenn es um die selben Aufgaben geht. Natürlcih können Nested Classe noch viel mehr als Delegates, was man aber selten braucht. Funktionszeiger sind das, was man noch aus C hat. Aber es gibt ja boost::function oder boost::signal - je nauch Aufgabe - und damit können delegates nicht mithalten (was sie aber auch nicht brauchen).
-
kingruedi schrieb:
Interfaces (seltsamerweise gibt es ja genug Leute, die 'pure abstract classes' als Workaround benutzen
Entweder versteh ich Interfaces nicht oder Interfaces sind einfach nur abstrakte Klassen.
Korrekt! Javas Interfaces sind einfach nur abstrakte Klassen. Also alle Methoden virtual = 0. Mehr nicht.
-
kingruedi schrieb:
...gibt es keine lustigen Sprachfeatures, wie Templates.
In java 1.5 sind Templates enthalten
für mich ist Java damit nochmal eine stufe aufgestiegen. nichtdestotrotz sollte man find ich schon genau überlegen, welche sprache man wann einsetzt. jede hat ihre spezifischen vorteile
-
Korbinian schrieb:
kingruedi schrieb:
...gibt es keine lustigen Sprachfeatures, wie Templates.
In java 1.5 sind Templates enthalten
für mich ist Java damit nochmal eine stufe aufgestiegen. nichtdestotrotz sollte man find ich schon genau überlegen, welche sprache man wann einsetzt. jede hat ihre spezifischen vorteile
Nein! Das sind keine Templates im Sinne von C++.
Auch das was C# da einführt. Mehr als container<T> kommt da ja eh nicht bei raus und das bezeichne ich nicht als lustiges Sprachfeature *g*
-
Artchi schrieb:
Korrekt! Javas Interfaces sind einfach nur abstrakte Klassen. Also alle Methoden virtual = 0. Mehr nicht.
dürfen interfaces attribute haben?
-
Nur static final konstanten. wenn man in interfaces variablen normal deklariert, werden daraus automatisch static final variablen. (AFAIK)
-
Ich frag mich ernsthaft ob den Threadstarter solche Detailfragen interessieren.
http://www.parashift.com/c++-faq-lite/big-picture.html#faq-6.4IMHO sind Fragen wie "gibt es für Java eine Visual Studio ähnliche IDE" oder "Was wird aus Java wenn Sun irgendwann pleite geht" wesentlich wichtiger als einzelne Sprachfeatures.
-
Welche Sprache die mächtigeren Mittel hat ist im Prinzip zweitrangig. Für die meisten Auftraggeber ist wichtig: schnelle und günstige Entwicklung.
Das sind beides Argumente die für Java sprechen(C# kenn ich nicht weiter). Für C++ bedarf es einfach mehr Erfahrung um gleiches zu erreichen.
Die zweite Punkt pro Java sind sicherlich die in Mode geratenen Thin-Clints in Kombination mit J2EE Application Servern.
asdrubael schrieb:
Ich frag mich ernsthaft ob den Threadstarter solche Detailfragen interessieren.
http://www.parashift.com/c++-faq-lite/big-picture.html#faq-6.4IMHO sind Fragen wie "gibt es für Java eine Visual Studio ähnliche IDE" oder "Was wird aus Java wenn Sun irgendwann pleite geht" wesentlich wichtiger als einzelne Sprachfeatures.
Zu 1: Eclipse, JDeveloper, JBuilder
Zu 2: Sun wird IMHO in den nächsten 2 Jahren Java freigeben. Es gibt auch jetzt schon andere Umgebungen für Java.<edit>Aussage präzisiert
</edit>
-
Ihr diskutiert bereits wieder auf einer Ebene, die für die Auswahl einer Programmiersprache für ein Projekt eher belanglos ist.
-
Ob eine Sprache "plattformunabhängig" ist oder selbst eine komerzielle und proprietäre Plattform darstellt finde ich nicht so belanglos.
-
Also, zum einen ist die Frage nach Plattformunabhängigkeit in vielen realen Projekten weniger wichtig. Und wie ich bereits erwähnte, muß man auch ein Java-Programm auf jedem OS testen, da oberhalb einer gewissen Abstraktionsebene die Unterschiede im OS einfach vorhanden sind und sich nicht mehr scheinbar übertünchen lassen.
Aber davon spreche ich ja gar nicht: die Leute hier diskutieren bereits wieder über Templates und Interfaces... das meinte ich eigentlich. Hat jemals einer in einem realen Industrieprojekt davon gehört, daß die Wahl einer Projektsprache davon abhängig gemacht wurde, ob es Templates oder Interfaces gab???