vb.net, C# oder Java?

  • Allgemein

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

    ErfinderDesRades schrieb:

    Denn egal wie man entscheidet: Immer nagt ein Misstrauen, ob die annere Entscheidung die bessere gewesen wäre.

    Zwischen VB.NET und C#? Wohl kaum. VB findet hauptsächlich Anwendung bei VBA usw. VB.NET wird in der Praxis jedoch kaum verwendet (im Vergleich zu C#). C# ist DIE .NET Sprache. Man findet dazu haufenweise Material und ist viel öfter damit konfrontiert (sorry das zu sagen ... aber man ist da auch nicht auf deinen Lehrplan angewiesen ;) ).

    ErfinderDesRades schrieb:

    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.

    Man kann es auch intelligente und erweiterbare Architektur nennen. Aber ich weiß schon, dass du dich da auf den einen Lieblingsartikel stützt den irgendein alter Knacker vor 10 Jahren mal verfasst hat^^


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Bevor nun der Glaubenskrieg endgültig ausbricht:

    Ich habe vor zwei Jahren begonnen, mich intensiv mit C# auseinanderzusetzen. Ich komme aus der Delphi-Schiene (Pascal) und hab schon ein paar Jahre Programmierung aufm Buckel, auch in C, C++, BASIC und ein paar ASM-Sprachen.

    Mit C# kam ich sofort klar. Die Syntax erinnert stark an C/C++, gemixt mit vielen Elementen, die man aus Delphi kennt (und schätzen gelernt hat). Irgendwie fühlte ich mich gleich "zu hause" und war hocherfreut, viele gute Dinge aus Object Pascal dort wiederzufinden, die das Programmieren in C oder C++ ausgesprochen mühsam gemacht haben.

    Im Oktober bin ich dann mal "kurz" in die VB-Schiene hinein. Mit den .NET-Kenntnissen aus C# kommt man in VB enorm schnell rein, BASIC ist nach wie vor extrem schnell erlernbar. Die Syntax ist einfacher, aber nicht durchschaubarer und als allererstes muß man die Grundeinstellungen von VB ändern (Option Strict ON), sonst erzieht man sich Dinge ran, die nur schwer wieder abzugewöhnen sind und für schwer zu findende Bugs sorgen können.

    Mein Urteil ist: VB (mit genannten Einstellungskorrekturen), wenn man wirklich Null Plan hat; aber nicht lange dabeibleiben, rasch in die C#-Schiene wechseln. Faktisch alle Neuerungen im .NET-System oder an der Sprache selbst werden erstmal nur in C# implementiert und sickern dann sehr langsam in VB ein. Ergo ist C# moderner, more "up to date". Auch sind die meisten Codebeispiele im .NET-Raum in C#.

    P.S.: Ich hab in C# noch kein einziges Interface gebastelt. Wozu auch ?
    Wie du hast noch kein einziges Interface gebastelt? :D was machst du dann?
    Ich denke ich werde mich nochmal bisschen in vb.net einlesen, da es schon ne Zeitlang her ist, als ich c++ gelernt habe. Wie schon gesagt bin ich mir aber nicht sicher, was für ein Buch ich verwenden soll. Soll ich für vb.net überhaupt ein Buch verwenden? Das Problem ist halt, dass es viele schlechte Bücher gibt genauso wie schlechte Internettuts.
    Auch wnn gleich wieder alle aufheulen: Ich hab als schnellen Wiedereinstieg in VB das Buch "Einstieg in Visual Basic 2010" von Galileo Computing gekauft. Ich bin nicht sicher, ob das was für Anfänger ist, denn das war für mich kein Kriterium (Anfänger war ich Mitte der 80er des letzten Jahrtausends). Ich brauchte einen guten Einstieg in die Syntax, speziell Klassendeklarationen, bissel Datenbank und so'n Zeug.

    Dafür was das Buch hervorragend geeignet.

    Und nein, ich hab noch nie ein Interface gebraucht. Meine Anwendungen sind üblicherweise GIS-Anwendungen (Darstellung von GPS- und anderen Fahrzeugdaten auf einer OSM-Map) mit Speicherung der Daten oder entsprechende Services, die die Kommunikation abwickeln bzw. die Daten auswerten. Sollte ich tatsächlich mal mit einer anderen Anwendung reden müssen, kommt dafür stets TCP/IP oder UDP zum Einsatz und jeder war bisher mehr als glücklich damit ;)

    An ein Interface habe ich schon manchmal gedacht, wenn es daran geht, die z.T. äußerst komplexen Protokolle der Board Units zu decodieren. Sowas ließe sich dann in irgendeiner Sprache basteln, aber in allen anderen benutzen. Aber dafür bin ich wohl zu blöd. Vielleicht mache ich einen Thread auf, wo mir dann die geballte Erfahrung der VB-Community den Schubser in die passende Richtung geben kann...
    Wenn man C++ gewöhnt ist, ist C# dann eigentlich immer etwas schwierig, da der Sprache so viel fehlt. Java scheidet natürlich komplett aus, weil damit nahezu nicht zu programmieren ist. Ob C# oder VB kommt erstens auf dir Person an un zweitens auf den Geschmack. Wenn man eine Sprache richtig lernt, kann man in ein paar Tagen auch die andere. VB neigt nur dazu fürchterliches zu erlauben, allerdings kann man auch in C# Mist machen. Trotzdem ist C# zu präferieren. Die Syntax ist deutlich verbreiteter und ausserdem kann man nicht allzu viel falsch machen.

    thefiloe schrieb:

    VB findet hauptsächlich Anwendung bei VBA usw.

    Also ich hab ma ne Zeit lange mit VBA gearbeitet, zwecks Berufsschule und weil wir nix anderes gelernt haben. Muss ehrlich sagen, wer mal VBA gemacht hat und dann wieder zu VB wechselt, wird wegen Visual Studio das VB, als heiligen Gral bezeichen(bessere Intellisense, kein Dim x as Object, Set X = 5, also VB6-Schrott, gescheitem Debugger)

    thefiloe schrieb:

    C# ist DIE .NET Sprache. Man findet dazu haufenweise Material und ist viel öfter damit konfrontiert

    Geb ich dir Recht, wenn man heute ma auf diversen IT-Webseiten schaut(egal ob deutschspracheig oder englische) ist eigentlich entweder C# gesucht oder evtl noch SAP. Zum Teil (ganz selten C++)

    OlafSt schrieb:

    Mit den .NET-Kenntnissen aus C# kommt man in VB enorm schnell rein

    Ich sag immer C# ist wie Java mit VB-Begriffen/Objekten

    OlafSt schrieb:

    Die Syntax ist einfacher, aber nicht durchschaubarer

    Finde ich ned, bei VB haste dein Sub-Kopf und wenn ein End Sub fehlt, wirds dir im normalfall unterringelt oder der Code wird ned richtig eingerutsch, bei C# übersieht man die schließende '}' leicht ma.

    OlafSt schrieb:

    wenn man wirklich Null Plan hat

    VB wurde ja auch dazu erfunden, um den Leuten den Einstieg in Programieren zu erleichtern, irgenwann ist das halt mal "aus dem Ruder gelaufen" und hat sich dann verselbstständigt. Selbe Prinzip wie bei Robot Carol, EO(Einfache Objektorientierte Sprache) oder DarkBasic, den Leuten soll mtit Begriffen, die der Mensch noch lesen kann, das Verständnis näher gebracht werden.

    OlafSt schrieb:

    aber nicht lange dabeibleiben, rasch in die C#-Schiene wechseln

    Also mein Programmierweg hat mit Java vor 4 Jahren angefangen(1 Jahr "Informatik" = 3 Monate EOS, 4 Monate Java Integer, Zeichenkettenaddition, System.out.println(), Arrays, rest hat der Lehrer - war 1. stellvertretender Schulleiter, 2. Physiklehre, 3. Mathelehrer, 4. einziger Lehrer an unserer Schule der "Programmieren" unterrichten darf, mal abgesehen von 7 Klasse Robot Carol, 8. Klasse "SQL", und 5. zuguter Letzt unser Mathe- UND Info-Lehrer - mit uns Polynomdivision gemacht, weil des 2 aus unserer Klasse ned konnten und er davon ausgeht, dass niemand das kann. Hab zwar jetz in der BS auch nen Lehre der so abgehoben ist, nur weil 3-4 Leute kein C++ checken, er uns nen Vortrag über Programmieren hält, uns als schlechte Programmierer beschimpft, selber aber Singelton als - sorry aber das muss sein - scheiße/Schwachsinn bezeichnet, aus einem 15 jahre alten C++ Buch, zititert, dass der Autor die ersten 6 Monate "einen geistigen Nebel" durschreiten musste, bis er das Konzept der Objektorientierung begriffen hatte. Und mit uns eine Bruchklasse programmiert, bei der er Zähler und Nenner ned wie jeder vernünftige Programmierer mit Setter und Getter setzt sondern mit einer

    C-Quellcode

    1. void eingabe(){
    2. char tmp;
    3. cin >> zaeler >> tmp >> nenner;
    4. }

    macht...
    oder eine Memberfunktion schreiben die direkt den Bruch ausgibt:

    C-Quellcode

    1. void bruchAusgeben(){
    2. cout << zaeler << "/" << nenner;
    3. }

    Aber um jetz ned abzuschweifen(zu spät :D), nach dem traumatischen Jahr, hab ich dann ein Berufsgrundschuljahr gemacht, in dem wir dann wegen einem Lehrer der zu faul war, sich n Konzept zu ner gescheiten Sprache anzulegen, dann halt das erste halbe Jahr VBA gemacht haben(kotz, würg, brech) und zu guter Letz dann auch VB *engelsstimmen ertönen*. Uns seit dem bin ich iwie bei VB hängen geblieben - und ich werd da auch ned weg, sofern ich ned bei ner andern Firma anfange und da C# schreiben muss :D (oder ich schreibs in VB -> jags durch nen Decompiler(dotPeek) -> füg dann den C#-Code ein :D)

    Lg Radinator

    PS: Sry für den langen Post, ich hoff er ist verständig und nicht all zu verstrickt :D
    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
    @OlafSt: Aufheul - nicht den Theiss!
    VB: Entweder Löffelmann oder Kühnel/Leibbrand. Wobei ich neulich feststellte, dass KL sich scheints nicht zum Disposen äussert -> fetter MInuspunkt.
    Hihi: Bei Büchern ist die "Erbsünde" als Qualitätskriterium vlt. ein Vorteil: Bischen blättern, und wenn da Strict Off geproggt wird -> Tonne.
    c# - Bücher kenne ich nicht, aber ich würde das Löffelmann-Inhaltsverzeichnis als Referenz heranziehen: Wenn im Buch eines der Löffelmann-Themen zu fehlen scheint, ists wohl eher nur Zusatz-Literatur.
    Ich fand halt einige Bücher über c#, die kein Wort über VisualStudio fallen lassen, und das zieht halt diesen Codestil heran, mit den kilometerlangen Codes, die man sich ebensogut und besser sparen könnte, wenn man wüsste, wie VS tickt.
    1. Designer nutzen hat nix mit Klickibunti zu tun. Es ist ein Weg, notwendigen Trivial-Code schnell und sicher zu erstellen, und dabei gleichzeitig vom eigentlichen Code zu trennen, der sich so viel konzentrierter um die Intelligenz einer Anwendung kümmert.
    2. DB-Programmierung ist nur ein Detail, Datenmodellierung und Databinding sind aber mit die wichtigsten Materialien, aus denen Architektur überhaupt besteht. Also im Betonbau ist Datenmodellierung nicht nur das Fundament, sondern ist der Beton selbst.
    3. sag ich doch: in vb springen ziemlich viele Hurgler herum, oft sogar auf einem Minus-Niveau, was die c# - Hurgler (dies auch gibt) so garnet erreichen können ;)


    CatchTheBird schrieb:

    Trotzdem nochmal die Frage: Mit was lerne ich?
    Wie gesagt: Vordringlich lerne zu lernen.
    Also Schwerpunkt drauf, die VisualStudio-Tools effizient zu nutzen. Das befreit dich keineswegs davon, die Sprache zu lernen - und zwar komplett! - denn ohne Sprachkenntnis kommt man mit den Tools auch nicht über "Hello World" hinaus. Bzw. vonne Doku-Tools versteht man nur Bahnhof.
    Datenverarbeitungs-Vorraussetzungen

    my 5 ct.

    ErfinderDesRades schrieb:

    "Erbsünde" als Qualitätskriterium


    Darf ich davon ausgeben dass du mit deinen Erbsünden einmal die VB6 Kompatibilät (ich hasse es diese Wort zu schreiben, vertipp mich da immer drölfzig mal) und die Option Strict-Geschichte, meinst?
    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
    Das gilt leider nicht nur für C# sondern auch für nahezu JEDE Sprache. Jedes Buch hat so seine Fehler(nicht erwähntes Option Strict ON für VB, falsch erklärtes Unsafe in C#, unzurechend erklärter Pointer in C, falsche Konzept der Objektorientierung in C++)
    Jeder Autor ist zwar auch nur ein Mensch, aber einen gewissen Mindeststandart sollte man halten(nicht von YT abkupfern, vor allem ned bei YT). Leider meinen viele, YT ist das NonPlusUltra wenn es um das Programmieren lernen geht. Leider bekommt man nur fertigen "Code" hingeschreiben, ohne dass der/das (meist) 12-jährige Junge/Scriptkiddie auch nur im entferntesten darauf eingeht.

    Hin und wieder findet man das ein oder andere ganz-OK-Video, aber der großteil beschränkt sich dann darauf, dass einer sich ein 20€ Buch kauft in dem die grundlegenden Sachen(primitive Datentypen, Arrays, Operatoren, GUI-Layout) drinnen sind,dat dann auf Video aufnimmt und dann hochläd.

    Ab und zu bin ich am überlegen ob ich ned auch n Tut mach in dem ich zeige, wie ich VB richtig programmiere, dann überleg ich mir was ich da alles vorbereiten muss(das wichtigeste zusammenschreiben, geeignete Beispiele erstellen, und, und, und..) und dann denk ich mir wieder "Ach scheiß drauf, zu viel Arbeit". Bei den meisten Tutlern aber denke ich mir, die überspringen alle Schritte, machen Fraps auf und nehmen hatl grad so auf was ihnen sponten in den Sinn kommt, laden es hoch und wenns genug Likes/Views bekommt, wiederholen sie das ganze => schlechtes Tut.
    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

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

    Hab ich ned gemeint. Ich wollte sagen, du kannst dir schon das ein oder andere Buch holen, nur solltest du dir halt, wie EDR geschrieben hat

    ErfinderDesRades schrieb:

    Bischen blättern


    ErfinderDesRades schrieb:

    und wenn da Strict Off geproggt wird -> Tonne.


    Bzw das Problem bei C# ist, dass es (fast) keine (guten) Einsteigerbücher gibt, viele Firmen wollen C#ler, du musst dich aber erst selber in die Sprache einlesen, und kannste dann mit fortegeschrittenen Büchern dann weitermachen.
    Ein Einsteigerbuch was mir so einfällt ist halt von GalileoComputing, dabei rate ich dir aber explizit von VB ab, und C# zu. Nach dem C#-Buch wirst glaub ich n wenig suchen müssen.
    Da wird wie ich oben bereits erklärt habe, zwar nur die grundlegensten Sachen(primitve Datentypen, Array, wie du den GUI Layouter verwendest angerissen, aber is alle mal besser geschreiben als das VB-Buch davon
    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
    @Radinator Zum oberen Post: C# kann man nicht mit Java vergleichen, da es weitaus umfangreicher, sicherer und weniger ranzig ist. :D

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Radinator schrieb:

    Hab ich ned gemeint. Ich wollte sagen, du kannst dir schon das ein oder andere Buch holen, nur solltest du dir halt, wie EDR geschrieben hat

    ErfinderDesRades schrieb:

    Bischen blättern


    ErfinderDesRades schrieb:

    und wenn da Strict Off geproggt wird -> Tonne.



    Und woher soll man als Anfänger wissen das solche Bücher für die Tonne sind?
    Um sowas beurteilen zu können braucht man ja schon ein gewisses Level an Wissen, und wenn man das hat, braucht man auch das Buch nicht mehr.

    Trade schrieb:

    C# kann man nicht mit Java vergleichen

    Damit meinte ich "C# ist wie Java (von der Syntax her) mit VB-Begriffen/Objekten (und noch weiterm Zeug)" Sry ist sehr grob umrissen, aber wenn mich wer frag, der keine Ahnung von nix hab, sag ich halt immer er soll sich Java anschauen, die Syntax, misch se mit VB-Begriffen dann haste C#. wenn er es genauer haben will soll er auf MSDN gehen

    Parmaster schrieb:

    Um sowas beurteilen zu können braucht man ja schon ein gewisses Level an Wissen, und wenn man das hat, braucht man auch das Buch nicht mehr.

    Und da is eben der Teulfelskreis, wenn du C# lernen willst brauchste einen gewissen Stand, um beurteilen zu können, welche Bücher dir was bringen oder nicht, um eben diesen Wissenstand zu erhalten. Die ganze Sache ist insgesamt schlecht aufgezogen von den Buchschreibern. In VB isses leider genau das selbe, nur kannst du im Normalfall jedes Buch wehauen(weil entweder auf VS nich eingegangen wird oder eben Sachen wie Option Strict nicht oder nur unzureichend erklärt wird, aber wie gesagt das ist nicht nur Problem bei VB und C# sondern auch bei C, siehe nur das (ja ich weiß schon wieder GalileoComputing) "C von A bis Z". Wenn du dir das Buch bzw die Kritik auf Amazon ansiehst, dann wird das Buch eh gleich verteulfen von einem (warscheinlich) Dr. Dr. Dr. prof. mult. hon. <nich tausen annere Kürzel>. Der sich halt darüber aufregt, dass eben der Autor der selber Informatik an einer TU unterrichtet, einem das scanf stat scanf_s vorsetz( oder sowas, hab mir das shcon seit urzeiten nicht mehr durchgelesen) und dass ihm auch diverse andere gravierende Fehler unterlaufen
    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