Sharp vs. Basic

Aus aktuellem Anlass gibt es heute ein paar programmiertechnische Überlegungen. Wer sich dafür nicht interessiert – bitte nicht weiterlesen ... es wird sonst unglaublich langweilig.

 

Ich hatte vor einiger Zeit mal etwas über Programmiersprachen geschrieben. Darüber, dass sie alle, ausnahmslos den gleichen Grundstrukturen folgen und sich nur in syntaktischen Grundlagen unterscheiden. Bei der einen Programmiersprache heißt die Fallunterscheidung ´Select´ bei der anderen ´Switch´. Die eine Programmiersprache deklariert die Variable für eine Fließkommazahl als ´float´, die andere als ´double´. Die eine Programmiersprache verlangt eine Typisierung aller Variablen – die andere kommt ohne aus. Die syntaktischen Grundkonzepte haben meist Vor- und Nachteile.

 

Ich unterscheide die Sprachen immer nach einem besonderen Merkmal. Und es ist mehr als stimmig und auffällig, dass diese syntaktischen Konzepte beinahe der gleichen Unterscheidung folgen. Muss für den Compiler die Sprache in geklammerten Blöcken vorliegen oder nicht?

 

Meiner Meinung nach sind diese Klammerungen ein Relikt aus vergangenen Zeiten. Als die Compiler noch nicht wussten, wo eine logische Struktur endet und die nächste aufhört. Statt eines Zeilenumbruches wurde ein Semikolon zur Mitteilung, wann eine Anweisung zu Ende ist. Und es ist alte, sehr alte Gewohnheit von mir, ein ´Basic´, was diese Notwendigkeit nicht kennt, als übersichtlicher und einfacher anzusehen. Es ist schlicht die Macht der Gewohnheit. Denn längst sind die Klammerungen kein Problem mehr für eine Entwicklungsumgebung. Fehlen Klammern, dann wird dies angezeigt – die Übersichtlichkeit ist auch nur eine Frage der Betrachtung, denn auch ein umfangreicher Visual Basic Code ist nicht unbedingt übersichtlicher. Ab einem gewissen Umfang ist die reine Optik des Codes irrelevant.

 

Damit sind wir auch bei dem eigentlichen Thema dieses Beitrages. Und er richtet sich an alle Programmierer, die vor einer ähnlichen Überlegung stehen: Soll ich von Visual Basic zu C# wechseln? Entscheidet man sich dafür, dann ist das, als würde man vom Rechts- zum Linkshänder werden mit der erschwerenden Einschränkung, dass man im Alltag diesen Wechsel nur bedingt vornehmen kann. Denn der Code, den man für den alltäglichen Gebrauch geschrieben hat existiert nur in Visual Basic. Schlimmer noch: Ist man für Access Datenbanken und Office Add-Ins verantwortlich, dann gibt es zunächst keine Alternative zu VBA, dem doch sehr eingeschränkten Visual Basic.

 

Welche Gründe sprechen aber dennoch langfristig für einen Wechsel? 

 

Der Grund, warum es C# überhaupt gibt

C# wurde von Microsoft entwickelt um den klassischen C Programmierer „abzuholen“. C ist nach wie vor die bedeutendste Programmiersprache. C ist wohl auch eine der ältesten Programmiersprachen und auch nahezu „komplett“. Es gibt bereits unzählige Blaupausen an Algorithmen und Bibliotheken, die sich in C einbinden lassen. Linux basiert im Grunde komplett auf C. Man kann also ganz sicher sagen, dass C Syntax substanziell bedeutend ist. Es wird sicher nicht vorkommen, dass ein C-Programmierer über einen Umstieg zu BASIC nachdenkt. Der umgekehrte Fall aber steckt hinter der Motivation zu C#.

 

C# ist längst nicht mehr neu

Microsoft hat C# im Jahr 2001 eingeführt. Die Sprache ist seitdem nahezu unverändert. Sie wurde lediglich über die Jahre mit vielen neuen Feature bestückt, wie etwa LINQ zur Datenverwaltung oder XML Komponenten, die immer wichtiger werden. C# hat C++ und auch Visual Basic als Standard für jegliche Form der Programmierung von Windows Komponenten abgelöst. Implementierungen, die plattformübergreifend sind, orientieren sich an C#. Und einen ganz entscheidenden Aspekt erkennen wir, wenn wir Jobs bei Monster.de oder Stepstone.de suchen. Programmierer für das .NET Framework werden für C# gesucht – Unternehmen sehen also auch hier die Zukunft.

 

C# ist einfach

Das mag nicht so aussehen, ist aber so. Wer Visual Basic beherrscht, kommt schnell mit C# zurecht. Man wird diszipliniert, alles zu typisieren und muss zunächst viele grundlegende Dinge nachschauen. Aber das ist kein großer Akt. Schließlich weiß ein Programmierer, wonach er sucht. Einen „Streamwriter“ zum Beispiel gibt es auch bei Visual Basic. Ein passenden Beispielcode bei so genialen Portalen wie „Stackoverflow“ zu finden, ist ein Kinderspiel.

Trotz dieser Einfachheit wird die Umstellung natürlich etwas dauern – aber es eröffnen sich enorm viele Möglichkeiten.

 

Das Netz ist voll mit C# Tutorials – C# hat sich etabliert

Viele Seiten Im Internet von Microsoft zeigen für die Komponenten des NET Frameworks Beispiele für C# aber auch für Visual Basic. Geht es aber um tiefgreifende Tutorials, wie man sie in der grandiosen „Microsoft Virtual Academy“ findet (übrigens kostenfrei und gut gemacht), dann sind die Anleitungen für C# deutlich umfangreicher.

Mehr noch – Microsoft ist auch bestrebt, die VBA Entwickler von Office für Visual Studio zu begeistern. Und mit den „Visual Studio Tool for Office (VSTO)“ ergibt sich der ganze .NET Kosmos für den VBA Entwickler – in Visual Basic oder eben auch C#. Wer also nahe an Microsoft Office entwickelt ist nicht mehr länger auf VBA beschränkt und kann einen Umstieg zu C# erwägen.

 

Abschließend ein Beispiel. Die beiden Tabs zeigen einen Programmcode, der in C# und Visual Basic den gleichen Effekt hat. Eine einfache Messagebox, die der User mit einem Klick auf „JA“ oder „NEIN“ schließen kann. Es fällt auf, dass der Code in Visual Basic übersichtlicher und kürzer zu sein scheint. Das ist auch so. Der große Unterschied ist jedoch, dass C# zu Typisierung zwingt. Während ich bei Visual Basic sogar die Variable zur Auswertung gar nicht deklarieren müsste, ist sie in C# die Instanz eines vorgegebenen Objektes. C# erlaubt keine Objekte ohne Typisierung – in Visual Basic kann ich den „Yes“ Button aber sogar einer Integer-Variable zuordnen (DialogResult As Integer). Das ist prinzipiell kein Problem – bei größeren Projekten kann das aber zu einer Schwachstelle werden.


C#

private void button1_Click(object sender, EventArgs e)
        {
            DialogResult dialogResult = MessageBox.Show("Klicken Sie bitte JA oder NEIN", "Title", MessageBoxButtons.YesNo);
            if (dialogResult == DialogResult.Yes) {
                MessageBox.Show("Sie haben JA angeklickt", "Title", MessageBoxButtons.OK);
            }
            else
            {
                MessageBox.Show("Sie haben NEIN angeklickt", "Title", MessageBoxButtons.OK);                
            }            
        }

Visual Basic

Private Sub Button1_Click()

    Dim DialogResult As Integer
    
    DialogResult = MsgBox("Klicken Sie bitte JA oder NEIN.", vbYesNo, "Title")
    
    If DialogResult = CInt(vbYes) Then
        MsgBox "Sie haben JA angeklickt", vbOKOnly
    Else
        MsgBox "Sie haben NEIN angeklickt", vbOKOnly
    End If

End Sub

Langer Artikel – kurzer Sinn: Ich werde sowohl zu Hause, als auch beruflich C# mehr und mehr nutzen und allmählich alles umbauen. Wer wie ich immer wieder das Loslassen von altem Kram fordert und technischen Neuerungen stets die guten Möglichkeiten einer Weiterentwicklung ansieht, sollte sich auch selbst ganz konkret mit diesen Auswirkungen beschäftigen. Das Alte zu bewahren macht nur dann Sinn, wenn etwas Neues seinen substanziellen Gehalt nicht übernehmen kann.