Wieso wird ein immer von VB.Net abgeraten?

  • Allgemein

Es gibt 25 Antworten in diesem Thema. Der letzte Beitrag () ist von thefiloe.

    Wieso wird ein immer von VB.Net abgeraten?

    Hallo,

    Da ich nicht genau weiß in welchen Forum-Bereich ich den Beitrag posten soll, mach ich das einfach mal hier.

    Bin ein Einsteiger was die Programmierung angeht, und hab einfach mal mit VB.NET angefangen. (Inkl. Einstieg in Visual Basic 2012)
    Aber lese in vielen Seiten oft das die Sprache für den Anfang nicht geeignet ist. Wegen der Syntax o.ä
    Hab deswegen auch mal angefangen ein Online Buch von (Galileo Computing) zu lesen (mit C#) komme damit aber irgendwie überhaupt nicht klar :(
    Würde gerne nach VB.Net, C++ lernen.
    Hab ich mit dem Anfang von VB.Net ein Fehler gemacht, oder ist VB.Net so gut wie C#?

    PS:
    Da ich grad mit mein Handy schreibe, kann ich grad nicht so gut auf die Rechtschreibung achten.
    Ich sage einfach mal, wie ich das ganze empfunden habe: Mit VB kann man gut einsteigen, weil die Syntax leichter verständlich ist. C# ist dagegen etwas schwieriger lesbar für Anfänger, später wirkt die Syntax aber deutlich angenehmer. Ich habe mit VB.NET angefangen, und dann auf C# & co umgewechselt - das ging ohne Probleme mit etwas Umgewöhnung.
    Ich seh das soweit genauso wie mein Vorredner, ich bin allerdings bei VB geblieben.

    In der Berufsschule hatte ich auch C# und allgemein habe ich eigentlich sehr viele Programmiersprachen ausprobiert, allerdings mag ich VB irgendwie am liebsten, aber wenn ich wirklich mal umsteigen sollte, dann wird mein Nachfolger C# ;)!
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..
    Ich würde auch nicht sagen, dass VB.NET eine schlechte Sprache ist. VB6, VBA und Konsorten sind nicht so hilfreich, wenn du "richtig" Programmieren lernen willst, VB.NET hat aber keine großen Nachteile.
    Ich nehm jetzt einfach mal mich als Beispiel: Vor ca. nem halben Jahr kam ich zu einem Punkt, wo ich VB.NET ziemlich gut konnte (alles, was wichtig ist und mal wichtig werden würde) und mal was anderes ausprobieren wollte. Ich hab mir dann C# angeschaut und nach 2 Tagen konnte ich das wichtigste schon machen (alle Grundlagen), einfach weil es im Grunde genommen VB.NET nur mit anderer Syntax ist. Es gibt zwar ein paar kleine Sachen, die in C# anders sind (zum Beispiel RAM-bezogenes Zeugs mit Unsafe), die muss man aber nicht können. Mittlerweile kann ich in C# fast so viel wie in VB.NET machen, nur bei Lambda-Zeugs (was man aber auch nicht können muss) und so Zeugs habe ich noch manchmal Probleme. Letztin hat mich dann auch noch C++ interessiert. Um mal etwas in die Syntax (ist etwas anders als in C#) zu lernen, hab ich mit C++/CLI angefangen, da man da auch auf das .NET Framework zugreifen kann, also das Beste von beidem benutzen kann. Auch hier dauerte es nur kurz, bis ich in der Lage war, meine ersten C++-Programme zu schreiben (zwar nur mit .NET-Methoden, aber immerhin mit C++-Syntax), ohne davor ein Buch oder ähnliches darüber gelesen zu haben, was bei C++ aber sicher nötig ist, um richtig gut darin zu werden. Ich würde mal zusammenfassend sagen:
    VB.NET:
    -Einfacher Einstieg da einfache Syntax
    -Auch vereinfachter Wechsel auf andere Programmiersprachen möglich, da .NET-Framework-basiert
    C#:
    -Wirst warscheinlich früher oder später eh dazu wechseln und VB nicht mehr benutzen, so geht es hier vielen
    -Syntax nicht soo einfach, trotztem einfacher Umstieg auf Programmiersprachen wie C++ möglich, da ähnliche Syntax
    C++:
    -Schwer zu erlernen
    -ziemlich komplizierte Syntax
    Mein bevorzugter Weg wäre immer von VB.NET zu C# und dann irgendwann noch zusätzlich zu C++. Damit bleiben dann am Schluss hauptsächlich C# und C++ übrig (VB.NET brauchste nicht mehr, da du dann C# kannst). Trotztem würde ich mit VB.NET anfangen, da es einfach einfach zu lernen ist (wenn man Englisch kann). Hier mal ein Beispiel:
    Dim A As Decimal = 100.0
    könntest du so übersetzen:
    Deklariere A als Dezimalzahl und weise ihr den Wert 100,0 zu.
    Hingegen bei C#:
    decimal A = 100.0;
    Der hier deklarierten Dezimalzahl mit dem Namen A weise ich den Wert 100,0 zu.
    Du kannst also VB.NET am Anfang höchstwarscheinlich besser lesen.
    ich würd sagen, im großen und ganzen isses schnurz.
    vb scheint für viele Anfänger einfacher zum anfangen - die müssen bestimmte Grundlagen dann halt später lernen :P
    vb hat den gravierenden Nachteil, dasses einige grauenhafte Schlampereien durchgehen lässt, mit denen Anfänger sich ihren Stil komplett versauen können - Option Strict On!, VeryBasics, böse Funktionen vermeiden, evtl. weiteres...

    Wovon man wirklich abraten muss ist das Galileio Openbook zu VB - also wenn man damit lernt ist man hinterher echt der Depp.
    Grad gegensätzlich zum Vorzug von vb gereicht: dieses Buch lesen (hingegen das Galileio-Openbook ist Mist) - mit Löffelmann hat man ein ich finde grad im Grundlagen-Bereich unerreichtes Buch für umsonst verfügbar.

    Für c# spricht, dass international dazu viel mehr Code zum Abgucken veröffentlicht wird.

    Annererseits finde ich persönlich die c#-Community bisserl arrogant (ok, es gibt genug vb-code veröffentlicht, der es rechtfertigt, darauf herabzublicken).
    Aber oft machen die so viel mit Pattern und Intefaces rum, was, wenn man genau hinschaut alles garnet nötig ist - also die machens oft komplizierter als nötig.

    Im hochoptimierten Bereich hat c# mit unsafe code Vorzüge, wo vb kein pendant für hat - das ist aber auch alles.

    Und c# scheint iwie schicker zu sein - siehste schon an so einigen Vbp-Usern, dies für renommable halten, paradoxerweise "c#" in ihrem VbParadiese-BenutzerTitel zu führen ;)
    Und wenn du innem c#-Forum fragst ist die Antwort eh klar.

    Edit (wg Artentus): Ein c#-vorzug ist auch die kompaktere Syntax.
    Also man kann in c# die öffnende Klammer eines Blocks in derselben Zeile halten wie die Block-Definition, und gewinnt dadurch eine Zeile Einsparung im Vergleich zu vb. Vergleiche:

    VB.NET-Quellcode

    1. Private _PropertyName As String = "Hi!"
    2. Public Property PropertyName() As String
    3. Get
    4. Return _PropertyName
    5. End Get
    6. Set(value As String)
    7. If _PropertyName = value Then Return
    8. _PropertyName = value
    9. End Set
    10. End Property
    mit

    C-Quellcode

    1. private string _PropertyName = "Hi!";
    2. public string PropertyName {
    3. get { return _PropertyName; }
    4. set {
    5. if(_PropertyName == value) return;
    6. _PropertyName = value;
    7. }
    8. }
    Vergleiche auch den sprechenderen Block-Abschluss, den vb bereitstellt - wie gesagt: Artentus sieht das einheitliche '}' als Vorteil - kann man auch als Nachteil sehen - mein Votum: Geschmacksache, zum Teil auch ErbsenZählerei.
    Etwa ich als Erbsenzähler bin eiglich immer ganz angetan von der kompakten c#-Schreibweise (8 statt 10 zeilen), muss ich zugeben.

    Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Inzwischen ist für mich die Syntax auch ein Grund für C#. Syntax hat einen bestimmten Zweck, nämlich die logische Strukturierung des Codes, und genau das sollte sie auch sein.
    In C# besteht die Syntax aus nicht im normalen Code vorkommenden Zeichen, so dass man sie leicht davon unterscheiden kann. Außerdem handelt es sich dort immer nur um einzelne Zeichen, weswegen die Syntax in C# sich dezent im Hintergrund hällt. In VB besteht die Syntax fast ausschließlich aus englischen Wörtern, und der eigentlich Code besteht auch aus englischen Wörtern, das finde ich eher ungünstig. Auch macht dort die Syntax teilweise gefühlt schon die Hälfte des geschriebenen aus, sie drängt sich also viel zu stark in den Vordergrund.
    Dann wäre da natürlich auch noch die Intuitivität. In C# ist das sehr einfach, Codeblöcke stehen immer in geschweiften Klammern. In VB sehen die Codeblöcke aber durchgehend verschieden aus, End If, Next, Loop, usw. erfordern, dass man für jede Art von Codeblock eine andere EndOf-Anweisung verwendet. Auch so Sachen wie Arrayklammern gehören dazu. Während man diese in C# gut von normalen Funktionsklammern unterscheiden kann, sehen diese in VB identisch aus. Und Lambdas, die hier auch mal erwähnt wurden, sind in C# imo ebenfalls besser und intuitiver gelöst (da spielt auch wieder ersteres mit, weil man in VB eben wieder so nen blödes Sub bzw. Function reinquetschen muss).
    Aber auch in Sachen Konsequenz hat C# VB was voraus, in VB kann man z.B. Funktionen ohne Parameter ohne Funktionsklamern aufrufen, das ist inkonsistent. Hier würde ich auch den Vergleichsoperator anbringen, der in VB identisch mit dem Zuweisungsoperator ist, das sorgt nur für unnötige Verwirrung.
    Im allgemeinen merkt man einfach, dass die Syntax in C# mehr auf Effizienz getrimmt wurde, und zumindest für den erfahrenen Programmierer auch um einiges intuitiver zu benutzen ist. Ich selbst hab aber auch mit VB angefangen und kann mich noch gut daran erinnern, wie viel ich damals mit C# anfangen konnte. :P Die Dinge ändern sich halt, jeder kann für sich schauen, was er am besten findet, grundsätzlich ist mit den beiden Sprachen das gleiche möglich (bis auf unsafe). Ich bin aber der Meinung, dass jeder, der einen gewissen Grad an Programmierfertigkeiten erreicht hat, ein Auge auf C# werfen wird, warum wird dann derjenige selbst merken, wenn er denn mal soweit ist. ;)

    Und ja, C# hat so eine magische Anziehungskraft zu Interfaces. :P
    @Artentus
    Du hast schon Recht, jedoch erleichtert die Syntax von VB, welche du so bemängelst, den Einstieg schon ziemlch.
    Und von der Anziehungskraft zu Interfaces habe ich noch nichts gemerkt :P. Das liegt sicher nur daran, dass du erst angefangen hast, C# zu benutzen, als du soweiso schon im Bann der Interfaces warst. Ich habe zwar bisher auch noch kein größeres C#-Projekt Interfacelos gelassen, dasselbe gilt für mich aber auch für VB. Und ich gehe davon aus, dass ich das auch auf andere übertragen kann :D.
    Ich glaube das liegt eher daran, dass ich vor meiner C#-Zeit keine ordentlichen Projekte erstellt hab, bzw. ich immer schlampig programmiert hab.
    Ob es C# war, was meinen Codestil verbessert hat, oder ob es einfach der "ich programmiere jetzt C#, ich bin jetzt professionell"-Placeboeffekt war, wäre noch zu ermitteln. :P
    Hab zwar beides installiert, vb.net und c#, aber ich sehe zwischen beiden keinen großen Unterschied. Klar, vom Aussehen her schon, aber was die Funktionalitäten angeht kann ichs schlecht beurteilen, da ich weder das eine noch das andere bisher soweit ausnutzen musste. Aber für mich spielt es keine Rolle ob ein Block mittels Klammern oder Wörtern wie "... end" gekennzeichnet wird. In Sachen Code-Formatierung gibts für mich bei beiden Seiten keine klaren Vor- oder Nachteile und kann mit beiden gut umgehen... (Was man vllt manchma an den ganzen Pseudocode-Sachen von mir sieht xD) Meiner Meinung nach ist die Sprache/Entwicklungsumgebung auch nicht ausschlaggebend wie schlecht jemand programmieren kann und sich mit der Logik auskennt die im groben und ganzen überall gleich ist (Blöcke, Schleifen, Variablen, Referenzen/Pointer, Klassen, Bliblablub und bleh, immer das gleiche ...)

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

    Der größte Nachteil von VB.NET gegenüber C# oder Java ist der Arbeitsmarkt.
    Es werden nur in einem Bruchteil der Entwicklerfirmen VB.NET Entwickler gesucht im vgl zu Java oder C# Entwicklern.
    Das ist meine Signatur und sie wird wunderbar sein!
    Es macht einen Unterschied ob man viel in VB.NET entwickelt hat oder C#.
    Klar kennt man das Framework, aber die Syntaxunterschiede machen sich auf jedenfall bemerkbar und es bedarf einer gewissen Umgewöhnungszeit.
    Es gibt auch kleine Unterschiede (zB RaiseEvents in VB.NET)

    Kurz: C# geht einem nicht sofort gut von der Hand wenn man nur in VB.NET entwickelt hat.

    Aus eigener Erfahrung kann ich zudem sagen, dass man besser sagt, man habe Erfahrung in C# oder in allgemein in .NET, anstatt VB.NET.
    Viele verbinden dies irgendwie nach wie vor mit VB. Als würde man halt von VB5/6 kommen.
    Das ist meine Signatur und sie wird wunderbar sein!
    Puh, nachdem ihr mich wieder n bisschen heiß auf C# gemacht habt, habe ich mich seit der Berufsschulzeit gerade das erste Mal wieder damit beschäftigt und ich muss sagen..

    Was mir ganz klar gefällt ist zb. die verkürzte angenehme Schreibweise bei Deklarationen/Initialisierungen, etc.

    Allerdings was mich direkt meeega nervt ist, dass man nachdem man ein Control wieder von der Form gelöscht hat, er direkt wieder rummeckert "ja hier ich habe ein Verweis auf Button1, aber der existiert gar nicht mehr", ich finde das sind solche Sachen die unnötig sind und hätten automatisch erledigt werden können.

    Ich mein die piekfeinen native C# Entwickler können hier wieder rummeckern, aber das ist einfach nur Komfort den ich sehr angenehm finde. Ich werde mich allerdings demnächst nochmal ransetzen, denn irgendwie gefällt mir C#.

    Was zum Beispiel auch meiner Meinung nach echt Kacke und unnütz ist: Man schreibt "button1" klein, ganz einfach schnell getippt und direkt wird wieder rumgenervt "ja gibbet nicht", anstatt dann einfach von selber "Button1" draus zu machen.


    Vll. habe ich mich einfach zu sehr an den Komfort von VB gewöhnt, oder vll. ist es nur ne Einstellung/Aktivierung von IntelliSense bei C#...

    Ich guck mal ;)!
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..
    Was die meisten neben der tollen Syntax und der Ähnlichkeit zu vielen anderen Sprachen einfach noch gar nicht betrachtet haben, sind die Möglichkeiten die C# bietet.
    Tatsache ist, dass VB nicht das gleiche kann wie C#. Auch wenn hier jeder(oder zumindest die meisten) erzählt, dass VB eins zu eins in C# konvertierbar ist => das stimmt so nicht.
    C# hat nun mal sehr nützliche Schlüsselwörter(und sogar Operatoren), welche ich wirklich sehr oft verwende, welche in VB jedoch schlicht weg nicht zur Verfügung stehen.
    Da wären z.B. folgende Schlüsselwörter(bestraft mich, falls ich eventuell etwas falsches auszähle, kann natürlich in nem Update rausgekommen sein, bin da nicht zu 100% aufm neuesten Stand. Der Großteil sollte jedoch so stimmen):
    • volatile
    • fixed
    • stackalloc
    • unsafe
    • checked
    • unchecked
    • ...

    Zudem sehr hilfreiche Operatoren wie z.b.:
    • %=
    • &=
    • ^= (naja gut braucht man recht wenig)
    • |= (ebenso)
    • ++ bzw. -- (kann sogar sein, dass es den inzwischen gibt - benutze schon lange kein vb mehr)
    • Diverse Pointer operatoren wie z.B. *, ->, &, "."
    • sizeof
    • =>
    • ~ (nicht sicher glaube aber, dass es den auch noch nicht gibt)
    • ::
    • ?? (mein persönlicher Favorit(da z.B. bei lazyload von Eigenschaften uneeeendlich nützlich)
    • ... gibt sicher noch paar, habe aber nicht alles im Kopf

    Viele Operatoren gibt es inzwischen, sind jedoch in irgendwelchen hässlichen Schlüsselwörter verpackt worden was ich persönlich einfach nicht ausstehen kann.

    Ein weiterer Nachteil ist halt auch einfach, dass VB.NET a) in der Wirtschaft wesentlich weniger gefordert wird. Habe bis jetzt sehr, sehr, sehr selten Jobausschreibungen für VB.NET gesehen. b) findet man auch im Netz wesentlich weniger dazu. Das heißt, wenn ich etwas suche(auch hier fürs Forum), dann suche ich immer nach C#. Weshalb? Weil einfach über 95% der Artikel für C# sind. Egal wo man hinschaut. Sei es auch codeproject, codeplex, github oder irgendwelchen privaten Blogs etc. man findest nahezu ausschließlich Artikel für C#. Somit ist es für VB Programmierer so oder so nahezu unerlässlich C# lesen zu können und dann ist man vom Umsteigen eh nicht mehr weit weg.
    Ich persönlich habe auch VB angefangen(auch mit Option Strict Off => fällt bei C# auch schon mal weg) und habe irgendwann C# ausprobiert, vll. ne Stunde gebraucht, dann hatte ich es großteils raus und habe seitdem nie, nie, nie wieder auch nur eine Zeile VB für mich geschrieben. Wenn ich vll. was hier poste oder jemandem was erkläre, ok. Aber selbst da bin ich dauernd am fluchen :P.

    Ach ja:
    Allerdings was mich direkt meeega nervt ist, dass man nachdem man ein Control wieder von der Form gelöscht hat, er direkt wieder rummeckert "ja hier ich habe ein Verweis auf Button1, aber der existiert gar nicht mehr", ich finde das sind solche Sachen die unnötig sind und hätten automatisch erledigt werden können.
    Winforms ist nicht C#. Somit kannst du sowas nicht zur Bewertung hernehmen. Ich programmiere seit Jahren C# und habe sicher noch keine 5 Forms damit gemacht. Außerdem soll es schlimmeres geben wie, dass man nen EventHandler rausnehmen muss. Was du auch noch geschrieben hast, ist, dass button1 klein geschrieben wird. a) sollte man so oder so nen halbwegs anständigen Namen vergeben, denn sonst kannste winforms gleich zwei mal in die Tonne werfen und b) entspricht dies nun mal den Guidelines von C# welche besagen, dass Felder klein geschrieben werden. Somit ist das zu 100% korrekt das klein zu schreiben und hat nichts mit VB und C# zu tun und schon gar nicht mit Komfort einer Sprache @Rootbob91.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

    thefiloe schrieb:

    dass button1 klein geschrieben wird. a) sollte man so oder so nen halbwegs anständigen Namen vergeben, denn sonst kannste winforms gleich zwei mal in die Tonne werfen und b) entspricht dies nun mal den Guidelines von C# welche besagen, dass Felder klein geschrieben werden. Somit ist das zu 100% korrekt das klein zu schreiben und hat nichts mit VB und C# zu tun und schon gar nicht mit Komfort einer Sprache
    Ich hatte mir eig. schon gedacht das darum rumgehackt wird und das ich meine Erwartungen zu hoch gesetzt habe.. Dass ich Button1 geschrieben habe, es diente nur als Argument, ich bennene mit Sicherheit keine Controls derartig..

    Auf jeden Fall werde ich C# nochmal genauer unter die Lupe nehmen, da ich viele Stichwörter und Operatoren von oben nicht kenne.
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..
    Es geht nicht um Button1 sondern darum, dass ein Button vom Designer als Feld angelegt wird, und Felder klein geschrieben werden sollten. Somit ist button1 die korrekte Schreibweise.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

    ErfinderDesRades schrieb:

    Wovon man wirklich abraten muss ist das Galileio Openbook zu VB - also wenn man damit lernt ist man hinterher echt der Depp.


    Ich finde Dein Argument längst überholt und nicht gerechtfertigt! Neulich habe ich mir in der Buchhandlung von Galileo Computing (Author: Matthias Geirhos) das Entwicklerbuch C# durchgelesen. Für mich ergibt sich daraus weder ein Nach- noch ein Vorteil im Gegensatz zu den Büchern von Löffelmann. Jeder Author schreibt mit seinen eigenen Worten und argumentiert sein Vorgehen entsprechend. Letztlich sind die Erklärungen von Variablen, Methoden, Klassen ect. diesselben, wie in allen anderen Büchern auch. ;)

    Oftmals werden zuviele Informationen bekannt gegeben, die für Anfänger initial nebensächlich sind. Der Leser wird's aber danken, wenn er doch einmal das Interesse daran verspührt.