Frage

Ich interessiere mich für das Lernen C. Ich habe K & R , und ich habe sogar einige einfache C Erweiterungsarbeiten in R und Python getan. Was ist ein lohnendes Projekt Idee für mit C etwas umfangreicher zu tun? Jedes gute Online-Ressourcen, ähnlich wie Dive Into Python ? Insbesondere auf Programmierer konzentriert Ressourcen, die bereits wissen, neuere Sprachen, die C versuchen zu lernen (erwähnen, dass Dinge wie „ein Array für seine Länge Vorstellung ist Unsinn in C, du fauler Pythonista“).

Mein Hintergrund:

Mathematik / Statistik, von Tag zu Tag Programmierung in Python, R, meist um in natürlichen Sprache-Verarbeitung, Algorithmen und dergleichen.

War es hilfreich?

Andere Tipps

Vor einigen Jahren, ein Freund von mir hat mich gebeten, dass die gleiche Frage: „Wie kann ich C gelernt?“ Ich sagte ihm, einen Gerätetreiber zu schreiben.

Stellen Sie sich meine Überraschung, als er es tatsächlich getan hat.

Etwas off topic, aber da Sie erwähnen Ihr Hintergrund in Mathematik und Statistik Ihre Hand auf Project Euler versuchen sollte. Es gibt über 200 math / stat Probleme im Zusammenhang zur Verfügung zu lösen. Darüber hinaus, wenn Sie zu einer Lösung kommen, können Sie das Problem Forum sehen, wie andere die gleiche Lösung gelöst. Sehr praktisch für das Sehen, wie andere das Problem zu lösen ... und Spaß zu booten!

www.projecteuler.net

Ich habe einen ähnlichen Hintergrund zu Ihnen. Ich benutze Python eine Menge Mathematik und Datenanalyse für meine Doktorarbeit zu tun, und auch für Web-Programmierung. Der Unterschied ist, dass ich gelernt C zuerst Weg zurück in den 90er Jahren.

Wenn Sie C-Erweiterungen für Python schreiben kann, dann würde ich sagen, Sie haben einen ziemlich guten Griff auf das, was C gut ist. Meiner Meinung nach, ist C heute am besten geeignet für zwei Dinge:

  • Schreiben Low-Level-Software, die mit Hardware interagiert.
  • Schreiben Code, der tut sich wiederholende, ermüdend, rechenintensive Sachen (Mathematik, XML-Parsing, etc.) ... vielleicht als Erweiterung für eine übergeordnete Sprache.

Natürlich viele Anwendungen höhere Ebene wird auch in C geschrieben, vor allem unter Linux die ich gefunden habe, aber zu einem großen Teil sind diese bei den „nackten Knochen“ C von K & R oder der Standardbibliothek nicht wirklich geschrieben . Vielmehr nutzen sie Frameworks wie Glib oder wxWindows oder der Apache Portable Runtime, oder andere, die alle objektorientierte Struktur oder Konventionen eine Art von Gebrauch genommen, und oft abstrakt einige der grundlegenden Speicherverwaltung Details von C. weg

Also ich denke, dass macht Ihre C Fähigkeiten nützlich in der heutigen Programmiersprache Umgebung ist weitgehend über Low-Level-Arbeit zu tun, oder vertraut zu machen mit einem diesen übergeordneten Rahmenbedingungen. Ich persönlich mag die Glib und GTK-Bibliotheken viel, da sie ein sehr dynamisches objektorientiertes Modell (viel wie Python) verwenden, ohne dass Sie von der Verwendung der Low-Level-Funktionen von C zu verhindern.

Sie können einen Interpreter für eine einfache Sprache schreiben. Verwenden Sie flex / Bison. Machen Sie es multithreaded usw. Dieser Spaß ist und dazu neigt, Zeiger viel zu trainieren. Ich schrieb etwas wie das für ein Schulprojekt rel="nofollow: Eine einfache Stack-basierte Sprache mit zwei verschiedenen Müll Sammler, TwoSpace und eine gleichzeitige Ausführung. Das hat Spaß gemacht. Und machbar als erstes c Programm größer als „Hallo, Welt!“

Besuche lernen C auf die harte Tour, es ist ein kostenloses eBook, die Sie durch viele Beispiele von C-Code und Übungen nimmt, um für Sie zu lernen.

http://c.learncodethehardway.org/

Finden oder ein Problem in dem Tag zu Tag Arbeit definieren und sie zwingen, es zu lösen mit C anstelle von Python. Das wird Sie zwingen, die Sprache zu lernen, während das Problem relevent zu halten, was Sie normalerweise tun.

Implementieren Sie eine virtuelle Maschine (JVM, zum Beispiel).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top