C C lernen mit Programmiererfahrung

CA3D0

Lt. Commander
Registriert
Apr. 2011
Beiträge
1.141
Hi,

ich will gerne in C Programmieren lernen, aber ich habe schon ein wenig Erfahrung mit C++ und die meisten Resourcen scheinen sich an vollständige Anfänger zu richten. (und der C Link der FAQ ist tot)

Ich habe Erfahrung in:
-Java: Viel Erfahrung, habe schon diverese kleinere Projekte drin geschrieben
-C++: Nur die Grundlagen, hauptsächlich Klassen und Memory Management (keine Inheritance etc.)
-Grundlagen von Python, Haskell, Prolog

Die Materialien können auch Englisch sein und müssen nicht kostenlos verfügbar sein.
 
Für den Anfang kannst du auf "C-How-To" lernen, das ist ne super Seite um die Grundlagen zu lernen. Dann würde ich mich wenn du es weiter machen willst ein Buch zulegen um dein Wissen noch weiter zu vertiefen. (Es wird gemunkelt Jürgen Wolf soll nicht der beste Autor sein???)
Ansonsten ist Tutorials-Point auch ne Super Seite.
 
Gerade wenn du schon Programmiererfahrung hast: Was willst du dann noch mit C? Selbst auf µC sollte man neue Projekte in C++ schreiben.
C lernen macht imho nur Sinn, wenn man einen Job hat wo alte C Projekte gepflegt werden (müssen).
 
kuddlmuddl schrieb:
Gerade wenn du schon Programmiererfahrung hast: Was willst du dann noch mit C? Selbst auf µC sollte man neue Projekte in C++ schreiben.
C lernen macht imho nur Sinn, wenn man einen Job hat wo alte C Projekte gepflegt werden (müssen).
Es gibt genug Gründe. C ist eine sehr verbreitete Sprache und sie zu beherrschen nützt allein dafür schon. Viele Projekte freier Software sind in C geschrieben. In der Lage zu sein, mal einen Bug selber zu fixen ist eine großartige Fähigkeit. Manch einer landet damit sogar namentlich in der Revisionshistorie von OpenBSD (*hust*)
 
Zuletzt bearbeitet:
Danke, ich werde mir die Bücher mal anschauen (und eins aussuchen)

Ich brauche C, da ich im nächsten Semester an der Uni eine Vorlesung über High Performance Computing in C hören will.
 
@lenGra: Ich kenne mich nicht wirklich mit C aus, aber ich würde keine Programmiersprache aus einem 25 Jahre alten Buch lernen.
 
Du kannst auch einfach C++ lernen, die wesentlichen mir bekannten Unterschiede sind - abgesehen von nicht vorhandenen Dingen wie Klassen etc. -, dass du in C malloc und free nutzen musst statt new und delete und bei structs das struct keyword davor schreiben musst oder typedef struct{int a} IntStruct; und dann bei der Variablendefinition IntStruct b; b.a=5; schreiben musst. Es gibt bestimmt Bücher/Tutorials für C++-Programmierer, die auf C umsteigen wollen, der Umstieg sollte im Allgemeinen aber nicht so schwer sein.
 
Zuletzt bearbeitet:
@Magogan:
Das ist zwar nicht ganz falsch, aber letztendlich ein Trugschluss: Das C Subset von C++ stammt aus 1989 und war schon damals nicht vollständig kompatibel. Inzwischen bietet C einige Funktionalitäten, die es in C++ nicht gibt und außerdem gehört zum Lernen einer Programmiersprache auch das Thema Best Practices und die sehen bei C logischer Weise anders aus als bei C++.
 
Zuletzt bearbeitet:
Aber das ist im Prinzip auch irrelevant, da die Programmiersprache in diesem Fall ja nur für eine Vorlesung gebraucht wird. Da sollte es ausreichen, C++ zu kennen. Ich bin ja auch mit Betriebssystemprogrammierung in C klargekommen, obwohl ich vorher fast nur in PHP Webseiten programmiert habe. Die paar Aufgaben in Java und C von anderen Modulen an der Uni, die ich früher gemacht habe, waren da nicht so hilfreich. Es sollte sogar ausreichend sein, grundlegende Programmierkozepte zu kennen, um das Modul zu schaffen, zumindest war das bei mir bisher immer so im Studium.
 
C ist die Grundlage so ziemlicher jeder anderen Sprache, eigentlich müsste sie jeder können sonst versteht man die Hälfte der Konzepte einer Sprache nicht.
 
rob- schrieb:
C ist die Grundlage so ziemlicher jeder anderen Sprache, eigentlich müsste sie jeder können sonst versteht man die Hälfte der Konzepte einer Sprache nicht.

Ich wüßte aber auch nicht einen einzigen Grund, weshalb man nicht im Stande sein sollte, Sprachen wie Python, C++, Perl, Haskell, etc. zu erlernen, ohne je eine Seite C-Code gesehen zu haben.
 
rob- schrieb:
C ist die Grundlage so ziemlicher jeder anderen Sprache
Außer C++ kenn ich eigentlich keine Sprache, die auf C basieren würde (ich kenn aber auch nur einen kleinen Teil). Bei Java und C# kann man drüber streiten. Die Syntax ist zwar ähnlich, aber semantisch und konzeptionell liegen da doch Welten dazwischen.
Ich persönlich habe übrigens zuerst Pascal und Delphi gelernt, lange bevor ich meine erste Zeile C-Code gesehen habe.
 
Miuwa schrieb:
@lenGra: Ich kenne mich nicht wirklich mit C aus, aber ich würde keine Programmiersprache aus einem 25 Jahre alten Buch lernen.
Das merkt man deutlich. :freak: Sonst würdest Du nicht so einen Unsinn behaupten.

Das genannte Buch von Ritchie & Kernighan ist das Standardwerk über C. Genau so muß sich C verhalten, und es wurde bereits 1978 geschrieben, ist also noch älter. Da sich die Sprache wenig geändert hat, ist das Buch nach wie vor die Referenz. Es gibt sehr wohl viele Programmiersprachen, die man mit alten Bücher noch genau so gut lernen kann. Schau Dir SQL an, Cobol, Lisp..., da hat sich kaum was geändert.
 
@PHuV: Und ich dachte c++ würde sich langsam weiterentwickeln...

Laut wikipedia kam die zweite (hier verlinkte) Edition 1988 raus. Inzwischen gab es zwei Standardrevisionen (endlich standardkonformes Multithreading), die HW auf der die Programme laufen hat sich geändert und selbst wenn sich an der Sprache tatsächlich so wenig geändert hat, haben sich die Compiler, Editoren bzw. IDEs, Betriebssysteme, Netzwerke etc. inzwischen durchaus weiterentwickelt.

Soll nicht heißen, dass der Inhalt veraltet/falsch ist, aber er ist vermutlich unvollständig (Das ist wie schon gesagt nur ne Vermutung. Es ist schon ne ganze Weile her, dass ich es gelesen habe und die letzten 10+ Jahre hab ich fast nurnoch c++ programmiert).

Um den Anfang des Vorwortes zu zitieren:
The computing world has undergone a revolution since the publication of The C Programming
Language in 1978. Big computers are much bigger, and personal computers have capabilities
that rival mainframes of a decade ago. During this time, C has changed too, although only
modestly, and it has spread far beyond its origins as the language of the UNIX operating
system.
 
C ist eine extrem simple Sprache und ihre Macht wächst aus der Komplexität, die man aus den simplen Bausteinen errichten kann. Deshalb war es für C nie nötig sich radikal zu verändern und trotzdem durch die Generationen ihre Mächtigkeit zu behalten. Und darum kann man ohne Probleme aus einem alten Buch lernen.

Wo komplexe Sprachen neue Features einführen müssen, weil sie bisher einfach grundsätzlich nicht im Rahmen ihrer Ausdrucksfähigkeit waren, konnte man sich in C -- falls nötig -- fast immer die Features, die man haben will selber zusammenklöppeln. Die Einführung neuer Features diente größtenteils der Bequemlichkeit und nur ganz selten mussten Features eingeführt werden, weil sie außerhalb der Möglichkeiten der Sprache lagen.
 
Zuletzt bearbeitet:
Oder man entfernt ganz einfach bestimmte Sachen, wie gets();
Die soll oder wurde doch im C1X-Standard entfernt. Oder habe ich was verpasst?
 
Naja, ich werde mir jetzt auf jeden Fall mal ein wenig C anschauen, ich denke es wird nicht schaden eine weitere Programmiersprache zu beherrschen, auch wenn ich sie mehr oder weniger viel nutzen werde
 
Ich hatte mir damals auch den C Primer gekauft, als ich ein Projekt in C für die Uni umsetzen sollte. Lag im Endeffekt nur in der Ecke und wurde nie aufgeschlagen, wer schon programmieren kann, muss sich nur kurz Unterschiede in der Syntax ansehen und das wars. Da C eben so low-level ist, gibt es kaum etwas zu wissen.
 
Zurück
Oben