Apprendre le langage C et quelques questions
Le
heron maladroit

question :
Ne souhaitant pas passer trop de temps sur le langage C, ça fait 1 an
que j'ai commencé et je considère y donner encore 1 année de plus (=
à
raison de 4 à 8 heures par semaine), je pense que ce n'est pas
nécessaire de lire le K&R en profondeur pour un niveau en C que je
veux garder "basique". C'est bien de l'avoir sous le coude et par
moment pour voir un peu un style de programmation définitivement
brillant au niveau algorithmes.
En effet, étant comptable, je ne sais pas très bien à quoi le langage
C pourrait me servir concrètement. L'informatique occupe beaucoup mon
temps en dehors du temps de travail mais je ne vois pas pour le temps
que je peux y consacrer pour apprendre comment dans les conditions
actuelles du marché, trouver un travail dans ce domaine en qualité
d'autididacte. Peut-être je peux envisager d'écrire des petites
applications sur des appareils mobiles ou des applications web ? On
dirait que les grands éditeurs mettent en place des outils de
développement maison pour les appareils Androïd, iPhone
Et également, j'utilise linux et je ne sais pas quel niveau en langage
C il faut pour apprécier plus en profondeur cet OS ? J'ai vu que le
langage Shell est quelque chose d'utile pour personaliser Linux. Y-a-t-
il un pont entre le Shell (un des shell) et le langage C ?
J'ai quelques bases en C qu'on retrouve dans d'autres langages
(notamment au niveau algorithmique, pointeurs), c'est pourquoi
j'envisage après de me consacrer au C++. Mais je souhaite avant
consolider les bases et les aspects un peu délicats de ce langage
assez éprouvant à apprendre (mais j'ai commencé avec beaucoup de
sacrifices sur les loisirs, la vie de famille etc et je ne ferais pas
machine arrière). Je garde professionnellement la tête hors de l'eau,
je donne la priorité pour gagner de l'argent mais c'est beaucoup
d'énergie Côté francophone, l'initiative d'entreprendre et
également d'apprendre n'est pas tant encouragée. Malheureusement, on
voit le résultat ; l'état en France préfère une distribution Linux
anglo-saxonne au dépit de Mandriva.C'est un autre débat.
Je voudrais savoir si jusqu'à présent la "route" que j'ai choisie est
cohérente. Et surtout comment orienter la dernière année
d'apprentissage. Dans un livre, j'ai pu voir la bibliothèque Glib.
J'ai trouvé que la programmation était assez différente de celle de
stdio, stdlib. Faudrait-il que je me consacre à cet bibliothèque afin
d'avoir une connaissance plus pratique de ce langage ? Ou est-ce que
c'est réserver à un usage niveau expert du langage C, qui ne serait
pas très "utile" lors d'une conversion vers C++, Python, Php,
Javascript des langages vers lesquels je souhaite m'orienter par la
suite. Des langages comme Vb net, C sharp m'intéresseraient également.
Avant, je considère passer approximativement le double du temps que
j'ai passé à apprendre le C sur le C++ afin de comprendre la POO. Je
ne sais pas si c'est cohérent.
Merci pour vos conseils (on dirait que ce groupe est de moins en moins
animé - faut-il s'exprimer en anglais pour retrouver les experts de ce
forum)
Ne souhaitant pas passer trop de temps sur le langage C, ça fait 1 an
que j'ai commencé et je considère y donner encore 1 année de plus (=
à
raison de 4 à 8 heures par semaine), je pense que ce n'est pas
nécessaire de lire le K&R en profondeur pour un niveau en C que je
veux garder "basique". C'est bien de l'avoir sous le coude et par
moment pour voir un peu un style de programmation définitivement
brillant au niveau algorithmes.
En effet, étant comptable, je ne sais pas très bien à quoi le langage
C pourrait me servir concrètement. L'informatique occupe beaucoup mon
temps en dehors du temps de travail mais je ne vois pas pour le temps
que je peux y consacrer pour apprendre comment dans les conditions
actuelles du marché, trouver un travail dans ce domaine en qualité
d'autididacte. Peut-être je peux envisager d'écrire des petites
applications sur des appareils mobiles ou des applications web ? On
dirait que les grands éditeurs mettent en place des outils de
développement maison pour les appareils Androïd, iPhone
Et également, j'utilise linux et je ne sais pas quel niveau en langage
C il faut pour apprécier plus en profondeur cet OS ? J'ai vu que le
langage Shell est quelque chose d'utile pour personaliser Linux. Y-a-t-
il un pont entre le Shell (un des shell) et le langage C ?
J'ai quelques bases en C qu'on retrouve dans d'autres langages
(notamment au niveau algorithmique, pointeurs), c'est pourquoi
j'envisage après de me consacrer au C++. Mais je souhaite avant
consolider les bases et les aspects un peu délicats de ce langage
assez éprouvant à apprendre (mais j'ai commencé avec beaucoup de
sacrifices sur les loisirs, la vie de famille etc et je ne ferais pas
machine arrière). Je garde professionnellement la tête hors de l'eau,
je donne la priorité pour gagner de l'argent mais c'est beaucoup
d'énergie Côté francophone, l'initiative d'entreprendre et
également d'apprendre n'est pas tant encouragée. Malheureusement, on
voit le résultat ; l'état en France préfère une distribution Linux
anglo-saxonne au dépit de Mandriva.C'est un autre débat.
Je voudrais savoir si jusqu'à présent la "route" que j'ai choisie est
cohérente. Et surtout comment orienter la dernière année
d'apprentissage. Dans un livre, j'ai pu voir la bibliothèque Glib.
J'ai trouvé que la programmation était assez différente de celle de
stdio, stdlib. Faudrait-il que je me consacre à cet bibliothèque afin
d'avoir une connaissance plus pratique de ce langage ? Ou est-ce que
c'est réserver à un usage niveau expert du langage C, qui ne serait
pas très "utile" lors d'une conversion vers C++, Python, Php,
Javascript des langages vers lesquels je souhaite m'orienter par la
suite. Des langages comme Vb net, C sharp m'intéresseraient également.
Avant, je considère passer approximativement le double du temps que
j'ai passé à apprendre le C sur le C++ afin de comprendre la POO. Je
ne sais pas si c'est cohérent.
Merci pour vos conseils (on dirait que ce groupe est de moins en moins
animé - faut-il s'exprimer en anglais pour retrouver les experts de ce
forum)
Alors, ça commence mal à mon humble avis. ;-)
Hum, en tant que débutant, j'ai bien l'impression que le K&R
*soit* la base.
Pourquoi en fais-tu alors ?
Si tu vises de faire du web, fais du web enfin ! Ça n'a rien
à voir avec le C. Et ça n'est vraiment pas un prérequis.
L'avis du débutant que je suis est que non, ta route n'est
pas vraiment cohérente. Tu fais du C, mais tu ne sembles pas
savoir pourquoi. C'est visiblement pour apprendre à
programmer, mais pour ça de nombreux langages te seront plus
utiles, comme Python qui t'a été déjà cité si je ne m'abuse.
Tu veux faire autre chose que du C, en fait. Alors fais-le.
Tu penses que ça sera un retour en arrière, mais non ou très
peu. Et tu progresseras beaucoup plus rapidemment ensuite.
--
Unix is simple. It just takes a genius to understand its simplicity
--Dennis M. Ritchie
C'est LA Bible.
Tu peux le lire en un week-end et tu auras les meilleures bases possibles.
Je suis d'accord sur ce point. L'apprentissage de la programmation
est un processus qui prend beaucoup de temps. Et avec le C, la
difficulté est assez élevée puisqu'il faut gérer la mémoire
explicitement. Ce qui semble être quelque chose de difficile.
Ça dépend pour quoi faire ^^; Je n'ai pas lu le K&R car mon formateur
nous l'avait fortement déconseillé (peu accessible au programmeur
débutant). Mais je ne doute pas qu'il soit une référence que tout
développeur C doit avoir au moins parcouru.
L'apprentissage du C te permet déjà d'entre-apercevoir qu'il n'est
pas la technologie dont tu as besoin dans l'immédiat. C'est déjà pas
mal. Et au moins, tu auras compris ce que sont les pointeurs, les
problèmes liés à l'allocation et l'initialisation de la mémoire, son
usage, etc.
En quoi le C n'a rien à voir avec le Web ? On peut faire sans
problème du Web en C. Il y a même des cas où c'est considéré comme
incontournable (routeurs avec interface de configuration web par exemple).
Et personnellement, je considère encore toujours que des
connaissances (au moins basiques) de C et d'assembleur sont nécessaires
dans le cursus de l'apprentissage de la programmation. Rien que pour
comprendre les mécanismes sous-jacents de son langage de programmation
préféré. Mais tout le monde sur cette liste ne partage pas cet avis, et
cette remarque risque de lever un énorme troll velu et féroce.
Quitte à troller À noter que c'est un très bon bouquin (un peu verbeux, mais bon, il
faut bien modeler les esprits).
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
ah, pourquoi ça..
Plus d'un le considère comme la bible du C.
Ne serait-ce que parce que c'est, par définition, le 1er.
Mais c'est pas usurpé..
ah bah ça, c'est l'apanage d'un autre language.
C'est pas plutôt des cas dits "d'école", que le bouquin aborde ?
Ce qui est très bien, il en faut ; mais si je me souviens bien
l'illumination n'est que temporaire.
En général, il est pas recommandé aux débutants (en programmation),
mais si on a deja trifouillé 2, 3 languages, il est chaudement
recommandé de l'avaler.
eh ben.. bon courage, bonne chance, bonne année.. (s)
entre 0 et +oo ? toute valeur est acceptable amha.
Le 1er est écrit à l'aide du 2ème.
algorithmie, oui, on trouve ça dans pas mal de languages.
[sauf peut-être certains, où l'algorithmie se sent que très peu]
</mode "c'est_gratuit"="off">
Si tu arrives quelque part, c'est qu'elle l'était.
(je peux pas répondre pour toi, bien qu'a vu de nez, ça semble
un peu partir dans tous les sens..)
Allez, 2 balles de conseil, qui n'engage que celui qui le suivra:
laisse tout tomber sauf 1 ou 2, et focalise toi là dessus.
Je suggère JS et/ou PHP, parce qu'on peut faire plein de jolies choses
relativement rapidement.
Sinon, à 2 ans par language..
J'ai bien ma petite idée là-dessus =)
ah, bah qu'est-ce qu'il te faut !
Tu as vu le nombre de réponses / la taille des enfilades que tu génères ?
f.c.l.c not dead !
C'est toi qui vois...
Tu speakes bien l'english, ou si tu vas profiter du fait que tu apprends
7 languages (de progra) pour en apprendre un 8ème ?
--
christophe.
OK, je suis effectivement allé trop vite. *À son niveau*,
s'il veut faire du web, ce n'est je pense pas vers le C
qu'il faut se tourner ( encore une fois, Python ? ).
--
Unix is simple. It just takes a genius to understand its simplicity
--Dennis M. Ritchie
[ K&R ]
Il n'y a rien d'évident à ce que ce fût le premier : après tout C a été
conçu en 1972, et le K&R1 a été publié en 1978.
De plus, la 1re version du K&R ne doit surtout pas être conseillée comme
unique livre pour apprendre le langage C aujourd'hui, car elle est très
déphasée avec la réalité d'aujourd'hui.
Et si tu considères la 2e version du K&R, celle de 1988, ce n'est plus
du tout le 1er bouquin écrit sur le langage...
Pas toujours : certains sont écrit avec Yacc, en C++, ou avec C# ;
d'autres le furent en assembleur, et je suis sûr qu'il y a plein
d'autres exemples. Dans tous les cas, cela n'a rien à voir avec le sujet
de ce groupe...
Antoine
Je trouve que ça fait déjà pas mal. Ca fait presque 80 journées de 8
heures en tout ! En école d'ingénieur, section informatique, je ne pense
pas avoir passé autant de cours sur le langage C. Mais on a eu d'autres
cours gravitant autour, et c'est plus difficile sans professeur pour
expliquer...
Oui. Androïd, c'est du Java avec une API google. iPhone c'est de
l'Objective-C. Il y a aussi Windows Mobile en C/C++ et C#, je crois, qui
se rapprocherait plus de ce que tu connais.
Un bon niveau en C, et un très bon niveau en architecture des
ordinateurs et des OS en général.
Je ne sais ce que tu entends par "pont", mais ce sont 2 langages très
différents. Je ne vois pas en quoi la connaissance de l'un peut t'aider
sur l'autre.
Impossible de répondre à cette question tant que tu ne sais pas
précisément ce que tu veux faire. Si tu t'orientes finalement vers du
dev python, ça fera peut-être beaucoup de temps perdu.
La GLib est liée à GTK, une des multiples librairies UI existantes,
peut-être la meilleure en C pur. Mais je te déconseillerais d'utiliser
le C pour développer une application fenêtrée, car c'est l'un des
domaines où l'orienté objet est très utile. GTK/GLib utilisent une sorte
d'émulation des objets qui n'est à mon goût pas des plus didactiques.
Oriente-toi plutôt vers du C++ ou du Java (ou d'autres langages encore)
pour cela.
+1 =)
En tant que redoublant, j'ai la nette impression que c'est *la*
référence..
Après, ça reste un bouquin: on aime, on aime pas.
C'est pas le dogme sur lequel on prête serment avant de
se voir consacré 'programmeur'.
En même temps, la phrase "Je programme en C et j'ai pas lu K&R",
ça sonne bizarrement..
Pour le fun, peut-être ?!
Ce qui me turlupine, c'est ces 2 phrases:
et
moment pour voir un peu un style de programmation définitivement
brillant au niveau algorithmes.
Après, t'es pas obligé de le dévorer comme un furieux, une
petite lecture de temps en temps, bricoler un peu les exemples,
toussa..
C'est pas du temps de perdu, quelque soit ce que tu feras après.
--
christophe.
(Et inversement.)
Moyennement convaincant. Que représente l'interface de gestion
d'un routeur, qu'elle soit en vt-100, html, etc. par rapport au
logiciel de routage + services associés..
JS ? PHP ? Java ? Perl (nan je rigole, là) ?
Bref, en C on peut faire beaucoup de (bien belles =) choses, de
l'appliquette au système d'exploit'.
Après, c'est plus de l'affinité, du goût et des couleurs..
De toutes façons, il a bloqué ses prochaines 14 années, il a le
temps d'essayer et de tirer les conclusions qui lui iront bien.
--
christophe.
Ben, si quelqu'un a réussi a écrire un bouquin sur le C, entre le
moment où il était dans le ciboulot des sus-cités K. et R., et le
moment où ils l'ont jugé suffisamment stable pour pondre leur doc'..
Je suis preneur, si tu as les ref's..
Un bouquin -d'informatique- de 30 ans d'âge, déphasé ?!?
Pinaise, quelle époque on vit là.
Tu noteras qu'un algorithme, ça vieillit pas/ça reste valable,
et que leurs exemples peuvent être allègrement envoyé dans
tout compilateur supportant le 'niveau K&R'.
*avec*. Ca génère quoi, yacc(1), d'après toi ?
Alors là, chacun son auto-flagellation.
Ben, je te le fais pas dire =)
(encore que: "Apprendre le langage C", c'est hors charte dans f.c.l.c ?)
--
christophe.