Hallo,
ich möchte mit der Programmierung anfangen und suche nun eine geeignete
Programmiersprache für mein noch recht kleines (Privat-)Projekt.
Zur Debatte stehen C# und C++ in Verbindung mit VS Community 2017.
Ich habe jetzt aber den Unterschied dieser beiden Sprachen nicht exakt
verstanden.
Soweit ich das erkennen konnte basiert auch visual C++ (Das ist die
genaue Bezeichung für C++ unter Visual Studio) auch auf dem
.NET-Framework, oder?
Ein "reines" C++ Programm für welches man nicht .NET benötigt, erhalte
ich doch nur mit Hilfe von VS Professional oder einem Nicht-MS compiler
wie z.B. Eclipse oder embacardero (ehmals Borland), richtig?
Wo also liegt der Unterschied zwischen C# und (VS-)C++?
Hänschen schrieb:> richtig?
nein. beim Studio ist genauso ein echter C(++) Compiler dabei. Damit
kann man Anwendungen ohne .net erzeugen. Was nicht dabei ist, ist MFC
also für die C++ Programm kannst du keine GUI machen. (auch wenn es mit
Tricks gehen soll). Wenn man will kann man aber die GUI von Hand
Programmieren.
Dann gibt es C# was die "echte" .net Sprache ist.
Dann gibt es noch CLI was C++ mit .net ist. (halte ich nicht für
sinnvoll)
Wenn du also eine GUI machen will, geht es mit dem Studio am schnellsten
mit C#. Wenn es nur ein Konsolenprogramm werden soll kannst du C++ oder
C# verwenden.
Bei C++ könnte man dann auch noch QT oder ähnliches für die GUI
verwenden.
Du mischst hier ziemlich wild Begriffe.
C# und C++ sind verschiedene Programmiersprachen.
Visual Studio, Eclipse, ... sind integrierte Programmierumgebungen, die
Editor, Compiler, Linker, Debugger und diverse Bibliotheken in sich
vereinen um die Erstellung von Programmen so einfach und bequem wie
möglich zu machen. Und das ggf. in unterschiedlichen Programmiersprachen
.NET ist einen Bibliothek von Funktionen für die es Schnittstellen zu
verschiedenen Programmiersprachen gibt.
Die Frage ist was willst du erreichen, es gibt viele Wege zum Ziel. Der
für dich beste/einfachste hängt vom Ziel und deinen Möglichkeiten und
Fähigkeiten ab.
Zum Lernen würd ich dir C++ enpfehlen, da du da auch Speicheralokierung
lernst, ich hab in der Schule mit Java anfangen müssen und es später
bereut, da ich echte probleme hatte C/C++ zu lernen weil ich mich nie
mit Speicher beschäftigt hatte und auch recht lange nicht verstanden
habe wie ich damit Arbeiten soll.
C/C++ ist voralem relativ gut für Hardware nahe Programierung.
C# ist Objektorientier und bietet in diesem Bereich einige Vorteile, was
meines wissen aber mit C/C++ auch gut Kompenierbar ist.
C# meines wissens zwar für leichte zu lernen sein bis man den ersten
effekt sieht, aber der Umstieg ist meinermeinung nach wesentlich
schwieriger, da du vermutlich nicht nur bei einer Programmiersprache
bleiben wirst.
(Koregiert mich gerne wenn ich Falsch liege)
Peter II schrieb:> Was nicht dabei ist, ist MFC
Das war bei der Express-Version so, bei der Community-Version soll das
nicht mehr der Fall sein.
Allerdings ist die MFC nicht wirklich die eleganteste
C++-Klassenbibliothek für GUI-Anwendungen, ich würde da heute was
anderes verwenden (obwohl ich seit über 20 Jahren mit der MFC arbeite).
Peter II schrieb:> Was nicht dabei ist, ist MFC also für die C++ Programm kannst> du keine GUI machen. (auch wenn es mit Tricks gehen soll).
Trick = Im Installer auswählen. ;)
Aber wie schon von dir und Rufus erwähnt: Da gibt es auch andere
Möglichkeiten.
Ryan O. schrieb:> Zum Lernen würd ich dir C++ enpfehlen, da du da auch Speicheralokierung> lernst, ich hab in der Schule mit Java anfangen müssen und es später> bereut, da ich echte probleme hatte C/C++ zu lernen weil ich mich nie> mit Speicher beschäftigt hatte und auch recht lange nicht verstanden> habe wie ich damit Arbeiten soll.>> C/C++ ist voralem relativ gut für Hardware nahe Programierung.> C# ist Objektorientier und bietet in diesem Bereich einige Vorteile, was> meines wissen aber mit C/C++ auch gut Kompenierbar ist.>> C# meines wissens zwar für leichte zu lernen sein bis man den ersten> effekt sieht, aber der Umstieg ist meinermeinung nach wesentlich> schwieriger, da du vermutlich nicht nur bei einer Programmiersprache> bleiben wirst.
Inhaltlich möchte ich dem gar nicht widersprechen, trotzdem würde ich
dir eher zu C# raten.
C/C++ enthält viele Low-Level-Konzepte (z.B. Speicherverwaltung,
Pointer-Arithmetik), die nicht einfach sind. Für dich, als
Programmieranfänger sind aber die Konzepte einer imperativen Sprache,
"was ist ein Algorithmus" oder Objetkorientierung im Moment spannender.
Das ganze Low-Level Zeug sehe ich da eher als Stolperstein.
Dazu kommt, dass wegen diesen Low-Level-Zugriffen Programme in C/C++ oft
Sicherheitslücken haben, selbst wenn das Programm augenscheinlich
funktioniert. (Ich will hier keinen Flamewar starten - der TO ist
Anfänger und DA passieren diese Fehler fast mit Sicherheit)
Weiter finde ich das C#-Universum deutlich übersichtlicher. Die
.Net-Klassenbibliothek ist für fast alles vom Konsolenprogramm bis zur
grafischen Anwendung völlig ausreichend und zudem hervorragend
dokumentiert.
In C++ dagegen gibt es Unmengen von Bibliotheken, zwischen denen die
Wahl schwer fällt, von denen du früher oder später aber irgendwas
brauchen wirst. Die STL? Boost? Welche Grafik-Bibliothek? Doch irgendwas
zur Garbage-Collection? Und was heißt RAII?
Und mit jeder dieser Bibliotheken kommen neue Konzepte und ein weiterer
Platz für Doku dazu. Ich persönlich fand das immer ziemlich kompliziert.
Grüße, Tilo
Horst schrieb:> Wenn du programmieren willst: C++> Wenn du nur rumpfuschen willst: C#
Das sehe ich anders, Vorurteile in diese Richtung kommen von
C/C++-Programmierern aber immer wieder.
Ich persönlich sehe mich da neutral: Ich habe (gegen Geld) schon in
Object Pascal (Delphi), C, C++, C#, Java, Perl und PHP programmiert.
Jede Sprache hat Vorzüge. Jede Sprache hat Schwächen.
Ich würde mich aber - in deinem Fall - für C# entscheiden.
>Wenn du programmieren willst: C++>Wenn du nur rumpfuschen willst: C#
Was für eine dumme Aussage. Gibt genug Enterprise Applikationen die in
C# WPF programmiert sind.
Soweit ich es gelesen hab und verstanden hab ich VS C++ kein richtiges
C++.
Ich kannn nur C# + WPF + MVVM Pattern empfehlen. Ich würde kein C#
Windows Form programmieren, weil C# WPF viel mehr möglichkeiten bietet
bzgl. UI. Interessant ist auch ASP.net + MVC, wenn es eine
WebApplikation werden soll.
Horst schrieb:> Wenn du programmieren willst: C++> Wenn du nur rumpfuschen willst: C#
Das ist einfach mal eine Dumme und unqualifizierte Aussage.
C# in Verbindung mit .net ist ein mächtiges Werkzeug um relativ schnell
zum ziel zu kommen.
Warum das Rad neu erfinden und nicht auf fertige Bausteine
zurückgreifen.
Wenn ich ein Haus baue, dann brenne ich meine Ziegel auch nicht selbst.
als .net noch nicht so weit verbreitet war, war ich auch kein Freund von
.net Anwendungen, weil oft das Framework gefehlt hat, aber
mittlerweile...
Dirk schrieb:> Soweit ich es gelesen hab und verstanden hab ich VS C++ kein richtiges> C++.
Das hast Du nicht verstanden. MS liefert mit ihrem Produkt gleich
mehrere Compiler aus, einen "C++"-Compiler (achte auf die
Anführungszeichen!) für den .Net-Unterbau, und einen richtigen
C++-Compiler, der sowohl standardkonform ist als auch nativen
x86/x64-Code erzeugt.
Dieser Compiler ist in den letzten Iterationen des Visual Studio/Visual
C++ tatsächlich richtig gut geworden.
Das hier ist eine Tabelle, welches der C++-Sprachfeatures welcher
Standardversion von welchem Compiler unterstützt wird:
https://blogs.msdn.microsoft.com/vcblog/2017/05/10/c17-features-in-vs-2017-3/
Dem kann man entnehmen, daß Visual C++ 2017 große Teile des
C++17-Standards umsetzt.
Mit dem .Net-Geraffel aber hat das nichts zu tun; zwar gibt es einen
pervertierten "Compiler" dafür, der vorgibt, so etwas wie C++ zu
verarbeiten, aber tatsächlich ist das ein "C++-Lookalike" und sollte
korrekt als "Managed C++" oder "C++/CLI" bezeichnet werden.
Hallo und vielen Dank für die ganzen Antworten.
Ich habe mich jetzt gestern nochmals etwas intensiver mit der Materie
beschäftigt und nachdem ich hier die richtigen Stichworte wie MFC und
CLI bekommen habe, konnte ich mir jetzt nochmal etwas mehr Überblick
beschaffen.
Ausserdem habe ich gestern Abend noch versucht ein erstes Programm zu
entwerfen - ein einfacher Taschenrechner - ich war überrascht wie
schnell sowas mit C# geht, gerade bei der gestalltung der GUI nimmt
einem C# hier offensichtlich nahezu die ganze Arbeit ab - das finde ich
sehr gut.
Ich werde mich nun ersteinmal auf C# konzentrieren und dann später
versuchen mich tiefergehend in C++ mit Pointer und Speicheralokierung
einzuarbeiten.
Danke für Eure Hilfe und Erläuterungen!
Hänschen schrieb:> Ich werde mich nun ersteinmal auf C# konzentrieren
Finde ich toll! Weniger Konkurrenz für uns echte Programmierer.
Hänschen schrieb:> Ausserdem habe ich gestern Abend noch versucht ein erstes Programm zu> entwerfen - ein einfacher Taschenrechner - ich war überrascht wie> schnell sowas mit C# geht, gerade bei der gestalltung der GUI nimmt> einem C# hier offensichtlich nahezu die ganze Arbeit ab - das finde ich> sehr gut.
Heißt aber auch: Lerneffekt→0
Horst schrieb:> Heißt aber auch: Lerneffekt→0
Merkwürdige Aussage. Gibt ja sonst nichts zu lernen. Kontrollstrukturen,
Datentypen, programmieren allgemein (Also, die streng logische Art
Probleme zu lösen).
Anonymuss schrieb:> Nach meinen Informationen für nicht kommerziellen Einsatz kostenlos.
Da gibt's mehrere Lizenzen. Wenn man closed source arbeiten will und
alles statisch linken will muss man zahlen.
Ansonsten darf man auch im kommerziellen Bereich mit GPL und LGPL
arbeiten.
Horst schrieb:> Heißt aber auch: Lerneffekt→0
nicht jeder findet es gut, wenn er das Rad erst neu erfinden muss.
Fortschritt heißt auch sich auf vorhanden zu stützen.
Wenn einem die Programmiersprache Probleme abnimmt, kann man sich viel
mehr auf das eigentliche Problem konzentrieren.
Was hilft es wenn man weiß wie das mit Pointer und Referenzen und
Freigaben arbeiten wenn man eine Datensatz in einer Datenbank für JSON
über HTTPS speichern will?
In .net schreibt man dafür einen paar Zeilen code, in C darf man sich
erst einmal auseinandersetzen welche lib nun besser geeignet ist.
(OpenSSL, LibreSSL, SChannel, Botan dazu noch libcurl oder doch was
eigenes.)
C++ bietet ja noch nicht mal eine umfangreiche String Verarbeitung an.
Warum bietet wohl wxWidgets, QT eigene Implemtierungen an? C(++) ist für
Low-Level sehr gut, aber für (einfache) GUI-Anwendungen nicht mehr
Zeitgemäß.
Peter II schrieb:> C++ bietet ja noch nicht mal eine umfangreiche String Verarbeitung an.
Aber ja doch.
> Warum bietet wohl wxWidgets, QT eigene Implemtierungen an?
Weil die eigene Stringverarbeitung dann besser zu den jeweiligen
Frameworks paßt.
> C(++) ist für Low-Level sehr gut, aber für (einfache) GUI-Anwendungen> nicht mehr Zeitgemäß.
Klar, deswegen ist der mit Anstand größte Teil der heute vorhandenen
GUI-Programme auch in C++ geschrieben. Daß C++ "nicht mehr zeitgemäß"
sei, wollten mir schon die Java-Leute weismachen, aber die haben es
wenigstens im Tiobe-Index auf einen bislang unangefochtenen Platz 1
geschafft, gefolgt von C auf Platz 2 und dem angeblich nicht mehr
zeitgemäßen C++ auf Platz 3.
Sheeva P. schrieb:> im Tiobe-Index
Der zeigt nun nicht, in welchen Sprachen tatsächlich programmiert wird,
sondern nach welchen Sprachen viel im Internet gesucht wird.
https://www.tiobe.com/tiobe-index/programming-languages-definition/
Damit hat man also eher einen Überblick über die momentane
Ausbildungssituation als über das reale Arbeitsleben (das, das mag
manchen überraschen, sich noch jahrzehntelang nach der Ausbildung
fortsetzt).
Und wer mit schon ein paar Jahren Erfahrung auf dem Buckel arbeitet, der
fällt bei Tiobe komplett unter den Tisch, weil er nicht nach dem ihm
wohlbekannten Werkzeug recherchieren muss.
Hallo,
also ich muss mich doch sehr stark wundern was die Leute in Foren immer
wieder von sich geben.
Ein richtiger Programmierer würde dir beide Sprachen empfehlen, den Sie
sond beide sehr sehr mächtig.
Es stimmt das C++ besser geeignet ist um das Verständnis von
Datenstrukturen, Pointern, Speicherallokierung usw. besser verstehen zu
können.
Jedoch musst du bedenken das es ohne einen "Leherer" und ohne Vorwissen
doch sehr hart ist diese Dinge zu erlernen.
C# ist eine angenehmere Sprache, die Sprache alleine bietet viele tolle
Möglichkeiten um auf einfache Weise recht schnell guten Code zu
erzeugen.
Auch das lernen von Programmierkonzepten ist mit C# vermutlich leichter
da der Code einfach viel strukturierter ist und viel einfacher zu lesen.
Wenn du dir ein aktuelles Buch über Objektorientierte Programmierung
kaufst wirst du die Beispiele entwender in C# oder in Java vorfinden,
jedoch nicht in C++.
Mein Tipp wäre also auch das du dich auf C# konzentrierst.
Hier kannst du mit viel freude schnell zum Ziel kommen.
Der Lerneffekt ist natürlich immer gegeben, den Visual Studio kann dich
nur beim GUI Designen unterstützen, jedoch kann sie dir nicht alles
abnehmen.
Darum musst du schon wissen was du tust.
Wenn du fragen dazu hast kannst du mich gerne kontaktieren.
Ich bin ein erfahrener C# programmiere der natürlich auch mit WPF
arbeitet.
Und java behersche ich natürlich auch ;)
Viel spaß und gutes gelingen!! :)
Lg,
Poschi8
Rufus Τ. F. schrieb:> Sheeva P. schrieb:>> im Tiobe-Index>> Der zeigt nun nicht, in welchen Sprachen tatsächlich programmiert wird,> sondern nach welchen Sprachen viel im Internet gesucht wird.
Wir stimmen aber überein, daß es da gewisse subtile Korrelationen gibt,
oder?
> Und wer mit schon ein paar Jahren Erfahrung auf dem Buckel arbeitet, der> fällt bei Tiobe komplett unter den Tisch, weil er nicht nach dem ihm> wohlbekannten Werkzeug recherchieren muss.
Hm... ich habe meine erste selbst entwickelte Software am Tag nach
meinem 15. Geburtstag verkauft und habe seit meinem 21. Lebensjahr
durchgehend in der Softwareindustrie gearbeitet, letzten Monat bin ich
46 geworden. Ich lasse mich natürlich gerne eines Besseren belehren,
glaube aber, daß das durchaus "ein paar Jahre Erfahrung auf dem Buckel"
sind. Trotzdem recherchiere ich regelmäßig im Internet nach meinen
wohlbekannten Werkzeugen, neuen Versionen und Bibliotheken, neuen oder
besseren Komponenten für meine Buildumgebungen, Werkzeugen für die
Codeanalyse, das Testing und die Dokumentation. ;-)
Sheeva P. schrieb:> Trotzdem recherchiere ich regelmäßig im Internet nach meinen> wohlbekannten Werkzeugen,
Aber sicherlich nicht mit Anfragen wie "c programming".
Sheeva P. schrieb:>> Warum bietet wohl wxWidgets, QT eigene Implemtierungen an?>> Weil die eigene Stringverarbeitung dann besser zu den jeweiligen> Frameworks paßt.
Eher sind das Altlasten aus der Vor-STL-Zeit...
Oliver
Sheeva P. schrieb:>> C++ bietet ja noch nicht mal eine umfangreiche String Verarbeitung an.> Aber ja doch.
dann ist sie aber gut versteckt und es kennt keiner außer du.
Sheeva P. schrieb:> Weil die eigene Stringverarbeitung dann besser zu den jeweiligen> Frameworks paßt.
wenn es ausreichende in C++ geben würde, dann hätte sich das Framework
daran angepasst.
Sheeva P. schrieb:> Klar, deswegen ist der mit Anstand größte Teil der heute vorhandenen> GUI-Programme auch in C++ geschrieben. Daß C++ "nicht mehr zeitgemäß"> sei, wollten mir schon die Java-Leute weismachen
gegen die Sprache ist ja nichts einzuwenden (auch wenn es konzeptionelle
dinge gibt die sich mit c++ überhaupt nicht umsetzen lassen (z.b
Reflexion)). Es fehlt eine umfangreiche Standardlib womit man die
heutigen Aufgaben umsetzen kann. Es gibt keine Webclient, keine
Verschlüsselung und nur eine einfache Stringbearbeitung. Klar gibt es
für alles eine/viele Implementierung die jeweils eine Einarbeitung
bedürfen. Diese Zeit Sparen sich Entwicklung wenn sie auf eine Framework
setzen was einheitlich Dokumentiert und die Umsetzung auch einheitlich
ist.
Rufus Τ. F. schrieb:> Sheeva P. schrieb:>> im Tiobe-Index>> Der zeigt nun nicht, in welchen Sprachen tatsächlich programmiert wird,> sondern nach welchen Sprachen viel im Internet gesucht wird.
Das stimmt nicht ganz: Die Bewertung einer Sprache richtet sich nicht
danach, wieviel danach gesucht, sondern wieviel darüber gefunden
wird.
Dabei wird aber nicht bewertet, was über die Sprachen geschrieben
wird. Eine Sprache steigt bspw. auch dann im Ranking, wenn sie so
schlecht ist, dass die halbe Menschheit im Web ihren Frust darüber
ablässt.
Peter II schrieb:> [...]
Ich wollte hier erst noch einzelne Sachen zitieren, es ist einfach alles
was "Peter II" über C++ mit Visualstudio schreibt Unsinn.
Man kann mit nativem und ".net"-C++ flott GUIs machen und die
Streamverarbeitung bei den nativen Bibliotheken ist deutlich besser und
performanter als bei .net.
Letztendlich hat es auch immer mit den Fähigkeiten der Programmierer zu
tun und was erreicht werden soll. Wenn ein Externer so ideologisch
rüberkäme wie "Peter II" wäre der 100% aus dem Projekt raus.
p.s. Wer fängt bei Neuprojektierung richtig dicker GUI-Anwendungen auf
Windows heute noch mit MFC an?
Peter II schrieb:> Sheeva P. schrieb:>>> C++ bietet ja noch nicht mal eine umfangreiche String Verarbeitung an.>>>> Aber ja doch.>> dann ist sie aber gut versteckt und es kennt keiner außer du.
<algorithm> und <regex> existieren -- und Boost String Algorithms
Library ebenfalls. Was genau fehlt Dir denn noch?
> gegen die Sprache ist ja nichts einzuwenden (auch wenn es konzeptionelle> dinge gibt die sich mit c++ überhaupt nicht umsetzen lassen (z.b> Reflexion)). Es fehlt eine umfangreiche Standardlib womit man die> heutigen Aufgaben umsetzen kann. Es gibt keine Webclient, keine> Verschlüsselung und nur eine einfache Stringbearbeitung. Klar gibt es> für alles eine/viele Implementierung die jeweils eine Einarbeitung> bedürfen. Diese Zeit Sparen sich Entwicklung wenn sie auf eine Framework> setzen was einheitlich Dokumentiert und die Umsetzung auch einheitlich> ist.
Die Boost-Libraries existieren. Alles drin (und noch eine ganze Menge
mehr, zum Beispiel die Graph- und MPI-Libraries), alles sauber und
einheitlich umgesetzt und dokumentiert. Guckstu: [1].
[1] http://www.boost.org/doc/libs/
Rufus Τ. F. schrieb:> Sheeva P. schrieb:>> Trotzdem recherchiere ich regelmäßig im Internet nach meinen>> wohlbekannten Werkzeugen,>> Aber sicherlich nicht mit Anfragen wie "c programming".
Also "c", "c++" und "python" kommen oft in meinen Suchanfragen vor.
Sheeva P. schrieb:> <algorithm> und <regex> existieren -- und Boost String Algorithms> Library ebenfalls. Was genau fehlt Dir denn noch?
Boost ist keine Standard von C++. Es ist eine externe Lib.
Chris F. schrieb:> Ich wollte hier erst noch einzelne Sachen zitieren, es ist einfach alles> was "Peter II" über C++ mit Visualstudio schreibt Unsinn.
was war daran falsch?
> Man kann mit nativem und ".net"-C++ flott GUIs machen
klar warum auch nicht.
> und die Streamverarbeitung bei den nativen Bibliotheken ist deutlich> besser und performanter als bei .net.
von Streams hat bis jetzt niemand geredet hat jemand etwas anders
behauptet? Sogar mit ASM kann man GUIs machen.
> p.s. Wer fängt bei Neuprojektierung richtig dicker GUI-Anwendungen auf> Windows heute noch mit MFC an?
nicht jeder Anwendung wird eine richtig dicke GUI-Anwendung, es soll
auch kleine Tools geben und da erfüllt MFC genauso ihrer Zweck.
Peter II schrieb:> Sheeva P. schrieb:>> <algorithm> und <regex> existieren -- und Boost String Algorithms>> Library ebenfalls. Was genau fehlt Dir denn noch?>> Boost ist keine Standard von C++. Es ist eine externe Lib.
Na und? <string>, <algorithm> und <regex> existieren trotzdem. Was
fehlt?
Für das was du vorhast, nimm C#
Neben Visual Studio gibt es noch mono. Man kann durchaus C# ohne VS
programmieren.
C++ hat viel Ballast. Andererseits hat sich in letzten 5 Jahren sehr
viel neues in C++ getan.
C++ lohnt sich wenn es um letzte 10% Performance geht. Jedes Prozent
bedeutet für grosse
Firmen wie google, facebook eine Einsparung von viel viel Geld.
Für Anwendungen die selten laufen, nimmt man C# oder Python.
Es ist egal ob das Programm 10ms oder 500ms braucht.
Im embedded bereich ist c++ statt c zu empfehlen.
Im pc bereich sind moderne sprachen wie c# zu empfehlen.
Natürlich kann man eine baugrube auch mit dem teelöffel ausheben wenn
man darauf steht zeit hat und sadomasochistisch veranlagt ist.
Wer mag, darf sich zeinen computer auch aus transistoren zusammenlöten.
Das dient auch sehr dem verständnis der basics. Soll leute geben, die
machen sowas. Die haben aber auch den weg als ziel.
C++ ist zumindest auf dem pc als nicht mehr zeitgemäss anzusehen.
Zumindest in dem kontext in dem du programmieren wirst.
Ohm schrieb:> moderne sprachen wie c# zu empfehlen.Ohm schrieb:> C++ ist zumindest auf dem pc als nicht mehr zeitgemäss anzusehen.
Ok du willst also nur trollen.
Ohm schrieb:> Natürlich kann man eine baugrube auch mit dem teelöffel ausheben wenn> man darauf steht zeit hat und sadomasochistisch veranlagt ist.
War der Autovergleich gerade ausverkauft?
Horst schrieb:> Wenn du programmieren willst: C++> Wenn du nur rumpfuschen willst: C#
Ach herrje, was für eine Klassifizierung!
Ich hätte da ne kleine Ergänzung:
"Wenn du es schnell, solide und effizient willst: Delphi"
Aber hier geht die Diskussion ja ausschließlich um C oder C oder C.
W.S.
Horst schrieb:> Ohm schrieb:>> C++ ist zumindest auf dem pc als nicht mehr zeitgemäss anzusehen.>> Ok du willst also nur trollen.
Sehe ich auch so.
Ohm schrieb:> Im embedded bereich ist c++ statt c zu empfehlen.> Im pc bereich sind moderne sprachen wie c# zu empfehlen.
Mit der Hammermethodenansicht bist Du aber auf weiter Flur alleine. Man
wählt eine Programmiersprache doch nicht aus weil sie "moderner" ist,
sondern weil sie die gestellte Aufgabe am Besten löst und effizient zur
Laufzeit mit den Ressourcen umgeht. Wo das .net bei einer GUI-Anwendung
Top ist wird es in Treibern und HPC-Anwendungen nicht mal ins Gespräch
kommen.
Im Embedded-Bereich ist C++ statt C zu empfehlen?? Wenn ich auf einem
8-Bit-µC@1MHz, der so gerade eben passt, eine Mobillösung mit 3
Knopfzellen baue, dann ist es wohl eher C und inline-asm. Wenn ich einen
dicken ARM@300MHz mit viel RAM und laufendem RTOS habe und das Teil fast
nur idle ist dann kann ich auch gleich irgendwelche Skripte oder Dienste
von dem OS verwenden.
Ehrlich euch ist nicht zu helfen.
Seht die dinge im kontext.
Denkt darüber nach warum es die modernen sprachen gibt.
Wenn c++ och sooooooo tollllllll wäre? Warum macht man sich die mühe
diese einfacheren und effizienteren sprachen zu entwickeln.
Natürlich hat c++ seine berechtigung aber am markt wird es immer weiter
auf dem pc verdrängt.
Sprechen uns in 10 jahren wieder. Es macht keinen spass sprachen zu
lernen die auf dem absteigenden ast sind. Es sei denn, man besetzt
nischen.
Wer in heutigen zeiten mit ressourcen argumentiert, entwickelt
vermutlich noch auf ner steinzeitkrücke.
Rechenleistung und speicher gibt es satt.
Wieviel arbeitsspeicher hat euer rechner nochmal?
Und wie schnell taktet der nochmal?
Klar, ob das ergebnis in 1us da ist oder in 10us da ist .... darum dürft
ihr euch die haare raufen.
whazz schrieb:> Der C++ String Klasse fehlen mir auch Funktionen
Dann nimm die passenden Algorithmen und bau sie selber.
Wenn man von einer Sprache keine Ahnung hat: mal lieber den Ball flach
halten
Chris F. schrieb:>> Der C++ String Klasse fehlen mir auch Funktionen>> Dann nimm die passenden Algorithmen und bau sie selber.
genau das ist das Problem mit C++, es sind nur rudimentäre Funktionen
vorhanden und man muss jede Kleinigkeit selber bauen.
Schön das du es bestätigt hast.
Hänschen schrieb:> Ich habe jetzt aber den Unterschied dieser beiden Sprachen nicht exakt> verstanden.
Nun ja, zunächst mal sind es 2 verschiedene Programmiersprachen.
C# ist Microsofts Antwort auf Java.
Eine einfach benutzbare Sprache, quasi der Nachfolger von Basic. Die
vorgefertigten Libraries (DotNET) machen es dir einfach, gewisse
Grundfunktionalitäten von Windows zu benutzen. Eben das, was im DotNET
Umfeld verfügbar ist. Du hast keinen Ärger mit Pointern und dem
Fre8igeben von Objekten, es läuft ähnlich wie in Java, Microsoft sagt
"managed" ab.
C++ ist eine Erweiterung von C, enthält also C. Damit enthält es das
alte WinAPI Interface zu Windows, in dem dir alle Funktionen zur
Verfügung stehen aber du musst eher low level programmieren, selbst
Pointer und Objekte verwalten. Es eignet sich auch um MFC
Klassenbibliothekverpacktes Windows programmieren zu können, aber das
ist out, zu viele Fehler drin. Und mit Aufwand kann man sich mit C++
auch an managed Klassen von DotNET wagen, der Aufwand ist gigantisch und
so ganz wie C# funktioniert es dann immer noch nicht.
Diese 3 genannten APIs sind nicht alle, sondern nur die von Microsoft.
Man könnte auch GTK+ oder Qt und andere verwenden um portabler zu sein.
Da man selten Programme from Scratch aufbaut, ist die Frage, worin die
anderen Teile des Systems erstellt wurden, das du bauen willst. Denn
wenn man Libraries übernehmen will, lohnt es sich, dieselbe Sprache zu
sprechen. Wenn man eine gewisse Portabilität haben will, lohnt es sich,
das richtige Framework zu verwenden und das in der Sprache in der es
definiert ist.
Aus Portabilitätsgründen könnte man GTK+ oder Qt empfehlen, aber manche
Leute mögen den nativen Look lieber und manche Programme machen auf
anderen System sowieso keinen Sinn. Viele stören sich daran, wenn für
ein Programm noch eine Laufzeitumgebung hinzuinstalliert werden soll
"wie nun brauche ich auch noch DotNET 4.5, ich habe doch schon 4 und 5".
Daher hat auch Java nicht den Erfolg, so wie ehedem UCSD Pascal
ausstarb.
Wer C# lernen will, sollte meiner Meinung nach lieber Java benutzen.
Wer aber anspruchsvoll programmieren will "BASIC ist Kindergarten"
sollte C++ wählen.
Meine Meinung.
Michael B. schrieb:> Wer aber anspruchsvoll programmieren will "BASIC ist Kindergarten"> sollte C++ wählen.
Wer glaubt, anspruchsvolles Programmieren sei eine Frage der
Programmiersprache, ist auf dem Holzweg. Die Programmiersprache ist
einfach nur ein Werkzeugkasten. Was man damit baut ist die spannende
Frage...