Aller au contenu

Cours #0 - Avant propos et outils


AlexMog
 Share

Recommended Posts

Bonjour à tous, et bienvenue dans ce premier cours dédié au C.

Dans ce cours, nous allons voir pourquoi il est important de comprendre et de programmer en C, puis nous passeront à une partie plus pratique en regardant les outils qui nous sont proposés pour cela.


I- Pourquoi apprendre le C?

Le C est un langage le plus bas niveau qui existe (après l'ASM bien entendu!), il permet donc de mieux comprendre le fonctionnement de sa machine.

Bas niveau? Cela signifie qu'il est simple?

Bas niveau ne corresponds pas au niveau de simplicité du C. Il s'agit en faite d'un niveau par rapport à la machine. Plus un langage est bas niveau, plus il sera proche du fonctionnement de la machine, donc difficile. Plus il sera bas niveau, plus il nous permettera de comprendre le fonctionnement de la machine.


Nous allons donc avoir plusieurs cours, en ayant pour but de comprendre comment fonctionne notre machine. Pour cela, nous allons nous orienter vers une programmation impérative que nous permet le C, en nous forçant à n'utiliser QUE des appels system (Donc pas de libc! (à titre informatif: c'est la méthode Epitech)). Nous seront donc obligés de re-créer nos propres outils de travail!


Vous l'aurez compris: les prochains cours ont pour but de vous apprendre à utiliser de façon extrême le C. Sans utiliser les outils déjà mis à disposition (libs, etc...), pour vous apprendre à comprendre comment ceux-ci fonctionnent!


II- Les outils pour programmer en C

Le tout premier outils que je vous conseille, c'est d'utiliser LINUX.

Pourquoi Linux?

Eh bien c'est très simple: Linux propose énormément d'outils de débugage, et beaucoup d'outils de programmation (Make, Valgrind, GDB, Emacs etc...). Ainsi qu'une documentation détaillée des appels system et de la libc (grâce notamment à la commande "man"). Enfin, une protection plus rapprochée du système qui vous évitera de mauvaises suprises lorsque vous jouerez avec la mémoire (je conseille fortement d'utiliser les limitations de ram par users pour éviter les forkbombs et autres malloc infinis). Je vous conseille donc fortement d'utiliser Linux.

De mon côté, j'ai opté pour un Debian sur lequel j'ai installé une interface graphique et tout les outils nécéssaires! Je conseille fortement Mint qui est basé sur Debian.

Vous pouvez utiliser une machine virtuelle pour faire tourner votre Linux si vous ne souhaitez pas le rajouter au Dump!


Ensuite, les outils de base:

Nous allons programmer en utilisant 5 outils très importants:

Emacs: C'est l'éditeur qui va nous permettre d'éditer nos codes en C. Il est très pratique, mais il faut connaitre les syntaxes et les racourçis qu'il propose!

GDB: C'est un excellent débugueur qui permet de fixer des points d'arrêt sur son programme, pour réussir à trouver les problèmes de notre programme!

Valgrind: C'est un de mes outils préférés: Il permet de savoir si vous avez bien free tout vos malloc (et donc, bien vidé toute la mémoire) et de repérer les segfaults (à notter: il faut rajouter -g3 aux flags de compilation pour que celui-ci marche pleinement, n'oubliez surtout pas de supprimer -g3 de vos makefiles à la version finale. -g3 rends l'exécutable très lourd).

Make: L'outil Make est l'un des plus importants: il nous permettra de créer un "Makefile" qui va nous permettre, grâce à la commande Make, de compiler, et nétoyer notre programme facilement.

htop ou top: C'est un invité de commandes pour unix, qui va nous permettre de voir l'avancement et l'utilisation de notre RAM/CPU.


Voilà, je vous es donc fait une courte introduction sur tout ce qui es des outils et de la programmation en C!


Rendez-vous au prochain cours!




Cours écrit par AlexMog. Contact: alexmog [at] live [point] fr

  • Upvote 6
Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...
  • 2 weeks later...

Bonne intro, je vais pouvoir continuer mon apprentissage du C avec toi ! J'ai déjà débuté avec des tek+ a apprendre les bases du C et surtout la norme. Sinon si tu as le temps pour faire un tuto Git sa peut être sympa.

J'y penserais :)

Tu es à epitech? ^^

Lien vers le commentaire
Partager sur d’autres sites

J'y penserais :)

Tu es à epitech? ^^

Je suis tek0 Paris. Je connais pas mal de monde là bas déjà et j'espère réussir mon année (si un tek+ poursuit son apprentissage avec tes cours piscine à cette période de l'année c'est inquiétant pour lui je pense ^^ )

Lien vers le commentaire
Partager sur d’autres sites

Je suis tek0 Paris. Je connais pas mal de monde là bas déjà et j'espère réussir mon année (si un tek+ poursuit son apprentissage avec tes cours piscine à cette période de l'année c'est inquiétant pour lui je pense ^^ )

haha exact, surtout que mes cours sont très proches de ceux piscine :).

Bref, bienvenue à toi dans la famille Epitech :)

Lien vers le commentaire
Partager sur d’autres sites

Je suis tek0 Paris. Je connais pas mal de monde là bas déjà et j'espère réussir mon année (si un tek+ poursuit son apprentissage avec tes cours piscine à cette période de l'année c'est inquiétant pour lui je pense ^^ )

(Ramène les tekiens ici !)

D'ailleurs, sur le premier Melinyel, si mes souvenirs sont bons, AlexMog en avait marre d'aider ses amis de chez 42 et il les renvoyaient ici. Du coup, sur les logs, j'avais toujours pleins de visiteurs sur des sujets en particuliers.

Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...

Vous pouvez utiliser une machine virtuelle pour faire tourner votre Linux si vous ne souhaitez pas le rajouter au Dump!

 

Pour plus d'infos, une petite vidéo ;)

 

Dans le sujet :

Modifié par Azad
Ajout du lien.
Lien vers le commentaire
Partager sur d’autres sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invité
Répondre à ce sujet…

×   Vous avez collé du contenu avec mise en forme.   Supprimer la mise en forme

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Chargement
 Share

×
×
  • Créer...