Mal so nebenbei sei mal angemerkt, dass stark/schwack und dynamisch/statisch typisiert zwei verschiedene Eigenschaften sind.
Beispielsweise C (statisch, aber dennoch eher schwach typisiert) und Python (dynamisch, aber stark typisiert).
Was meinst du mit solche Keywords und wo soll hier der Unterschied liegen?
Solche, die reiner syntaktischer Zucker sind, wie ich später erwähnt habe. Der Typ wird vom Compiler erkannt und statisch an der Stelle eingesetzt. Im Binary sieht es nicht anders aus, als hättest du den Typen explizit angegeben. dynamic hingegen sorgt für eine Änderung des Laufzeitverhaltens, davon muss die VM Bescheid wissen (und damit wäre es prinzipiell in allen .NET Sprachen möglich.
Quote:
Gut, da habe ich jetzt nicht weiter nachgeschaut. Dieses Keyword scheint es wirklich nur bei C# zu geben - dafür gibt es diese Funktionalität aber auch teilweise in den anderen Sprache. Da erfordert es bei VB.Net beispielsweise kein Keyword, die Funktion ist aber da:
Code:
Dim foo = "foo"
Verstehe ich nicht, wieso wundert dich das nun? Ich bezog mich eben auf das Zitat und die Aussage, das die Benutzung unsauber wäre.
Weil schwache Typisierung ein anderer Sachverhalt ist. Ich kenne mich nicht genug mit VB aus, um zu wissen, ob es sich dabei ebenfalls nur um Typinferenz (Typ wird automatisch erkannt) oder tatsächlich um fehlende/schwache Typisierung handelt, wie es der TE nannte (wobei es auch gut sein kann, dass er da lediglich die falsche Begrifflichkeit gewählt hat).
Insofern wunderte es mich, dass du var als Antwort zu (vermeintlich) schwacher Typisierung bringst, obwohl du weißt, dass es darauf gar nicht zutrifft.
Quote:
Und mit den zeigern, die zeiger sind da ja, aber man benutzt sie nicht mehr als zeiger, jemand könnte jahrelang in vb oder c# programmieren ohne einmal das wort zeiger gehört zu haben, und es tut programmiertechnisch nix zur sache (da in c# und VB jede variable ein zeiger ist, und man sich keine gedanken mehr um unterschiede machen muss)
Das ist so nicht korrekt, weil dort Objekte von Klassen Referenzsemantik haben, während Structs und primitive Typen Wertesemantik haben.
Wer nicht schon einmal Zeiger gehört hat, hat zumindest schon einmal Referenz gehört, ansonsten kann er die Sprache nicht besonders gut, erst recht, wenn er den Unterschied der beiden Typklassen nicht kennt.
Das einzige, was tatsächlich wegfällt, ist Zeigerarithmetik.
Quote:
Mal so nebenbei sei mal angemerkt, dass stark/schwack und dynamisch/statisch typisiert zwei verschiedene Eigenschaften sind.
Beispielsweise C (statisch, aber dennoch eher schwach typisiert) und Python (dynamisch, aber stark typisiert).
Und wenn ich richtig informiert bin, bietet VB die Möglichkeit zur schwachen, dynamischen Typisierung, was unter erfahreneren Entwicklern aber verständlicherweise verpöhnt ist.
Quote:
Doch genau das ist es was ich deutlich machen will, C++ hat im gegensatz zu delphi, java, vb oder C# kein Patent, und so sind alle standards nur "normen", und daher kann man tuen was mann will, da der name C++ in keinster weise geschützt ist.
Juristisch vielleicht nicht, aber das tut nichts zur Sache. Es geht hier nicht um Patente, es geht um Standards. Baust du einen absolut nicht standardkonformen Compiler, kickt dich die Konkurrenz einfach aus dem Geschäft. Niemand mag Non-Standardkonformität.
Außerdem ist der C++ Standard durchaus durch die ISO geregelt und wird von einem Komitee verabschiedet. Der einzige Unterschied zu Sprachen wie C# ist, dass C++ nicht proprietär ist.
Das ist so nicht korrekt, weil dort Objekte von Klassen Referenzsemantik haben, während Structs und primitive Typen Wertesemantik haben.
Wer nicht schon einmal Zeiger gehört hat, hat zumindest schon einmal Referenz gehört, ansonsten kann er die Sprache nicht besonders gut, erst recht, wenn er den Unterschied der beiden Typklassen nicht kennt.
Das einzige, was tatsächlich wegfällt, ist Zeigerarithmetik.
klar aber zeiger sind ja noch viel mehr als referenzen, sachen wie z.b.
Code:
var
x: Integer;
i: PInteger;
tmp: Integer;
begin
new(i);
tmp:=0;
for x := 0 to 10 do
begin
i^:=Random(100);
inc(i);
end;
for x := 0 to 10 do
begin
tmp:=i^+tmp;
dec(i);
end;
Dispose(i);
ShowMessage(IntToStr(tmp));
end;
dinge mit denen man sich in VB nie auseinandersetzten muss.
Diese gesammte zeiger rechnung,die funktionsweise von zeigern, das wird für z.b. VB oder C# komplett irrelevant, das einzige was man wissen muss ist: Klassen muss man initialisieren, und klassen werden nicht kopiert wenn man eine wertzuweisung macht.
Wenn man das gelernt hat kann man mit VB schon sogut wie jedes programm umsetzten. und das ist alles worauf ich hinaus will, Man muss um gute ergebnisse zu erziehlen nicht so weit hinter die materie blicken wie in z.b. C++
Dass man es dennoch kann schließ ich nicht aus, doch wenn man C++ oder z.b. Delphi lernt ist Zeiger schon sehr früh ein großes kapitel, bei VB oder C# wird es zwischenzeitlich mal angestreift, und es reicht beileufig das mal durchzugehen
Quote:
Originally Posted by MrSm!th
Juristisch vielleicht nicht, aber das tut nichts zur Sache. Es geht hier nicht um Patente, es geht um Standards. Baust du einen absolut nicht standardkonformen Compiler, kickt dich die Konkurrenz einfach aus dem Geschäft. Niemand mag Non-Standardkonformität.
Außerdem ist der C++ Standard durchaus durch die ISO geregelt und wird von einem Komitee verabschiedet. Der einzige Unterschied zu Sprachen wie C# ist, dass C++ nicht proprietär ist.
Mir ist das schon alles bewust, und man wird wohl kaum einen seriösen nicht normkonformen compiler finden, das bsp ist auch sehr hoch gesteckt und eine unglaubliche übertreibung, doch hatte ich schonmal den fall, dass ein un der selbe source code in 2 compilern unterschiedlich funktionierte, und genau diese thematik will ich drauf aufmerksam machen, jeder Compiler ist anders, jeder hat seine eigenheiten, und d.h. ist das einzige worauf man sich verlassen kann, das, sofern es ein iso konformer compiler ist, er sich an die iso normen hält, und wenn man normkonform entwickelt, auch alles normkonform rauskommt.
sowie bei pcs z.b. der netzanschluss genormt ist gibt es immer noch unternehmen (z.b. apple) die sich nicht daran halten.
ich kann auch sagen für mich hatt c++ keine semikolone, und wenn ich einen compiler dafür benutze der das unterstützt funktioniert das auch wunderbar, ich muss mir halt bewust sein das ich dann kein iso c++ nutze
Und ja die bekannten compiler sind alle iso norm konform, aber es gibt auch kleinere, die zum teil noch auf alten normen basieren, etc.
Man muss halt drauf achten, welche normen unterstützt der compiler, wie aktuell ist er etc
Aber wenn das nicht so offensichtlich ist werde ich da einen anderen vergleich aufführen, morgen oder so versuche ich mal die stellen die nicht so klar oder eindeutig sind zu überarbeiten
(bei dem bsp source hatte en kumpel von mir bei nem case das break; vergessen, eigentlich nicht sonderlich tragisch sollte man meinen, aber es wird von der norm nicht beschrieben was passiert wenn man das break vergisst, bei visual C++ ist auch nix großes passiert, beim gcc ist die ganze rechnung komplett falsch gewesen)
doch hatte ich schonmal den fall, dass ein un der selbe source code in 2 compilern unterschiedlich funktionierte, und genau diese thematik will ich drauf aufmerksam machen,
Sofern er auf undefiniertem Verhalten aufgebaut hat, ist es das gute Recht der Compiler-Hersteller, es zu implementieren, wie sie wollen. Das ist auch bei anderen Sprachen nicht anders.
Ohne zu wissen, um was es da ging, ist das wenig aussagekräftig.
Quote:
ich kann auch sagen für mich hatt c++ keine semikolone, und wenn ich einen compiler dafür benutze der das unterstützt funktioniert das auch wunderbar, ich muss mir halt bewust sein das ich dann kein iso c++ nutze
Dann nutzt du gar kein C++. Ich sprach von Implementierungsdetails. Die Syntax der Sprache ist eindeutig definiert und vorausgesetzt, zwei Compiler implementieren dieselbe Version (sind also auf demselben zeitlichen Stand) und enthalten diesbezüglich keine Bugs, dann funktioniert der Code auch syntaktisch überall gleich (wenn du eben keine proprietären Extras des einen Compilers nutzt), ansonsten sind das de facto keine C++ Compiler.
Ein Compiler, der fehlende Semikoli akzeptiert, ist kein C++ Compiler, ganz einfach.
In C++ kann man auch ohne Zeigerarithmetik auskommen und mit Referenzen sogar an vielen Stellen ganz ohne Zeiger. Natürlich ist es sinnvoll, alle Hintergründe zu kennen, aber man kann auch Anwendungen auf einem sehr hohen Abstraktionsniveau (eben so Busiess-Kram, für den C# oft verwendet wird) schreiben, ohne sich je intensiv mit Zeigern beschäftigt zu haben. Dass jedes gute Buch darauf eingeht, liegt einfach daran, dass es eben von Vorteil ist, zu wissen, wie der Computer arbeitet (und für gute und performante Programme in C# brauchst du da genau so viel Hintergrundwissen über die .NET VM).
Naja, so langsam driftet es vom eigentlichen Thema ab.
Welche Programmiersprache 12/21/2012 - General Coding - 5 Replies Welche Programmiersprache würdet ihr mir empfehlen zum Anfangen mit programmieren?
Welche Programmiersprache ? 04/15/2012 - General Coding - 11 Replies Hallo Coders & noch werdende Coders :P
Ich wollte Fragen welche Programmiersprache ich lernen muss um WebArbeiten zu machen zbs. Seiten zum Uploaden von Datein/Bildern & was man sonst alles noch schönes machen kann :) ! Ich hab schon ein klein wenig Erfahrung was C++ angeht aber das fand ich etwas zu schwer.
Die richtige Programmiersprache? 08/08/2010 - General Coding - 10 Replies Hey Leute ich hab eine kleine Frage...
Ich bin 13 Jahre alt ( -.- ) und suche die richtige Programmiersprache für mich.
Ich gehe auf das Gymnasium und würde behaupten, dass ich schnell lerne^^
Ich behersche bereits AutoIt und wollte etwas neues versuchen.
Immer dieses "begrenzte" in AutoIt stört mich.
Ich hatte vor mich an C++ ran zu begeben, da z.B. viele Hacks damit gemacht werden.
Bitte kommt jetzt nicht mit : "Bist noch zu jung für C++"
Ich würde mich freuen wenn ihr mir ein paar...
welche Programmiersprache 07/29/2010 - General Coding - 40 Replies Hallo welche Programmiersprache koenntet ihr einen blutigen anfaenger
empfehlen weil ich erstmal die grundlagen lernen will und dann möchte ich mit autoIt anfangen, am besten wärs noch wenn ihr mir ein link
für ne seite posten würdet bei der ich den Compiler usw...downloaden koennte
(kostenlos).wenn euer beitrag hilft dann klick ich aufm thx button und dshini-button
Welche programmiersprache für mich? 03/30/2006 - General Coding - 20 Replies Ich werd in der Oberstufe wahrscheinlich Delphi lernen ( hoffentlich)
aber weiss nicht ob es leicht genug für den anfang ist, und auch für mich von nutzen ist.
Ich habe mir gedacht, wenn delphi nicht zu schwer ist kann ich ja schonmal anfangen zu lernen und habs später leichter.
Ich brauche eine sprache mit der man vllt, hacks verändern/proggen kann, und auch vllt für bots.
Ich weiss sowas lernt man nicht von heute auf morgen ^_^
Deswegen frage ich ja auch hier, welche sprache ist für...