C/C++ Tutorial

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Hi Leute,

kennt wer von euch ein gutes C oder C++ Tutorial? Weiß ja nicht ob es da auch so Fehlgriffe wie galileocomputing gibt :P
Muss nicht bei den Grundkenntnissen des Programmierens anfangen.

€ Wie unhöflich :D Habe ich glatt das Danke vergessen.

Dankeschön :P
BlackJack

@JonasR: Statt *oder* meintest Du sicher *und*. C und C++ sind zwei recht verschiedene Programmiersprachen die nur sich nur einen grossen Teil Syntax teilen. Welche Sprache willst Du denn lernen? Beide?
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Hmmm Ich dachte immer das die beiden sich nicht so stark von einander unterscheiden :D Habe ja aber auch noch keinerlei Erfahrungen mit beiden Sprachen. Am liebsten wäre mir dann C++
lunar

@JonasR: Von den frei im Netz verfügbaren Tutorien und Kurse ist meist abzuraten. Viele sind veraltet, nicht wenige sogar offensichtlich fehlerhaft, keines lehrt modernes, idiomatisches C++. Meines Erachtens ist C++ als Sprache auch zu kompliziert, um sie aus einem Tutorium zu lernen. Lerne lieber aus Büchern, gerade zu C++ gibt es viele anerkannte Standardwerke. Für den Einstieg empfehlen sich der "C++ Primer" oder "Accelerated C++", alternativ gibt es "Effective C++" frei im Netz. Zudem ist "Effective C++" empfehlenswert, dieses Buch behandelt viele Fallstricke und Merkwürdigkeiten der Sprache, und kann gerade beim Einstieg in die Sprache viel Frustration ersparen. Ebenfalls empfehlenswert sind die Werke von Alexandrescu ("Modern C++ Design" und "C++ Coding Standards"). Er hat modernes C++ entscheidend mitgeprägt, auf sein Konto gehen manche moderne Idiome, insbesondere bezüglich Templates. Das ist jetzt nicht obligatorisch für den Einstieg, hilft aber viel beim grundlegenden Verständnis der Sprache, und beim Verständnis generischer C++-Bibliotheken wie boost.

Im Allgemeinen ist C++ eine ziemlich überkomplizierte, und eher unschöne Sprache. Wenn Du C++ nicht lernen musst, und in absehbarer Zeit nicht brauchst, kannst Du Deine Zeit angenehmer verbringen. Lerne lieber Sprachen wie Haskell oder Scheme, mit denen Du wirklich neue Konzepte kennen lernst.
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Hi lunar,

danke für die Antwort ich werde mir die Tutorials mal anschauen. Und mir wohl auch ein Buch kaufen ;) =)

Wieso würdest du mir denn eher zu Haskell bzw Scheme raten? Sehe ich es richtig dass beide keine Objekt orientierte Sprachen sind? Kann ich mit den beiden die gleichen Sachen abbilden wie mit C++?
lunar

@JonasR: Ich rate Dir nicht dezidiert zu Haskell oder Scheme, ich rate Dir nur generell von C++ ab, und empfehle Dir einfachere, und gleichzeitig interessantere Sprachen. Offensichtlich möchtest Du C++ aus Interesse in Deiner Freizeit lernen, und ich glaube eben, dass man seine Freizeit mit schöneren Sprachen verbringen kann.

Ob Du mit anderen Sprachen „die gleichen Sachen abbilden“ kannst wie mit C++, hängt jetzt stark davon ab, was Du damit überhaupt meinst. Objektorientierung alleine ist wohl kaum ein sinnvolles Kriterium.
Zuletzt geändert von lunar am Freitag 23. September 2011, 12:16, insgesamt 1-mal geändert.
deets

Alle erwaehnten Sprachen sind turing-vollstaendig. Soll heissen: man kann mit ihnen alles machen, was man ueberhaupt programmieren kann.

Die Frage ist, was man damit *wie* macht. Und OO ist zB in Python IMHO wesentlich leichter zu lernen und netter, als in C++. C ist eh nicht OO. Haskell & Scheme sind funktionale Sprachen, und die zu lernen erweitert deinen Horizont wesentlich deutlicher, als C++. Das tut einfach nur weh. Sehr.
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

@JonasR lerne doch lieber eine Einfache sprache.
Wie wäre es mit (Typsicherer-)Assembler? :D
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Also, naja, zu C kann man, wie ich finde, immer noch das K&R-Buch empfehlen. Das ist zwar ANSI-C und nicht C99, aber so grundlegende Änderungen gabs ja nicht. Auch wenn ich heutzutage C kaum noch für ganze Programme hernehmen würde und ohne Libraries wie GLib muss man eh immer wieder das Rad neu erfinden. In der hinsicht ist Vala eigentlich ganz interessant, weil es C und GLib und GObject in ein einigermaßen angenehm zu nutzendes Paket verschnürt.

An der Stelle von C++ wären vielleich heutzutage noch D oder Go interessant, aber ich habe in beiden zu wenig Erfahrung und bisher keinen Gebrauch dafür gehabt.
JonasR hat geschrieben:Wieso würdest du mir denn eher zu Haskell bzw Scheme raten? Sehe ich es richtig dass beide keine Objekt orientierte Sprachen sind? Kann ich mit den beiden die gleichen Sachen abbilden wie mit C++?
Naja, Python ist doch schon eine objektorientierte Sprache? Müssen denn alle Sprachen objektorientiert sein? Also Scheme ist an sich zwar funktional, aber es gibt so Pi mal Daumen 10 verschiedene Objektsysteme für Scheme, von Java-Style OOP, über CLOS-Style OOP bis hin zu JavaScript-Style-Prototypen-OOP. Ich fand Scheme eigentlich ganz angenehm, aber vermutlich ist heutzutage Clojure die nützlichere Sprache. In vielerlei Hinsicht ein "weitergedachtes" Scheme.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Scheme entstand interessanterweise, weil Steele und Sussman verstehen wollten, wie Objektorientierung (genauer Actor-basierte Programmierung) funktioniert (http://labs.oracle.com/projects/plrg/JA ... public.pdf, Folie 29).

Es es also einfach um die interlektuelle Erbauung geht, schlägt fast nichts Scheme. Clojure ist da auch zu unaufgeräumt, IMHO. Nett ist IMHO noch Forth (oder Factor als moderner funktionaler Nachfolger), weil es eine wirklich andere Sprache ist. C++ ist einfach nur umständlich, aber bringt im vergleich zu Python kaum weiteren Erkenntnisse. Doch zu verstehen, dass Kontrollstrukturen wie bedingte Anweisungen und Schleifen auch nur Funktionsaufrufe sind, das hat damals bei mir Klick gemacht und so einem anderen (ich bilde mir ja gerne ein, höherem) Verständnis von Programmiersprachen geführt.

Als Teaser: Angenommen, (x p q) beschreibt den Aufruf der Funktion x mit den Argumenten p und q und (λ (x) ...) beschreibt eine anonyme Funktion mit dem formalen Parameter x, der im durch ... abgekürzten Rumpf der Funktion benutzt werden kann, wie funktioniert dann die übliche if-Bedingung (if cond then else)? Ich fodere mal, dass das einfach nur einen andere Syntax für (cond (λ () then) (λ () else) ist. cond soll für einen Ausdruck stehen, der zu einem Wert t oder f wird, was Funktionen sein müssen, da ich ja definiert habe, dass da hinter der Klammer immer eine Funktion steht. Ich muss then und else zu anonymen Funktionen machen, weil if in der Regel immer so funktioniert, dass nur einer der beiden Zweige ausgewertet wird, als kein normaler Funktionsaufruf ist, bei dem (außer in Sprachen wie Haskell) zum Aufruf zuvor immer alle Argumente berechnet werden. Also t == (λ (t e) (t)) und f == (λ (t e) (e)). Eine spezielle Syntax für "if" ist also in einer Sprache mit anonymen Funktionen (und Makros) entbehrlich...

Stefan
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Danke für die Anregungen, sma. Das Konzept von Forth und Factor scheint mir definitv einen Blick wert zu sein (die Sache mit dem Stack halt), auch wenn ich das eher zum Experimentieren für mich sehen würde, um ein besseres Verständnis für Programmierung im Allgemeinen zu erhalten (du hattest das ja schon angesprochen).
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Gerade Factor ist durch Kombinatoren wie ``bi`` & Co. wahnsinnig mächtig, so dass man mit bischen Übung nicht mehr ständig in Stackeffekten denkt, wie das noch etwa bei PostScript der Fall ist. Factors Kombinatoren sind wohl inspiriert von Joy, einer weiteren simpleren stackbasierten Sprache, die eine Implementation in Scheme hat. Und da schließt sich der Zirkel wieder :)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Wie BlackJack schon angesprochen hat sind C und C++ nicht die gleiche Sprache, falls du dich für C entscheiden solltest, kann ich dir das "Galileo Computing C von A bis Z" Openbook empfehlen (mMn für Anfänger gut geeignet)
the more they change the more they stay the same
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Ich wollte hier nur mal was Fragen zu C/C++:
Wieso kann man kann man auf verschiedenen Plattformen nicht gleich auf die Hardware zugreifen?
Ich meine man lernt z. B. C und kann dann Trotz dem nicht auf verschiedenen Plattformen arbeiten. Und eigentlich ist das dann nicht mehr C sondern was C ähnliches. Das gleiche gilt aber auch für andere Sprachen. (Python Anwendungen auf den Handy)
(Hintergrund ist ich will endlich mal Add-ins für Taschenrechner schreiben, for TR forum hab ich schon den Compiler bekommen, und einen Code (C) aber das hilft noch nicht viel weiter.)
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
deets

@Py-Prog: es ist das Wesen von verschiedene Plattformen, dass sie.... verschieden sind. Darum muss man auch verschieden auf sie zugreifen. Wenn dem nicht so waere, dann waeren sie nicht... verschieden?!? Es geht ja nicht nur um die Gehauesefarbe...
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Ich weiß aber das ist blöd, natürlich kann man auf einen Handy, Taschenrechner ect. keine Fenster wie bei Windows oder Linux aufmachen.
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
BlackJack

@Py-Prog: Fenster sind doch sowieso nicht Bestandteil des Sprachumfangs von C oder C++. Wie man Fenster in diesen Sprachen programmiert kann doch sogar auf ein und der selben Plattform unterschiedlich sein. Je nach dem welches GUI-Toolkit man verwendet.
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Danke für die zahlreichen Antworten =)
Da ich C++ eigentlich eh nur zur Erweiterung meiner Programmier Kenntnisse lernen wollte, werde ich wohl dank SMA wohl auf Scheme umschwenken =D Klingt für mich auf jeden Fall interessant und hier raten mir ja eh die meisten dazu C++ nicht zu machen :D

Dann mal eine neue Frage: Hat wer ein gutes Scheme Tutorial? :P
BlackJack

@JonasR: Es gibt zum Beispiel das Standardwerk Structure and Interpretation of Computer Programs. Das Buch gibt's dort als HTML-Fassung zu lesen.
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Hey BlackJack,

gibt es das ganze auch auf deutsch? Mein Englisch ist zwar recht gut aber bei so etwas würde ich lieber 100% verstehen :D
Danke =)

€: Habe es schon gefunden.
http://books.google.de/books?id=ec5YqoX ... &q&f=false
Antworten