vb.net, C# oder Java?

  • Allgemein

Es gibt 139 Antworten in diesem Thema. Der letzte Beitrag () ist von MrTrebron.

    vb.net, C# oder Java?

    Guten Tag,
    ich habe jetzt wiedereinmal vor eine der genannten Sprachen zu lernen. Was für eine schlägt ihr mir vor? Was mir an Vb.net und C# so gefällt ist der mögliche Einsatz von WPF(auch wenn ich keine Ahnung habe was das ist und wie es funktioniert). Ich mag gut designte Programme sehr und möchte sowas auch selber können. Jetzt ist die Frage, welches der 3 oben genannte Sprachen ich mir zulegen sollte?
    Mit welchen kann man wie viel machen bzw wann stößt man an Grenzen?


    danke schonmal
    mit Freundlichen grüßen Catchthebird

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Ich würde klar Java sagen. Im Gegensatz zu den anderen kann man Java auf vielen Plattformen laufen lassen. Schwer zu erlernen ist sie meiner Meinung nach auch nicht. Du hast dann auch die Möglichkeit Android Apps zu schreiben, denn die werden in Java programmiert. Allerdings sei auch gesagt, dass man C# VB.Net vorziehen sollte, denn dort kann man weniger Fehler machen. In VB hat man schnell mal Fehler drinne, die durch VB6-Mist kommt.

    LG
    Eindeutig C#, bei Java fehlen meiner Meinung nach so viele Sprachfeatures, dass es sich nicht erlauben sollte sich "Hochsprache" zu nennen. Plattformunabhängigkeit ist mMn wirklich nur noch der einzige Punkt, der für Java spricht(und selbst diese lässt sehr zu wünschen übrig - wie man bereits an einer Konsolenanwendung bemerken dürfte).
    C# hat außerdem ein paar Features mehr als VB .Net(unsafe z.B.) außerdem wird alles erst in C# eingeführt, bis es dann irgendwann(wenn überhaupt) den weg zu VB .Net schafft.

    Und zum Thma Plattformunabhängigkeit: Durch Mono hat man bereits eine relativ akzeptable Lösung und durch die OpenSource Aktion von MS dürfte das ganze bald ein schönes schrittchen weiter kommen...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Das ganze wurde mir hier jetzt nicht wirklich einfacher gemacht ^^
    Der eine sagt, dass er klar für Java ist und der andere klar für C#. Somit ist jedenfalls vb.net schonmal ausm Spiel und wir sind ein kleines Stückchen weitergekommen. Ich habe schonmal angefangen etwas Java zu lernen, habe aber aus Motivationsmangel dann aufgehört ^^ will jetzt aber(egal ob C# oder Java) wieder anfangen. Ichhatte damals jedenfalls nicht den Eindruck, dass Java soo einfach ist.
    Also nicht nach dem Motto: Einmal durchlesen und dann hat man alles verstanden ^^
    Java hat weniger Sprachfeatures, somit geht es einfacher alles zu lernen was es gibt, aber wenns dann ans Implementieren von komplizierten Dingen geht kannst halt Probleme bekommen :D
    Oder wenns an ganz Grundlegende Dinge geht wie Operatorüberladung, dann musst halt Methoden nehmen, da wird aus einem wünderschönen:
    v4 = matrix1*(matrix2+matrix3)*vector3;
    schnell ein:
    v4 = matrix1.multiply(matrix2.add(matrix3)).transform(vector3);
    und dann sag mir, welches davon kann man besser lesen :D
    Das ist nur ein Beispiel, bei Java fehlt noch mehr.
    Und wie gesagt einziger Vorteil Plattformunabhängigkeit(die schnell an ihre grenzen stößt) und außerdem bei .Net vlt auch bald kommt.

    Bei C# hast du vlt. mehr Sprachfeatures zu lernen, aber durch das mächtige Framework behaupte ich ist es einfacher als Java(Zumindest für größere Projekte als ein Brettspiel o.ä.)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

    CatchTheBird schrieb:

    Der eine sagt, dass er klar für Java ist und der andere klar für C#.
    Dann wird Java nun überstimmt:

    Eindeutig C#. @jvbsl hat die Gründe auf den Punkt gebracht. Mehr gibt es dazu nicht mitzuteilen.
    Mit freundlichen Grüßen,
    Thunderbolt
    Eure Argumente hören sich schon ganz interessant an ^^ ich werd mal schauen wer sich zu dem Thema noch alles meldet und schau dann was wohl besser sein wird. Wie sieht es denn mit dem designen aus? Ich mag moderne Designs und was mir die Anregung zum Wiedereinstieg in die Programmierung gegeben hat war das Programm Hurricane aus dem Showroom hier.
    Ich bin momentan in der Schule in einer Informatik AG, in der wir jetzt auch anfangen Java zu erlernen. Wie weit das gehen wird weiß ich natürlich nicht, aber da ich eh vorhatte Informatik vierstündig zu nehmen, muss ich Java wohl eh über kurz oder lang lernen, da wir in dieser AG nur mit Java arbeiten.

    Thunderbolt schrieb:

    Mehr gibt es dazu nicht mitzuteilen.
    Doch, eine Sache wäre da noch. ^^

    CatchTheBird schrieb:

    Ich mag gut designte Programme
    Ist in Java mmn nicht erreichbar, da Java das genaue Gegenteil von gutem Design ist, da haben bereits die Entwickler selbst dran versagt. Mal von fehlenden Sprachfeatures wie Events oder auch nur simpler Properties abgesehen wird auf veraltete Namensrichtlinien, eine vollkommen unlogische Namespacebennenung (nämlich mit Websitenamen) und teilweise seltsame Syntax gesetzt. SO gibts z.B. in Java keinen erkennbaren Syntaxunterschied zwischen mehrdimensionalen Arrays und Jagged-Arrays, oder Integer ist was anderes als int und natürlich der Klassiker, == funktioniert für Strings nicht.
    Sieht ganz so aus als würde C# ganz nett sein. Ich werde mich mal etwas einlesen :)

    Edit: Startet man in c# auch mit einer Konsolenanwendung, so wie ich das in C++ gemacht habe?
    Wie empfehlt ihr es mir zu lernen? Ein buch(welches) oder doch irgendein Internettutorial?


    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „CatchTheBird“ ()

    Zu Java hab ich mich schon mal hier ausgelassen.
    Ich würde aus persönlicher Sicht VB anstelle von C# verwenden, weil es mir persönlich leichter von der Hand geht (weniger komplexe Syntax, Auto-Insert finde ich besser implementiert), aber zum Erlernen von .Net würde ich jedem zu C# raten, weil es bei VB ein paar gefährliche Stolpersteine gibt (MS.VB-Namespace, My-Namespace, Standardinstanzen, Option Strict Off).
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Hast Du schon Erfahrung mit dem .Net-Framework?
    Wenn ja, dann könntest Du einfach mal beides (C# und VB) ausprobieren und gucken, wie Dir die Sprachen gefallen. Und dann einfach das nehmen, was Dir besser gefällt. Ansonsten solltest Du bei C# bleiben. Wie gesagt, VB hat ein paar Stolpersteine, und wenn man noch wenig Erfahrung hat, fällt man da oft drüber.

    Edit: C# hätte halt den Vorteil, dass auch viele andere Sprachen auf die selbe (oder zumindest ähnliche) Syntax aufbauen, weil sie sehr flexibel ist und die "Sinndichte" sehr hoch ist. Also die Anzahl an Zeichen an Code, die man braucht, um effektiv auf das selbe Programm zu kommen.
    Was aber nicht unbedingt bedeutet, dass man bei VB mehr tippen muss. Microsoft Visual Basic (die IDE) bzw. halt VisualStudio nimmt einem da sehr viel ab. Und wenn man dann noch Snippets verwendet ist man wirklich sehr schnell. Ich bin sogar der Meinung, dass ich in VB schneller (und damit meine ich nicht "pro Zeit", sondern eher "pro Handbewegung") bin als in C#. Das meinte ich mit "VB geht mir leichter von der Hand als C#".
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Niko Ortner“ ()

    C#. Fertig.
    VB.NET ist für das Erlernen weiterer Sprachen eher kontraproduktiiv. C# hingegen gibt dir schon mal ansatzweise die richtige Syntax für andere Sprachen mit und sieht auch deutlich schöner aus.
    Plattformunabhängigkeit ist bei .NET eigentlich auch fast nur noch relativ, es gibt Mono und bald wirds vermutlich noch bessere Sachen geben (wie Microsoft es sich gewünscht hat).
    Wenn du C# gut drauf hast und dir dann Java anguckst, fragst du dich, wieso Java da ist wo es im Moment ist. Java ist fürn Arsch und das Programmieren macht mit C# viel mehr Spaß.
    C#.
    Also als ungefähren Wegweiser würde ich sagen: "Mit Objektorientierung Datentypen anfangen!".
    Und das muss noch nicht mal komplexeste Vererbung sein, sondern nur mal zu verstehen, wie das Typensystem in .Net aufgebaut ist. Denn das Verstehen der Datentypen ist das die Grundlage jedes Programmes (keine Daten -> keine Verarbeitung).

    Wegen Konsole oder GUI: Mit Konsolen kann man mal anfangen, die "Technik dahinter" auszuprobieren. Das richtige Zusammenstöpseln von WinForms ist nicht immer einfach. Man muss wissen, welche Property was macht (wo z.B. der Unterschied zwischen Anchor und Dock ist).
    Und WPF ist nochmal eine Wissenschaft für sich.

    Eventuell würde sich ein Buch anbieten.
    Für den Fall, dass Thomas Theis auch C#-Bücher schreibt: Eventuell Abstand halten. Siehe hier, Absatz "Meine Vorbehalte gegen Galileo-Press".
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils

    ChOoSeMyNaMe schrieb:

    Du hast dann auch die Möglichkeit Android Apps zu schreiben


    Da verlinke ich einfach ma spontan auf Xamarin. Klar, damit man effektiv da schreiben kann, muss man sich halt mindestens die Indi-Version holen(=>25€/Monat) aber wenigstens braucht man kein Java mehr :D (soll jetz nix gegn Java sein)
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
    Da Microsoft mit dem Mono-Projekt UND Xamarin zusammenarbeiten will / zusammenarbeitet, denke ich, dass sich da einiges Tun wird. Ich meine auch irigendwo gelesen zu haben, dass zukünftige Versionen von Visual Studio z.B. nen eigenen Android Emulator mitliefern wollen der einiges schneller als jeder Bisherige sein soll, usw... . Microsoft geht hier wirklich mal den Schritt in die richtige Richtung. Ich denke man muss nicht mehr lange warten, und man ist mit ein und dem selben Code überall vertreten (eventuelle GUI-Anpassungen mal ausgenommen ;) ). Und warum sollte man dann nochmal Java lernen? Wegen den fehlenden Sprachfeatures? Wegen den Sicherheitslücken? Wegen Eclipse? Sind keine Punkte, die mir so direkt zusagen :P. Zudem bekommt der Privatentwickler und kleine Firmen Visual Studio Pro quasi geschenkt mit der Community Edition. Und damit ist man quasi im Programmierhimmel. Sicher gibts da draußen auch andere gute IDEs, aber im vergleich zu Eclipse (an das ich nur fürchterliche Erinnerungen aus der Schulzeit habe) ist das eine andere Welt.

    Und noch zum Thema VB vs C#.
    Wäre dir das PRogrammieren an sich neu, würde ich dir zu VB raten, da die Syntax das lernen meiner Meinung nach vereinfacht.
    Für manche ist ein

    VB.NET-Quellcode

    1. If x = 0 Then
    2. 'doStuff
    3. Else
    4. 'doOtherStuff
    5. EndIf

    bestimmt leichter zu verstehen als

    C#-Quellcode

    1. if(x==0)
    2. {
    3. //doStuff
    4. }
    5. else
    6. {
    7. //doOtherStuff
    8. }

    zwar ein blödes Beispiel, aber ich denke ihr wisst was ich meine.
    Hast du jedoch bereits erfahrungen mit dem Programmieren, und wie du sagst, hast du schonmal irgendwas mit c++ gemacht, dann bleib am besten auch bei der C-Syntax.
    Ich würde vb nicht verwerfen. vb hat einen besseren und besser integrierten ObjectBrowser - damit sind alle möglichen Datentypen deutlich einfacher zu recherchieren.
    Und ich hab mal einen Lernplan gemacht: Datenverarbeitungs-Vorraussetzungen
    Der konzentriert sich darauf, vor allem zu erlernen, die Tools des VisualStudio effizient einzusetzen, weil du kannst noch so dolle c# oder vb.net beherrschen: Wenn du nicht imstande bist, im Form-Designer ein ordentliches Layout hinzuhauen, oder deine Datenverarbeitung databinding-getrieben zu organisieren, dann codest du kilometerlangen Müll.
    Der Lehrplan gilt mit Ausnahme der beiden Grundeinstellungen (vb.net's "Erbsünde") in vollem Umfang ebenso für c#, nur leider die Tuts und lauffähigen Beispiele dazu hab ich halt in vb.net gebastelt.
    Wie gesagt: vb hat nur seine 2 Erbsünden, und wenn man die korrigiert hat, dann steht die Sprache c# eiglich in nichts nach.

    Ich würde den Lernplan übrigens auch zum c# lernen benutzen. Es sind ja meist Videos über VisualStudio-Tools, und deren Bedienung ist in c# dieselbe. Da siehst du dann, wie einfach die Lösungen sein können, und wenn man das gesehen hat, dann puhlt man auch in anneren Sprachen so lange herum, bis man eine ebenbürtige Lösung ausgefummelt hat.

    Oder du folgst dem einfach in der Sprache, in ders erstellt ist. Umschalten auf c# kann man jederzeit - das ist Sache von vlt. 2 Tagen.

    Inne c#-Welt hat man imo mit 2 Mankos zu tun:
    1. Es gibt kaum was, wo auf die VisualStudio-Tools eingegangen wird. Aber es ist numal echt schlechter Stil, 1000 Zeilen Code aufzuwenden und warten zu müssen für etwas, was man sich auch in 10 Minuten im Designer zurechtklicksen kann. Du kannst zB. den CodeProjekt-Wpf-Bereich rauf und runter suchen: Niemand scheint imstande zu sein, sein Xaml so anzulegen, dass Intellisense und Property-Fenster verfügbar sind.
    2. c#-ler denken oft umständlicher als nötig. Insbesondere lieben die Interfaces und anspruchsvolle Patterns, und haben eine Neigung, das überall einzubauen, und produzieren Code-Overheads, die man nach dem "des Kaisers neue Kleider"-Prinzip ("er hat ja gar nichts an!") auch mit einem Zehntel an Aufwand lösen könnte.
      Das mag man für minder problematisch halten, insbesondere, wenn man lernen will - aber Umständliches Denken ist ein gravierendes Problem, und wenn man so gelernt hat, dann legt man das später auch nicht wieder ab.

    Übrigens letzte Woche kam was interessantes psychologisches im Fernsehen: Es sind die Wahlmöglichkeiten, die unglücklich machen. Denn egal wie man entscheidet: Immer nagt ein Misstrauen, ob die annere Entscheidung die bessere gewesen wäre. Und insbesondere bei aufkommenden Problemen erleidet man Reue - schnurz dabei, dass die annere Lösung halt annere Probs bereitgehalten hätte.
    Und die Statistik bestätigt dann oft im Nachhinein: Es war tatsächlich egal.
    1. Klicki bunti erzeugt selten den besseren Code und dass man mit klicki bunti DB nur die einfacheren Datenstrukturen machen kann dürfte auch klar sein.
    2. DB ist ein minimaler Bereich der Programmierung
    3. Vb .Net programmierer neigen dazu alles in ein Modul zu packen und keine gescheite Architektur aufzubauen. Vorallem keine gut erweiter/austauschbare (ich denke du erkennst worauf ich hinaus will)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---