Welche Vorteile habe ich beim Erlernen von C ++, wenn ich hauptsächlich C # -Programmierer bin?
Vor kurzem habe ich begonnen zu bemerken, die viel lächelt und im Allgemeinen unhöflich Kommentare immer, wenn ich erwähnen C#. Jeder, den ich sprechen entweder sagt Python lernen oder lernen C++.
Python ist eine schöne Sprache, ich bekomme es. Aber ich finde nicht viel Verwendung für Sie jetzt (für meine Fälle), und C++ habe ich gehört, ist ein schneller Sprache (nicht sicher).
Also meine Frage ist, welchen Vorteil kann ich aus dem lernen von C++ (neben dem wissen und den ausbau der meinen Horizont), wenn ich hauptsächlich das Programm in C#?
InformationsquelleAutor der Frage Sergio Tapia | 2009-10-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe C++ - Entwickler für die letzten 10 Jahre und die letzten zwei Jahre, ich habe mit java für die Entwicklung neuer Produkte. Ich habe auch schon einige Programmierung auf C# nur um es zu lernen. Basierend auf meiner Erfahrung würde ich sagen, C++ ist eine anspruchsvolle und high-performance-Sprache, die gut für die informatik-Studenten zu verstehen, Programmierung, Konzept und algorithmen. Die weitere Verwendung von C++, wäre der Protokoll-Implementierung, die nicht oft geändert wird, E. g Implementierung von SIP-Proxy-oder HTTP-Server..
Für die Praxis der Produktentwicklung, in denen die Anforderungen Häufig ändert, würde ich jedem empfehlen high-level-Sprache, wo die Entwickler konzentrieren sich auf Anwendungslogik statt Rad neu erfinden. E. g vor Kurzem begann ich eine open-source-Projekt xcapserverdie ich war in der Lage zu tun, eine schnelle Prototyp in zwei Tagen mit java-Technologien (Glassfish,REST, log4j, eXist-db), aber ich wollte lean-boost-libraries und immer wieder es ist ein Protokoll, das ist nicht zu erwarten, zu oft wechseln, so entschied ich mich für die Implementierung in C++. Ich verbrachte 4 Tage nur um die logger arbeiten mit BOOST::melden und weitere 4 Tage, um fix den thread-deadlock-Probleme mit Berkeley DB XML.
Ein weiterer Aspekt ist die Wartung von Produkten. Ich habe Tage-und Nacht-Behebung von Speicher-Lecks und Beschädigung, und die Lernkurve für neue Entwickler ist zu hoch versus J2EE-oder .NET, wo es leicht zu finden, die Entwickler und auch die Wartung ist viel einfacher.
In der Art, C++ ist eine gute Sprache, welche ich empfehlen würde, um alle Entwickler zu lernen, aber ich sehe nicht viel nutzen, es geht vorwärts, als Prozessoren werden immer schneller und günstiger also die performance ist nicht der Grund.
InformationsquelleAutor der Antwort rjoshi
Die größten Probleme sind wie folgt:
Als Profi .NET-Anwendungen Programmierer, ich Liebe C#, ich bete den Boden, dass die Architekten gingen auf. Aber C++ ist meiner Meinung nach die wichtigste Sprache, die Sie kann/wird jemals erfahren, denn es öffnen sich weitere Karriere-Türen als jede andere Sprache in der modernen Industrie. Wenn Sie mit C# vertraut sind, werden Sie ein paar Monaten es zu lernen. Ich reccommend Timothy D'Orazi C++ Buch, wenn du einen akademischen software-engineering-hintergrund.
Nachträglicher Einfall:
C++ ist ein Werkzeug, genau wie C# oder eine Bohrmaschine oder eine shotgun (wohl) passt das Werkzeug, um die Aufgabe, ich würde lieber sterben, als zu schreiben funktionaler code in C++ ebenfalls, ich würde das nicht tun, Anwendungsentwicklung in F#, Sie sind alle feinen langauges. Etwas lernen, das Sie interessiert! Wenn Sie möchten, um eine bessere Programmierer, Lerne C++, wenn Sie wollen, um eine bessere Anwendung Entwickler, es wäre zu Ihrem Vorteil zu lernen, neue Technologien in den Rahmen, den Sie bereits sind zu arbeiten! Sie sind C# - Programmierer sind, haben Sie gelernt, WPF? WCF? was über die features von C# 4.0? Haben Sie gemeistert lambda-Funktionen? Ausdruck Bäume???? Es gibt so viele Richtungen kann man von hier, C++ ist nur eine von Ihnen. Stellen Sie sich folgende Fragen:
Finden Sie, dass es viele Antworten, die sich überschneiden, für diese Fragen, nehmen Sie sich Zeit, finden Sie etwas, das Sie interessiert, und wird nicht eine lästige Pflicht zu lernen, Sie werden sich dafür bedanken 3 Monate ab jetzt.
InformationsquelleAutor der Antwort Firoso
Kurze Antwort: Lernen mindestens einige C++ (und etwas Assembler) macht man besser auf die Nutzung und, vielleicht noch wichtiger, ist das Debuggen der software-Plattform tief unter Ihrem code. Dies gilt unabhängig von der Programmiersprache oder Betriebssystem Sie arbeiten.
Lange Antwort:
Einer der ausschlaggebenden Faktoren, IMHO, zwischen guten Entwicklern und großen Entwickler ist, dass die großen wissen, was Los ist unter der Haube in einem Stück software, und in der Lage sind, schnell einen Drill-down unterhalb der Ebenen der Abstraktion in der Technologie-stack, da die härtesten software-Probleme sind Häufig verursacht durch Dinge Weg, der nach unten Ihren code in den stack.
Daher habe ich immer empfohlen, dass Entwickler, die irgendwann in Ihrer Laufbahn, verbringen zumindest einige Zeit mit dem lernen von zwei Sprachen, die an der Unterseite von fast jeder software-stack: C/C++ und x86-Assembler. Das bedeutet nicht, dass Sie brauchen, um ein Experte im Bereich, aber dass eine gute Kenntnis der Dinge wie Zeiger, Register, Speicher-Verwaltung, Stapel und Haufen, un-GC-ed-string-Puffer, Undichtigkeiten, etc. ist sehr nützlich, wenn Sie brauchen, um zu erreichen nach unten in den Stapel ein problem diagnostizieren, um besser zu verstehen, ungewöhnliches Verhalten, oder einfach, um intelligentere Entscheidungen zu treffen, wie Sie Architekt higher-level-software, unabhängig von der Sprache.
Einer Analogie: ich wurde viel besser, Schaltgetriebe Fahrer einmal nahm ich neben meinem Motorrad den Motor und sah, wie die Kupplung funktioniert. Nicht bedeutete, dass ich brauchte, um sich ein Motorrad-Mechaniker, nur, dass es geholfen, mein gesamtes fahrerisches können mal was Los war in meinem Rad war kein Mysterium mehr.
Auch, unabhängig von der Sprache oder ein framework, mit dem Sie arbeiten, für Projekte, die Sie anrufen müssen, direkt in die zugrunde liegende Plattform, C/C++ - wissen ist sehr hilfreich und manchmal erforderlich.
Beachten Sie, dass ich absichtlich nicht berühren, die strittige Frage über, ob Sie sollten schriftlich gesamten apps in C++ oder nicht. Die anderen Antworten haben einen großartigen job gemacht, für die Argumente. Stattdessen bin ich einfach nur für den Fall, dass C++ - Fähigkeiten profitieren Sie, unabhängig davon, ob Sie weiterhin schreiben die meisten Ihren code in C# (oder Java oder Python oder Ruby oder...)
InformationsquelleAutor der Antwort Justin Grant
Kommt es an.
Die Sache ich wie etwa C++ ist, dass in gewisser Weise, es ist eine mehr expressive und ja, eleganter, Sprache als C#. Sie ermöglicht es einige wirklich schöne Abstraktionen (wie generische Programmierung oder RAII) das kann nicht dupliziert werden in C#.
In dieser Weise, es ist ein eye-opener. Natürlich, so sind funktionale Sprachen. So ist Python. Alle von Ihnen sind es Wert, zu lernen, auch wenn Sie schreiben Sie Ihren code in C# - jetzt und für immer.
Natürlich C++ ist auch ein kompliziert Durcheinander, und weit mehr fehleranfällige Sprache, als so ziemlich alles andere. Und wenn Sie nicht wissen, es wirklich naja, dann wird es in dein Gesicht explodiert, wenn Sie es am wenigsten erwarten.
Natürlich, viele Menschen Schreien LEISTUNG! wenn Sie Fragen, warum Sie sollten lernen C++. Das werde ich nicht. Da in vielen gemeinsamen Fällen, C# ist genauso schnell oder schneller als C++ - code. Diese alten Austausch zwischen Raymond Chen und Rico Mariani zeigt die Leistungsmerkmale der beiden Plattformen ziemlich gut.
C++ hat das Potenzial, extrem schnell sein. Aber es hat auch eine Menge von subtilen performance-Fallstricke, die bedeuten, dass die meiste Zeites sei denn, Sie sind eine Art allwissenden code-Gott, dein code wird weniger effizient zu sein als der entsprechende C#.
Wenn Sie ein Interesse an Programmiersprachen, C++ ist ein wunderbares Beispiel für die Theorie der evolution. 😉
Er noch nicht gewachsen, nach einigen großen vordefinierten plan. Es hat sich stets verbessert und angepasst, einen Schritt zu einer Zeit, nach was würde die Sprache besser jetzt. Als ein Ergebnis ist es riesig, aufgeblasen, zu Komplex, aber es ist auch mehr Ausdruckskraft, als etwas streng konzipiert nach einer einzigen person die vision, wie C#. C# ist mit einer ungesunden obsession mit OOP, denn das war das Coole daran, wenn es entworfen wurde.
In C++, OOP Art trieb, der sich in Richtung der Peripherie, nicht so viel wie eine bewusste design-Entscheidung, sondern weil bessere alternativen aufgetaucht.
Es ist eine lustige Sprache. Und ich würde empfehlen Sie zu lernen, nur um zu einem besseren Programmierer. Aber ich bin nicht davon überzeugt, dass Sie brauchen, um tatsächlich verwenden. Natürlich wird es bestimmte Aufgaben zu erleichtern (native interop, oder die Programmierung kleine Programme, die für einen oder anderen Grund nicht davon ausgehen, dass die .NET framework installiert ist), aber für die meisten Fälle, die Sie wahrscheinlich nicht benötigen werden.
Blätter, die "ein besserer Programmierer" - argument, und das ist zwar ein gültiges argument, ist es auch für andere Sprachen. Sie sollten auf jeden Fall wissen auch eine funktionale Sprache. Und Python, oder eine ähnliche, pragmatische, high-level "machen es einfach für die Programmierer" Art von Sprache.
InformationsquelleAutor der Antwort jalf
Gibt es Gründe für die Verwendung von so ziemlich jeder Sprache.
C und C++ haben verwendet, dass Sie in nativen code kompiliert, anstatt auf einer virtuellen Maschine ausgeführt. Es ist ein speed-Vorteil, und es bedeutet auch, diese Programme können ausgeführt werden, ohne eine 50MB+ framework installiert.
So ziemlich alle Spiele (natürlich first-person-Shooter), geschrieben in C oder C++.
Ist dies für Sie? Keine Ahnung, weil ich keine Ahnung habe, was Sie zu erreichen versuchen.
Was werden Sie lernen von C oder C++? Zeiger, Speicherverwaltung und dergleichen. Es ist eine ganz andere Welt moderner Müll gesammelt Sprachen wie C#, Java oder Python.
InformationsquelleAutor der Antwort cletus
Lernen C++, so dass Sie besser erkennen können, C#.
InformationsquelleAutor der Antwort Pedro Estrada
Abgesehen von dem, was andere gesagt haben:
Menschen zu tun, wie man es fortsetzen.
Erlernen einer Sprache hilft, Sie zu übersetzen, dass die Sprache in C#, das macht Sie wertvoller als Programmierer.
Lernen einer Sprache, hilft Ihnen, zu verstehen, Proben mit, die Sprache, wohl erlauben, Sie zu ziehen, eine breitere Palette von Proben, Bücher, Beispiele, Experten.
Wrapper! Lern C++ hilft Ihnen, wickeln Sie diese lästigen C++ - dlls für die Verwendung in C# -!
Dieser sagte, gibt es wahrscheinlich andere Dinge, die Sie sollten lernen, bevor C++ wenn Sie ein C# - Programmierer, die nie gelernt, C++ in den ersten Platz.
InformationsquelleAutor der Antwort user179700
Würden Sie Holen Sie mehr nutzen aus dem lernen eine funktionale Sprache wie Clojure, Haskel (oder vielleicht F# gegeben, die Sie offensichtlich wohl fühlen mit CLR). Sie haben eine andere zugrunde liegende Programmierung-Modell erweitern Sie Ihren Horizont in einer Weise, dass das erlernen einer neuen syntax nicht.
In die andere Richtung, lernen C wäre eigentlich viel sinnvoller zu lernen als C++. Dass konzentrieren lernen auf Zeiger, Speicher, und "nah am Metall" Themen.
InformationsquelleAutor der Antwort Timothy Pratley
2015 Update
Lernen Schnell. Es soll Ihnen beibringen, den gleichen Einsatz von funktionalen und generativen Muster, wie das moderne C++, aber ohne Gepäck oder so viele Fallstricke. Es ist auch semantisch eine deutliche überschneidung mit F#, so dass Sie die chance bekommen, zu studieren, funktionale Programmierung. Es gibt eine lebendige funktionale Gemeinschaft schieben der Grenzen von Swift.
Ironischerweise in meinem aktuellen job auf C# Bindungen für Reich, ich bin immer noch mit meine C++ - Fähigkeiten, die neben C# aber nicht viel geändert hat sich meine Einstellung in den letzten 6 Jahren.
Original
Spreche ich als C++ Programmierer für 15+ Jahre, verbrachte die letzten Jahre zu lernen und mit C# (und C++/CLI), die auf eine anhaltende Faszination mit Sprachen und eine Breite Palette von Studium anderer Sprachen zu verbessern, mein denken.
Ich bin sehr sehr beeindruckt mit C# als Programmiersprache, vor allem mit den Verbesserungen in C# 3.0.
Ich würde das Gegenteil der Ansichten:
InformationsquelleAutor der Antwort Andy Dent
In Bezug auf Leistung, es ist viel schneller. Wenn Sie den Wunsch haben, andere zu tun, game programming oder high-performance-computing, C++ ist eine große Sprache.
Aber, ich würde auch sagen, C++ ist sehr schwer zu lernen. Kein garbage collector, compile-Fehler, die müssen entschlüsselt werden, und die Notwendigkeit für externe Bibliotheken sind alle Schwierigkeiten zu überwinden.
InformationsquelleAutor der Antwort rlbond
Bezüglich C/C++, hier sind ein paar Dinge in den Sinn kommen, aus meiner eigenen Erfahrung.
Lernen C/C++ können, Erfahrung, Zusammenarbeit mit den detaillierten Funktionen des Betriebssystems und mit dem raw-Speicher. Zum Beispiel, viele Audio -, Video-und Game-Anwendungen benötigen diese Zugriff auf Ihre Leistung.
Wissen, wie man interop mit Komponenten und Bibliotheken, geschrieben in C/C++ ist ein handliches Geschick. Es gibt viele nützliche Bibliotheken aus, dass es noch keinen adäquaten Entsprechungen in C#. TSAPI (telephony), diverse Datei-format Bibliotheken und legacy-Komponenten sind viel einfacher, mit zu arbeiten, in C#, wenn Sie verstehen, Ihre Konstruktion in C/C++ und anderen Sprachen.
Wenn Sie die Arbeit mit windows-Anwendungen, Erfahrung mit Win32 mit C/C++ ermöglicht es Ihnen, zu verstehen, wie eine Anzahl von anderen Anwendungen, die in nicht verwaltetem code arbeiten; auch wenn Sie nicht den source-code zur Verfügung. Sie können dann mit P/Invoke-effektiver Umgang mit Bibliotheken, die würde ordinariliy nicht verfügbar oder zu undurchsichtig, zu behandeln, sonst.
Viele Techniken, obwohl potentiell black-hat-in der Natur, sind schwieriger zu erreichen mit C#. Dinge wie DLL-substitution, re-write Funktion Eintrag Punkte, die Injektion von code in andere Prozesse und für die Erzeugung von inline-Assembler-code sind leichter zu tun, mit C/C++, wenn auch nicht unmöglich mit C#.
Schließlich, fein abgestimmte Kontrolle über die un-verwaltete Objekte ist etwas besser geeignet, um den geschriebenen code mit C/C++. Zum Beispiel Dinge wie overlapped I/O auf windows, einige socket-library-Funktionen (ex. UDP-Multicast) und device control haben mehr arbeitet C/C++ - Beispiele gibt, als C#. Aber diese sind ziemlich esoterischen und meist nicht behandelt werden, in C# - Anwendungen sowieso. Einige von diesen sind wahrscheinlich Entsprechungen in Zukunft APIs oder frameworks sowie.
In der Zusammenfassung, die motivation würde ich vorschlagen, zum lernen von C/C++ ist eine Erweiterung Ihrer Kenntnisse in anderen Systemen, die nicht zugänglich sind, in C#. Learning Python wäre ein Schritt in die andere Richtung, wo Sie lernen andere Stile und Semantik der code-Konstruktion ist eine eher profitieren. C/C++ - code geschrieben von anderen Menschen tendenziell nicht mehr vorteilhaft noch erkennbaren Muster wie software, geschrieben in Python, Ruby oder Lisp.
InformationsquelleAutor der Antwort meklarian
Die besten Gründe für das erlernen von C++ für C# - Entwickler ist es zu lernen, neue Programmier-Paradigmen. C++ ist mehr als nur eine "objektorientierte" Sprache und bietet deshalb eine chance, zu lernen, neue Ansätze zur Lösung der Probleme. Mit C# 3.0 und .NET 3.5, C++ nicht affer so viele einzigartige Modelle, aber wenn Sie nicht mit Ihnen, dann eine effektive C++ - Programmierung, zwingt dich, Sie zu lernen.
Insbesondere C++ bietet immer noch ein sehr mächtiges Paradigma der generischen Programmierung, die selbst von C#. Die STL-Kräfte Sie funktionale Programmierung Konzepte, die viele C# - Entwickler vermeiden oder nicht verwenden (LINQ-Erweiterungen und die lambda ' s zum Beispiel).
Habe ich auch herausgefunden, dass es festigt die Personen, die das Verständnis und die Wertschätzung für den lexikalischen Bereich. Konzepte wie RAII-oder C++ - namespaces, die wirklich schieben verwalten zu müssen Umfang sehr vorsichtig... in C#, die viele dieser Probleme existieren, aber sind weniger "in your face". Template metaprogramming ist eine weitere einzigartige Konzept der C++ bietet C# nicht.
InformationsquelleAutor der Antwort James Schek
Lernen C++, so dass Sie fühlen können, wie Blasen Ihre Gehirne aus.
InformationsquelleAutor der Antwort OwenWiseman
Mit jeder Programmiersprache, die Sie in der Lage sind wachsen Ihrer vision von der Landschaft und gewonnene Erkenntnisse. Ich habe zwar nie geschrieben, eine Produktion von C++ - Anwendung, es war sehr lehrreich für mich, zu verstehen, das system auf diesem Niveau. Wenn Sie die freie Zeit, Tauchen Sie ein! Möglicherweise möchten Sie auch zu erkunden unsicherer C# code. Könnte es helfen, Sie verstehen, viele der erweiterten Funktionen von C++.
InformationsquelleAutor der Antwort Nescio
In Respekt vor den OP ' s will ich nicht sagen, nichts darüber, wie ich denke, dass C++ kann helfen, eine C# - Programmierer denken anders über code. ;-p
Aber im ernst, als ein Werkzeug der wichtigste Vorteil von C++ ist, dass es multi-Plattform. Code in C++ geschrieben werden können, laufen auf einer Vielzahl von Plattformen.
Auf der anderen Seite der große Nachteil von C++ im Vergleich zu C# ist, dass es dauert viel länger, richtigen code zu schreiben.
Es ist zwar möglich, schneller zu schreiben von code in C++ in der Theorie wird vorausgesetzt, eine unbegrenzte Menge an Entwicklungszeit. In der Praxis, weil ich schreiben kann, anspruchsvoller, schneller code in C#, ich kann verbringen Sie die zusätzliche Zeit, die den code optimieren.
InformationsquelleAutor der Antwort cdiggins
Es hängt davon ab, welche Programme Sie gerade arbeiten. Ich habe noch nie verwendet Python vor, so dass ich kann nicht kommentieren, die.
Als für C++, die meisten performance-kritische software geschrieben, die es aufgrund seiner Geschwindigkeit. Sie haben mehr macht über Ihre hardware, aber mit dieser macht kommt Verantwortung und steiler Lernkurve. Es ist auch nicht Zugriff haben .NET; so werden Sie wahrscheinlich haben, um zu Graben in die Win32-Programmierung für tun einige der Aufgaben!
Beispiele, wo C++ verwendet wird: Spiele-Entwicklung, Luft-und Raumfahrt, air-traffic-control-Systeme.
Persönlich, ich denken, dass das erlernen von C/C++ macht Ihnen ein besserer Programmierer insgesamt, es lehrt Sie viele Dinge, vor allem über die Leistung und Speicher. Und auch gut.. so ziemlich alles, was wichtig ist, ist gebaut in C++.
InformationsquelleAutor der Antwort Charles
First off, Es klingt wie Ihr daran interessiert, mehr zu lernen. Das ist wirklich der wichtigste Teil des seins ein guter Programmierer.
Sagte; Fast alle großen open-source-Projekte, geschrieben in C oder C++, wenn Sie wollen, zu nutzen, oder bauen auf diejenigen, die Sie brauchen, um zu wissen, die Sprache. Nicht nur ist das arbeiten mit einer großen open-source-Projekt sehen toll aus auf dem Lebenslauf, es auch lassen Sie uns untersuchen, einige wirklich gute (und wirklich schlechten) code. Für mich ist das allein war eine unschätzbare lernen Erfahrung.
InformationsquelleAutor der Antwort Jon Clegg
Der primäre Grund, zu lernen, neue oder andere Sprache zu lernen, eine neue und andere Ansätze zur Lösung der Probleme in der Programmierung. C# und C++ sicherlich haben einige Gemeinsamkeiten. Sie haben auch einige ziemlich erhebliche Unterschiede. Auf den ersten, diese Unterschiede scheinen (wie ein paar erwähnt haben) werden in Erster Linie mit syntax. Eine weitere Studie, allerdings zeigen sich erheblich größere Unterschiede, die weit über einfache syntax.
Das bedeutet, dass wenn Sie sich entscheiden, zu studieren, C++, müssen Sie planen, auf widmet einen fairen Betrag von Zeit und Mühe, um es, bevor Sie gewinnen viel. Wenn Sie möchten, etwas, das sich radikal von der get-go, würden Sie wahrscheinlich besser dran mit etwas anderem. Mein eigener Rat für eine ganz andere Sprache wäre die Regelung-im Grunde Lisp mit einem guten Hausputz.
Es gibt viele andere funktionale Sprachen, und einige von Ihnen sind ziemlich cool-aber Lisp überlebt hat eine Menge von Möchtegern-Nachfolger, und ich denke, es wird überleben schon ein paar mehr. Wenn ich ein Wett Mann, würde ich Wetten, auf Lisp überleben F# durch mehrere Jahrzehnte...
InformationsquelleAutor der Antwort Jerry Coffin