Si ce n'est pas le bon endroit pour poser cette question, faites-le moi savoir.
Je suis un programmeur Python de profession. J'aimerais beaucoup apprendre C. En effet, j'ai essayé plusieurs fois, mais je me décourage toujours. En Python, vous écrivez quelques lignes et le programme fait des merveilles. En C, je n'arrive pas à faire quoi que ce soit d'utile.
Il semble même très compliqué de se connecter à Internet.
Avez-vous des suggestions sur ce que je peux faire pour apprendre le C? Existe-t-il de bons sites Web? Des projets sympas?
Merci
Réponses:
Ne vous découragez pas.
Python est un langage de programmation de haut niveau. Par rapport à C, il peut produire des merveilles dans une toute petite quantité de code. Ne commencez pas par essayer d'imiter les résultats Python en C - vous serez rapidement découragé. La programmation en C nécessite un style de pensée et de compréhension différent, car lorsque vous interagissez avec l'ordinateur à un niveau plus intime. Voici un bon point de départ pour apprendre C:
Livres
Matériel en ligne
la source
Si vous voulez apprendre le C, ne commencez pas par vous connecter à Internet. Vous pouvez le faire dans n'importe quelle autre langue. Ce n'est pas ce qui est le plus important en C.
Au lieu de cela, jetez un oeil à des pointeurs, tableaux, références, struct dans ce C Tutorial . Cela vous aidera à comprendre la gestion de la mémoire et de nombreuses fonctionnalités qui "vous rapprochent de la machine".
Si vous pouvez apprendre et comprendre ce matériel, envisagez de vous étendre à un projet possible. Ces concepts sont fondamentaux pour toute véritable programmation C professionnelle.
Ce didacticiel sur les pointeurs semble également utile.
la source
C_Tutorial
lien est rompu ...Il est très compliqué de se connecter à Internet! Penses-y:
Votre ordinateur peut avoir plusieurs façons de se connecter - WLAN, Bluetooth, Ethernet, etc. Chacun d'eux a ses propres paramètres, que vous devez définir. Vous avez de la chance qu'il existe déjà des normes et des pilotes pour ces derniers ... leur utilisation pourrait être beaucoup plus difficile qu'elle ne l'est déjà en ce moment.
Les adresses IP peuvent être IPv4 ou IPv6, et vous devez être capable de gérer les deux.
Il peut y avoir ou non des proxys configurés pour le système.
Vous devez prendre en charge FTP, HTTP ou tout autre protocole.
Vous devrez peut-être utiliser l'accès à distance, vous devez donc spécifier un répertoire téléphonique avec des mots de passe et des numéros de téléphone, si vous n'êtes pas déjà connecté. Idem avec les noms d'utilisateur / mots de passe WLAN.
Vous devrez peut-être travailler avec des cookies.
Le système peut mettre en cache certaines données. Voulez-vous utiliser le cache ou non?
Et la liste continue encore et encore.
Donc, le fait qu'il soit facile de les faire avec Python signifie nécessairement que beaucoup d'entre eux vous sont cachés (ou difficiles à définir), donc vous échangez la simplicité contre de la puissance. La bibliothèque C est l'opposé: elle a toute la puissance dont vous avez besoin (vous pouvez facilement effectuer des appels système), mais n'a pas de valeurs par défaut (ou, en fait, aucune fonctionnalité pour se connecter à Internet).
Au lieu de penser à C comme étant fastidieux, pensez-y comme étant puissant. Mais dans tous les cas, n'essayez pas de vous connecter à Internet avec - c'est une sacrément difficile à faire. Au lieu de cela, commencez à apprendre à utiliser la bibliothèque pour des tâches plus élémentaires (par exemple, les E / S de fichiers), découvrez comment les pointeurs et les tableaux fonctionnent réellement, et lorsque vous apprenez tout cela, puis essayez de vous attaquer à de gros projets. Vous apprécierez également Python de cette façon. :)
Modifier :
Je suggère personnellement que, si vous avez du temps libre, apprenez d'abord C # à la place. Dès que vous vous familiarisez avec celui-ci, commencez à en apprendre davantage sur le
unsafe
mot - clé et à utiliser les pointeurs et à effectuer le marshaling en C #. Vous aurez toujours une très grande bibliothèque avec laquelle travailler, comme avec Python, mais vous pourrez faire beaucoup de choses que vous pouvez faire en C. Ensuite, passez manuellement aux API système appelantes (comme InternetOpen ), et apprenez comment les faire fonctionner. Vous aurez toujours beaucoup de flexibilité, mais vous obtiendrez une excellente introduction aux concepts de niveau inférieur. Après avoir fait cela, alors commencez à apprendre le C - alors vous le trouverez comme un morceau de gâteau, et vous verrez (C? l'obtenir?) les avantages et les inconvénients des langages de haut niveau et de bas niveau, et vous pourrez pour trouver celui qui correspond à vos besoins.Cela dit, je pense qu'un cours intensif en C pourrait être utile comme point de départ pour sauter dans la
merC.la source
Ne lisez pas le code du noyau lorsque vous apprenez C. Il est plein d'astuces pour en tirer le dernier morceau de performance. Certains sont très non standard. Cela vous rendra fou.
Au lieu de cela, jetez un œil à quelques petits projets de haute qualité de code:
la source
L'un des objectifs d'un langage de haut niveau est de cacher des choses compliquées. Si vous voulez apprendre une langue de niveau "inférieur" et que vous ne voulez pas commencer par des choses vraiment compliquées (qui vous étaient auparavant la plupart du temps cachées); essayez de commencer avec des projets d'apprentissage plus simples, de trier un tableau de nombres, ou d'inverser une chaîne de caractères, ou d'autres ...
Il est plus facile de monter une colline escarpée en faisant de petits pas.
la source
En ce qui concerne les projets sympas à regarder: les noyaux Unix sont écrits en C.
la source
Apprenez d'abord la grammaire C, puis utilisez-la pour écrire la structure des données et l'algorithme. Bien sûr, vous pouvez lire le noyau Linux en tant que expert en langage c.
la source