Buch zum Lernen einer objektorientierten Sprache? (Anfänger)

  • Allgemein

Es gibt 47 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Buch zum Lernen einer objektorientierten Sprache? (Anfänger)

    Hi,

    ich suche ein gutes Buch zum Lernen einer objektorientierten Programmiersprache. Welches Buch und welche Sprache wäre als Einstieg empfehlenswert? Evtl. Visual C#?

    Ich hab' schon einige Programme mit dem hier thematisierten Visual Basic erstellt um schnell gute Ergebnisse zusehen, was mir auch gelungen ist. Weitere "Hintergründe" des Programmierens bleiben da aber irgendwie verborgen, wie ich finde, jede Kleinigkeit muss ich oft immer mal wieder nachschlagen.

    Gruß

    Mr. Blade
    Okay, Danke erstmal.

    Nun, wo liegen denn die Unterschiede zwischen Visual Basic und VB.NET? Die Syntax von Visual Basic ist ja ziemlich einfach und z.B. "anders" als bei C# oder PHP. Gibt es weiterhin signifkante Vor- und Nachteile zwischen Visual Basic, VB.NET und C#?

    Gruß
    Visual Basic 6 meinst du, oder? Visual Basic ist eine Erfindung von Microsoft. VB.NET ist aber auf jeden Fall besser als vb6, da vb6 otdated ist.
    Bei C# gibt es übrigens eigentlich keine direkten Vorteile gegenüber VB, es basiert ja beides auf demselben Framework und wird beim kompilieren zu ein und demselben.
    Der Unterschied ist, dass VB.Net im Gegensatz zu VB objektorientiert ist (ja, entgegen vieler Meinung, VB ist nicht objektorientiert). Außerdem läuft es (wie der Name ja schon sagt) auf Basis des .Net-Frameworks, welches eine mächtige Runtime und eine große Klassenbibliothek zur Verfügung stellt. VB ist inziwischen 15 Jahre alt, wird schon lange nicht mehr gewartet oder weiterentwickelt und sollte deshalb nicht mehr verwendet werden.
    Und zu dem anderen Punkt: wenn du dich erst mal eingearbeitet hast in .Net wirst du merken, dass die Unterschiede zwischen VB.Net und C# gar nicht so groß sind. Tasächlich unterscheiden sie sich eigentlich nur in der Syntax und einigen wenigen sprachspezifischen Elementen (meist kannst du die Codes sogar 1zu1 ineinander konvertieren). Dies liegt daran, dass beide für .Net geschrieben wurden. Du kannst dir VB.Net grob als ein C# mit VB-Syntax und einigen Einsteigerhilfen vorstellen.

    Mr.Blade schrieb:

    zwischen Visual Basic, VB.NET und C#?
    Wichtig ist ein ordentlicher Sprachgebrauch, mit VB wird hier üblicherweise VB.NET gemeint, VB6 ist VB6.
    VB.NET unterstützt aus Kompatibilität zu VB6 ein paar Features, die unter VB.NET nicht gern gesehen werden, da sie inkompatibel zu C# sind. Ich möchte Dich hier nicht mit einzelheiten langweilen, das kriegen wir später. :D
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Achte mal genau darauf, was ich geschrieben habe. VB ist veraltet, nicht VB.Net, das ist mitten in seiner Blütezeit. Ich weiß, ist etwas Verwirrend, aber der Unterschied zwischen VB und VB.Net ist wichtig.

    Und Visual Basic 2010 Express ist überhaupt keine Programmiersprache, sondern lediglich der Name der Entwicklungsumgebung. Die Sprache ist immer VB.Net.
    VB.NET ist nicht veraltet, VB6 ist veraltet.
    Außerdem hat der Name nichts mit dem Programm zu tun, VB = Visual Basic, dann gibts zwei "Abstufungen", nämlich VB6 (veraltet) und VB.NET (aktuell).
    Okay, also von vorne:
    Du musst unterscheiden, das, was hier als VB bezeichnet wurde ist VB6, eine 15 Jahre alte Programmiersprache.

    Visual Studio ist nur die IDE, die Enwicklungsumgebund.
    Die Programmiersprache, um die es hier geht, ist hauptsächlich VB.NET.
    Du solltest anfangen VB.NET zu lernen, nicht VB6.

    Visual Basic 2010/2012 -> ist die jeweilige Entwicklungsumgebung für VB.NET
    oreilly.de/catalog/hfcsharp2ger/ wäre ein feines Buch das ich empfehlen würde. Genau wie andere Bücher aus der Reihe wie Entwurfsmuster odere OOD/OOA.

    Von VB.NET würde ich eher abraten wenn man wirklich als Anfänger in OOP einsteigen möchte. Da ist C#(ebenso wie Java) einfach besser geeignet, da es von Anfang an konzipiert wurde ausschließlich auf die Paradigmen einer OOP-Sprache zu setzen.

    VB.NET schleppt eine Menge Müll mit sich die mit OOP nichts zu tun haben wie z.B. Module, eine Typsicherheit die von Anfang an nicht gegeben ist (Stichwort Option Strict). Hier wurden einfach zu viele Konzessionen an die 'alten' VB 6-Jünger gemacht.

    VB.NET lässt sich prima als reine OOP-Sprache einsetzen, dazu gehört meiner Ansicht nach aber Erfahrung, um die Fallstricke die VB.NET von Hause mit sich bringt, zu umschiffen.

    Man sieht es hier ja quasi täglich im Forum wie "unheimlich geeignet" VB.NET für den reinen Anfänger ist.
    Okay, okay, ich gerade leicht verwirrt bin. Danke für die geldudigen Versuche einer Aufklärung.
    Du musst unterscheiden, das, was hier als VB bezeichnet wurde ist VB6, eine 15 Jahre alte Programmiersprache.
    Gut.
    Visual Studio ist nur die IDE, die Enwicklungsumgebund.

    Die Programmiersprache, um die es hier geht, ist hauptsächlich VB.NET.

    Du solltest anfangen VB.NET zu lernen, nicht VB6.
    Okay. Dann sind also Visual Basic 2010 und Visual C# 2010 unterschiedliche Entwicklungsumgebungen für die Programmiersprache VB.NET bzw. C#? Oder setzt Visual C# 2010 auch auf VB.NET? Was wären denn dann die Unterschiede außer der Syntax?

    Mr.Blade schrieb:

    Dann sind also Visual Basic 2010 und Visual C# 2010 unterschiedliche Entwicklungsumgebungen für die Programmiersprache VB.NET bzw. C#?

    Jaein.

    Visual Basic 2010 Express bspw. ist wie du erkannt hast NUR eine Entwicklungsumgebung für VB.NET.
    Visual C# 2010 Express bspw. ist wie du erkannt hast NUR eine Entwicklungsumgebung für C#.

    Dann gibt es noch das Visual Studio - im Visual Studio weren alle Entwicklungsumgebungen sozusagen zusammengefasst.
    Hier mal ein Beispielcode:

    VB.NET-Quellcode

    1. Private KeyWords As New List(Of String)
    2. Public Sub CorrectCommands()
    3. If KeyWords.Count = 0 Then
    4. For Each KeyWord As String In My.Resources.AllTICommands.Split(CChar(Environment.NewLine)) 'Alles in List umfüllen, da diese mehr Funktionen unterstützt
    5. KeyWords.Add(KeyWord)
    6. Next
    7. KeyWords.Sort(New StringLengthComparar)
    8. MessageBox.Show(KeyWords.ToString)
    9. End If
    10. Dim StringToSearchIn As String = rtbVirtual.Text.ToLower
    11. For Each KeyWord As String In KeyWords
    12. StringToSearchIn = StringToSearchIn.Replace(KeyWord.ToLower, KeyWord)
    13. Next
    14. rtbVirtual.Text = StringToSearchIn
    15. End Sub

    =

    C-Quellcode

    1. private List<string> KeyWords = new List<string>();
    2. public void CorrectCommands()
    3. {
    4. if (KeyWords.Count == 0) {
    5. foreach (string KeyWord in My.Resources.AllTICommands.Split(Convert.ToChar(Environment.NewLine))) {
    6. KeyWords.Add(KeyWord);
    7. }
    8. KeyWords.Sort(new StringLengthComparar());
    9. MessageBox.Show(KeyWords.ToString());
    10. }
    11. string StringToSearchIn = rtbVirtual.Text.ToLower;
    12. foreach (string KeyWord in KeyWords) {
    13. StringToSearchIn = StringToSearchIn.Replace(KeyWord.ToLower(), KeyWord);
    14. }
    15. rtbVirtual.Text = StringToSearchIn;
    16. }
    Alle "Visual <Name der Programmiersprache> <Jahreszahl> Express"-Versionen unterstützen jeweils nur die im Namen enthaltene Sprache, sind dafür aber kostenlos. Das kostenpflichtige Visual Studio unterstützt alle Sprachen (inklusive VB.Net, C#, J#, F#, natives C++, Visual C++) und noch einige weitere Features (z.B. SQLServer).

    Einige Unterschiede zwischen VB.Net und C# sind unter anderem:
    - C# verfügt über sogenannte "unsafe"-Blöcke, die es erlauben, Pointeroperationen durchzuführen, was VB.Net nicht kann. Finde ich aber verständlich, da VB.net ja die Anfängersprache ist und Pointer nun wirklich nichts für Anfänger sind.
    - Statt Delegatenaddition/-subtraktion (meist für Events) in C# verwendet VB.Net das einfachere Schlüsselwort AddHandler, und man muss Events auch nicht auf "null" prüfen.
    - LINQ-Ausdrücken müssen in C# Delegateninstanzen übergeben werden, in VB reichen direkt die anonymen Methoden.

    Wenn dir das alles nichts sagt, dann brauchst du dir darum aber sowieso keine Sorgen zu machen. ;)

    @nafets3646
    CChar(Environment.NewLine)
    Das wird nicht funktionieren, da Environment.NewLine auf Windows immer zwei Zeichen sind (Chr(13) und Chr(10)).
    @Artentus
    Das mit den Programmen, stimmt nicht ganz, mittlerweise gibt es "Visual Studio 2012 Express für Windows Desktop", dieses vereint alle Sprachen miteinander, allerdings trotztem mit begrenztem Funktionsumfang.

    @Artentus (nochmal :D)
    Es funktioniert problemlos :P. Ich weiß, dass es etwas crappy Code ist, es stellt aber den Unterschied ziemlich gut dar.
    Gut, Danke Euch.

    Aber beide Programmiersprachen, VB.NET und C# haben doch mit .NET zutun, oder?

    Dann lautet die besser Frage also: Mit VB.NET oder C# einsteigen?

    Ich hab' mal gelesen, dass wenn man eine objektorientierte Programmiersprache kann, das Lernen weiterer nicht allzu schwer wäre. Ich denke, die Syntax von C# entspricht eher solchen "anderen", oder? Aber das nur am Rande.

    Gruß
    Ich würde dir klar zu Visual Basic .NET raten, da dieses eine viel simplere Syntax als C# hat. Du kannst dir ja meine beiden Beispiele anschauen.
    Wegen dem Umlernen: Wenn du einmal richtig programmieren kannst, wird Umlernen für dich ziemlich einfach sein, außerdem geht der Umstieg von VB.NET -> C# in wenigen Tagen, wenn du so ca. 1 Jahr prgrammiert hast, Option Strict On verwendest und den Microsoft.VisualBasic-Namespace weglässt.
    @Mr.Blade
    Also ich kann dir nur sagen, wie es für mich war.
    Ich habe mit VB angefangen und damit ungefähr ein Jahr programmiert. Als ich dann langsam recht geübt war in .Net bin ich vor kurzem komplett auf C# umgestiegen. Die verschiedene Syntex war für mich kein Problem mehr, ich musste mich nur kurz umgewöhnen.
    C# ist definitiv die bessere der beiden Sprachen, keine Frage, sie ist einfach von Grund auf besser designed und fordert auch automatisch vom Entwickler einen saubereren Codestil ein, als VB.Net das tut. Aber zum Einstieg ist VB.Net mehr als geeignet.

    @nafets3646
    Noch ein Grund mehr, "CChar" nicht zu verwenden, scheint wohl wieder so ein unvorhersehbares Crapverhalten dieser alten Funktionen zu sein.
    Verwende ich Convert.ToChar, dann bekomme ich genau das von mir erwartete Ergebnis: