Pour placer un peu le point de vu duquel je parle. Je suis dev essentiellement web a l'origine et j'ai commencé avec PHP. Depuis j'ai fait un peu de tout, java, JS, python, kotlin, react, et probablement d'autres dont je ne me souviens plus, dans le lot je n'ai fait que très peu de C, car ce n'est vraiment pas le langage du web. Mais si je pouvais changer une chose dans mon parcours ca serait probablement ça.
Le contexte étant posé, je pense que le C est un bon langage pour commencer. Pas le plus facile très très très loin de là, mais sans le moindre doute un bon choix.
L'avantage si tu commences par le C c'est que tu comprendras le fond de ce qui a créé tous les languages modernes (je met de côté les langages fonctionnels qui sont complètement différents).
Si tu fais du C tu apprendras ensuite sans la moindre difficulté à faire du PHP, du python, du JS, du rust, du go. Peut importe le langage, tu devras ré apprendre l'environnement de ces languages (des syntaxes différentes, des librairies populaires, des outils spécifiques), mais sur le fond ton expérience en C sera transférable partout. C'est assez vrai pour tous les languages d'ailleurs, parceque être dev ce n'est pas juste un langage mais aussi apprendre à penser d'une façon particulière. Mais dans le cas du C on parle d'un langage suffisamment bas niveau et tellement influent dans l'histoire de la programmation que les leçons seront vraiment utilisables partout tout le temps.
Toutes les leçons que tu apprendras en C resterons avec toi pour toute ta vie de dev. Parfois utilisées directement, parfois indirectement, mais elles te permettront toujours d'avoir une idée de comment les choses fonctionnent derrière la magie des langages modernes. L'inverse n'est pas vrai...
Est-ce que le rust est mieux que le c pour éviter de faire des bêtises ? Oui. Mais justement un des intérêts de faire du c c'est de comprendre pourquoi ce sont des bêtises, les mécanismes fondamentaux et quand faire attention. Si rust a un mot clé "unsafe", c'est bien parceque parfois on a besoin de traverser en dehors des clous. Apprendre à coder en C c'est comme apprendre à un enfant pourquoi on traverse au bonhomme vert plutôt que de simplement lui dire "c'est interdit de traverser au rouge". Le jour où le feu sera en panne, il pourra toujours traverser par lui même...
Pour ce qui est des débouchés professionnels, je n'imagine pas un avenir autre que très très lointain dans lequel C ne sera plus employé et recherché. Si il y a encore des demandes aujourd'hui pour Cobol, alors je peux te garantir qu'ils y aura encore des demandes pour du C dans 30 ans. De toutes façons d'ici là tu auras appris plein d'autres langages.
Pour savoir si tu dois partir sur du C ou du C++ sans la moindre hésitation du C. Le langage est plus simple, plus clair, plus agréable, mieux construit. Oui il n'y a pas d'objets, mais pas grave, tu pourras bien apprendre l'objet dans ton prochain langage. De toutes façons c'est clairement pas en C++ que j'aimerais apprendre l'objet...
Enfin sur la question de la formation, si tu n'es pas pris à la gorge du genre "j'ai besoin d'être formé dans les 6 mois chrono sinon j'ai plus d'endroit où habiter", je commencerai par attaquer le C en autonomie. Que tu choisisses de faire ensuite une formation plus classique ou non, l'expérience accumulée sera un atout énorme. J'ai été éléve et j'ai été prof et je peux te garantir avec une certitude absolue que pour toute formation, rentrer avec 6 mois d'avance c'est sortir avec 3 ans d'avance. C'est la même différence que commencer ta vie en naissant avec un patrimoine de 10 millions et des parents hauts fonctionnaires vs naître avec un patrimoine de 10€ et trois kit Kat fondus avec des parents ouvriers à la chaîne. Tu peux réussir dans les deux cas, mais dans le premier faudra vraiment essayer très fort pour rater...
Tu trouveras de nombreux contenus en ligne, openclassroom a toujours été un assez bon site, mais il existe une foule d'autres options, surtout si l'anglais ne te fais pas peur.
En matière de C le livre qui fait autorité est le K&R, ce sont les créateurs du langage C et ce livre est considéré comme la bible pour comprendre le fonctionnement de C.
J'aurais aussi fort tendance à recommander le livre "l'art du beau code", avec une mention spéciale pour la notion de early return.
Enfin il existe une solution à ne pas négliger si tu habites dans une grande vill et que tu as 125€ de budget, les universités publiques sont accessibles aux auditeurs libres.
Si je devais apprendre le C aujourd'hui je ferai comme ça :
- Commencer par un tuto en ligne style open classroom, en faisant un petit projet en parallèle pour appliquer les leçons apprises (faire des trucs au fur et à mesure qu'on apprend c'est essentiel, capital, nécessaire, obligatoire, irremplaçable, ornithorynque.
- Puis le K&R, pour comprendre en profondeur et voir l'avis de deux mecs qui sont quand même des monstres légendaires de la programmation et de l'informatique en général. Avec un deuxième projet en parallèle.
- Je finirait en m'inscrivant en auditeur libre pour les cours sur la sécurité en C dans une université. Vraiment spécifiquement la question de la sécurité et des bonnes pratiques en C.
Honnêtement en suivant ça tu devrais déjà sortir avec des bases plus solides que 95% des diplômés sortis d'école...
Après il ne restera plus qu'à faire un autre langage pour apprendre l'objet. Je dirais bien PHP + symfony le langage a un modèle objet assez classique à la différence de JS ou Python. Et ça te donnera les outils pour faire du web.
# Le c restera toujours le c
Posté par Ajani . En réponse au message technos cloud, rust.. Quid d'apprendre le C aujourd'hui?. Évalué à 10.
Baissez la tête, pavé en approche
Pour placer un peu le point de vu duquel je parle. Je suis dev essentiellement web a l'origine et j'ai commencé avec PHP. Depuis j'ai fait un peu de tout, java, JS, python, kotlin, react, et probablement d'autres dont je ne me souviens plus, dans le lot je n'ai fait que très peu de C, car ce n'est vraiment pas le langage du web. Mais si je pouvais changer une chose dans mon parcours ca serait probablement ça.
Le contexte étant posé, je pense que le C est un bon langage pour commencer. Pas le plus facile très très très loin de là, mais sans le moindre doute un bon choix.
L'avantage si tu commences par le C c'est que tu comprendras le fond de ce qui a créé tous les languages modernes (je met de côté les langages fonctionnels qui sont complètement différents).
Si tu fais du C tu apprendras ensuite sans la moindre difficulté à faire du PHP, du python, du JS, du rust, du go. Peut importe le langage, tu devras ré apprendre l'environnement de ces languages (des syntaxes différentes, des librairies populaires, des outils spécifiques), mais sur le fond ton expérience en C sera transférable partout. C'est assez vrai pour tous les languages d'ailleurs, parceque être dev ce n'est pas juste un langage mais aussi apprendre à penser d'une façon particulière. Mais dans le cas du C on parle d'un langage suffisamment bas niveau et tellement influent dans l'histoire de la programmation que les leçons seront vraiment utilisables partout tout le temps.
Toutes les leçons que tu apprendras en C resterons avec toi pour toute ta vie de dev. Parfois utilisées directement, parfois indirectement, mais elles te permettront toujours d'avoir une idée de comment les choses fonctionnent derrière la magie des langages modernes. L'inverse n'est pas vrai...
Est-ce que le rust est mieux que le c pour éviter de faire des bêtises ? Oui. Mais justement un des intérêts de faire du c c'est de comprendre pourquoi ce sont des bêtises, les mécanismes fondamentaux et quand faire attention. Si rust a un mot clé "unsafe", c'est bien parceque parfois on a besoin de traverser en dehors des clous. Apprendre à coder en C c'est comme apprendre à un enfant pourquoi on traverse au bonhomme vert plutôt que de simplement lui dire "c'est interdit de traverser au rouge". Le jour où le feu sera en panne, il pourra toujours traverser par lui même...
Pour ce qui est des débouchés professionnels, je n'imagine pas un avenir autre que très très lointain dans lequel C ne sera plus employé et recherché. Si il y a encore des demandes aujourd'hui pour Cobol, alors je peux te garantir qu'ils y aura encore des demandes pour du C dans 30 ans. De toutes façons d'ici là tu auras appris plein d'autres langages.
Pour savoir si tu dois partir sur du C ou du C++ sans la moindre hésitation du C. Le langage est plus simple, plus clair, plus agréable, mieux construit. Oui il n'y a pas d'objets, mais pas grave, tu pourras bien apprendre l'objet dans ton prochain langage. De toutes façons c'est clairement pas en C++ que j'aimerais apprendre l'objet...
Enfin sur la question de la formation, si tu n'es pas pris à la gorge du genre "j'ai besoin d'être formé dans les 6 mois chrono sinon j'ai plus d'endroit où habiter", je commencerai par attaquer le C en autonomie. Que tu choisisses de faire ensuite une formation plus classique ou non, l'expérience accumulée sera un atout énorme. J'ai été éléve et j'ai été prof et je peux te garantir avec une certitude absolue que pour toute formation, rentrer avec 6 mois d'avance c'est sortir avec 3 ans d'avance. C'est la même différence que commencer ta vie en naissant avec un patrimoine de 10 millions et des parents hauts fonctionnaires vs naître avec un patrimoine de 10€ et trois kit Kat fondus avec des parents ouvriers à la chaîne. Tu peux réussir dans les deux cas, mais dans le premier faudra vraiment essayer très fort pour rater...
Tu trouveras de nombreux contenus en ligne, openclassroom a toujours été un assez bon site, mais il existe une foule d'autres options, surtout si l'anglais ne te fais pas peur.
En matière de C le livre qui fait autorité est le K&R, ce sont les créateurs du langage C et ce livre est considéré comme la bible pour comprendre le fonctionnement de C.
J'aurais aussi fort tendance à recommander le livre "l'art du beau code", avec une mention spéciale pour la notion de early return.
Enfin il existe une solution à ne pas négliger si tu habites dans une grande vill et que tu as 125€ de budget, les universités publiques sont accessibles aux auditeurs libres.
Si je devais apprendre le C aujourd'hui je ferai comme ça :
- Commencer par un tuto en ligne style open classroom, en faisant un petit projet en parallèle pour appliquer les leçons apprises (faire des trucs au fur et à mesure qu'on apprend c'est essentiel, capital, nécessaire, obligatoire, irremplaçable, ornithorynque.
- Puis le K&R, pour comprendre en profondeur et voir l'avis de deux mecs qui sont quand même des monstres légendaires de la programmation et de l'informatique en général. Avec un deuxième projet en parallèle.
- Je finirait en m'inscrivant en auditeur libre pour les cours sur la sécurité en C dans une université. Vraiment spécifiquement la question de la sécurité et des bonnes pratiques en C.
Honnêtement en suivant ça tu devrais déjà sortir avec des bases plus solides que 95% des diplômés sortis d'école...
Après il ne restera plus qu'à faire un autre langage pour apprendre l'objet. Je dirais bien PHP + symfony le langage a un modèle objet assez classique à la différence de JS ou Python. Et ça te donnera les outils pour faire du web.
My 2 cents.