Warum wird soviel in Java/C# entwickelt?



  • 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/Funktionszeiger

    meistens 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.4

    IMHO 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.4

    IMHO 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???



  • 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???

    Nein, aber darum geht es ja auch in der Diskussion nicht mehr. Natürlich interessiert sich da niemand dafür, welche Sprachfeatures die Sprache hat. Das haben wir ja auch in dem Thread bereits erwähnt, dass Java hier vorallem dadurch "gewinnt", dass Entwicklung von Anwendungen erleichtert wird.

    Man wählt eben die Sprache aus, die am besten für das Projekt geeignet ist. Das hängt natürlich davon ab, wo das Knowhow der Entwickler liegt, welche Tools und welcher Code bereits in der Firma vorhanden ist, welcher Manager mit wem Golf spielt und so weiter.

    Die wenigsten Firmen, die seit 20 Jahren zum Beispiel Embedded Anwendungen in Forth schreiben werden auf einmal Java oder C++ oder GodsOwnFuckingLanguage nehmen, weil das die Erfahrung und Investitionen der letzten 20 Jahre mit einem schlag köpfen würde.


Anmelden zum Antworten