c++ != c# ?

Smalltalk
Antworten
Benutzeravatar
fabske
Beiträge: 2023
Registriert: 14.06.2003 15:07:51

c++ != c# ?

Beitrag von fabske » 16.12.2004 19:03:46

ich dachte immer c# sei nur eine andere schreibweise für c++, doch nun ist das anscheindn nicht so?
kann mich da jemand aufklären?
danke
Bevor Du einen Beitrag postest:
- Kennst Du unsere Verhaltensregeln?
- Hast Du die Suchfunktion benutzt? Deine Frage wurde vielleicht schon in einem anderen Beitrag beantwortet.
- Ist schon ein Artikel in unserem Wiki vorhanden, der Deine Frage beantwortet?

Benutzeravatar
feltel
Webmaster
Beiträge: 10368
Registriert: 20.12.2001 13:08:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Leipzig, Germany
Kontaktdaten:

Beitrag von feltel » 16.12.2004 19:09:17

Nee, C++ und C# sind nicht das gleiche. C++ gibts schon viel länger als C#, welches von Microsoft entwickelt wurde (im Rahmen der .net-Initiative). In weit die aber sprachlich/syntaktisch verwandt sind kann ich nicht sagen, obwohl ich sicherlich nicht falsch liegen würde wenn ich sage, das C# ne Abart von C und/oder C++ ist.

Benutzeravatar
BeS
Moderator
Beiträge: 3236
Registriert: 17.04.2002 18:30:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von BeS » 16.12.2004 19:16:13

Hallo,
feltel hat geschrieben:In weit die aber sprachlich/syntaktisch verwandt sind kann ich nicht sagen, obwohl ich sicherlich nicht falsch liegen würde wenn ich sage, das C# ne Abart von C und/oder C++ ist.
es wäre wohl eher treffend, wenn man C# als eine Mischung aus java und C++ bezeichnen würde.

@mohameth: Um dir ein Bild von C# zu machen empfehle ich dir mal ein Blick in dieses online-Buch: http://www.galileocomputing.de/openbook/csharp/
Deine Unterstützung für Freie Software kostet dich nur wenige Minuten: www.fsfe.org/support

Ich spreche von Freier Software!

Benutzeravatar
hupfdule
Beiträge: 1864
Registriert: 09.12.2002 15:04:37
Wohnort: Berlin
Kontaktdaten:

Beitrag von hupfdule » 16.12.2004 20:38:19

c# hat (auch wenn Microsoft etwas anderes behauptet) so gut wie gar nichts mit c++ zu tun. Es ist der Sprache mehr als deutlich anzusehen, dass sie von Java abgeleitet ist. Ebenso deutlich ist, dass dabei rein aus Prinzip ein paar Änderungen angebracht wurden, nur um nicht exakt wie java zu sein.
Wenn du Java kannst, kannst du auch c# (nach kurzer Einarbeitung), wenn du C++ kannst, bist du C# noch immer sehr fremd.

Benutzeravatar
BeS
Moderator
Beiträge: 3236
Registriert: 17.04.2002 18:30:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von BeS » 16.12.2004 21:05:49

Hallo,
hupfdule hat geschrieben:c# hat (auch wenn Microsoft etwas anderes behauptet) so gut wie gar nichts mit c++ zu tun. Es ist der Sprache mehr als deutlich anzusehen, dass sie von Java abgeleitet ist.
Naja, selbst wenn man sagt, dass c# nur an java angelehnt ist, dann hat java immernoch Anlehnungen an C++ und sei es nur der Aufbau von while, for,... Konstrukten, die {}, &&, ||, == und ähnliches.
Ebenso deutlich ist, dass dabei rein aus Prinzip ein paar Änderungen angebracht wurden, nur um nicht exakt wie java zu sein.
Ich würde es nicht als "aus reinem Prinzip" bezeichnen. Wenn man bei C# z.B. nichtmehr darauf achten muß das Klassenname == Dateiname ist, dann halte ich das durchaus für sinnvoll.
Oder wenn ich z.B. hier sehe, was da mit BufferedReader, InputStreamReader usw. gemacht werden muß um von der Konsole zu lesen, da ist mir ein einfaches "lastName = Console.ReadLine();" doch sympathischer.
Oder um noch etwas anderes zu nennen, properties finde ich sind auch eine sehr gute Sache.
Wenn du Java kannst, kannst du auch c# (nach kurzer Einarbeitung), wenn du C++ kannst, bist du C# noch immer sehr fremd.
Also ich kannte nur C und etwas C++ und habe mich sehr schnell in c# zurecht gefunden. Eben weil die ganzen Konstrukte im Prinzip gleich aufgebaut sind. Das einzige was neu und etwas gewöhnungsbedürftig war ist, dass man alles gleich am Anfang in eine Klasse packt. Aber auch daran habe ich mich schnell gewöhnt, da ich in Ada95 auch immer alles in eine Prozedur packen mußte. ;)

PS: Für die java Hacker vielleicht interessant, hier gibt es ein Überblick über C# aus der Sicht von java: http://www.25hoursaday.com/CsharpVsJava.html
Deine Unterstützung für Freie Software kostet dich nur wenige Minuten: www.fsfe.org/support

Ich spreche von Freier Software!

Benutzeravatar
Leonidas
Beiträge: 2032
Registriert: 28.04.2003 13:48:49
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Beitrag von Leonidas » 18.12.2004 09:53:12

BeS hat geschrieben:Naja, selbst wenn man sagt, dass c# nur an java angelehnt ist, dann hat java immernoch Anlehnungen an C++ und sei es nur der Aufbau von while, for,... Konstrukten, die {}, &&, ||, == und ähnliches.
Naja, sind eben alle C-styled Sprachen, und == hat so fast jede Programmiersprache.

BeS hat geschrieben:Ich würde es nicht als "aus reinem Prinzip" bezeichnen. Wenn man bei C# z.B. nichtmehr darauf achten muß das Klassenname == Dateiname ist, dann halte ich das durchaus für sinnvoll.
Ack!
BeS hat geschrieben:Oder wenn ich z.B. hier sehe, was da mit BufferedReader, InputStreamReader usw. gemacht werden muß um von der Konsole zu lesen, da ist mir ein einfaches "lastName = Console.ReadLine();" doch sympathischer.
Oder um noch etwas anderes zu nennen, properties finde ich sind auch eine sehr gute Sache.
Properties in C# kenne ich nicht (nur in Python), aber Console.ReadLine() ist ein Aufruf der Library und hat nicht direkt was mit der Sprache zu tun. Ich denke mit J# könnte man das auch so machen. Oder man kann sich einen Wrapper schreiben, der die BufferedReader usw. vereinfacht, denn ja, das ist irgendwie übertrieben kompliziert.
Wir wollten einen Marsch spielen, aber wir hatten nur Xylophone.

Benutzeravatar
devilx
Beiträge: 734
Registriert: 26.08.2003 22:57:20
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Filderstadt
Kontaktdaten:

Beitrag von devilx » 18.12.2004 10:13:03

Wenn du Java kannst, kannst du auch c# (nach kurzer Einarbeitung), wenn du C++ kannst, bist du C# noch immer sehr fremd.
Wenn du C oder C++ kannst ist es ueberhaupt nicht schwer sich in anderen Sprachen zurecht zu finden, da du das Grundlegende bereits weist, die Aufbauweise einer Sprache kennst und weisst wie sie funktioniert. Mit einer API referenz solltest du da bereits recht weit kommen, selbst wenn du die Sprache nicht beherrscht, dafuer aber C/C++.
When you smile, the world smiles with you :)
When you fart, you stand alone :(
... a place full of dorkness

Benutzeravatar
Leonidas
Beiträge: 2032
Registriert: 28.04.2003 13:48:49
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Beitrag von Leonidas » 18.12.2004 10:47:28

Schonmal Haskell oder Lisp nach C oder C++ probiert? *g*
Wir wollten einen Marsch spielen, aber wir hatten nur Xylophone.

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Beitrag von peschmae » 18.12.2004 11:05:56

Leonidas hat geschrieben:Schonmal Haskell oder Lisp nach C oder C++ probiert? *g*
Er meinte relevante Sprachen :P
(Schon mal Whitespace versucht? ;))

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Benutzeravatar
Leonidas
Beiträge: 2032
Registriert: 28.04.2003 13:48:49
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Beitrag von Leonidas » 18.12.2004 11:17:38

peschmae hat geschrieben:Er meinte relevante Sprachen :P
Naja gut, Haskell ist vielleicht nicht so relevant, aber Lisp: Maxima, Emacs und einiges mehr. Also so irrelevant ist sie nicht, nur weil es eine funktionale Sprache ist (die Liste in der Wikipedia ist irgendwie cool, dort steht sehr interessantes drin).
peschmae hat geschrieben:(Schon mal Whitespace versucht? ;))
Nein, aber ich habe mal mit Ook# gespielt, hihi.

Was man auch nicht verwechseln sollte ist Managed C/C++ und C#.
Wir wollten einen Marsch spielen, aber wir hatten nur Xylophone.

tylerD
Beiträge: 4068
Registriert: 10.07.2002 17:34:13
Wohnort: Halle/Saale
Kontaktdaten:

Beitrag von tylerD » 18.12.2004 12:00:02

hupfdule hat geschrieben: Wenn du Java kannst, kannst du auch c#
Ich bin der Meinung, dass man Programmiersprachen nicht "kann" sonder sie benutzt. Außerdem ist es wohl viel mehr Wert um eine Sprache benutzen zu können, sich gut in den Bibliotheken auszukennen, Frameworks und deren Konzepte zu kennen als die reine Syntax zu kennen. Mag sein das Java und c# ähnliche Syntax besitzen, ähnlichen Bibliotheksumfang usw. besitzen, deswegen gilt meiner Meinung nach sicherlich nicht das ein guter Javaprogrammierer automatisch ein guter C#-Programmierer oder umgekehrt ist. Jedoch kann sich sicherlich ein guter Programmierer, der eine ganze Weile mit einer dieser beiden gearbeitet hat, sich normalerweise schneller in die andere Sprache einarbeiten und auch dort effektiv arbeiten und gut werden.

cu

Benutzeravatar
hupfdule
Beiträge: 1864
Registriert: 09.12.2002 15:04:37
Wohnort: Berlin
Kontaktdaten:

Beitrag von hupfdule » 18.12.2004 13:06:37

tylerD hat geschrieben:
hupfdule hat geschrieben: Wenn du Java kannst, kannst du auch c#
Ich bin der Meinung, dass man Programmiersprachen nicht "kann" sonder sie benutzt. Außerdem ist es wohl viel mehr Wert um eine Sprache benutzen zu können, sich gut in den Bibliotheken auszukennen, Frameworks und deren Konzepte zu kennen als die reine Syntax zu kennen.
Genau so sehe ich das. Denn die obigen Argumente der Ähnlichkeit von C++ und C#/Java beschränken sich auf die Syntax. Die Konzepte sind vollkommen unterschiedlich. C# und Java hingegen haben fast exakt das selbe Konzept.
Mag sein das Java und c# ähnliche Syntax besitzen, ähnlichen Bibliotheksumfang usw. besitzen, deswegen gilt meiner Meinung nach sicherlich nicht das ein guter Javaprogrammierer automatisch ein guter C#-Programmierer oder umgekehrt ist. Jedoch kann sich sicherlich ein guter Programmierer, der eine ganze Weile mit einer dieser beiden gearbeitet hat, sich normalerweise schneller in die andere Sprache einarbeiten und auch dort effektiv arbeiten und gut werden.
Eben, ein guter Java-Programmierer wird sehr schnell gute C#-Programme schreiben können, weil die Konzepte so stark verwandt sind. Ein guter C# Programmierer wird nicht ohne Weiteres gute C++ Programme schreiben können. Ebenso wie ich bezweifle, dass ein guter C++ Programmierer schnell gute C# Programme schreiben kann. Dazu ist die Ausrichtung der Sprache viel zu unterschiedlich.

Benutzeravatar
BeS
Moderator
Beiträge: 3236
Registriert: 17.04.2002 18:30:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von BeS » 18.12.2004 13:54:32

Leonidas hat geschrieben: Naja, sind eben alle C-styled Sprachen, und == hat so fast jede Programmiersprache.
Also hat c#, nach deiner eigenen Aussage, doch etwas mit C++ zu tun. ;)
Es ist vielleicht auch interessant mal das "Mono - A Developer's Notebook" zu lesen, da wird an verschiedenen Stellen immer wieder darauf hingewiesen welche Elemente C++ ähnlich sind und welche java ähnlich.

Übrigens ist das == und auch && und || nicht so üblich ausserhalb von C/C++ (und eben java und c# welche sich zum Teil an C++ orientiert haben). Viele andere Sprachen verwenden eher :=, =, and, or.


Zitate:
hupfdule: Wenn du Java kannst, kannst du auch c#
tylerD: Ich bin der Meinung, dass man Programmiersprachen nicht "kann" sonder sie benutzt.
hupfdule: Genau so sehe ich das.
-> Widerspruch :D

(Sorry, ist mir beim lesen so ins Auge gefallen und ich konnte nicht widerstehen. Ist nicht böse gemeint)
tylerD hat geschrieben: Ich bin der Meinung, dass man Programmiersprachen nicht "kann" sonder sie benutzt. Außerdem ist es wohl viel mehr Wert um eine Sprache benutzen zu können, sich gut in den Bibliotheken auszukennen, Frameworks und deren Konzepte zu kennen als die reine Syntax zu kennen.
Du must hier aber aufpassen, denn wie du selber anmerkst ist das was du beschreibst ein ganzes Framework also eher Mono oder .Net aber nichtmehr die Programmiersprache C#!
Eine Programmiersprache definiert sich (ausschließlich) durch den Syntax und die Semantik. Das man, für "sinnvolle" Programme, mehr als nur die Programmiersprache können muß ist auch klar. Aber man muß halt aufpassen ob wir hier über eine Programmiersprachen (C#) oder ein ganzes Framework sprechen (Mono, .Net,...).
Deine Unterstützung für Freie Software kostet dich nur wenige Minuten: www.fsfe.org/support

Ich spreche von Freier Software!

Benutzeravatar
BeS
Moderator
Beiträge: 3236
Registriert: 17.04.2002 18:30:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von BeS » 18.12.2004 13:59:57

peschmae hat geschrieben:
Leonidas hat geschrieben:Schonmal Haskell oder Lisp nach C oder C++ probiert? *g*
Er meinte relevante Sprachen :P
(Schon mal Whitespace versucht? ;))
Deswegen hat er ja Haskell und Lisp genannt, nur scheme hat er noch vergessen! :D

Schon ESR sagte:
"LISP is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days."
Deine Unterstützung für Freie Software kostet dich nur wenige Minuten: www.fsfe.org/support

Ich spreche von Freier Software!

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Beitrag von peschmae » 18.12.2004 14:18:55

BeS hat geschrieben: Schon ESR sagte:
"LISP is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days."
Ich glaube nicht an den Weihnachtsmann (siehe http://www.userfriendly.org ;)) und auch nicht an ESR :P

MfG Peschmä

P.S. Das ist so zu verstehen: Wenn du endlich rausgefunden hast das Lisp mist ist wirst du was anderes Benutzen und damit bessere Programme schreiben und ergo ein besserer Programmierer sein. (Jetzt lehne ich mich aber arg weit aus dem Fenster, habe ich doch nie Lisp benutzt. *g*)
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Benutzeravatar
devilx
Beiträge: 734
Registriert: 26.08.2003 22:57:20
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Filderstadt
Kontaktdaten:

Beitrag von devilx » 18.12.2004 14:45:16

peschmae hat geschrieben:(Schon mal Whitespace versucht? ;))
Mit whitespace habe ich keine Erfahrung, mit Brainfuck aber sehr wohl. Ich denke, dass ich ohne C Vorkenntnisse die Arbeitsweise von Brainfuck nur schwer verstanden haette.
When you smile, the world smiles with you :)
When you fart, you stand alone :(
... a place full of dorkness

tylerD
Beiträge: 4068
Registriert: 10.07.2002 17:34:13
Wohnort: Halle/Saale
Kontaktdaten:

Beitrag von tylerD » 18.12.2004 15:54:11

BeS hat geschrieben:
Du must hier aber aufpassen, denn wie du selber anmerkst ist das was du beschreibst ein ganzes Framework also eher Mono oder .Net aber nichtmehr die Programmiersprache C#!
Eine Programmiersprache definiert sich (ausschließlich) durch den Syntax und die Semantik. Das man, für "sinnvolle" Programme, mehr als nur die Programmiersprache können muß ist auch klar. Aber man muß halt aufpassen ob wir hier über eine Programmiersprachen (C#) oder ein ganzes Framework sprechen (Mono, .Net,...).
Das stimmt wohl. Java wird wohl landläufig sehr oft mit J2SE und J2EE gleichgesetzt und C# mit .Net-Framework. Bei C/C++ kann man diesen Fehler nicht so schnell machen da es dort einfach zu viele Bibliotheken gibt.

Bei den (objektorientierten) Sprachen Java, C++ und C# find ich es aber oft noch viel wertvoller Programmierparadigmen und Konzepte zu können und verstanden zu haben. Die sind in der Regel allgemein anwendbar, die Syntax ist dann ja nur das Handwerk was notwendigerweise beherrscht werden muss.

cu

Benutzeravatar
Leonidas
Beiträge: 2032
Registriert: 28.04.2003 13:48:49
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Beitrag von Leonidas » 18.12.2004 19:33:01

BeS hat geschrieben:Deswegen hat er ja Haskell und Lisp genannt, nur scheme hat er noch vergessen! :D
Scheme ist ja auch nur ein Lisp Dialekt (dafür werden mich sicher einige totschlgen wollen, weil sie sagen, dass es DER Dialakt ist, aber egal).
Peschmä hat geschrieben:(Jetzt lehne ich mich aber arg weit aus dem Fenster, habe ich doch nie Lisp benutzt. *g*)
Ich auch nicht, dafür habe ich aber stundenlang GCL und danach noch einige Zeit Maxima kompiliert ;) - Und wenn dann würde ich eher mit Haskell anfangen, das scheint recht cool zu sein.
BeS hat geschrieben:Also hat c#, nach deiner eigenen Aussage, doch etwas mit C++ zu tun. :wink:
Hab ich nicht bestritten, die Syntax ist oft ähnlich, eben Curled Braces Sprachen.
BeS hat geschrieben:Übrigens ist das == und auch && und || nicht so üblich ausserhalb von C/C++ (und eben java und c# welche sich zum Teil an C++ orientiert haben). Viele andere Sprachen verwenden eher :=, =, and, or.
Also in Python ist das so, in Ruby auch, und auch die Bash hat && *G* , daneben hat Python | und & wie auch and und or.

Eine Sprache ohne Bibliotheken kann man eigentlich vergessen - und die Bibliotheken von C, C# und Java gehen weit auseinander, also müsste man weniger die Syntax lernen, als wie man was mit der Bibliothek macht.
Wir wollten einen Marsch spielen, aber wir hatten nur Xylophone.

Antworten