Aide Linux - Liste de diffusion Ze-Linux
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [ Language C ] Apprendre la programmation en C
Le mar 01/07/2003 à 20:51, Yves a écrit :
> Slt la liste,
>
> Chez moi j'en ai fais mon os principal avec linux il y a de ça + de 6
> mois, windows contient quelques jeux et ne démarre que 1 fois / mois
> maintenant. Alors que linux mini 1 fois/jour mini.
> Je me suis mi à fond dans linux, internet au niveau de la doc. En 2
> mois, j'en savais suffisement pour en faire mon os principal et en faire
> autant sous win que sous linux.
>
> J'aimerais programmer sous linux, j'ai acheter un bouquin de
> programmation " Programmation système en C sous linux ". Au debut on
> nous explique les outils qui sont sous linux, ensuite je commence Ã
> attaquer les intructions C et à partir de là je trouve qu'on commence
> par Z pour allez jusqu'a A dans ce bouquin.
> C'est comme si on vous montrait comment paramétrer mon machine sous
> linux en mode console alors que vous ne savez pas vous déplacer, copier,
> déplacer les fichiers, créer supprimer...
>
> Je vous donne un ex tirer du couquin :
>
> Premières instructions que j'apprends alors que je ne sais pas commenter
> un fichier source " fork() "" getppid () " et " getpid " C'est expliquer
> en gros ( je dis en gros car on n'esplique pas ce qu'on peux mettre dans
> les parentèses et il doit manquer surement d'autres trucs).
> Ensuite il propose un exemple appelé exemple_fork.c (désolé pour la mise
> en forme mais un espace ne correspond pas à la taille d'un caractère
> sous mozilla ):
>
>
> #include <stdlib.h>
> #include <stdio.h>
> #include <unistd.h>
> #include <errno.h>
> #include <sys/wait.h>
>
> int
> main (void)
> {
> pid_t pid_fils;
>
> do {
> pid_fils = fork ();
> } while ((pid_fils == -1) && (errno == EAGAIN));
>
> if (pid_fils == -1) {
> fprintf (stderr, "fork () impossible, errno=%d\n, errno);
> }
> if (pid_fils == 0) {
> fprintf (stdout, "Fils : PID=%d, PPID=%d\n",
> getpid (), getppid ())
> return (0);
> } else {
> fprintf (stdout, "Père : PID=%d, PPID=%d\n",
> getpid (), getppid ());
> wait (NULL);
> return (0);
> }
> }
>
> Il montre ce que le prog affiche lors de son exécution
>
> $ ./exemple_fork
> Père : PID=31382, PPID=30550, PID fils=31383
> Fils : PID=31383, PPID=31382
> $
>
> Avec les 3 fonctions apprises, j'ai compris 10% du programme ( aucun
> commentaire dans le prog ou après sauf sur "wait (NULL)" et 100% des
> valeurs affichées lors de son exécution sans même voir marquer Père ou
> Fils les résultats parlent d'eux même.
> Comment peut-on donner un exemple, comme ça, sans rien expliquer des
> autres fonctions utilisés.
> Peut être que le livre ne correspond pas à ce que j'attendais.
>
> wait (NULL) sert à attendre la fin de l'éxécution du fils avant le père.
> Sinon on aurait pu observer:
>
> $ ./exemple_fork
> Père : PID=31382, PPID=30550, PID fils=31383
> $ Fils : PID=31383, PPID=1
>
> Mes questions sont :
> Comment avez-vous appris le language C ?
> Quel est la différence avec C++ et C# ( est-ce des autres languages
> totalement différents et peut-il compléter le langaguge C ( un peut
> comme le html et javascprit )
> Quel livre de programmation C me conseilleriez-vous pour un gas qui ne
> connait rien en programmation ?
>
> Merci, d'avoir tout lu l'email.
> @+
>
moi j'ai appris le C en cours
je peu te conseiller 2 bouquins, le 1er est celui que j'utilise tjrs, il
s'appel langage C de micro application, donc pas trop cher et
franchement correcte. ya pas de conneries dedans etc, le dernier
chapitre parle de programmation linux client/server et un peu de GTK.
donc un bon bouquin
sinon le top du top niveau rapport qualité/prix c le Best Of langage C
de chez Eyrolles, pour 15euro ta vraiment un super truc, bien lisible,
pas mal de sources et de bons algo. un beau pavé aussi.
sinon le C++ est un langage objet tout comme java, donc si tu abuses des
structures en C et que beaucoup de chose te semblent lourdes (genre la
gestion des chaines de carecteres, la gestion de la mémoire etc) tout ça
a été bien amélioré en C++, par contre il faut se mettre a faire de la
programmation orientée objet. c pas forcement ce qui ya de plus simple
pour commencer. bref c une evolution du c surtout dans la phase
d'analyse, avec une solution qui se veut plus simple et plus proche du
probleme a resoudre, grace à l'objet. pis ya surement plein d'autres
truc que le c++ apporte, jmy connais pas assez pour en parler.
comme bouquin il y a l'excellent thinking in c++ de Bruce Erckel que tu
peut trouver librement sur http://mindview.axign.com/ (ya une version en
pdf qui traine). en anglais bien sur, mais bon du code ça reste du code
ensuite pour le C# si je dit pas de connerie ça se rapproche plus de
java, car c'est en fait une machine virtuelle qui va interpreter un
pseudo code compilé. d'ailleurs pour simplifier beaucoup qualifient le
C# comme etant le java de microsoft, pour contrer sun :)
l'interet de tout ça c que c du bel objet, et que c'est tres portable.
comme une appli java, elle tourne aussi bien sous windows que linux, vu
que c la machine virtuelle qui s'adapte.
donc si tu veux commencer la programmation, jpense pas que ya vraiment
de regles, le C est une bonne base. moi jai commencer avec python, c
bien ça aussi pour commencer :) (pour apprendre a respecter
l'indentation)
----------------------------------
Informations, désabonnement, règles, obligations sur la liste Aide-Linux :
http://lists.ze-linux.org/howto_ml.html
Aide Linux - Liste de diffusion Ze-Linux