Que pensez-vous de la norme C imposée par certaines écoles ?
Posté le 31/12/2015 14:33
Plusieurs fois sur le forum ou le tchat ont éclaté des débats sur la norme de programmation en C qu'imposent certaines écoles d'informatique (42, Epitech, etc), qu'on peut appeler plus simplement la Norme. Pour rappel, en voici quelques points :
ne pas utiliser de boucle itérative (
for), mais les remplacer par des boucles conditionnelles (
while)
ne pas utiliser la forme
do { ... } while(...) mais seulement
while(...) { ... }
ne pas utiliser de
switch, mais selon le contexte des empilements de
if, ou des tableaux de pointeurs, etc
pas plus de 5 fonctions par fichier
pas plus de 25 lignes et 80 colonnes par fonction
pas d'opérateurs
++,
--,
+=,
-=,
*=,
/=, etc
+ diverses conventions d'espacement, indentation et nomination des variables
Et si vous avez le courage :
Norme de 42
Qu'en pensez-vous ? Pensez-vous qu'elle impose légitimement une rigueur, ou qu'au contraire elle bride inutilement les étudiants ?
NOTE : les premières réponses ont été importées d'un autre topic, d'où les dates antérieures.
Citer : Posté le 02/01/2016 19:54 | #
Clairement, pourquoi moi qui m'embête à faire des maths, de la mécanique, de l’électricité toute la journée, j'arriverais au même résultat que vous à la fin de mon cursus ?
Mmmh, c'est sur que tu vas te servir de tout ce que tu as fait en maternelle, au primaire, au collège et au lycée pour ta vie professionnelle ! Typiquement, on distingue deux types d'études, les études plutôt générales et les études plutôt spécialisée. Les classes prépas restent des études générales, donc avec des tas de choses que tu vas apprendre mais dont tu te servira plus par la suite. Epitech & cie ont pour ambition de retirer toutes les matières inutiles (malheureusement, ils ont un pitit peu jeté le bébé avec l'eau du bain en supprimant les maths !). Par contre on fait bel et bien de l'anglais (sur tout le cursus) et du marketing (en troisième et cinquième année il me semble).
J'aurais plein d'autres truc à dire, mais j'ai pas trop de temps actuellement, et Cakeisalie a +/- bien dit tout ce que je pense.
Matoux(42)
PS: on devrait continuer ce débat IRL autour d'un macdall, ça serait plus sympa ; ) !
Citer : Posté le 02/01/2016 19:57 | #
Alors jai la flemme de tt lire mais jai juste tique sur UN truc: pas plus de 25 lignes par fonction et pas plus de 5 fonctions par fichier !!! On en parle de mes programmes de 1500 lignes
-Mon Fall Down
-Mon jeu de mains
-Mon starwars
-Mon dessinatout
-Mon niaiseux version 2.0
-Mon niaiseux version 3.0
-Inferno
-Mon super labyrinthe (en cours)
-Mon call of duty en 3D
-Casion (avec Az)
Citer : Posté le 02/01/2016 20:28 | #
PS: on devrait continuer ce débat IRL autour d'un macdall, ça serait plus sympa ; ) !
Si on pouvait réunir tout le monde. Après on peut te mettre contre Lephé qui est à Lyon aussi, et filmer
Citer : Posté le 02/01/2016 21:03 | #
On en parle de mes programmes de 1500 lignes
Ajouté le 02/01/2016 à 21:31 :
Je viens de lire la norme de 42 et je me permet de noter quelques différences avec celle d'Epitech:
La norme sera verifiée par vos correcteurs et la moindre faute de norme donnera la note de 0 à votre projet ou à votre exercice.
A Epitech il s'agit d'un '-1' par faute de norme. A partir de 10 ou 20 fautes de normes, le projet obtient la note de 1.5 (ce qui signifie que le projet passe à la moulinette mais ne sera pas noté oralement par la suite), sauf pendant la piscine ou la norme peut entraîner des notes négatives.
Choses Interdites ! [...] Les opérateurs ternaires ‘ ?’ imbriqués
Autorisés à Epitech (sauf pendant la piscine).
Il y a quelques autres différences, mais ce sont des différences de structuration du code, donc je ne les ai pas mises.
Au passage j'en profite pour résumer ce que j'ai dit dans plusieurs postes :
Certains choix dans la norme peuvent paraître un peu trop restrictifs, mais n’oubliez pas que la norme est aussi un outil pédagogique, les 25 lignes sont là par exemple pour accentuer le fait que vous devez absolument structurer vos programmes.
La norme a deux objectifs principaux : Uniformiser vos codes afin que tout le monde puisse les lire facilement, étudiants et encadrants. Ecrire des codes simples et clairs. [...] la norme est un garde-fou pour vous guider dans l’écriture d’un C simple et basique.
Matoux(42)
Citer : Posté le 03/01/2016 11:00 | #
Comme je suis très pédagogue, nous allons passer outre les choses un poil compliqué. Je sens que vous êtes ravis. Je m'en balle les couilles que vous n'ayez pas le niveau pour entrer quand vous sortirez de l'école vu que nous faisons de la pédagogie
Voilà à quoi se résume la pédagogie La pédagogie, c'est le fait de vous dire que vous êtes bons alors que vous êtes juste cons (là je blâme tous les profs qui rajoutent des points sur les contrôles et les interros parce que la majorité des élèves d'une classe ont échouer )
Uniformiser vos codes afin que tout le monde puisse les lire facilement, étudiants et encadrants.
1) c'est la première fois que j'attends des profs sous entendre qu'ils sont cons de ne pas comprendre un algo
2) Uniformiser, c'est bien. Mais les entreprises n'ont pas tous les mêmes normes d'uniformisation. Ne pas vous apprendre le switch et le for, je pense que c'est la meilleure, mais véritablement le best du best, le must du must, façon pour vous faire rater la vie. Parce que un chef de projet qui se rend compte qu'un des ses équipiers ne maitrise pas ça, je pense qu'il le prend comme un noob, et ça m'énerverait.
Ecrire des codes simples et clairs.
Un code simple ET clair. Cela me semble un peu contradictoire. Simplement sur le fait que les empilements de switch, c'est simple, mais ce n'est pas clair. Que le while à la place du for, c'est simple, mais ce n'est pas clair.
Il faut parfois augmenter un peu la difficulté au risque de perdre des élèves. Mais que suis-je-bête? Ils sont pédagogues, c'est normal qu'ils font ça.
Citer : Posté le 03/01/2016 11:13 | #
"Simple et clair", pour moi ça veut dire qu'il ne faut pas s'attaquer au problème entier en faisant un énorme bloc illisible, mais qu'il faut le décomposer en petits problèmes (à résoudre en fonctions). Ainsi, tu décompose en bloc qui font une seule chose simple, c'est plus simple de résoudre pleins de petits problèmes, et c'est plus clair pour un relecteur.
Citer : Posté le 03/01/2016 12:31 | #
Je déteste ce mot. Pourquoi? Parce que c'est une excuse à vous prendre pour des cons
Je déteste ceux qui détestent ce mot. Pourquoi ? Parce que c'est une excuse pour clacher une méthode qu'on ne comprends pas : "ce que je ne comprends pas, je le détruit !".
Comme je suis très pédagogue, nous allons passer outre les choses un poil compliqué. Je sens que vous êtes ravis. Je m'en balle les couilles que vous n'ayez pas le niveau pour entrer quand vous sortirez de l'école vu que nous faisons de la pédagogie
Analysons cette citation. Le gars répète deux fois un mot de la même famille ("pédagogie"), je le sens pas trop, MAIS il sent sa classe heureuse, il choisit donc ses méthodes par rapport à sa classe, peut être un bon pédagogue finalement ? MAIS il tente par deux fois de s'exprimer sans succès ("Je m'en balle les couilles", "le niveau pour entrer quand vous sortirez de l'école"). Conclusion, je pense, Intelligide, qu'il s'agit plus d'un clochard ivre mort auquel on aurait promis de l'argent qu'un vrais prof.
La pédagogie, c'est le fait de vous dire que vous êtes bons alors que vous êtes juste cons
Ou alors, la pédagogie ça désigne peut être un ensemble de méthodes visant à apprendre quelque chose à quelqu'un ?
C'est aussi ce dont essaye de faire preuve tout les profs du monde (sauf le clodo de tout à l'heure), ainsi que tes parents, surveillants, etc.
c'est la première fois que
j'attendsj'entends des profs sous entendre qu'ils sont cons de ne pas comprendre un algoEn fait, si tu regardais plus attentivement la citation au dessus de cette phrase dans ton poste, tu remarquerais un tout petit mot, "facilement". Il s'agit en fait de pouvoir lire un code plus rapidement si il est à la norme. Bien sûr, comme l'a dit Dark storm, on peut coder comme un porc en étant à la norme et coder proprement sans la respecter, mais si l'élève en question n'a pas un pois chiche à la place du cerveau, un code qui respecte la norme sera lisible plus rapidement.
Mais les entreprises n'ont pas tous les mêmes normes d'uniformisation.
C'est pour ça que la norme est aussi stricte, pour que les élèves puisse s'adapter à toutes les entreprises.
Ne pas vous apprendre le switch et le for
Moi, dans un post précédent a écrit :
MAIS la norme (je le répète pour la 42è fois) a un but pédagogique, et n'est donc pas appliquées aux exams et à certains modules, et n'est faite que pour le C. En C++ par exemple, la seule chose, me semble-t-il, est que l'on ne peut pas utiliser le "using namespace".
En effet, à partir de la Piscine C++ de deuxième année la norme n'est quasi plus utilisé, et en troisième, quatrième et cinquième année, ce n'est plus q'un "mauvais" souvenir. La deuxième année étant, dans sa première moitié un stage, et dans sa deuxième moitié, réservé en grande partie au C++, la norme n'est obligatoire que pour les projets de la plupart des modules de première année.
Les élèves d'Epitech qui codent en C++ utilisent switch et for.
Un code simple ET clair. Cela me semble un peu contradictoire. Simplement sur le fait que les empilements de switch, c'est simple, mais ce n'est pas clair. Que le while à la place du for, c'est simple, mais ce n'est pas clair.
Il faut parfois augmenter un peu la difficulté au risque de perdre des élèves. Mais que suis-je-bête? Ils sont pédagogues, c'est normal qu'ils font ça.
Breish_craft a répondu pour moi ; ).
Matoux(42)
Citer : Posté le 03/01/2016 12:39 | #
Mais les entreprises n'ont pas tous les mêmes normes d'uniformisation.
C'est pour ça que la norme est aussi stricte, pour que les élèves puisse s'adapter à toutes les entreprises.
Permet moi de dire que ce que tu viens de dire est stupide. Le fait de suivre une "Norme" qui te fait utiliser des moyens plus compliqués, te faisant passer à côté de l'essentiel, serait une aide pour que les élèves s'adaptent à toutes les entreprises ? Pour s'adapter à une entreprise, il vaut mieux savoir coder sous toutes les coutures (ce qui est plus intelligent qu'apprendre à faire qu'une ou deux choses, question d'intelligence selon ceux qui codent) que ne devoir utiliser que quelques fonctions à la place d'autres dans le but de rendre un code clair... Surtout que dans une entreprise, tu ne codes pas forcément pour rendre le code clair à tes employeurs.
Citer : Posté le 03/01/2016 13:21 | #
Assez paradoxalement, j'ai plus de mal à comprendre un code qui suit la Norme qu'un qui est correctement commenté et découpé.
Citer : Posté le 03/01/2016 13:52 | #
Mmmh, c'est sur que tu vas te servir de tout ce que tu as fait en maternelle, au primaire, au collège et au lycée pour ta vie professionnelle !
Mais c'est justement ce qui qualifie un ingénieur. Certes, certaines choses sont peu utile, mais elles nous permettent d'avoir des connaissances globales dans tout les domaines dans lesquels nous pourrions être amené à travailler plus tard.
Citer : Posté le 03/01/2016 14:27 | #
une "Norme" qui te fait utiliser des moyens plus compliqués
Tu te contredis toi-même. Qu'est ce qui est plus facile quand tu vas arriver en entreprise : se simplifier ou se compliquer la vie par rapport à ses anciennes méthodes ?
Assez paradoxalement, j'ai plus de mal à comprendre un code qui suit la Norme qu'un qui est correctement commenté et découpé.
Tu mets en lien deux chose qui n'ont rien à voir : un code peut respecter aucune de tes deux conditions comme il peut respecter les deux comme il peut respecter soit l'une, soit l'autre. En plus, à tu lus beaucoup de code à la norme, et si oui, à tu lus des codes de plusieurs personnes différentes ?
Mais c'est justement ce qui qualifie un ingénieur. Certes, certaines choses sont peu utile, mais elles nous permettent d'avoir des connaissances globales dans tout les domaines dans lesquels nous pourrions être amené à travailler plus tard.
Donc, en gros, dans tout les cas tu ne te servira pas de toutes tes connaissances ?
Matoux(42)
Citer : Posté le 03/01/2016 14:31 | #
une "Norme" qui te fait utiliser des moyens plus compliqués
Tu te contredis toi-même. Qu'est ce qui est plus facile quand tu vas arriver en entreprise : se simplifier ou se compliquer la vie par rapport à ses anciennes méthodes ?
Je ne vois pas où je me contredis ? Il est plus facile de se simplifier la vie en ayant appris normalement le C, en l'ayant utilisé normalement avec toutes ses capacités pour s'adapter à l'entreprise comme il le faut vu que tu sais utiliser le C sous toutes ses coutures.
Citer : Posté le 03/01/2016 14:37 | #
Donc, en gros, dans tout les cas tu ne te servira pas de toutes tes connaissances ?
C'est ça, mais nous ne savons pas de quoi est fait demain. Les technologies vont continué à évolué, et certains éléments de cours nous serons utile.
De plus, cela nous apporte aussi une certaine capacité d'apprentissage et d'adaptation, que symbolise le titre d'ingénieur.
Citer : Posté le 03/01/2016 14:53 | #
une "Norme" qui te fait utiliser des moyens plus compliqués
Vois-tu mieux ainsi ?
Bon, c'est vrai que tu t'expliques mieux dans ton dernier post, donc je vais repartir là-dessus.
Quels mots-clés sont interdits en C à Epitech et font polémiques?
- For
- Do ...While
- switch
Je le redis encore, mais il s'agit de la norme C d'Epitech/42, donc elle ne s'applique qu'au ?
...
C !
Ce qui veut dire que pour les 4 projets sans langage imposé que l'on a déjà eu, et même si on choisissait d'utiliser le C, on pouvait utiliser For, Do ... While et switch.
A partir de la deuxième année où l'on fait moitié moins de C, on peut encore plus les utilisés, ce qui veut dire que l'on sait coder avec et sans. DONC, en sortant d'Epitech, et même pour les stages en cour de cursus (je te laisse la parole Eltoredo) :
tu sais utiliser le C sous toutes ses coutures
Merci Eltoredo !
une certaine capacité d'apprentissage et d'adaptation
C'est l'essence, l'ambition et la raison de l'existence d'Epitech (et donc de 42).
Matoux(42)
Citer : Posté le 03/01/2016 14:55 | #
Ce débat n'a plus lieu d'être avec ton dernier message
Citer : Posté le 03/01/2016 15:27 | #
J'ai lu le code du type qui me suivait pendant la journée découverte d'Epitech Lyon (donc je parle en ayant quand même vu à quoi l'école correspondait), celui de ses potes, et j'ai plus ou moins compris pourquoi son moteur de raycasting était buggué ("compris" dans le sens "c'est incompréhensible la manière dont il a organisé ça")… Quand on doit réfléchir selon la Norme, forcément arrive un moment où quelque chose qui peut être traité simplement ne l'est plus si on "code à la Norme".
Pour moi, coder à la Norme revient à fermer son esprit intellectuel pour rester dans une cage trop petite. Ok on nous en fait sortir plus tard, mais si on peut éviter d'y passer c'est quand même mieux.
Enfin, pour l'anecdote, j'ai choisi l'école d'ingé quand j'ai vu qu'on retrouve les cours d'Épitech (à peu de choses près) en accès gratuit sur Open Classrooms ou Zeste de Savoir. Et vu qu'il n'y a pas tant de profs que ça (voire aucun, je sais plus si c'est pas les Epitech 4 et 5 qui aident les premières année, à confirmer), autant squatter un bon forum pour poser ses questions. Mais c'est un peu HS.
Citer : Posté le 03/01/2016 15:33 | #
C'est l'essence, l'ambition et la raison de l'existence d'Epitech (et donc de 42).
C'est seulement ce qu'ils revendiquent, c'est différent !
Je peux très bien dire que la raison de mon existence c'est de partir sur Pluton, sans jamais pouvoir y arriver.
Pour pouvoir s'adapter, il faut d'abord comprendre tout les mécanismes qu'il y a derrière. Et qu'est ce qui est -entre autre- à la base de tout ?
Les mathématiques ! Que vous ne pratiquez même pas !
Crois-moi, je suis loin d'être un génie des maths, pour être franc, je déteste ça. Pourquoi ne pas avoir choisie une autre branche alors me dira t'on ? Tout simple car d'après moi, les études c'est pas fait pour être drôle (du moins, les deux premières années) et que parfois il faut savoir faire des sacrifices plutôt que de se leurrer sur d'autres école en pensant qu'elles procurent un diplôme équivalent en effectuant seulement les trucs sympa.
Citer : Posté le 03/01/2016 16:03 | #
J'ai lu le code du type qui me suivait pendant la journée découverte d'Epitech Lyon (...), celui de ses potes
Je pense que je ne vais pas t'étonner en te disant qu'à Epitech, comme partout, ce sont souvent les gens d'un même niveau qui sont ensemble. Je te rappelle que pour faire un sondage, il faut prendre des personnes de différents milieux, boulots, conditions, etc. Il en va de même pour Epitech.
Quand on doit réfléchir selon la Norme
On ne réfléchit pas selon la norme. On se remue les méninges pour trouver le bon algo, puis on le code (à la Norme).
Remplacer des do while et des for par des while et des switch par des tableaux de fonctions ou des if change, certes, le code, mais pas l'algo.
quand j'ai vu qu'on retrouve les cours d'Épitech (à peu de choses près) en accès gratuit sur Open Classrooms ou Zeste de Savoir
On trouve de tout sur internet, est ce que c'est ça qui va t'empêcher de vivre ? Est ce que tu vas au cinéma ? Est ce que tu achète des CD/DVD/Jeux ? Est ce que tu continue à voir tes amis ?
Je supposes que les réponses sont toutes "Oui" (sauf la première, bien entendu ; ) ).
Et vu qu'il n'y a pas tant de profs que ça (voire aucun, je sais plus si c'est pas les Epitech 4 et 5 qui aident les premières année, à confirmer), autant squatter un bon forum pour poser ses questions. Mais c'est un peu HS.
C'est effectivement HS, mais comme je ne peux pas laisser ce post sans réponse, j'y réponds !
Il n'y a effectivement aucun prof, mais des pédagos (pour simplifier, on va dire que c'est des profs) et des AER (élèves de 3ème année).
Si l'on suit ce raisonnement, pourquoi n'as tu pas passer le bac en candidat libre ? Après tout, en s'aidant de sites, blogs et forums, tu doit bien pouvoir trouver ton bonheur !
la raison de mon existence c'est de partir sur Pluton
Tu reviens quand ?
Je peux très bien dire que la raison de mon existence c'est de partir sur Pluton, sans jamais pouvoir y arriver.
Avec cet argument, tu peux refaire le monde !
Je peux très bien dire que la raison de l'existence de mon établissement, c'est de m'enseigner, sans jamais pouvoir y arriver.
Matoux(42)
Citer : Posté le 03/01/2016 16:38 | #
J'aimerais juste mettre une dernière réponse ici en disant que ça tourne un peu en rond.
Les protagonistes ici sortent de deux milieux différents. Vous n'avez jamais vraiment (sauf à des occasions exceptionnelles) été obligés de coder sous une Norme telle que celles citées. C'est donc compliqué pour vous d'imaginer des gens réussir à coder sous cette Norme, l'effet de la Norme sur le long terme. Je le comprends tout à fait.
Mais une chose est pas mal oubliée, ce sont les faits. Dans les faits, j'ai vu des gens que j'ai aidé/corrigé et qui débutaient apprendre le langage en étant rigoureux. Moi-même, qui connaissais déjà le langage, ai appris à être rigoureux. Avant, je m'en foutais des avertissements, des includes qui manquaient, des codes formatés n'importe comment, etc. Maintenant, je comprends l'importance de tout ça. C'est une façon d'apprendre comme une autre. C'est trop radical pour vous, qui avez pris des années et des années à coder d'une façon rigoureuse, ça m'a convenu à moi, qui a pour le coup appris ça en moins de temps.
La Norme dans les faits n'est peut-être pas parfaite. Mais vous chipotez réellement pour pas grand chose. Plus ils lâchent du lest, que ce soit du côté de la Norme ou d'ailleurs, moins l'effet sera radical. Ouais, peut-être que ceux qui sortiront ne connaîtront pas le for. Mais avec la rigueur qu'ils auront acquis, ils pourront l'aborder d'une façon différente, et comprendre son importance.
La Norme n'est pas à garder tout au long de sa vie. Les codes produits sous la Norme ne sont pas forcément faits pour être parfaits et réutilisés dans absolument tous les systèmes d'exploitation. Mais cette Norme fait partie des éléments de 42 qui permettent au codeur d'acquérir les compétences nécessaires au métier de développeur.
Mon blog ⋅ Mes autres projets
Citer : Posté le 03/01/2016 16:44 | #
Au lycée, t'as des profs qui te font des cours. Je doute que si les profs de maths de lycée ne filaient que des PDF à leurs élèves, en leur répondant de temps en temps tout le monde aurait son Bac.
À l'inverse, si certains lycées pratiquent ce genre d'éducation (à la Epitech), autant le passer en tant que candidat libre, on peut trouver aussi bien sur le Web.
C'est juste une histoire de motivation : si tu es motivé pour bosser tout seul et apprendre par toi-même, je ne vois pas l'intérêt de payer pour un polycopié. À l'inverse, ceux qui ne sont pas motivés par ce genre de méthodes feraient mieux de trouver une autre voie ou de s'interroger sur les méthodes beaucoup plus accompagnée. Ça vaut pour tout les secteurs, donc je ne vois pas en quoi ton contre-exemple en est un.
À ce moment là, pourquoi se faire chier à respecter la Norme ? D'accord, une fois que tu es formaté, ça change pas grand chose, mais on perd énormément en diversité. Ce qui fait qu'au lieu d'avoir un aperçu global de solutions propres et moins propres on a un petit ensemble de solutions relativement propres. Je sais que j'apprends beaucoup de mes erreurs et de celles des autres, or j'ai l'impression que cette Norme permet de coder relativement proprement sans t'expliquer pourquoi ton code est propre. Du coup, pas moyen de savoir pourquoi tel code est sale ou non, puisqu'il est décrété "sale" arbitrairement. D'ailleurs, je n'ai vu aucune réponse à cette question dans les documents linkés dans ce topic.
Citer : Posté le 03/01/2016 17:13 | #
j'ai l'impression que cette Norme permet de coder relativement proprement sans t'expliquer pourquoi ton code est propre
La distinction entre ce qui est beau et ce qui ne l'est pas varie suivant les époques et les individus. Ce que l'on entend même par sentiment du beau diffère selon les penseurs et bien des cultures n'ont pas de mot qui corresponde exactement au beau du français actuel.
Comment peux-tu dire pourquoi un code est propre ? Il est propre parce qu’il est lisible, sans doute, mais ça reste subjectif.
Du coup, pas moyen de savoir pourquoi tel code est sale ou non, puisqu'il est décrété "sale" arbitrairement.
A partir du moment où tu instaure une règle, une loi, une norme, tu auras forcément des points de vue respecté et d'autres non.
Choisir, c'est renoncer !
On ne réfléchit pas selon la norme. On se remue les méninges pour trouver le bon algo, puis on le code (à la Norme).
À ce moment là, pourquoi se faire chier à respecter la Norme ?
Un algo n'a pas de langage ou de norme !
Les premiers algo datent de l'antiquité, comment veux tu qu'un langage de programmation, ou une norme, soit obligatoire pour réfléchir à la solution de ton problème ?
Matoux(42)