Où commencer (auto-) apprendre C, ou devrais-je apprendre une langue différente?

Dernièrement, je découvre de plus en plus qu’il est bon d’avoir une connaissance approfondie des bases de la programmation. Malheureusement, je suis (l’un des nombreux) développeurs PHP autodidacte et je n’ai aucun regret à avoir choisi cette voie.

Cependant, je pense toujours que je devrais étendre mes connaissances à quelques “vrais” langages de programmation à partir de zéro et développer mes connaissances à partir de là. Je n’ai aucune intention de changer de carrière, mais je pense qu’il serait bon de sortir du cadre du développement Web.

Je préfère ne pas suivre de cours ou de cours, car je n’ai tout simplement pas le temps de le faire. Alors:

  • Quelle est la meilleure façon d’apprendre moi-même le C progressivement, à partir du niveau zéro?

  • Mon objective principal étant d’apprendre davantage de bases de la programmation, C est-il un bon choix pour cela?

  • Si non, quelle langue serait?


Résumé jusqu’à présent:

Tout d’abord, merci pour toutes les bonnes réponses. Ce sera très utile. Bien que la plupart des gens semblent s’accorder pour dire que commencer par le C n’est pas un mauvais choix, j’ai aussi vu des gens affirmer qu’il est probablement préférable de sauter le C et d’aller en C ++ ou même en C # , car ces langages sont plus courants.

Mon opinion personnelle est toujours qu’il serait bon de commencer à partir du niveau zéro , même si le langage lui-même ne consortingbue pas directement à ce que je fais. Je crois toujours que cela fera indirectement de moi un meilleur programmeur. Mais encore une fois, comme dit, ma connaissance de ces langues est assez limitée, j’aimerais donc connaître votre opinion à ce sujet.

Lisez Kernighan et Ritchie “Le langage de programmation C”. C’est le classique.

C’est le livre écrit par les créateurs originaux de la langue. Il est court, très lisible et bien écrit.

Je ne suis pas d’accord avec les deux réponses précédentes qui recommandent le célèbre guide “K & R”. J’étais complètement incapable d’apprendre quelque chose de ce livre; J’ai simplement abandonné après avoir lu le premier tiers du livre environ trois fois. Peut-être que je suis juste idiot.

Je suggère plutôt ce livre merveilleux: Programmation C: une approche moderne (disclaimer: amazon link)

J’ai appris de ce livre tout ce que j’ai besoin de savoir sur C, et il couvre l’histoire autant qu’il le faut, tout en conservant un sharepoint vue “moderne”.

Mise en garde: je ne suis pas venu au C “pour C”, je l’ai passé en route vers mon objective ultime, la programmation Objective-C et Cocoa pour les applications de bureau sur Mac OS X d’Apple. Si vous voulez vraiment une connaissance approfondie de la C, il n’est pas gênant d’obtenir les deux livres mentionnés ci-dessus et de lire le guide K & R après avoir lu Modern C

Ma première étape dans le traitement du C a été une copie du “Langage de programmation C” – c’est un livre simple, mais le langage lui-même est assez simple.

Eh bien, si vous voulez “commencer à partir du niveau zéro”, je vous recommande d’apprendre l’assemblage. oui assemblage. J’ai appris 6502, vous pouvez apprendre x86 si vous aimez ou arm ou mips. Trouvez un émulateur ou un interrupteur et lisez des tutoriels. Vous comprendrez exactement comment fonctionne un processeur et le code sera beaucoup plus logique (comme pourquoi getkeys ne se met-il pas à jour tant que vous n’avez pas fait de pollkeys, etc.).

Après cela, je recommande C # car il n’est pas aussi méchant que c / c ++ (j’utilise principalement c ++). Vous comprendrez comment une ligne C # peut être représentée dans l’assemblage. C # vous permet de faire plus de choses que vous voulez faire, à la différence de c et c ++ (voici une liste de choses que nous pouvons faire en c ++ et que nous pourrons faire dans le prochain standard http://en.wikipedia.org/wiki/ C% 2B% 2B0x , C # en a quelques-unes).

Si vous voulez apprendre beaucoup, vous pouvez essayer d’apprendre la langue que je vous recommande ici https://stackoverflow.com/questions/498964/the-difficulty-in-learning-new-languages-by-yourself/578618#578618 que je pense C’est une bonne idée après le assembly.

Si vous parlez allemand, je vous suggérerais un livre ouvert de Galileo Computing .

Une autre option si vous voulez apprendre les bases de la programmation est de lire L’Art de la programmation informatique de Knuth. Cela vous introduira aux fondamentaux du tout début du temps. Pour plus de compréhension, implémentez vous-même les algorithmes en C.

Il existe un cours universitaire aux universités Indiana et Purdue sur la programmation en C. Le cours comporte des conférences vidéo que vous pouvez trouver ici .

Si vous êtes également intéressé par le C ++, le Web Lecture Archive Project, intitulé “C ++ for Particle Physicists”, propose un ensemble de conférences. Vous trouvez ces conférences ici . Les conférences sont données par Paul Kunz de l’Université de Stanford.

Pour plus de conférences C ++, vous pouvez également consulter ces conférences à partir de Reconnect Networks.

C est un bon choix pour l’éducation traditionnelle. Cependant, avant de parcourir des livres, je suivrais quelques didacticiels IDE. Ainsi, vous maîsortingserez bien les projets de construction et les makefiles. Ces deux problèmes seront les plus grands défis auxquels vous ferez face au début, et ils sont rarement abordés dans un livre.

Lisez “Le langage de programmation C”. Écrivez de courts exercices (certains sont dans le livre). Utilisez un compilateur, tel que gcc .

Le langage de programmation C est un bon sharepoint départ.

De plus, le C lui-même est un bon sharepoint départ pour apprendre les bases de la programmation: vous pouvez trouver un logiciel C et des développeurs C presque partout et de nombreux autres langages s’enracinent dans le C, tels que C ++, C #, Objective-C, …

Après avoir lu le “Langage de programmation C” comme beaucoup l’ont suggéré, je commencerais à étudier des projets open source et à tirer des exemples pratiques. Il y en a beaucoup et ce n’est pas facile de trouver le bon, mais apprendre à lire un bon code est la meilleure alternative pour apprendre d’un bon codeur 🙂
Si vous en avez un: la programmation en binôme ou simplement la révision de code mutuel est le meilleur moyen d’apprendre.

1) Le langage de programmation C K & R 2) Lire beaucoup de code source C. Recherche de code Google

C’est tout.

Si vous voulez lire un bon code source, je vous suggère de tout cœur la Puzzle Collection de Simon Tatham ( http://www.chiark.greenend.org.uk/~sgtatham/puzzles/ , faites défiler vers le bas pour accéder à la documentation du développeur). De cela, vous pouvez apprendre:

  • Comment faire de la programmation en C orientée object (chaque jeu est en un sens une classe qui implémente l’interface “jeu”).
  • Comment écrire en C portable (cachez tous les éléments non-portables derrière votre propre interface).
  • Comment commenter et documenter votre code.
  • Comment faire de la programmation graphique en C.
  • Comment implémenter les structures de données en C (je me souviens de la découverte de l’union et de 2 à 4 arbres en cours de réalisation).

Je crois que votre approche actuelle est incorrecte. C est actuellement un sous-ensemble du C ++ et ne présente pas beaucoup des concepts d’un langage OO moderne. Dans la plupart des cas, il est relégué aux systèmes hérités, et la plupart des nouveaux développements qui ne sont pas liés au code hérité ne sont pas écrits en C. Personnellement, j’ai commencé avec C ++ (autodidacte) et suis passé à C #. Commencer en C ++ vous donne toutes les bases dont vous avez besoin pour comprendre l’orientation des objects et ce qui se passe à un niveau bas. Cependant, pour quelqu’un qui commence, je recommanderais maintenant C # pour la simple raison qu’il est beaucoup plus facile de décoller et de commencer à courir avec. En outre, plusieurs des concepts de c # ont peu d’analogues dans le monde C et rendent la programmation beaucoup plus intuitive (LINQ, lambdas, etc.). Bien que la gestion de la mémoire soit importante (et apparaisse parfois en C #), il est difficile à gérer et plus facile à ne pas s’inquiéter lorsque vous commencez. Plus tôt vous pourrez démarrer un projet intéressant, moins vous risquez d’abandonner.

1) Kernighan et Ritchie

2) Écrire un code solide

3) Code complet

A propos de l’apprentissage C

Si vous voulez vraiment apprendre le c, le livre [Kernighan et Ritchie “Le langage de programmation C”] ( http://en.wikipedia.org/wiki/The_C_Programming_Language_(book)) est un bon début.

Cependant, à mon avis, apprendre le C n’est qu’un exercice d’esprit – vous pouvez apprendre beaucoup de détails importants, comme par exemple:

  1. Différence entre opérateur égal ( == ) et instruction d’affectation ( = ),
  2. L’expression peut avoir une valeur (c’est-à a = 1 dire a = 1 a la valeur 1),
  3. Arithmétique des pointeurs,
  4. Opérations de mémoire directes ( memset() , memcpy() ).

Ces choses sont intéressantes pour les développeurs, mais la plupart d’entre elles ne sont pas utilisées dans le développement d’applications d’aujourd’hui (à l’exception des deux premiers points ci-dessus).

Toutefois, si vous essayez de prendre part à un ordinateur depuis les compétitions, le langage C peut être utile.

Ma recommandation

J’apprendrais le C # car il est moderne, bien conçu (à mon avis), langage de programmation orienté object avec un bon IDE gratuit – Visual Studio Express Edition , un bon support (communauté étendue, beaucoup de code source à tutoriels et exemples). Avec C #, vous pouvez écrire une application console, une application de bureau ou des applications Web, ce qui facilite l’apprentissage en résolvant un large éventail de problèmes réels.

En outre, sur la plate-forme .NET, il existe d’autres choix intéressants – IronPyton ou F # fonctionnel.

Laissez-nous C par Yeshvant P Kanitkar