Hi Leute,
kennt wer von euch ein gutes C oder C++ Tutorial? Weiß ja nicht ob es da auch so Fehlgriffe wie galileocomputing gibt
Muss nicht bei den Grundkenntnissen des Programmierens anfangen.
€ Wie unhöflich Habe ich glatt das Danke vergessen.
Dankeschön
C/C++ Tutorial
@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: 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.
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.
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++?
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++?
@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.
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.
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.
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.
@JonasR lerne doch lieber eine Einfache sprache.
Wie wäre es mit (Typsicherer-)Assembler?
Wie wäre es mit (Typsicherer-)Assembler?
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Wer Rechtschreibfehler findet darf sie behalten.
-
- 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.
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.
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.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++?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
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
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
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).
-
- 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
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
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.)
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.
Wer Rechtschreibfehler findet darf sie behalten.
@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...
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.
Wer Rechtschreibfehler findet darf sie behalten.
@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.
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
Dann mal eine neue Frage: Hat wer ein gutes Scheme Tutorial?
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
Dann mal eine neue Frage: Hat wer ein gutes Scheme Tutorial?
@JonasR: Es gibt zum Beispiel das Standardwerk Structure and Interpretation of Computer Programs. Das Buch gibt's dort als HTML-Fassung zu lesen.
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
Danke =)
€: Habe es schon gefunden.
http://books.google.de/books?id=ec5YqoX ... &q&f=false
gibt es das ganze auch auf deutsch? Mein Englisch ist zwar recht gut aber bei so etwas würde ich lieber 100% verstehen
Danke =)
€: Habe es schon gefunden.
http://books.google.de/books?id=ec5YqoX ... &q&f=false