Warum ist VB so beliebt? [geschlossen]

28

Visual Basic erscheint mir unbeholfen, hässlich, fehleranfällig und schwer lesbar. Ich werde andere erklären lassen , warum . Obwohl VB.net in Bezug auf die Funktionen eindeutig ein enormer Fortschritt für die Sprache war, verstehe ich immer noch nicht, warum sich irgendjemand für VB-Code entschieden hat, beispielsweise für C #.

Ich sehe jedoch immer noch (was zu sein scheint), dass die überwiegende Mehrheit der kommerziellen Web-Apps aus "MS-Shops" in VB erstellt wurde. Ich könnte das korrigieren, aber VB scheint immer noch populärer zu sein, als es verdient.

Kann jemand helfen, eine (oder alle) der folgenden Fragen zu beantworten:

  • Vermisse ich etwas bei VB? Ist es einfacher zu lernen oder "freundlicher" als C #? Gibt es Funktionen, die ich nicht kenne?
  • Warum wird VB / VB.net gerade in Webprojekten heute so häufig eingesetzt?
aaaidan
quelle
4
Woher wissen Sie, mit welchen kommerziellen Microsoft-Websites sie erstellt wurden?
Samjudson
30
"Warum wird VB / VB.net heutzutage so häufig verwendet?" Dies ist ein bisschen wie die Frage "Warum werden Maultiere / Lastwagen heutzutage im Transportwesen so häufig verwendet?"
Daniel Daranas
2
Nur für die Nachwelt stehe ich (verlegen) korrigiert. VB hat eine Community von sehr loyalen Nutzern, die sehr viel aussagt.
5
Diese Frage sollte gestrichen werden.
25
Löschen Sie diese Frage nicht. Es ist schlecht und voreingenommen und subjektiv, aber es kommt ziemlich oft vor und kann als Referenz dienen.
Konrad Rudolph

Antworten:

47

Mit VB können GUIs (ausgesprochen gooey) zum Verfolgen von IP-Adressen verwendet werden. Dies wird häufig zur Aufklärung von Straftaten verwendet .

Rick J
quelle
4
Wow. Gerade. Wow. Das hat meinen Tag einfach total genial gemacht.
1
omg wow ... omg wow.
2
Ich werde CSI nie wieder so sehen.
Robert Harvey
3
Hereinzoomen ....... ok verbessern.
42

Ich denke, das hängt davon ab, woher du kommst. Wenn ich als Programmierer anfange, denke ich, dass VB möglicherweise leichter zu lesen ist als C #, da es sich mehr auf Wörter als auf Symbole stützt, was es für normale Leute einfacher macht, es zu verstehen.

Ich war viele Jahre lang ein VB-Programmierer, und als .NET kam, arbeitete ich in den ersten Jahren immer noch in VB.NET (das mit C # nicht wirklich stimmte). Jetzt habe ich ein paar Jahre C # hinter mir und finde manchmal, dass das "Dekodieren" von VB.NET-Code etwas länger dauert als von C #. Möglicherweise, weil es bei einigen Konstruktionen mehr auf Wörtern als auf Symbolen beruht ...

Fredrik Mörk
quelle
5
Sie beschreiben meine Situation genau so gut.
6
Gleiches gilt hier - VB.NET-Code ist voller "Rauschen", wenn Sie ihn aus der C-Syntaxperspektive betrachten. Keine Beleidigung für VB-Entwickler. So wie es sich anfühlt, wenn Sie von C # zu VB wechseln.
2
Ich bin einverstanden, ich kann VB.NET nicht ausstehen - die Syntax ist wie eine Geschichte ... und ja, ich musste sie monatelang ständig verwenden, es hat mich verrückt gemacht, ich liebe C # -Syntax.
Dal
2
C # -Programmierer sind keine normalen Leute?
Rightfold
@rightfold Nein. VB.net-Programmierer sind auch nicht normal. VB.net-Programmierer sind fantastischer als normale Leute und für C # ... kein Kommentar. = D VB.net REGELN !!!!!!!
Anonymous Penguin
27

Unten habe ich gerade meine Antwort in einen anderen Thread kopiert :

Ich entwickle sowohl in VB als auch in C # regelmäßig. Der Großteil meines Geldverdienens war mit C # verbunden. Persönlich bevorzuge ich VB für die meisten (aber nicht alle… Lambdas!) Arbeiten. Abgesehen von den von Jon skizzierten Vorteilen kann ich wirklich keine harten Vorteile nennen. Eigentlich hat Herfried ein paar auf seiner Website gesammelt, aber sie sind eher technisch.

Was mich an allen C-bezogenen Sprachen wirklich nervt, ist die blöde Syntax. Das ist rein kulturell, aber als jemand, der den größten Teil seiner beruflichen Arbeit in C ++ leistet und sich darin auskennt, hasse ich die Syntax immer noch absolut. Und nicht nur C ++ 'süße kleine Macken. Nein, das ganze Paket. Warum Hosenträger? Warum Semikolons (vielleicht die dümmste Entscheidung in der gesamten Programmgeschichte)? Warum die blöde C-Cast-Syntax? Warum gibt es keine für Variablendeklaration Schlüsselwort (eigentlich das ist die dümmste Entscheidung)?

Es gibt einfach so viele Dinge, die mich wirklich traurig und wütend machen. VB ist kein Heiliger, seine Sprache hat große Nachteile. Aber nichts im Vergleich zu dem, was ich oben gesagt habe.

Mir ist klar, dass die meisten dieser Aussagen einer Begründung bedürfen, aber ich mache geltend, dass dies nur deshalb geschieht, weil wir uns so an sie gewöhnt haben. Außerdem ist hier nicht der richtige Ort. Es genügt zu sagen, dass die Syntax von C #, obwohl sie der Hauptvorteil gegenüber VB ist, auch der Hauptnachteil ist.

Ich bevorzuge VB nicht wegen des MyNamespaces, ich bevorzuge es nicht wegen XML-Literalen, ich bevorzuge es nicht wegen schwacher Typisierung, ich bevorzuge es nicht wegen optionaler Parameter oder wegen der viel besseren switchAussage. Nein, ich bevorzuge es wegen der Syntax.


Das heißt, ich muss zugeben, dass VB durch seine Syntax immer mehr belastet wird. Der neueste Hype sind scheinbar mit Lambda-Funktionen parametrisierte Linq-Abfragen, und ich gebe gerne zu, dass dies viele Dinge einfacher macht. Leider ist die VB-Syntax für Lambdas einfach zu umständlich, um mit C # zu konkurrieren. Denken Sie nur daran, wie aufgebläht ein Aufruf von Parallel.Forin VB aussieht - im Vergleich zu C #, wo er natürlich aussieht. Meiner Meinung nach ist das VB-Designteam hier in die falsche Richtung gegangen und hat die konservative Konsistenz der Lesbarkeit vorgezogen.


Um Ihre subjektive Anschuldigung zu beantworten:

Visual Basic erscheint mir unbeholfen, hässlich, fehleranfällig und schwer lesbar.

Sie haben mit Sicherheit das Recht zu denken, aber wie Marc weiter unten gesagt hat, werden Sie es schwierig finden, dies objektiv zu argumentieren. Ich kann definitiv eine Reihe von C-Syntaxelementen anführen, die objektiv fehleranfälliger sind als alles, was in VB existiert. Tatsächlich wurde die VB-Syntax entwickelt, um solche Situationen explizit zu verhindern.

"Unbeholfen, hässlich ... und schwer zu lesen" sind alles Qualifikationsmerkmale, die auf fast alle Sprachen angewendet werden können, mit denen Sie nicht vertraut sind. Einfach ausgedrückt: Die Hässlichkeit ist eine direkte Folge Ihrer Unkenntnis der Sprache.

Wenn Sie eine Sprache gut kennen, müssen Sie Muster im Code erkennen. Gut geschriebener Code wird durch Übung elegant erscheinen, während schlechter (langsamer, fehleranfälliger) Code hässlich erscheint. So einfach ist das.


Eine letzte Bemerkung: Die von Ihnen zitierten Artikel enthalten mehrere Ungenauigkeiten und veraltete Informationen. Als alleinige Rechtfertigung für eine höchst subjektive und emotionale Diskussion sind sie nicht sehr gut geeignet.

Konrad Rudolph
quelle
4
Blake: Ja, volle Punkte für Ruby. Endlich eine Sprache, die es richtig macht. Python punktet auch bei mir. Trotzdem bin ich mit allen vorhandenen Syntaxen teilweise unzufrieden.
Konrad Rudolph
2
Ruby ist zum Kotzen: P ... nun da ich das nicht im Weg habe ... der wahre Grund für die großen Syntaxunterschiede zwischen den Schlüsselwörtern, die in geschweiften Klammern stehen, liegt in der Leichtigkeit, den Parser zu schreiben. Früher war ich ein großer Fan von VB (BASIC im Allgemeinen), aber seitdem ich zu C #
gewechselt
4
Warum Hosenträger? Weil sie bei richtiger Verwendung einen Codeblock optisch abgrenzen. Ja, ich erkenne, dass Einrückungen in VB dies auch tun, aber geschweifte Klammern tun dies mit größerer Klarheit, IMO. Semikolons erleichtern dem Compiler die Arbeit (fragen Sie hierzu einfach das VB-Compiler-Team). Casting in C # finde ich sehr intuitiv und kompakt. Und es gibt ein Schlüsselwort für die Variablendeklaration:var
Robert Harvey
1
@ Robert Harvey: 1) VB verwendet Schlüsselwörter, um Blöcke zu kennzeichnen, nicht Einrückungen. Soviel zur Klarheit. 2) In Bezug auf das Casting hat C ++ das Casting im C-Stil vor langer Zeit zu Recht abgelehnt, weil es zu unauffällig ist ( keine gute Sache; ein Casting sollte hervorstechen, da es eine geänderte Semantik und potenzielle Schwächen der Typverwendung einführt). 3) Nein. Ich meinte einen syntaktischen Hinweis vor jeder Deklaration. var int xkommt in den Sinn. Alle anderen Anweisungen und Blöcke werden mit speziellen Schlüsselwörtern eingeleitet. Warum nicht Deklarationen von Variablen und Methoden? Pfui. Inkonsistent und hässlich.
Konrad Rudolph
4
@Konrad: Ich gebe zu, es war anfangs etwas gewöhnungsbedürftig. Ein Teil des philosophischen Unterschieds könnte sein, dass ich meine Programmiersprache nicht mehr als eine Variante des Englischen betrachte, wie ich es getan habe, als ich in VB programmiert habe. Der Wechsel zu C # hat die Programmiersprache, die ich verwende, etwas symbolischer (und prägnanter) gemacht, ohne zu undurchsichtig zu sein. Diese Symbolik hat mir die geistige Freiheit gegeben, konzeptioneller über Dinge wie Objektorientierung, Nachrichtenübermittlung und Lambdas nachzudenken.
Robert Harvey
15

Visual Basic erscheint mir unbeholfen, hässlich, fehleranfällig und schwer lesbar.

Englisch erscheint mir ungeschickt, hässlich, fehleranfällig und schwer lesbar, insbesondere wenn es von Menschen geschrieben wird, die schlechte Grammatik, schlechte Rechtschreibung, rücksichtslose Missachtung von Groß- und Kleinschreibung und keine Ahnung haben, wie sie ihre Gedanken räumlich und mental organisieren sollen.

Es ist nicht nur so, dass Visual Basic aufgrund der Syntax der Sprache schwer lesbar oder ungeschickt ist, sondern normalerweise auch, weil der Programmierer nicht wirklich gut darin ist, seine eigenen Gedanken auszudrücken:

If blah = 10 Then If stuff = "foo" Then t = 1 + k: s = 42: dostuff21

Richtig, das ist schrecklich. Aber es ist auch nicht besonders schwierig, schrecklichen Code in anderen Sprachen zu schreiben. Wenn es richtig geschrieben ist, ist es sehr sinnvoll, auch wenn der Code in VB geschrieben ist:

If SelectedType = 10 And UserName = "Foo" Then
    CurrentUsers = CurrentUsers + 1
    UserConnectionID = 42
    PerformUserOperation
End If

Zumindest ist das lesbarer und verständlicher. Es ist immer noch BASIC. Es kommt wirklich auf die Fähigkeit des Programmierers an, seine Absichten klar auszudrücken, indem er den Code auf leicht lesbare Weise formatiert, gut benannte Bezeichner verwendet und darauf achtet, verständlichen Code zu schreiben.

Das heißt, ich habe Visual Basic seit den VB3-Tagen nicht mehr sehr berührt (daher das Beispiel mit "alter" Syntax), aber nur, weil eine Sprache missbraucht werden kann, heißt das nicht, dass sie nicht richtig verwendet werden kann, um ziemlich robusten Code zu schreiben . Sicher, es mag einige Mängel geben, aber Ansätze, die entwickelt wurden, um diese Probleme zu umgehen, zeigen auch, dass ein Programmierer mehr kann als ein anderer.

(Ungewolltes Sprühen ist On Error Resume Nexteine weniger gute Methode, um die Mängel des Mangels an Ausnahmen in VB aus der Zeit vor .NET zu umgehen.)

coobird
quelle
13

Die meisten Ihrer Argumente gegen VB gelten nur für VB-Classic (zweiter Link) oder basieren auf schwachen oder veralteten Argumenten

  • Selbst in VBC wird GoSub nicht verwendet ... Return usw.
  • Was ist los mit static? C ++ unterstützt dies ebenfalls.
  • VB10 führt implizite Zeilenfortsetzung ein (Sie benötigen nicht einmal redundante Semikola wie C #)
  • Die verschiedenen Cast-Funktionen gibt es auch in C ++ und C #. C # (object)(expr)-Cast-Syntax und object as typesind noch verwirrender und inkonsistenter.
  • Was ist schlecht daran with? Sie können geschachtelte Baumstrukturen auf eine sehr intuitive Weise erstellen, die in C # nicht möglich ist.
  • Die Ereignisbehandlung in VB ist wesentlich eleganter als in C #. Sie können Ereignisse über ein einzelnes Schlüsselwort ( WithEvents) einführen und verarbeiten, ohne Delegaten, Event-Handler-Prozesse usw. initialisieren zu müssen. Dies macht die GUI-Programmierung in VB wesentlich komfortabler und Sie müssen keinen Event-Code durch den Designer generieren .
  • Optionale Parameter werden in das neue C # eingeführt - daher scheinen sie gut zu sein.
  • VB.NET hat sowohl strenge als auch shortcut-boolesche Operatoren.
  • Sie haben überprüfen auf Syntaxfehler bei der Kompilierung , wenn Sie VB wie ein Skript-Sprache ausgeführt.
  • End Ifist hilfreicher als nur }. Bei komplexen syntaktischen Strukturen sind alle geschweiften Klammern nur verwirrend, wohingegen ein Beton End ...Ihnen hilft, festzustellen, welcher Block noch nicht geschlossen wurde.
  • XML-Literale - XML-Skripte sind jetzt Teil des Codes und werden von Intellisense vollständig unterstützt.

Insgesamt gibt es abgesehen von der Syntax nur wenige objektive Unterschiede zwischen VB.NET und C #. EG: GUI-Design ist in VB aufgrund eines besseren Ereignissystems und einer besseren IDE viel effizienter, wohingegen z. B. Algorithmen in C # besser ausgedrückt werden können, weil die Syntax präziser ist.

Der Rest ist nur eine Frage Ihres persönlichen Stils. C-Style-Programmierer fühlen sich wohl mit C #, VB (oder vielleicht Pascal?) - Style-Programmierer verwenden VB.

Die wortbasierte, explizitere VB-Syntax ist für Anfänger möglicherweise besser lesbar als alle Symbole in C. Vergleichen Sie:

If (a < 15) Xor (b = 2) And Not Condition Then

zu

if ((a < 15) ^ (b == 2) && !Condition())

Das heißt nicht, dass eine Sprache besser ist als eine andere.

Bearbeiten: -----------------------------------------

Zu dem Argument wäre VB fehleranfällig. Wenn Sie es verwenden, ist Option Strict Ones so streng wie C #, erlaubt uns jedoch nicht, solche Fehler zu machen:

// VB would initialize with zero (C/C++ doesn't)
int countZeros;
// No confusion with loop bounds with For x = 1 To Length
for (int i = 1; i <= length; i++) {
    // Never confusing == with = 
    if (data[i] = 0) 
        countZeros++;
}
Dario
quelle
1
C # würde einen Kompilierungsfehler ergeben, wenn countZeros (im lokalen Bereich) nicht initialisiert und data [i] in der if-Anweisung ein Wert zugewiesen wird. Ich weiß, dass Sie in Ihrem Kommentar auf c / c ++ verwiesen haben, aber ich glaube, das OP hat VB mit C # verglichen :)
1
Meiner Meinung nach schlägt VB10 C # 10!
Shimmy
Ich mag alle Sprachen: LISP, C, VB, PHP, Sie nennen es.
Systemovich
+1 und ich würde hinzufügen, dass die Switch-Anweisung von VB nicht nutzlos ist wie die von C #.
Joel Brown
12

In der Vergangenheit war die VB-Entwicklungsumgebung eine schnelle und effektive Möglichkeit, bestimmte Arten von Anwendungen (z. B. GUI-Apps) zu erstellen. Das führte dazu, dass es eine sehr beliebte Wahl war. Ich denke, VB war in seiner Blütezeit die am häufigsten verwendete Sprache (zB VB6).

Bei dieser Art von installierter Basis ist es nicht verwunderlich, dass immer noch viel Arbeit darin steckt.

dommer
quelle
2
+1 afaics VB6 und insbesondere die VS IDE stellten eine (sehr) niedrige Eintrittsbarriere dar, die eine Generation neuer Codierer mit all den darin enthaltenen Problemen und Möglichkeiten
7

Alles begann, bevor es C # gab

Im Jahr 1999 hatten wir Visual Studio 5/6. Wenn Sie ein unabhängiger Softwareanbieter oder ein Unternehmen waren, das Windows verwendet, und eine Anwendung benötigen, mit der beispielsweise die für Projekte aufgewendete Zeit eines Mitarbeiters erfasst werden kann, haben Sie folgende Möglichkeiten:

  1. Formulare in Visual Basic.
  2. MFC, ATL oder Win32 in Visual C ++.
  3. Formulare in Access 97/2000.
  4. ASP-Website.
  5. Java-Applet.

Zu diesem Zeitpunkt befanden wir uns kurz vor dem Platzen der Dot-Com-Blase, und jeder, der mit (4) oder (5) gut zurechtkam, ging daran, Aktienoptionen bei der jeweils für ihn interessanten Dot-Com auszuhandeln.

(3) hatte Probleme mit dem Sperren und der allgemeinen Skalierbarkeit, aber ich sah eine Menge von Access-gesteuerten Lösungen, mit denen Support-Funktionen nach Bedarf ausgeführt werden konnten.

Das lässt uns also mit VB und VC ++:

Der Formulareditor in VB war zu dieser Zeit hervorragend für die Produktivität. Sie können Ihre Komponenten per Drag & Drop verschieben - nicht nur Schaltflächen, Beschriftungen und Textfelder, sondern auch die vollständige Toolbox für OLE-Steuerelemente mit wiederverwendbaren Komponenten wie intelligenten Rastern, Excel-Tabellen oder IE-Instanzen. Die Verkabelung wurde hinter den Kulissen durchgeführt - alles war objektähnlich und Sie doppelklicken einfach auf Dinge, um Event-Handler hinzuzufügen. Dies war in Visual C ++ sehr viel schwieriger. Als Mitglied des Visual Studio-Entwicklersupportteams zu dieser Zeit kann ich mich noch daran erinnern, wie es bei Visual Basic-Supportanrufen hauptsächlich darum ging, welche Komponente am besten zu verwenden war oder wie ihre Anwendung auf bestimmte Weise optimiert werden konnte. Es war so gut wie nie "wie erstelle ich eine Anwendung mit X-, Y- und Z-Benutzeroberflächenfunktionen".

Das Erstellen einer umfangreichen Benutzeroberfläche in Visual C ++ war eine andere Herausforderung. Obwohl Visual Editor-Unterstützung für Dialoge und SDI / MDI-Formulare vorhanden war, war diese ziemlich begrenzt. Die Unterstützung für das Einbetten von OLE-Steuerelementen (ActiveX) in MFC oder Win32 war eine schwarze Kunst, wenn auch in ATL etwas einfacher. Einfache Dinge wie das Ändern der Größe von Ereignissen oder das Zeichnen von Eigentümern waren ziemlich schmerzhaft, geschweige denn die Verbindungspunkte, die für benutzerdefinierte Ereignisse in Komponenten erforderlich sind.

Ja, VC ++ hatte die Ausführungsgeschwindigkeit, die Debug-Fähigkeit und flexible Frameworks / Bibliotheken / UI-Optionen, aber die IDE-Unterstützung konnte nicht all diesen Grund abdecken, sodass die häufigsten Vorgänge mit Assistenten, umfassenden MFC-Klassenhierarchien und 90-tägigen Funktionen angegangen wurden / 2-free-Incidents-Supportlinien.

IIRC, der mit VB gelieferte Anwendungspaketierer, kann Ihre App, die VB-Laufzeit und die neuesten DLLs für allgemeine Steuerelemente packen und Ihnen ein eigenständiges EXE-Installationsprogramm bereitstellen, das Sie auf eine CD kopieren und an Kunden senden können. Nichts davon 'welche msvcrtXX.dll und mfcxx.dll haben Sie installiert?', Was die MFC-Entwickler plagte.

Aus Gründen der Markteinführung und der umfangreichen Benutzeroberfläche hat VB eine sehr große Fangemeinde.

Als Visual J ++ und Visual Interdev in VS6 eintrafen, war klar, dass die Visual Basic-IDE einen Kampf gegen Visual C ++ gewonnen hatte, was meiner Meinung nach fair war. Es war überhaupt keine Überraschung, dass Visual Studio .NET einen VB-ähnlichen Formulareditor für die neue COOL C # -Sprache hatte.

Die neue Java / C / C ++ - ähnliche Sprache, gepaart mit dem UI-Designer, der den VB-Leuten die ganze Zeit Spaß gemacht hat, bot einen neuen Migrationspfad für die C ++ - Leute, die jetzt mit MFC / ATL / Win32 fertig waren. Für die VB 3/4/5/6 Leute, die den Mangel an 100% Abwärtskompatibilität in VB.net nicht mochten, bot dies die Möglichkeit, eine neue Sprache in einer vertrauten Umgebung zu lernen.


Die Gründe, warum VB ein so umfassendes Produkt war, haben wahrscheinlich etwas mit den Ursprüngen von Microsoft zu tun, wobei Basic das Flaggschiff unter den Entwicklerprodukten ist, aber ich habe derzeit keine Zitate.

JBRWilkinson
quelle
6

Wie hässlich eine Sprache auch sein mag, die Gründe, sich daran zu halten, sind in der Regel: Es ist sehr teuer, eine riesige Codebasis zu verschrotten, und die Tatsache, dass die Entwickler die Sprache bereits kennen, macht sie billiger als andere Sprachen.

Brian Rasmussen
quelle
6

VB.NET ist einfacher zu erlernen, Sie haben Recht und meiner Meinung nach ist es insgesamt einfacher als C #. Es ist der erste Punkt, warum VB so beliebt ist. Ein weiterer und meiner Meinung nach größter Punkt ist, dass es eine große Anzahl von Entwicklern gibt, die mit VB 6 und älteren Versionen dieser Sprache gearbeitet haben. Für sie ist es einfacher, Anwendungen mit VB.net zu entwickeln, als eine neue Sprache zu lernen.

iburlakov
quelle
6

Wie andere gesagt haben, hängt Ihre ästhetische Beurteilung der Sprachsyntax stark von dem ab, was Sie zuvor wussten. Seit mehr als einem Jahrzehnt scheint es sich um einen C-ähnlichen Wettbewerb zu handeln, mit geschweiften Klammern für "Blöcke", "->" für Indirektion (Perl, PHP), Klammern für Funktionsaufrufargumente, // für Kommentare und ein Semikolon an jedem Zeilenende. Einige Leute dachten sogar, dass man dank dieser „einzigartigen Pensée“ alle kennt, wenn man eine Sprache beherrscht, was in der Tat lächerlich ist. Dies brachte die Idee bei den C ++ / Java-Anwendern auf, dass dies die einzig richtige Syntaxästhetik ist und alles andere versucht, COBOL zu klonen.

Vor ein paar Jahren bin ich zu Ruby und jetzt zu Python gewechselt, und ich kann keine hässlichen Semikolons, geschweiften Klammern und andere nichtssagende Zeichen mehr ausstehen. Der Quellcode soll von Menschen gelesen werden. Als ich Visual Studio ausprobierte, entschied ich mich für VB gegenüber C #. Ich vermute, einige Programmierer haben sich für C # entschieden, um mit seiner Java-ähnlichen Syntax nur "ernsthaft auszusehen", aber es gibt genau dieselben Funktionen ... gib deinen Augen eine Pause.

Vincent
quelle
4

Nun, wenn Sie über .NET sprechen, gibt es eine wirklich einfache, die ich mir vorstellen kann:

Der VB.NET-Editor in Visual Studio kann Syntaxfehler viel besser erkennen als C #.

Obwohl der C # -Editor in VS2008 SP1 eine enorme Verbesserung erfahren hat, gibt es immer noch einige Syntaxfehler, die der Editor erst beim Versuch, das Programm zu kompilieren, entdeckt.

Powerlord
quelle
Genau diese Hintergrundkompilierung hat die Bearbeitung großer VB-Projekte in VS2005 sehr, sehr langsam gemacht. In jedem Fall ist das, was ReSharper ist;)
Lucas
Es ist nicht nur die Hintergrundkompilierung, sondern die Tools zur automatischen Formatierung und Codebereinigung beheben viele Probleme, bevor Sie den Block verlassen, um die Kompilierung auszulösen. Dies ist eine enorme Zeitersparnis in vb im Vergleich zu c #
Bill
4

Ein Großteil der Popularität von VB entstand in einer Zeit, in der die Werkzeuge von VB viel benutzerfreundlicher waren als andere verfügbare Sprachen. Das "klassische" VB bot eine einfache Möglichkeit, Windows-Anwendungen zu erstellen, ohne die Eingeweide der Win32-API kennenzulernen oder sich mit der manuellen Speicherverwaltung zu beschäftigen. Die Eintrittsbarriere für Programmieranfänger war bei VB viel niedriger als bei C ++, daher haben sich viele Leute mit VB die Zähne geschnitten.

Heutzutage denke ich, dass VB einen Vorteil gegenüber C # in der Vertrautheit derjenigen liegt, die im Laufe der Jahre mit VB gearbeitet haben. Ein weiterer Vorteil ist, dass VB-Code aufgrund der Tendenz zur Verwendung von Schlüsselwörtern anstelle von Interpunktionssymbolen einfach zu lesen ist. Als jemand, der in VB, Java, C, C # und Python arbeitet, finde ich, dass VB die einfachste Sprache ist, in die ich zurückspringen kann, wenn ich Code überprüfe, den ich vor Jahren geschrieben habe. Die Syntax ist ausführlicher, was das Lesen von Code oft erleichtert, und Visual Studio hat die Formatierung von VB-Code bei der Eingabe immer sehr gut aufgeräumt, sodass der Code konsistent formatiert wird (unabhängig von der Schlamperei des Autors).

Als Randnotiz finde ich, dass Python aus ähnlichen Gründen extrem einfach zu lesen und zu überprüfen ist. In Python wird die Formatierung des Codes vom Interpreter und nicht von der IDE erzwungen, das Endergebnis ist jedoch dasselbe. Python bevorzugt auch Stichwörter zur Zeichensetzung, wenn auch wohl weniger als VB.

gbc
quelle
3

Es ist schwer zu behaupten, dass es mehr oder weniger "fehleranfällig" ist als jede andere Sprache. Ich bezweifle auch den Punkt bezüglich "der überwiegenden Mehrheit der kommerziellen MS-Websites". Wie ich gesehen habe, übernimmt C # bei weitem die Führung für die .NET-Entwicklung (wobei .NET das Flaggschiff im MS-Stack für Dinge ist, die keine Gerätetreiber usw. sind).

Marc Gravell
quelle
3

Ein Vorteil von VB.NET gegenüber C # (das mit C # 4 verschwindet) sind die Standard- und Named-Parameter, die bei der Verwendung von VSTO sehr nützlich sind.

Blake Pettersson
quelle
Und im Übrigen "dynamisch" - gibt C # etwas, das mit der bestehenden Spät- / Versandbindung von VB vergleichbar ist.
Marc Gravell
1
Dieser sogenannte Vorteil war für mich schon immer problematisch. Ich habe gelesen, dass C # Überladungen aufweist, die sicherer sind, um dasselbe praktische Ergebnis zu erzielen.
2
Der Nachteil von Überladungen ist, dass sie schwieriger und verwirrender zu warten sind, wenn Sie lediglich einige Standardwerte festlegen möchten. Es kann zu komplexen Ketten von Überladungen kommen, die der Compiler in verschachtelte Methodenaufrufe einsetzt, anstatt vom Compiler direkt in die Methode aufgelöst zu werden.
Matthew Whited
3

VB / VB.NET gehört zur Kategorie RAD (Rapid Application Development). Sie können Anwendungen mit nur Drag-Drop-Steuerelementen aus der Toolbox und weniger Code entwickeln.

NinethSense
quelle
Sie könnten das Gleiche über die ASP.net + C # -Kombination sagen, nein?
Ja, die meisten Visual Studio-basierten Sprachen sprechen das.
Nun, im Alter von VB (nicht .net) gab es kein C # usw. Also war VB das einzig TOLLE zu dieser Zeit. Spätere VB-Benutzer migrierten zu VB.NET. VB <> VB.NET trotzdem.
3

Nun, ich denke, Sie müssen zwischen klassischem VB und VB.NET unterscheiden.

Ich bin der Meinung, dass VB.NET nicht sehr beliebt ist, aber Visual Basic "Classic" immer noch 1 ist. Der Grund dafür ist, dass es SEHR einfach ist, eine Windows-App zu erstellen. Vergleichen Sie dies mit einer Windows-App in C ++ / Mfc, die zu diesem Zeitpunkt fast die einzige Alternative war.

Aus dem gleichen Grund war Delphi einst sehr beliebt.

PhpFlashGuy
quelle
Ich stimme zu, dass VB.net nicht so populär ist wie klassisches VB. Einige Entwickler, die ihre Codebasis nicht nach VB.net migrieren konnten, sind möglicherweise stattdessen nach C # übergelaufen.
JBRWilkinson
3

VB ist sehr ausführlich und gewöhnungsbedürftig im Vergleich zu C #, bei dem zwischen Groß- und Kleinschreibung unterschieden wird. Für einen Anfänger ist es der beste Ausgangspunkt.

chugh97
quelle
3

Um ein paar zu nennen:

  • Benutzerfreundlichkeit
  • vertrauter Name (Basic war eine der ersten populären Computer-Programmiersprachen)
  • Unterschätzen Sie nicht Microsoft Marketing
Toon Krijthe
quelle
3

Ich denke, ein Teil des Grundes ist, dass alte ASP-Programmierer, die wie ich in .NET arbeiten, bereits sehr vertraut mit VB sind, da VB-Skript die Sprache ist, die zum größten Teil als ASP-Klassiker verwendet wird. Ich fand es weniger zeitaufwendig, in VB in .NET zu schreiben, da ich bereits wusste, wie man VB spricht. VB ist auch weniger ein Heulsuse als C #. Ich kann sowohl lesen als auch schreiben, aber ich bevorzuge VB, weil es einfach ist, sich mit VB anzufreunden, wenn Sie ein neuer Programmierer sind.

Eric
quelle
2

Ich arbeite in einer Umgebung, in der wir beide verwenden. Wir haben zu C # zugunsten von klassischem ASP und VB gewechselt. Meiner Meinung nach gibt es keine Deal Breaker zwischen den Sprachen. Bei den meisten Projekten können Sie mit beiden Sprachen die gleiche Arbeit leisten. Jetzt teile ich Ihre Ansicht über fehleranfällige und ich finde auch, dass VB überladen ist (ohne Grund).

Wie bereits erwähnt, ist VB sehr einfach und historisch gesehen können Sie Projekte sehr schnell erstellen. Das lebte in der Webentwicklung (die sich schnell entwickelt) weiter, aber ich denke, wenn die Leute erkennen, dass C # genauso schnell entwickelt ist, wird VB ausgeblendet. Ein weiterer Grund, weshalb ich denke, dass alles, was Sie sonst noch eingeben (CSS, JavaScript), wenn Sie Webanwendungen erstellen, eher nach C # als nach VB aussieht. Daher ist die Verwendung von C # auch für Anfänger sinnvoll.

Miccet
quelle
2

Ich persönlich mag die Art und Weise, wie Ereignisse in vb.net mit dem Schlüsselwort 'handle' verknüpft werden ... Die IDE / Visual Studio / reagiert auch besser auf VB und verarbeitet die meisten End-Ifs und dergleichen automatisch ... C # ist natürlich viel präziser und sauberer (IMHO, ich habe ziemlich viel mit beiden gearbeitet)

Petar Kabashki
quelle
Ich bevorzuge es, Events selbst zu abonnieren, nicht alle magischen Dinge hinter den Kulissen, die mit "Handles" und dem VS-Designer zu tun haben.
Lucas
2

Ab dem 4.0-Framework gibt es nur eine kleine Handvoll Dinge, die VB im Vergleich zu C # fehlt, und das Gegenteil ist auch der Fall. Nämlich:

  1. Das Bemerkenswerteste ist, dass VB.NET das YieldSchlüsselwort nicht hat , aber es kommt bald zu VB.NET mit dem neuen asynchronen Framework.
  2. Es gibt kein unsafeSchlüsselwort. Ich habe es nie für notwendig gehalten, aber es gibt sicherlich einige Leute, die es getan haben.
  3. Es gibt keine mehrzeiligen Zeichenfolgen. Mehrzeilige Zeichenfolgen werden mithilfe von + (oder den Legacy- &) Operatoren zeilenübergreifend erstellt. Oder sie können durch die Verwendung der XML Literalsyntax erreicht werden: Dim s = <s>My string... multiple lines...</s>.Value. Es ist nicht schön, aber wenn Sie nicht wählerisch sind und wirklich mehrzeilige Zeichenfolgen möchten, funktioniert es. Und Sie können damit eine Zeichenketteninterpolation durchführen, indem Sie eine <%= myVar %>Syntax verwenden, die gut ist.
  4. Es gibt kein Äquivalent mit variablem Geltungsbereich von dynamic. Dynamische Variablen gibt es in VB schon lange Option Compare Off, aber das ist dateibezogen, daher ist es nicht so gut wie, dynamicweil dynamicder Gültigkeitsbereich nur auf die so deklarierte Variable beschränkt ist.
  5. VB fehlt eine knappe Lambda-Syntax. Lambdas sind da, aber du musst Function(x)oder benutzen Sub(x).

Einige Funktionen von VB.NET, die C # nicht bietet:

  1. XML-Literale, die für alle Arten von Dingen nützlich sind, nicht nur für XML.
  2. Groß- und Kleinschreibung in einer Sprache ist das Miau der Katze. Nicht viele andere Sprachen erlauben dies, aber was für einen Unterschied macht es in der Geschwindigkeit der Codierung aus, dass Sie beim Tippen niemals die Umschalttaste drücken müssen und Ihren Code einfach so automatisch formatieren, wie Sie es möchten.
  3. Die häufig unnötige SelectKlausel kann in Linq-Abfragen weggelassen werden.
  4. Das NothingSchlüsselwort ist viel nützlicher, als nulldass alles (auch Werttypen) festgelegt werden kann Nothingund Sie die Standardeinstellung erhalten. Das defaultSchlüsselwort ist nicht erforderlich .
  5. VB.NET wird ständig in Visual Studio kompiliert, sodass Fehler sofort angezeigt werden. Kein Treffer bei STRG-UMSCHALT-B den ganzen Tag wie in C #.

In meinem Shop wird MVC3 mit Razor unter Verwendung von VB.NET ausgeführt. Sobald Sie die (meist unbegründeten) Vorurteile überwunden haben, ist es eine sehr schöne Sprache. Es ist nicht wirklich ausführlicher als C #, wie viele behaupten (mit Ausnahme von Lambdas), und es ist so ziemlich Feature-für-Feature-parallel zu C #. Ich habe herausgefunden, dass die meisten Leute, die Hasser sind, in modernem VB.NET für längere Zeit nicht wirklich programmiert haben.

mattmc3
quelle
VB.NET ist mir zu ausführlich. Sie müssen eine Menge Code manuell ausdrucken, und ReSharper hilft eigentlich nicht. Ich habe bereits seit 3 ​​Jahren in C # / VB.NET in paraller programmiert.
Hedin
VB ist aufgrund der längeren Schlüsselwörter in der Tat horizontal ausführlich. Obwohl Sie sie nicht oft eingeben, weil die IDE sie für Sie einfügt. Aber IMHO C # ist aufgrund der geschweiften Klammern oft vertikal wortreich. Einige weitere Vorteile von VB: Vermeiden Sie es, über den Klammerstil zu diskutieren, da es in VB nur einen Stil gibt. (die Zunge geht in die Wange) Vermeiden Sie die Entwicklung eines übermäßig muskulösen rechten kleinen Fingers durch endloses Tippen von Semikolon und Klammerboiler.
MarkJ
1
@MarkJ: Ich finde es interessant, wie C # -Ansprecher kritisieren AndAlso[ ungeachtet dessen, dass es , wenn gesprochen, kürzer als "doppeltes kaufmännisches Und" ist], ignoriere aber die Tatsache, dass a If-Then/Else/EndIfdrei Zeilen plus die kontrollierten Anweisungen benötigt, während das C # -Äquivalent mindestens vier Zeilen benötigt und möglicherweise sechs, abhängig von geschweiften Konventionen, es sei denn, man schreibt } else {als einzelne Zeile.
Supercat