Question

Je voudrais apprendre le C. J'ai lu K & amp; R , et j’ai même fait quelques simples travaux d’extension C sous R et Python. Quelle est une idée de projet valable pour faire quelque chose de plus substantiel avec C? Toutes les bonnes ressources en ligne, similaires à Plongez au coeur de Python ? En particulier, les ressources sont destinées aux programmeurs qui connaissent déjà de nouvelles langues et qui essaient d’apprendre le C (qui mentionnent des choses telles que "Demander à un tableau de mesurer sa longueur est un non-sens en C, paresseux Pythonista").

Mon arrière-plan:

Math / stats, programmation quotidienne en Python, R, principalement autour du traitement du langage naturel, des algorithmes, etc.

Était-ce utile?

Autres conseils

Il y a plusieurs années, un de mes amis m'a posé la même question: "Comment puis-je apprendre le C?" Je lui ai dit d'écrire un pilote de périphérique.

Imaginez ma surprise quand il l’a fait.

Un peu hors sujet, mais puisque vous mentionnez que votre parcours est en mathématiques et statistiques, vous devriez vous essayer au projet Euler. Plus de 200 problèmes liés aux mathématiques et aux statistiques peuvent être résolus. En outre, une fois que vous avez trouvé une solution, vous pouvez consulter le forum sur les problèmes pour voir comment les autres ont résolu la même solution. Très pratique pour voir comment les autres résolvent le problème ... et amusant de démarrer!

www.projecteuler.net

J'ai un passé similaire à vous. J'utilise Python pour effectuer beaucoup de calculs et d'analyses de données pour mes recherches de doctorat, ainsi que pour la programmation Web. La différence, c’est que j’ai appris le C d’abord, dans les années 90.

Si vous pouvez écrire des extensions C pour Python, alors je dirais que vous savez très bien en quoi C est bon. À mon avis, C aujourd'hui convient mieux à deux choses:

  • Écriture de logiciels de bas niveau qui interagissent avec le matériel.
  • Écrire du code qui effectue des opérations répétitives, fastidieuses et gourmandes en ressources processeur (mathématiques, analyse syntaxique XML, etc.) ... peut-être en tant qu’extension pour un langage de niveau supérieur.

Bien sûr, de nombreuses applications de niveau supérieur sont également écrites en C, en particulier sous Linux que j'ai découvert, mais dans la plupart des cas, elles ne sont pas vraiment écrites dans la phrase "bare-bones". C de K & R ou la bibliothèque standard. Ils utilisent plutôt des frameworks tels que Glib, wxWindows ou Apache Portable Runtime, entre autres, qui utilisent tous une sorte de structure ou de convention orientée objet, et font souvent abstraction des détails de base de la gestion de la mémoire de C.

Je pense donc que rendre vos compétences C utiles dans l'environnement actuel des langages de programmation consiste essentiellement à effectuer un travail de bas niveau ou à vous familiariser avec l'un de ces frameworks de haut niveau. Personnellement, j'aime beaucoup les bibliothèques Glib et GTK, car elles utilisent un modèle orienté objet très dynamique (un peu comme Python) sans vous empêcher d'utiliser les fonctionnalités de bas niveau de C.

Vous pouvez écrire un interprète pour un langage simple. Utilisez flex / bison. Faites-le multithread, etc. Ceci est amusant et a tendance à exercer beaucoup de pointeurs. J'ai écrit quelque chose comme ça pour un projet d'école : un langage simple basé sur une pile avec deux ordures différentes collectors, TwoSpace et une version concurrente. C'était amusant. Et faisable comme tout premier programme C plus grand que "bonjour, monde"!

Découvrez C, c’est un livre électronique gratuit qui vous guide à travers de nombreux exemples de code C et d’exercices pour vous permettre d’apprendre.

http://c.learncodethehardway.org/

Recherchez ou définissez un problème dans votre travail quotidien et forcez-vous à le résoudre en utilisant C au lieu de Python. Cela vous obligera à apprendre la langue tout en gardant le problème pertinent par rapport à ce que vous faites normalement.

Implémentez une machine virtuelle (la JVM, par exemple).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top