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...
:
Bearbeitet durch User
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).
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.
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?
Hallo, kann jemand gute Lernquellen zu C# empfehlen? Ein leicht verständliches Buch (auch für Anfänger)? Danke
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.
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()
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.