Forum: PC-Programmierung C# oder C++ für Win?


von Hänschen (Gast)


Lesenswert?

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++?

von Peter II (Gast)


Lesenswert?

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.

von Der Andere (Gast)


Lesenswert?

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.

von Ryan O. (Firma: HFu) (gorfindel)


Lesenswert?

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)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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).

von Klaus (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Tilo R. (joey5337) Benutzerseite


Lesenswert?

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

von Horst (Gast)


Lesenswert?

Wenn du programmieren willst: C++
Wenn du nur rumpfuschen willst: C#

von Tilo R. (joey5337) Benutzerseite


Lesenswert?

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.

von Dirk (Gast)


Lesenswert?

>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.

von Sven L. (sven_rvbg)


Lesenswert?

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...

: Bearbeitet durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Hänschen (Gast)


Lesenswert?

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!

von Horst (Gast)


Lesenswert?

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

von nicht"Gast" (Gast)


Lesenswert?

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).

von Anonymuss (Gast)


Lesenswert?

Hänschen schrieb:
> Ein "reines" C++ Programm für welches man nicht .NET benötigt,

In meinem kommerziellen Umfeld ist gerade Qt modern, unter Windows:
https://www.heise.de/newsticker/meldung/Trolltech-ist-nicht-mehr-Qtopia-heisst-jetzt-Qt-Extended-209066.html

Nach meinen Informationen für nicht kommerziellen Einsatz kostenlos.

von nicht"Gast" (Gast)


Lesenswert?

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.

von Peter II (Gast)


Lesenswert?

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äß.

von Sheeva P. (sheevaplug)


Lesenswert?

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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Heinz peter P. (poschi8)


Lesenswert?

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

von Sheeva P. (sheevaplug)


Lesenswert?

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. ;-)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Sheeva P. schrieb:
> Trotzdem recherchiere ich regelmäßig im Internet nach meinen
> wohlbekannten Werkzeugen,

Aber sicherlich nicht mit Anfragen wie "c programming".

von Oliver S. (oliverso)


Lesenswert?

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

von Peter II (Gast)


Lesenswert?

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.

von Yalu X. (yalu) (Moderator)


Lesenswert?

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.

von Chris F. (chfreund) Benutzerseite


Lesenswert?

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?

von Sheeva P. (sheevaplug)


Lesenswert?

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/

von Sheeva P. (sheevaplug)


Lesenswert?

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.

von Peter II (Gast)


Lesenswert?

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.

von Sheeva P. (sheevaplug)


Lesenswert?

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?

von Wissenshunger (Gast)


Lesenswert?

Hallo,

kann jemand gute Lernquellen zu C# empfehlen?
Ein leicht verständliches Buch (auch für Anfänger)?

Danke

von Daniel -. (root)


Lesenswert?

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.

von Ohm (Gast)


Lesenswert?

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.

von Horst (Gast)


Lesenswert?

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?

von W.S. (Gast)


Lesenswert?

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.

von Chris F. (chfreund) Benutzerseite


Lesenswert?

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.

von whazz (Gast)


Lesenswert?

Der C++ String Klasse fehlen mir auch Funktionen.

Z.B. toLower().

Wer Java kennt, muss sich fragen, was das soll.

https://docs.oracle.com/javase/7/docs/api/java/lang/String.html
vs
http://www.cplusplus.com/reference/string/string/


Da wären dann noch trim(), startsWith() und endsWith()

von Ohm (Gast)


Lesenswert?

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.

von Chris F. (chfreund) Benutzerseite


Lesenswert?

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

von Peter II (Gast)


Lesenswert?

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.

von Michael B. (laberkopp)


Lesenswert?

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.

von Borislav B. (boris_b)


Lesenswert?

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...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.