Wie beginnen? C oder C++
-
volkard schrieb:
icarus2 schrieb:
Hättest du vielleicht noch einen kleinen Buch-Tipp?
Der Breymann dürfte Dich glücklich machen.
Da stimm ich volkard zu x)
Ulrich Breymann erklärt sehr ausführlich und mit guten Beispielen aus der Realität
http://www.hanser.de/buch.asp?isbn=978-3-446-41644-4&area=Computer
Lg
-
Hehe, ja das klingt doch schon einmal super
Habe ich schon einmal kurz reingeschaut und hat mir auch gefallen.
Danke dir.
-
icarus2 schrieb:
Alles klar. Ich werde mich dann einmal etwas einlesen und mal meine Eltern fragen, ob sie mir ein Buch über C++ kaufen ^^
Vielen Dank für deine Beratung.
Hättest du vielleicht noch einen kleinen Buch-Tipp?
Ich habe keine Ahnung ob die Bücher, die ich hab, überhaupt gut sind. Ich hab das meiste online gelernt.
C++ - Eine Einführung von Breymann, C++ für Dummies von Davis.
-
Kontrasubjekt schrieb:
Das mit den Features kann ich jetzt nicht nachvollziehen, du musst halt nur wissen was C++ bietet das C nicht hat, dann schreibst du nur C Code.
naja, es gibt schon einige unterschiede:
http://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B
http://david.tribble.com/text/cdiffs.htm
-
Ich würde mal behaupten, der Unterschied zwischen richtigem C++ und C ist ungefähr genauso groß wie der zwischen Java und C++.
-
Ich finde den historischen Zugang immer am besten, daher rate ich zum Einstieg in C.
http://www2.its.strath.ac.uk/courses/c/
-
;fricky schrieb:
Kontrasubjekt schrieb:
Das mit den Features kann ich jetzt nicht nachvollziehen, du musst halt nur wissen was C++ bietet das C nicht hat, dann schreibst du nur C Code.
naja, es gibt schon einige unterschiede:
http://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B
http://david.tribble.com/text/cdiffs.htm
Ich habe meinen Code bisher immer so geschrieben, dass ich derartige Konflikte nie hatte. Ich denke nicht dass diese Probleme passieren, wenn man C++ lernt aber C schreibt, sondern man im gegenteil einige gute Gewohnheiten für C mitbringt.
Gewöhnt man sich C an, geht aber umgekehrt C++ etwas schwieriger. Wie gesagt, im zweifelsfall klärt google ein paar Details imo schnell.
-
Liebe Leute, lest!
icarus2 schrieb:
Ich habe bereits viel mit Java programmiert. Da ich nächstes Jahr an der ETH studiere,...
Also nix mir "blutiger Anfänger" und "Grundlagen von ganz unten am besten mit Lötkolben anfangen".
-
Kontrasubjekt schrieb:
Ich denke nicht dass diese Probleme passieren, wenn man C++ lernt aber C schreibt, sondern man im gegenteil einige gute Gewohnheiten für C mitbringt.
welche 'guten gewohnheiten'? ich glaube eher, dass vieles, was unter C++ als richtig gilt, unter C keine bedeutung hat oder sogar falsch ist. deswegen sollte man besser C++ lernen wenn man C++ machen will und C, wenn man C machen will. beides gleichzeitig zu lernen, stelle ich mir schwierig vor, weil vieles sehr ähnlich ist, aber sich in details doch unterscheidet (siehe die links).
volkard schrieb:
Liebe Leute, lest!
icarus2 schrieb:
Ich habe bereits viel mit Java programmiert. Da ich nächstes Jahr an der ETH studiere,...
hat er gesagt was er studieren will? wenn's irgendwas richtung e-technik sein soll, dann würde ich C empfehlen.
ach ja, da steht dass er auch objective-C programmieren will. dann dann ganz klar: nehme er sich C vor. C ist in obj-C vollständig enthalten.
-
Nach meiner Einschätzung dürfte der Weg von C++ zu C einfacher sein. Wenn man C beherrscht besteht die Gefahr, dass man in C++ einfach wie in C weiter programmiert, da C++ fast ganz C als Untermenge enthält. Dadurch nutzt man dann aber nicht die zahlreichen Vorteile, die C++ einem bringt und man programmiert nicht wirklich C++.
Als Einstiegslektüre für C++ solltest du dir das neue Buch von Bjarne Stroustrup (dem Erfinder der Sprache) anschauen
Programming: Principles and Practice Using C++ | ISBN: 0321543726
-
^^
Es ist irgendwie alles zuviel des Guten, es ist kein Anfänger Buch, es ist kein Style-Guide für Fortgeschrittene, es ist auch keine Reference. Gut gemeint, aber nicht gut gemacht.
P.S.: Man könnte "Zuviel des Guten" auch über C++ selbst sagen. In diesem Sinn passt das Buch zur Sprache und dessen Schöpfer.http://www.amazon.de/product-reviews/0321543726/ref=cm_cr_dp_all_summary/275-9852612-0662225
*frech grins*
-
Also ich werde an der ETH Informatik studieren.
Hmm, ich glaube ich werde mir mal ein C++ Buch besorgen. Vielen Dank für alle eure Antworten
-
Fortsetzung von hier, da jener Thread geschlossen wurde. In diesem Forenbereich ist so ein Thread nicht viel Wert, weil gleich Trolle darüber herfallen werden und es nur eine Frage der Zeit ist, bis wieder ein Flamewar ausbricht. Die Schliessung ist meiner Ansicht nach eine Fehlentscheidung; die Thematiken sind ja bei Weitem nicht das Gleiche, auch wenn es indirekt um die ETH geht.
Zum Thema: Ich kann deinen Standpunkt völlig nachvollziehen, drakon. Es gibt leider einige Programmierer, die nur oberflächlich oder gar nicht mit einer Programmiersprache gearbeitet haben und sich trotzdem anmassen, ein Urteil zu fällen. Dass C++ einige Mängel hat, ist unbestritten - das haben aber andere Sprachen genauso. Ich halte C++ trotzdem für einen guten Einstieg, wenn einen verschiedene Techniken interessieren und man nicht nur möglichst schnell seine GUI zusammenklicken will.
Wie es der Zufall so will, habe ich gerade heute jemanden getroffen, der mich gefragt hat, wie man sich sowas wie C++ überhaupt antun könne. Ich habe mich dann nicht auf eine Diskussion eingelassen. Wer so etwas ernsthaft fragt, hat sich mit den Konzepten nie näher auseinandergesetzt und wird wahrscheinlich auch die Gründe nicht nachvollziehen können. Besonders wenn man vorher von Sprachen wie C# und Java kommt, scheint einem C++ schon allein deshalb schlecht, weil vieles nicht mehr so einfach geht und man plötzlich mehr überlegen muss, um keine Fehler zu machen (hauptsächlich während des Lernens, weil viele Dinge eben anders - manche meinen "komplizierter" - ablaufen). Was viele Leute vergessen oder absichtlich nicht sehen wollen: Durch Sprachmittel wie Zeiger und manuelle Speicherverwaltung gewinnt man enorme Flexibilität. Die Fehleranfälligkeit ist mit der Zeit kaum noch ein Problem, da man sich durch Klassen und andere Abstraktionen vom Low-Level wegbewegt, gleichzeitig aber weiterhin dessen Vorteile nutzen kann.
Ich mag an C++, dass man viele Möglichkeiten hat - man kann sehr maschinnenah programmieren, aber auch auf hohem Abstraktionslevel entwickeln, das andere Sprachen in der Form nicht einmal kennen (Stichwort Templates). Dafür gibt es in anderen Sprachen Dinge, welche in C++ mühsamer oder gar nicht möglich sind. Aber solange man nicht über den Tellerrand schaut und seine eigene Programmiersprache als heile Welt ansieht, macht eine Diskussion nicht allzu viel Sinn. Es ist auch schade, dass man aufgrund solch oberflächlicher Ansichten mit einer voreingenommenen Einstellung an eine neue Sprache herangeht und sich dann stets einredet, dass diese gar nicht gut sein kann, selbst wenn man gewisse Vorteile erkennt.
-
Ich mag an C++, dass man viele Möglichkeiten hat - man kann sehr maschinnenah programmieren, aber auch auf hohem Abstraktionslevel entwickeln, das andere Sprachen in der Form nicht einmal kennen (Stichwort Templates).
Genau das ist der Punkt, der es meiner Meinung nach ausmacht in C++ zu programmieren. Man hat keinerlei Einschränkungen. Ich meine auf eine Art ist das der Grund, warum ich angefangen habe zu programmieren. Wegen den unbeschränkten Möglichkeiten. Man kann alles tun. Auf eine saubere und auf eine unsaubere Art, ohne Frage, aber man hat keine Barieren.
Aber so die Grundaussage von dem Thread im anderen Forum war ja, dass C++ nicht für grosse Software Projekte geeignet seie. Worauf wir beide leider nicht aus Erfahrung reden können, dass es geht, darum hoffe ich auf Leute, die sich tatsächlich auch im Millionen Zeilen Bereich befinden. Nichts desto trotz bin ich der Meinung, dass es möglich und auch durchaus wünschenswert ist solche Projekt in C++ zu machen. Ich meine auf eine Art verliert es sich wieder, wie viel Code das Projekt hat, bei dem man mitarbeitet, da man üblicherweise ja nicht alle kennt, geschweige denn im Kopf hat. Man ist dann ja lediglich User von anderen Komponenten, welche "zufälligerweise" im gleichen Projekt sind. Das ist dann das gleiche, ob ich eine externe Bibliothek benutzt.. Man kann eh nicht mehr als ein paar (10)-Tausend Zeilen im Kopf haben, was auch in Hobbyprojekten relativ leicht erreicht wird. Irgendwann benutzt man lediglich noch die Schnittstellen, die man mal am Anfang geschrieben hat. Ich bin sogar der Meinung, dass teilweise Hobbyprojekte bessere Design haben, als solche Millionen Zeilen Projekte, weil man sich wirklich Zeit nehmen kann für das Design und weder Druck, noch Zeitmangel hat und auch gut mal das gesamte Design umkremplen kann, wenn man möchte.
-
Worauf wir beide leider nicht aus Erfahrung reden können, dass es geht, darum hoffe ich auf Leute, die sich tatsächlich auch im Millionen Zeilen Bereich befinden.
Ich bin sogar der Meinung, dass teilweise Hobbyprojekte bessere Design haben, als solche Millionen Zeilen Projekte,
Merkst du etwas??
-
Ich arbeite an einem C++ Projekt mit mehr als 1 Millionen Zeilen und C++ ist bei uns nicht das große Problem. Die Komplexität und teilweise schlechtes und altes Desgin sind die Probleme. Aber die Probleme gibts glaub ich bei jeder SW die über Jahre wächst.
-
drakon schrieb:
Aber so die Grundaussage von dem Thread im anderen Forum war ja, dass C++ nicht für grosse Software Projekte geeignet seie. Worauf wir beide leider nicht aus Erfahrung reden können, dass es geht, darum hoffe ich auf Leute, die sich tatsächlich auch im Millionen Zeilen Bereich befinden.
wenn du in dem forum 'nen account hast, dann poste mal diesen link: http://www.mistybeach.com/articles/WhyIDontLikeCPlusPlusForLargeProjects.html
-
ppppppppppppppp schrieb:
Worauf wir beide leider nicht aus Erfahrung reden können, dass es geht, darum hoffe ich auf Leute, die sich tatsächlich auch im Millionen Zeilen Bereich befinden.
Ich bin sogar der Meinung, dass teilweise Hobbyprojekte bessere Design haben, als solche Millionen Zeilen Projekte,
Merkst du etwas??
Das ist eine Meinung, kein Faktum, wenn du das ansprechen willst. Es kann sein, dass ich mich irre und dann kann mir das jeder mit Fakten aufzeigen, dass ich das tue. Wenn mir jemand aufzeigen kann, WARUM ein "kleines" Projekt kein besseres Design haben KANN, als ein grosses, dann soll er das tun und dann ändere ich meine Meinung vielleicht, aber solange das niemand tut, oder ich die Erfahrung selbst mache, glaube ich daran.
Oder auf was willst du hinaus?
-
Ich arbeite beruflich mit an einer Software, die mehrere Millionen Zeilen umfasst. Ich denke man kann das Design einer solchen Software einfach nicht mit einem kleinen 10k-Zeilen-2Mann-Projekt vergleichen:
In einem Mammut-Projekt gibt es mehrere Designer und Architekten, lediglich das ganz grobe Design ist abgestimmt, auf Skalen, die jenseits dessen sind, was das 10k-Zeilenprojekt je umfassen wird. Auf so großen Skalen ist es einfach irgendwann nicht mehr wirtschaftlich bei größeren Anforderungen ein entsprechendes Redesign vorzunehmen, statt dessen muss angeflickt werden und die Teildesigns gehen an einigen Stellen Kompromisse ein, die es in einem Kleinprojekt icht braucht. Viele Entwickler und Designer arbeiten an vielen Teilprojekten, so dass sich die Designs der einzelnen Teile grundlegend unterscheiden können, was einen unregelmäßigen Eindruck vermittelt. Gerade bei nach außen hin sich schnell entwickelnder Software liegen die innersten Kernkomponenten mmernoch in der Größenordnung des Kleinprojektes, aber es fasst sie niemand an, weil sie ihren Zweck erfüllen, auch wenn sie durch 10 Jahre altes Design altbacken scheinen. Es ist nunmal so, dass bei der Skalierung um den Faktor 1000 nicht die Zeilen 1000mal so lang werden, auch nicht die Funktionen oder Klassen, sondern die Anzahl der Funktionen, Klassen und Module sich vergrößert, was genau die Ebene ist, auf der Design stattfindet. Man kann ein Bilderbuchdesign, dass im State-of-the-Art Buch mit 100 Zeilen skizziert wird, vielleicht auf ein 10k Zeilen Projekt übertragen. Man kann es aber nicht auf ein 10M Zeilen Projekt skalieren.
-
;fricky schrieb:
^^
Es ist irgendwie alles zuviel des Guten, es ist kein Anfänger Buch, es ist kein Style-Guide für Fortgeschrittene, es ist auch keine Reference. Gut gemeint, aber nicht gut gemacht.
P.S.: Man könnte "Zuviel des Guten" auch über C++ selbst sagen. In diesem Sinn passt das Buch zur Sprache und dessen Schöpfer.http://www.amazon.de/product-reviews/0321543726/ref=cm_cr_dp_all_summary/275-9852612-0662225
*frech grins*
Die Rezension ist wohl kaum zitierwürdig. Sehr schlechtes Deutsch, er kritisiert, dass in dem Buch Vor- und Nachteile der Herangehensweisen diskutiert werden (will er ein Buch lesen oder ein ewig langes Quellcodelisting?), usw. usf.