Ist Java oder C# für Anfänger leichter zu erlernen?



  • asc schrieb:

    Java hat mit der C++ Syntax mehr gemein als mit der C Syntax.

    sicherlich, schon weil es schlüsselwörter wie class, public, private, z.b. in beiden sprachen gibt, jedoch nicht in C. nur macht das Java noch lange nicht zum C++ nachahmer. dazu sind die unterschiede einfach zu gross. die Java-erfinder waren ziemlich unzufrieden mit C++ und wollten eine sprache entwickeln, die's besser macht und keinen C++-klon.
    🙂



  • ;fricky schrieb:

    player4245 schrieb:

    Ich glaube einige in diesem Forum kennen die Bedeutung des Begriffs Plattformunabhängig nicht. Ich behaupte jetzt mal, dass VisualBASIC auch Plattformunabhähngig ist weil man dafür auch einen Compiler für Linux und Mac schreiben kann.

    ^^ du musst schon irgendwo 'ne grenze setzen.

    Die Frage ist nur wo. Und darunter verstehen wir eindeutig was anderes. Plattformunabhängigkeit heißt z.B. für mich, das Code nicht verändert werden muss, unabhängig von der Zielplattform (Und nicht ob der Code nun Interpretiert oder Compiliert werden muss).

    Ganz davon abgesehen wird Java und C# Code heutzutage auch compiliert und läuft in der Regel nicht in einem reinen Interpreter. Der Unterschied ist nur wann die Compilierung erfolgt, ob es Zwischenstufen (Bytecode oder ähnliches...) gibt, und auf welcher Ebene die Compilierung einsetzt (z.B. ob der Code einmalig compiliert wird, auf Funktions-/Klassenebene beim ersten Zugriff...).

    Und selbst wenn man die Plattformunabhängigkeit nach deiner Definition interpretiert: Für die gängigsten PC-basierenden Plattformen gilt dies sowohl für Java als auf .Net - sofern man keine Betriebssystemspezifischen Bestandteile verwendet. Nach meiner Interpretation gilt dies aber auch für beispielsweise C++, sofern man entsprechende Bibliotheken verwendet.



  • ;fricky schrieb:

    asc schrieb:

    Java hat mit der C++ Syntax mehr gemein als mit der C Syntax.

    sicherlich, schon weil es schlüsselwörter wie class, public, private, z.b. in beiden sprachen gibt, jedoch nicht in C. nur macht das Java noch lange nicht zum C++ nachahmer.

    Das behaupte ich auch garnicht, wohl aber das sie sich unter anderem bei C++ bedient haben. Und ich als C++ Entwickler habe den Umstieg auf Java und C# recht einfach empfunden (nur bei der Bibliothek musste ich mich stärker umstellen).

    ;fricky schrieb:

    die Java-erfinder waren ziemlich unzufrieden mit C++ und wollten eine sprache entwickeln, die's besser macht und keinen C++-klon.

    Aber dennoch haben sie genügend von der Sprache übernommen um den Umstieg recht einfach zu gestalten.



  • Danke schonmal für die vielen Antworten.

    Ich werden dann wohl mal einen Taschenrechner mit C# und mit Java umsetzen, und schauen was mir besser gefällt (auch wenn der Einblick in die jeweiligen Sprachen bis dahin kaum gegeben ist).

    Was mir bisher mit meinem nahezu nicht vorhandenen Wissen an Java gefällt, ist die Tatsache das man die Programme auch für Macs schreiben kann, welche in den USA meines Wissens nach weiter verbreitet sind als Windows-PCs (wobei mir das als vermutlich ewiger Hobby-Programmierer (sofern ich überhaupt gefallen am programmieren finde) im Grunde egal sein kann).

    An C# bzw. eigentlich ja an .Net, gefällt mir vor allem WPF in Kombination mit MVVM, wodurch man das Aussehen der Anwendung vom Programm trennen kann. Wobei das glaube ich auch mit MVC geht, wenn ich mich richtig erinnere.

    P.S. ist das nur mein subjektiver Eindruck, oder sind .Net GUIs auf Windows etwas schneller als Java GUIs (beide in vergleichbarer Größe)?



  • Natürlich gauckeln Sprachen wie Java echte Plattformunabhängigkeit nur vor, indem sie für alle relevanten Betriebssysteme eine Laufzeitumgebung bereitstellen inkl. Standardbibliothek, die vom Betriebssystem abstrahiert.

    Praktisch bedeutet das aber für einen Entwickler, dass man tatsächlich Anwendungen schreiben, deren Kompilat auf vielen verschiedenen Betriebssystemen lauffähig ist, ohne dass man explizit für ein bestimmtes OS kompilieren muss. Die gleiche Jar Datei läuft unter Windows und Linux und MacOS und Solaris und ... 🤡

    Ob das jetzt so ein Killerfeature ist, muss jeder für sich selbst entscheiden. Meiner Meinung nach ist Plattformunabhängigkeit häufig überbewertet. Dass es aber in anderen Sprachen (ohne Laufzeitumgebung) wohl nicht immer so einfach ist, das Programm für jedes beliebige OS zu kompilieren, sieht man schon alleine daran, dass es nicht jedes beliebige Programm des einen OS auch für ein anderes OS gibt.



  • Stradivari schrieb:

    Was mir bisher mit meinem nahezu nicht vorhandenen Wissen an Java gefällt, ist die Tatsache das man die Programme auch für Macs schreiben kann,...

    Was auch für C# mittels Mono funktioniert (Wenn man auf WPF verzichtet, und statt dessen WinForms verwendet).

    Stradivari schrieb:

    An C# bzw. eigentlich ja an .Net, gefällt mir vor allem WPF...

    P.S. ist das nur mein subjektiver Eindruck, oder sind .Net GUIs auf Windows etwas schneller als Java GUIs (beide in vergleichbarer Größe)?

    1. Ist .Net an Windows angepasst, ich würde daher bei der Performance unter Windows auf .Net tippen.

    2. Falls man WPF verwendet, wird DirectX verwendet [Dies ist auch der Grund warum es bislang noch keine Umsetzung für Mono gibt, da man ziemlich viel nachbasteln müsste - denkbar wäre eine Umsetzung mittels OpenGL, was aber ein recht aufwändiges Projekt werden könnte], was gleichzeitig die Hardwarebeschleunigung der Grafikkarte ausnutzt. Dies bekommst du weder mittels WinForms noch Java direkt geliefert. Gleichzeitig ist die WPF (aber nach meiner Erfahrung gilt dies auch für Java) derzeit nicht sonderlich sparsam mit den Ressourcen - daher kommt es auf die Anwendung drauf an.



  • byto schrieb:

    Meiner Meinung nach ist Plattformunabhängigkeit häufig überbewertet.

    Sehe ich ähnlich. Ich behaupte einfach mal, das es in vielen Projekten direkt oder indirekt mehr Geld kostet, eine Plattformunabhängigkeit zu erreichen, als man durch die Einschränkung auf eine Plattform verliert. Es gibt natürlich Ausnahmen.

    Bei neuen Projekten würde ich vorher schauen wie groß das Potential auf den einzelnen Plattformen ist, und mich dann entscheiden ob es für das Projekt ein wichtiger Faktor ist, oder nicht. Teilweise kann man auch einen Teil Plattformunabhängig schreiben, und einen anderen Teil austauschbar gestalten.


  • Administrator

    Stradivari schrieb:

    ..., welche in den USA meines Wissens nach weiter verbreitet sind als Windows-PCs.

    Nur in den feuchten Träumen von Steve Jobs 😃
    Der Marktanteil von Apple ist in den USA aber schon etwas höher als im Weltdurchschnitt. Aber Apple hat nicht mal 10% des US-Computermarktes.

    Siehe z.B:
    http://www.gartner.com/it/page.jsp?id=724111

    Grüssli



  • asc schrieb:

    P.S. ist das nur mein subjektiver Eindruck, oder sind .Net GUIs auf Windows etwas schneller als Java GUIs (beide in vergleichbarer Größe)?

    Ich kann da ehrlich gesagt keinen großen Unterschied sehen. Java Swing ist seit Java 5 oder 6 GPU beschleunigt (DirectX, OpenGL). SWT ist eh nur ein Wrapper um native GUI Komponenten.

    Du kannst das aber auch leicht selbst vergleichen. Es gibt ja für alle GUI Frameworks wirklich gute und freie Anwendungen. Einfach mal Eclipse IDE (für SWT), Intellij IDEA (für Swing) und z.B. Paint.NET (für WPF) testen und vergleichen. Beides gleich schnell/langsam. 🤡

    Edit: Wichtig ist halt einfach, dass man keine rechenintensiven Operationen im Event Dispatch Thread macht, denn sonst hängt die Anwendung während der Repaints. Das trifft aber auf alle GUI Frameworks zu.


  • Administrator

    byto schrieb:

    ... und z.B. Paint.NET (für WPF) ...

    Paint.NET ist allerdings nicht in WPF sondern mit WinForms erstellt. Der Entwickler dahinter hält anscheinend nicht so viel von WPF. Meine letzte Information diesbezüglich ist allerdings von irgendwo im Oktober 2009. Kann mir aber schlecht vorstellen, dass in der kurzen Zeit der Entwickler seine Meinung geändert hat und kurz alles in WPF implementiert 😃

    Grüssli



  • byto schrieb:

    asc schrieb:

    P.S. ist das nur mein subjektiver Eindruck, oder sind .Net GUIs auf Windows etwas schneller als Java GUIs (beide in vergleichbarer Größe)?

    ...

    Das Zitat ist nicht von mir...



  • Hoppla, sry. 😃



  • ihoernchen schrieb:

    DEvent schrieb:

    Naja, kannst du einfach dein .NET2.0 oder .NET3.0 Projekt nehmen und es auf anderen Plattformen einfach so laufen lassen? Mit Java, Python, Perl, Ruby, usw. kannst du das. Auch gibt es nur Mono für Linux. Wie sieht es mit Solaris, MacOS, *BSD aus?

    Kann ich mit einer Java Anwendung auch nicht. Für ein Hello World Programm stimmts, für eine Kommerzielle Anwendung nicht.
    Das Plattform-Unabhängigkeit nur darauf beruht ein Programm ausführen zu können, das ist Marketing.
    Java ist alles bloss nicht Plattformunabhängig.

    Welche Defizite hat den Java? Wenn man jetzt davon ausgeht, dass alle Systeme die Sun Java 1.5 benutzten:
    * GUI ist Plattformunabhängig
    * Dateizugriff ist Plattformunabhängig
    * Threads sind Plattformunabhängig
    * Sockets sind Plattformunabhängig

    Klar musst du trotzdem alle Plattformen testen, aber der Aufwand ist um einiges geringer. Selbst JMonkeyEngine, eine 3D Engine in Java ist auf Windows, Linux, Mac und Solaris lauffähig und die Einschränkung der Systeme ist nur durch die OpenGL Bindung gegeben und nicht durch Java.



  • asc schrieb:

    byto schrieb:

    Meiner Meinung nach ist Plattformunabhängigkeit häufig überbewertet.

    Sehe ich ähnlich. Ich behaupte einfach mal, das es in vielen Projekten direkt oder indirekt mehr Geld kostet, eine Plattformunabhängigkeit zu erreichen, als man durch die Einschränkung auf eine Plattform verliert. Es gibt natürlich Ausnahmen.

    Bei neuen Projekten würde ich vorher schauen wie groß das Potential auf den einzelnen Plattformen ist, und mich dann entscheiden ob es für das Projekt ein wichtiger Faktor ist, oder nicht. Teilweise kann man auch einen Teil Plattformunabhängig schreiben, und einen anderen Teil austauschbar gestalten.

    Wenn du eine kleine Softwareschmiede bist, kann der Support von Linux alleine dir 500% mehr Einnahmen bringen.

    http://dbzer0.com/blog/more-copies-of-world-of-goo-sold-when-gnulinux-version-was-released-than-any-other-day

    I’m quite excited to see how much of the total pie the GNU/Linux versions will grab. We have already passed an amazing threshold where 1% of the OS market (or so we’re told) has managed to buy the game almost 5 times as much. Here’s to reaching 10% and beyond.



  • Wie du hier auf "500% mehr Einnahmen" kommst ist mir schleierhaft... 🙄



  • Tim schrieb:

    Wie du hier auf "500% mehr Einnahmen" kommst ist mir schleierhaft... 🙄

    Es wurde, dank Linux Portierung, 5mal mehr verkauft? Ist das keine 500% Steigung, hm ich muss wohl Prozentrechnung wiederholen.



  • DEvent schrieb:

    Es wurde, dank Linux Portierung, 5mal mehr verkauft? Ist das keine 500% Steigung, hm ich muss wohl Prozentrechnung wiederholen.

    steigerung um 500% heisst, es sind jetzt 600%. aber egal, die geschichte kommt mir ziemlich erfunden vor. seit wann sind linux-user solche kaufgeilen spielekids?
    🙂



  • DEvent schrieb:

    Wenn du eine kleine Softwareschmiede bist, kann der Support von Linux alleine dir 500% mehr Einnahmen bringen.

    Wir sind eine sehr kleine Softwareschmiede, und 95% unserer Kunden, sowie der potentiellen Kunden haben ein Windowssystem. Die 500% Mehreinnahmen kannst du dir irgendwo hinschieben, die Behauptung ist einfach nur blauäugig.

    Und selbst wenn die 5% deutlich mehr Supportleistungen benötigen würden, kämen wir vermutlich nicht mal im Ansatz dahin Mehreinnahmen zu generieren (1. müssten wir allesamt uns in Linux einarbeiten, 2. müssten wir das Programm umstellen, 3. müssten wir auch Kunden haben die sich dafür interessieren).

    Und noch viel extremer: Bislang hat es insgesamt (soviel mir bekannt) nur 2 Anfragen zu einer Linuxumsetzung gegeben, selbst für MacOS hatten wir eine größere Nachfrage.



  • 500% halte ich auch für sehr utopisch. Aber grundsätzlich muss man sich schon die Frage stellen, wieviele potentielle Kunden man mit einem Produkt erreichen kann. Man kann ja nie mehr Produkte verkaufen, als es potentielle Kunden gibt. Beschränkt man sich nun auf ein einzelnes Betriebssystem, dann ist der potentielle Kundenstamm natürlich kleiner als bei zwei oder mehr Betriebssystemen. Das ist am Ende eine einfache Kosten-Nutzen Rechnung. Wieviel muss man investieren, um den potentiellen Kundenstamm zu vergrößern und wieviel Mehrgewinn könnte man dadurch erzielen.

    @asc - Du sagst, dass 95% Eurer Kunden eh nur Windows einsetzen und es daher der Aufwand gar nicht wert wäre. Das muss aber nicht umbedingt bedeuten, dass da gar kein Markt für andere Betriebssysteme existiert. Vielleicht gibt es viel mehr potentielle Linux und MacOS Kunden. Die kommen vielleicht nur nicht zu Euch, weil Ihr seit jeher nur Windows Produkte entwickelt. Warum sollte sich ein potentieller Linux Kunde für Euch entscheiden, wenn Ihr keine Linux Produkte anbietet?

    PS: Das ist nur ne Denkanregung. 😉 Mag durchaus sein, dass Du Recht hast mit Deiner Aussage!



  • byto schrieb:

    @asc - Du sagst, dass 95% Eurer Kunden eh nur Windows einsetzen und es daher der Aufwand gar nicht wert wäre. Das muss aber nicht umbedingt bedeuten, dass da gar kein Markt für andere Betriebssysteme existiert. Vielleicht gibt es viel mehr potentielle Linux und MacOS Kunden.

    Die Verteilung sieht dort auch nicht viel anders aus (Lass es in diesem Segment 10% statt 5% sein - wobei ich das eher noch zu hoch ansehe, und sich der Marktanteil dort auch nur langsam ändert).

    byto schrieb:

    Die kommen vielleicht nur nicht zu Euch, weil Ihr seit jeher nur Windows Produkte entwickelt. Warum sollte sich ein potentieller Linux Kunde für Euch entscheiden, wenn Ihr keine Linux Produkte anbietet?

    In unseren Marktsegment hat Linux eigentlich keinerlei Relevanz, da wäre MacOS noch interessanter, aber auch noch viel zu selten vertreten. Wenn sich der Anteil mal ändert, mag es anders aussehen (Ich gehe aktuell nicht davon aus das es in den nächsten 5 Jahren in diesem Bereich wesentlich anders aussieht).

    Und ich war bislang in nur in wenigen Projekten, wo ich eine plattformunabhängigkeit für sinnvoll erachtet hätte. Und selbst dort hätte es maximal 10-20% mehr potentiellen Kundenstamm gegeben.

    Betrachte doch bitte mal die aktuelle Verteilung der Betriebssysteme, sofern es um den Clientmarkt geht (Was Webanwendungen angeht ist die Sprache egal, sofern das Ergebnis beim Kunden vom Browser interpretiert werden kann, und Servermarkt betrifft gerade kleine Softwarebuden eher am Rande). Wenn man zudem noch für Marktsegmente entwickelt in denen es sehr konservativ zugeht, ist mit sehr hoher Sicherheit auch Windows vertreten.

    Und was Linux allgemein angeht: Ich habe inzwischen das Gefühl das Linux im Clientmarkt stagniert (Ich kenne nur sehr wenige die sich wirklich länger mit Linux beschäftigt haben, und selbst von letzteren sind inzwischen einige wieder Umgestiegen). Und auch wenn sich allmählich der Marktanteil der alternativen Betriebssysteme etwas ändert, sehe ich Linux hier nicht als den großen Gewinner, sondern als Nische.

    Zumindest ist Linux weit von den gehypten Voraussagen entfernt, und wirklichen Mehrgewinn kann eine Firma mit Linux auch nur dann machen, wenn in ihrem Sektor der Marktanteil entsprechend anders verteilt ist. Von 500% Mehreinnahmen ganz zu schweigen, den dafür sollte auch der Marktanteil anteilig entsprechend vorhanden sein - oder es auf der entsprechenden Umgebung keine oder kaum Konkurrenz geben.


Anmelden zum Antworten