Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Discussions


Index du Forum » Discussions » Que pensez-vous de la norme C imposée par certaines écoles ?
Louloux Hors ligne Ancien administrateur Points: 7035 Défis: 61 Message

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.


Smashmaster Hors ligne Membre d'honneur Points: 4561 Défis: 253 Message

Citer : Posté le 31/12/2015 22:18 | #


Legolas a écrit :
Smashmaster a écrit :
Eltoredo a écrit :
Par contre, "pas d'opérateurs ++, ...", tu fais comment ?


truc = truc + 1;


Mais c'est con ?! En quoi c'est utile ? Ça ne donne pas plus de lisibilité, ça utilise plus de temps...

Je suis d'accord avec toi, après tu n'es pas obligé de respecter les normes.
Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

Citer : Posté le 31/12/2015 22:21 | #


Legolas a écrit :
Smashmaster a écrit :
Eltoredo a écrit :
Par contre, "pas d'opérateurs ++, ...", tu fais comment ?


truc = truc + 1;


Mais c'est con ?! En quoi c'est utile ? Ça ne donne pas plus de lisibilité, ça utilise plus de temps...


Bah c'est pas plus utile que le reste des normes à respecter
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Matoux Hors ligne Membre Points: 17 Défis: 6 Message

Citer : Posté le 01/01/2016 16:44 | #


Bonjour,
Premièrement, le 6ème point est faut : la norme d'Epitech ne possède pas ce genre de règle, et 42 étant très inspiré d'Epitech, je pense que les ++, -- et autres n'y sont pas interdits.
Deuxièmement, la règle des 25 lignes et 80 colones permet de coder de manière propre et synthétique et provient des débuts de l'informatique.
Troisièmement, les 5 fonctions par fichier obligent à organiser son code.
Enfin, l'interdiction du for et du do while a juste pour objectif d'uniformiser les codes pour que les projets soient plus lisibles pour des personnes qui ne codent pas de la même manière.

La norme a certes des défauts et des restrictions qui paraissent "crétin" (je suis tout à fait d'accord pour le switch par exemple, et, au passage, les "empilements" de if ne sont qie très peu tolérés), mais il ne faut pas oublier que les écoles comme Epitech sont très ouvertes et contiennent les meilleurs comme les plus cons, et des personnes avec beaucoups comme avec très peu d'expérience en code. La norme a pour vocation d'éduquer des personnes n'ayant jamais codé : en effet, qui peut le plus peut le moins, d'ailleurs cette norme ne vaut que pour le premier language appris (le C), et n'est pas valable pour le C++ en deuxième année par exemple.

Lephenixnoir a écrit :
Parce que j'ai une fois écrit un programme relativement conséquent (ben t'as dû le faire aussi non ? Le BSQ de l'année dernière) parfaitement fonctionnel sur ma machine et sur celle de la personne à 42 qui m'avait demandé de l'aider et qu'une fois ramené foireusement à le Norme, il ne fonctionnait plus qu'une fois sur deux sur ma machine, et une fois sur dix sur la sienne. Et je l'ai débuggué hein ! En long, en large, en travers et en détail... sans succès. Je dois avouer que ça a bien pourri cette Norme dans mon estime...


Comme on dit a Epitech, on ne met pas à la norme, on code à la norme ...

Matoux42

Ad augusta per angusta !
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 01/01/2016 17:45 | #


Deuxièmement, la règle des 25 lignes et 80 colones permet de coder de manière propre et synthétique et provient des débuts de l'informatique.

Dans ce cas, pourquoi le cinéma n'est pas toujours en N&B ? On a des écrans Full HD, du scolling performant, pourquoi se faire chier à se limiter à 25 lignes ? (pour les colonnes, je comprend, dès que ça sort de l'écran c'est relou.
Enfin, je veux dire, si ma fonction fait 26 lignes, est-ce pour autant que mon code est crade ? Ok, si elle fait 1500 lignes y'a surement un problème, mais 50 lignes pour une fonction ça reste parfaitement lisible, organisé et propre.

Troisièmement, les 5 fonctions par fichier obligent à organiser son code.

J'ai un petit jeu, et pour l'inventaire j'ai ces fonctions : afficher, acheter, vendre, information, mettre, enlever. Merde, 6 fonctions. Je fais quoi ? Un nouveau fichier ?

Enfin, l'interdiction du for et du do while a juste pour objectif d'uniformiser les codes pour que les projets soient plus lisibles pour des personnes qui ne codent pas de la même manière.

Ce qui rejoint l'argument de Lephenix « mais de lister suffisamment de règles inutiles pour que tout le monde ait exactement le même programme au caractère près ! »
Je suis désolé, mais pour moi,
/* Ça */
for(i = 0; i < 10; i++)
    printf("%d ", i);

/* Est bien plus lisible que ça (outre les accolades, indentation, etc qui sur le forum sont chiant à mettre en place) */
i = 0;
while(i < 10)
{
    printf("%d ", i);
    i = i + 1;
}


La norme a certes des défauts et des restrictions qui paraissent "crétin" (je suis tout à fait d'accord pour le switch par exemple, et, au passage, les "empilements" de if ne sont qie très peu tolérés), mais il ne faut pas oublier que les écoles comme Epitech sont très ouvertes et contiennent les meilleurs comme les plus cons, et des personnes avec beaucoups comme avec très peu d'expérience en code. La norme a pour vocation d'éduquer des personnes n'ayant jamais codé : en effet, qui peut le plus peut le moins, d'ailleurs cette norme ne vaut que pour le premier language appris (le C), et n'est pas valable pour le C++ en deuxième année par exemple.

Qu'on apprenne les bonnes habitudes, d'accord. Mais c'est pas une raison pour mettre un 0 à un exo parce que y'avait 6 fonctions au lieu de 5 dans un fichier (#moulinette). C'est ce que je reproche à ce genre d'école : c'est prétentieux de noter du code via un algorithme.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Louloux Hors ligne Ancien administrateur Points: 7035 Défis: 61 Message

Citer : Posté le 01/01/2016 18:28 | #


Dark storm a écrit :
C'est ce que je reproche à ce genre d'école : c'est prétentieux de noter du code via un algorithme.

Bah, noter via un algorithme est compréhensible, tout dépend de cet algo. Prologin note avec un algorithme, et nos DS sur machine fonctionnent de la même manière. Le but est alors d'évaluer la capacité à produire un programme fonctionnel et efficace (en temps comme en mémoire). Mais à côté on a des DS écrits où on attend de nous un code très propre et par exemple on perd la moitié des points sur un algo où on a mis if condition then true else [...] au lieu de condition or [...]
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 01/01/2016 18:33 | #


Prologin ne note pas la façon dont tu code, mais le résultat. Et je ne crois pas (à confirmer) que à Epitech ou 42 ils aient des DS papier où la forme est notée.

Qu'on note le fond via un algo, je trouve cela normal et parfaitement justifié. C'est dès qu'on s'attaque à la forme que je trouve ça un peu prétentieux (sous entendu, en quoi la machine est capable de dire si tu as *bien* codé ou non un algo, si le résultat est correct).
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Louloux Hors ligne Ancien administrateur Points: 7035 Défis: 61 Message

Citer : Posté le 01/01/2016 18:55 | #


Dark storm a écrit :
Qu'on note le fond via un algo, je trouve cela normal et parfaitement justifié. C'est dès qu'on s'attaque à la forme que je trouve ça un peu prétentieux (sous entendu, en quoi la machine est capable de dire si tu as *bien* codé ou non un algo, si le résultat est correct).

Oui, je pense tout comme toi : l'algo doit se contenter de mesurer ce qui est objectivement mesurable : résultats et performances. Prologin a une épreuve écrite d'ailleurs, et en prépa nous en avons aussi.
Matoux Hors ligne Membre Points: 17 Défis: 6 Message

Citer : Posté le 01/01/2016 20:28 | #


La norme, c'est comme pour l'orthographe, tu poura tjrs noté 1 redac unikmen sur le fé kel respekt ou nn le sujet, mé l'ortograf c 1portan.
De plus, une faute de norme est égale à '-1', donc quelqu'un qui ne voudrait pas perdre 30 secondes de sa vie pour créer deux fichiers au lieu d'un seul (ça s'appelle la paresse, mais t'inquiète, ça se soigne ; ) ), n'aurait donc qu'un point en moins.

Matoux42
Ad augusta per angusta !
Matoux Hors ligne Membre Points: 17 Défis: 6 Message

Citer : Posté le 01/01/2016 20:31 | #


Ah oui, et

i = 0;
while (i++ < 10)
         printf("%d", i);

marche aussi, et ça ne fait qu'une ligne en plus (et c'est parfaitement lisible et compréhensible).

Matoux42
Ad augusta per angusta !
Breizh_craft En ligne Modérateur Points: 1161 Défis: 7 Message

Citer : Posté le 01/01/2016 20:34 | #


Tiens, je ne pense pas me tromper en disant que tu étudie à 42 et que tu apprécie cette école.

Au fait, tu n'as pas besoin d'être désobligeant pour te faire comprendre.
Breizh.pm – Un adminsys qui aime les galettes.
Matoux Hors ligne Membre Points: 17 Défis: 6 Message

Citer : Posté le 01/01/2016 20:40 | #


Tu te trompes, je suis à Epitech Lyon mais j'apprécie effectivement cette école ; )
Je ferais preuve de plus de respect quand les autres feront de même.

Matoux42
Ad augusta per angusta !
Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

Citer : Posté le 01/01/2016 20:41 | #


Personne ne t'as manqué de respect, nous sommes sur un site civilisé, restons corrects en tous points
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Louloux Hors ligne Ancien administrateur Points: 7035 Défis: 61 Message

Citer : Posté le 01/01/2016 21:08 | #


Matoux42 a écrit :
Je ferais preuve de plus de respect quand les autres feront de même.

Eh, t'emporte pas. Nous menons un débat, je ne vois là aucun irrespect mais seulement des opinions contraires à la tienne.
Tu as le droit d'apprécier ton école, et cela n'empêche pas de discuter du bien-fondé de certains de ses choix. En tout cas, quoi que tu en penses, laisse-nous le droit d'en penser autrement.


Matoux42 a écrit :
La norme, c'est comme pour l'orthographe

Euh... non, pas du tout. La syntaxe d'un langage, c'est l'orthographe. Les conventions universelles de codage aussi à la limite. Mais la Norme, c'est comme si, spécifiquement sur Planète Casio, j'ajoutais des règles de rédaction des messages. Eh bien on peut être très attaché à l'orthographe et pas adhérer à ces règles car on trouve qu'elles brident celui qui a envie d'écrire ici.
Matoux Hors ligne Membre Points: 17 Défis: 6 Message

Citer : Posté le 01/01/2016 21:54 | #


Eltoredo a écrit :
En résumé, je trouve ça plutôt débile pour la plupart de ces normes, voilà tout...

Legolas a écrit :
Mais c'est con ?!

=> Ce sont des marques d’irrespect.
"Je trouve que cet homme fait de la merde." => irrespect
"Je ne suis pas d'accord avec ce que fait cet homme." => respect
J'ai fait preuve d'autant de respect que les autres : "tous ceux qui prennent l’épée périront par l’épée".
Matoux42 a écrit :
La norme, c'est comme pour l'orthographe

Dans ce cas, je parle d'orthographe car cela y ressemble sur beaucoup de points :
On pose des conventions pour que tout le monde écrivent de la même manière, et ça impliquent des règles qui pourraient sembler, voir qui sont, lourdes. Par exemple, on pouré suprimé les letre double ou muete et remplacé tou les son par 1 seul s1bol.
cenventions
Matoux42
Ad augusta per angusta !
Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

Citer : Posté le 01/01/2016 21:57 | #


Je trouve certaines de ces normes débiles, je vois pas en quoi je te manque de respect ? C'est mon opinion, si je trouve ça débile, ça ne te concerne en aucun cas, à moins que tu n'aies écrit ces normes... Et dans ce cas, on pourrait en débattre au lieu qu'il y ait manque de respect.

Si Legolas trouve ça con, c'est son droit aussi, même si c'est mal dit

Si à chaque fois que quelqu'un critiquait quelque chose qu'une autre personne aime et que cette personne qui aime cette chose critiquait ce quelqu'un, ce serait le bordel, tu ne crois pas ?
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Cakeisalie5 En ligne Ancien administrateur Points: 1910 Défis: 11 Message

Citer : Posté le 01/01/2016 22:18 | #


Tout d'abord, je remarque qu'aucun lien vers un document officiel présentant une norme type 42/Epitech/etc n'est présent. Je me permets d'en ajouter un : la norme de 42, version 2.0.0 (l'actuelle, normalement).

Ensuite, je vais tenter de récapépéter histoire d'avoir les idées claires.

L'ensembles des reproches faits aux Normes (si j'ai bien récapépété) sont les suivants :
- Elles ne permettent pas d'exploiter/de découvrir l'ensemble des possibilités d'un langage, et forcent même à utiliser certains outils "moins adaptés" au lieu d'autres. (ex: while/for)
- Des programmes fonctionnels ne le sont plus ramenés à la Norme.

Il semble qu'une chose très importante soit oubliée dans l'ensemble des réponses de ce topic : 42, Epitech, ... sont des écoles, leur but est donc d'éduquer, de créer un contexte favorable à l'apprentissage. La Norme fait partie des moyens mis en oeuvre pour créer ce contexte.

Lephenixnoir a écrit :
Dans leur vie professionnelle il n'utiliseront jamais l'API d'Unix...

Dark storm a écrit :
Dans ce cas, pourquoi le cinéma n'est pas toujours en N&B ?

Lephenixnoir a écrit :
« allez lire les sources de glibc, du moteur 3D Ogre, de Qt, ou de Webkit, et puis on en reparle »


Le but de 42 est de faire partir les étudiants d'une base suffisamment basse pour faire comprendre ce qu'il y a derrière les outils standards. Dans ces citations, vous évoquez ici l'utilisation d'une telle Norme dans le cadre d'un gros projet, professionnel. Nope, nope, nope, et re-nope. On en revient au début. Ces Normes sont là pour faire partir les étudiants sur un chemin, sur une base. Heureusement que ceux-ci vont en dévier !

Cette histoire de N&B me permet d'ailleurs d'ajouter que c'est ce que je fais là. Je pourrais directement faire des trucs de malade, des animations 4D de malade avec des librairies graphiques de fous furieux ! Mais je comprendrais rien à ce que je fais. Alors que partir avec une CASIO, un écran monochrome, des encodages de police d'écritures, d'images, des syscalls, etc, ça me permet de comprendre progressivement ce qu'il y a derrière, et de savoir le réutiliser en cas de besoin.

Dark storm a écrit :
Mais à ce compte là pourquoi on refait pas les bases jusqu'à assembler le binaire à la main ?


Pour la même raison que mon prof de prépa a commencé avec des trucs proches de ce qu'on faisait en terminale : pour ne pas nous décourager. Au-delà de simplement éduquer, idéalement, une école est également là pour nous encourager à apprendre. (bon après, je vais pas aller jusqu'au bout de ce débat-là, hein, lol)

Intelligide a écrit :
Louloux a écrit :
ne pas utiliser de boucle itérative (for), mais les remplacer par des boucles conditionnelles (while)

Je trouve ça vraiment crétin. Les boucles itératives ont, pour moi, une utilisation complétement différente de celle de while. Devoir itérer un tableau avec un while est, pour moi, la manière la plus dégueulasse qui soit.


La restriction des possibilités du langage nous fait nous perdre moins de temps sur cette idée des "est-ce que c'est adapté ? tu préfères en vert ou en bleu ?". (celui qui dit en rouge, je lui donne une tape sur la joue)

On est moins concentrés sur le langage en lui-même, et plus sur ce qu'on en fait, sur l'algorithmique qu'il y a derrière. On comprend tous le langage, les opérateurs utilisés, etc, lorsqu'on se corrige. C'est l'algorithmique qui anime nos corrections, nos discussions. C'est le plus important, c'est ce qu'on est là pour apprendre, au-delà de leur application.

Dark storm a écrit :
Enfin, je veux dire, si ma fonction fait 26 lignes, est-ce pour autant que mon code est crade ? Ok, si elle fait 1500 lignes y'a surement un problème, mais 50 lignes pour une fonction ça reste parfaitement lisible, organisé et propre.


Avoues, tu aurais dit la même chose si la limite était de 50 lignes pour 51

Qui plus est, à partir d'un certain nombre de lignes, le message de la Norme est : tu aurais dû décomposer. Le nombre 25 a été choisi pour des raisons historiques, semble-t-il, m'enfin, il faut bien en choisir un.

Dark storm a écrit :
CakeIsALie5 a écrit :
Troisièmement, les 5 fonctions par fichier obligent à organiser son code.

J'ai un petit jeu, et pour l'inventaire j'ai ces fonctions : afficher, acheter, vendre, information, mettre, enlever. Merde, 6 fonctions. Je fais quoi ? Un nouveau fichier ?


Et pourquoi pas ? Qu'est-ce que ça coûte de créer un nouveau fichier ? Ca ne peut que t'aider à mieux décomposer ton code.

Et pour avoir entretenu un fichier de plus de 1000 lignes en 3ème, crois-moi, cette incitation à décomposer ton code, elle ne peut pas être négative. (olala, c 1 extrèm é tou -- oui, m'enfin)

Louloux a écrit :
plus on a de contraintes, moins on se concentre sur la réalisation d'un code propre et fonctionnel

Lephenixnoir a écrit :
Le BSQ de l'année dernière) parfaitement fonctionnel sur ma machine et sur celle de la personne à 42 qui m'avait demandé de l'aider et qu'une fois ramené foireusement à le Norme, il ne fonctionnait plus qu'une fois sur deux sur ma machine, et une fois sur dix sur la sienne. Et je l'ai débuggué hein ! En long, en large, en travers et en détail... sans succès. Je dois avouer que ça a bien pourri cette Norme dans mon estime...


Comme le dit si bien Matoux42 (pour l'avoir vécu lors de la piscine) :

Matoux42 a écrit :
Comme on dit a Epitech, on ne met pas à la norme, on code à la norme ...


En effet, la Norme est faite pour qu'on crée et organise son code avec. Créer un système dans la norme POSIX est à mon avis plus facile que d'adapter Windows NT à cette norme.

Et petits apartés :

Dark storm a écrit :
Et je ne crois pas (à confirmer) que à Epitech ou 42 ils aient des DS papier où la forme est notée.


Lors des examens, la Norme n'est pas appliquée, seuls les résultats (avec catch de timeout, segfault, etc) sont évalués.

Lephenixnoir a écrit :
Mais alors qu'ils expliquent aux élèves comment le for, la stdlib et les entrées/sorties fonctionnent, qu'ils leur fassent réécrire printf() en entier s'ils le veulent


Beh justement, y a quelque chose qu'on appelle la libft : c'est une lib qu'on fait évoluer selon nos besoins, dans laquelle on ajoute ce qu'on veut, et qu'on peut utiliser dans tous les projets (je n'ai encore vu aucune exception). Et d'ailleurs...

Promotion ordinaire sur les inscriptions sur Planète Casio : en ce moment, c'est gratuit !

Mon blogBesoin d'utilitaires de transfert vers et depuis la calculatrice sous GNU/Linux ?
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 01/01/2016 22:19 | #


Bin, calmez-vous, j'ai pas envie de faire du ménage de façon despotique. Surtout que la dernière fois qu'on s'est vu t'étais plutôt sympa.

Matoux, est-ce que peux juste répondre de manière argumentée à quel est l'intérêt pédagogique de remplacer les for par du while ?
Idem, de limiter drastiquement les lignes dans un fichier ? Parce qu'un code de 25 lignes non commenté est plus compréhensible qu'un code 50 lignes commenté ?

Ajouté le 01/01/2016 à 23:07 :
Cakeisalie5 a écrit :
Il semble qu'une chose très importante soit oubliée dans l'ensemble des réponses de ce topic : 42, Epitech, ... sont des écoles, leur but est donc d'éduquer, de créer un contexte favorable à l'apprentissage. La Norme fait partie des moyens mis en oeuvre pour créer ce contexte.

C'est bien ce que je reproche à cette norme, c'est de ne pas être pédagogique du tout : on vous apprend pas à faire du code propre, mais du code qui respecte des règles arbitraires. C'est comme si en français on demandait aux élèves de ne faire que des dissertations en 5 paragraphes, sinon c'est 0. Quel est l'intérêt pédagogique ?

Cette histoire de N&B me permet d'ailleurs d'ajouter que c'est ce que je fais là. Je pourrais directement faire des trucs de malade, des animations 4D de malade avec des librairies graphiques de fous furieux ! Mais je comprendrais rien à ce que je fais. Alors que partir avec une CASIO, un écran monochrome, des encodages de police d'écritures, d'images, des syscalls, etc, ça me permet de comprendre progressivement ce qu'il y a derrière, et de savoir le réutiliser en cas de besoin.

À la rigueur, qu'on fasse refaire la stdlib, soit. Mais qu'on interdise d'utiliser les bases, je suis sceptique…

La restriction des possibilités du langage nous fait nous perdre moins de temps sur cette idée des "est-ce que c'est adapté ?

Donc j'en déduis qu'on vous apprend à utiliser des trucs à mauvais escient ? Enfin, sans se demander si c'est adapté ou non. Pas mal comme pédagogie.

On est moins concentrés sur le langage en lui-même, et plus sur ce qu'on en fait, sur l'algorithmique qu'il y a derrière. On comprend tous le langage, les opérateurs utilisés, etc, lorsqu'on se corrige. C'est l'algorithmique qui anime nos corrections, nos discussions. C'est le plus important, c'est ce qu'on est là pour apprendre, au-delà de leur application.

L'excellence, c'est de maitriser les deux, pas de faire impasse sur un point qui fait chier.

Avoues, tu aurais dit la même chose si la limite était de 50 lignes pour 51

Ce que je reproche, c'est pas ce que soit 25, 50 ou 100 lignes. C'est qu'on note la propreté d'un code à son nombre (arbitraire) de lignes (ou de colonnes, etc.). Un peu manichéen comme vision des choses non ?

Et pourquoi pas ? Qu'est-ce que ça coûte de créer un nouveau fichier ? Ca ne peut que t'aider à mieux décomposer ton code.

Autant faire un fichier par fonction, ce sera bien décomposé non ? Et puis, quel est l'intérêt de décomposer quelque chose qui est plus logique que certaines fonctions dans deux fichiers, parce qu'un type a décrété que au delà de x fonctions dans un fichier, c'est sale.

Et pour avoir entretenu un fichier de plus de 1000 lignes en 3ème, crois-moi, cette incitation à décomposer ton code, elle ne peut pas être négative. (olala, c 1 extrèm é tou -- oui, m'enfin)

Je suis très bien capable de décomposer un code sans me limiter à x fonctions par fichier.

Lors des examens, la Norme n'est pas appliquée, seuls les résultats (avec catch de timeout, segfault, etc) sont évalués.

Merci pour l'info.

Beh justement, y a quelque chose qu'on appelle la libft : c'est une lib qu'on fait évoluer selon nos besoins, dans laquelle on ajoute ce qu'on veut, et qu'on peut utiliser dans tous les projets (je n'ai encore vu aucune exception). Et d'ailleurs...

Z'avez raison les gars, c'est une bonne idée de mettre à la benne le code de ceux qui l'ont pondu pour vous. Après tout, réinventer la roue, c'est tellement plus amusant.


Au final, je trouve que la Norme est limite vicieuse : à force de s'habituer à un certain type de code, vous risquez d'avoir du mal à relire le code de quelqu'un d'autre.

Sinon, y'a une moulinette de dispo sur le Web ? Voire si y'a pas des failles dedans, histoire de s'amuser un peu
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Cakeisalie5 En ligne Ancien administrateur Points: 1910 Défis: 11 Message

Citer : Posté le 01/01/2016 23:30 | #


Dark storm a écrit :
C'est comme si en français on demandait aux élèves de ne faire que des dissertations en 5 paragraphes, sinon c'est 0. Quel est l'intérêt pédagogique ?

On ne leur dit pas de faire leurs dissertations en 5 paragraphes, on leur dit "faites ça en maximum 300 lignes". C'est pas un ==, c'est un <=. (EDIT : ouais, plus j'y pense, plus j'ai l'impression que cette comparaison est foireuse. m'enfin, l'idée est là, quelque part)

Dark storm a écrit :
Donc j'en déduis qu'on vous apprend à utiliser des trucs à mauvais escient ? Enfin, sans se demander si c'est adapté ou non. Pas mal comme pédagogie. :P

C'est surtout que c'est la base, et qu'on peut tout faire de la base.

Dark storm a écrit :
L'excellence, c'est de maitriser les deux, pas de faire impasse sur un point qui fait chier.

Certes, mais il faut bien commencer quelque part, non ? 42 souhaite accueillir des gens ayant une expérience comme n'en ayant aucune. Une fois la logique acquise, il devient intéressant de s'intéresser au langage. (bien que je sois d'accord que les langages peuvent aider à comprendre la logique dans leur syntaxe, comme le caml light pour le récursif par exemple)

Dark storm a écrit :
Mais qu'on interdise d'utiliser les bases, je suis sceptique…

On a le droit d'utiliser selon les cas le open/close, le write/read, le malloc/free. Avec ces bases, on peut faire beaucoup de choses, tu ne penses pas ?

Dark storm a écrit :
Après tout, réinventer la roue, c'est tellement plus amusant.

C'est surtout qu'en plus de nous apprendre comment qu'c'est fait, ça nous entraîne

Dark storm a écrit :
Au final, je trouve que la Norme est limite vicieuse : à force de s'habituer à un certain type de code, vous risquez d'avoir du mal à relire le code de quelqu'un d'autre.

On s'habitue pour le début, et c'est beaucoup plus facile pour apprendre. Quand tu commences à apprendre à parler, tu veux apprendre quatre langues en même temps, toi ? Commencer à apprendre le français pour ensuite partir sur d'autres langues me semble plus raisonnable. La diversité de ce côté-là viendra donc après.

Dark storm a écrit :
Je suis très bien capable de décomposer un code sans me limiter à x fonctions par fichier.

D'autres, ayant une moindre expérience ou non, moins.

Dark storm a écrit :
Sinon, y'a une moulinette de dispo sur le Web ? Voire si y'a pas des failles dedans, histoire de s'amuser un peu

Nop. A une époque, c'était vraiment un logiciel, qu'il était donc possible de copier (ce que des gens avaient fait ici), mais ils utilisent maintenant un serveur auquel on ne peut faire des requêtes qu'en étant connecté au VPN de 42, donc pas trop possible de voir le code source.
Me semble qu'ils parlaient de poster leur code quelque part, m'enfin, personne avait l'air d'y croire si je me souviens bien. 'pis bon, c'est le bocal, quoi. (cela dit, y a des norminettes faites par des étudiants si tu veux tester )

Promotion ordinaire sur les inscriptions sur Planète Casio : en ce moment, c'est gratuit !

Mon blogBesoin d'utilitaires de transfert vers et depuis la calculatrice sous GNU/Linux ?
Matoux Hors ligne Membre Points: 17 Défis: 6 Message

Citer : Posté le 02/01/2016 00:47 | #


Dark storm a écrit :
Matoux, est-ce que peux juste répondre de manière argumentée à quel est l'intérêt pédagogique de remplacer les for par du while ?

Je ne vais pas y aller par quatre chemin : je ne suis pas d'accord avec la norme d'Epitech/42 sur plusieurs points :
- pas de for
- pas de do while
- pas de switch
Les deux premières peuvent être assez facilement remplacées, sans beaucoup plus de code, je vous avoue que je n'ai jamais senti un grand manque de for, et je n'ai déploré le do while qu'une ou deux fois.
Le switch me manque un peu plus, je le reconnais.
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".
Après, dans les cas où la norme n'est pas imposée, je ne la respecte pas uniquement pour le switch, puisque le do while n'est quasiment pas utile et j'ai pris l'habitude de remplacer for par while, ce qui ne coute quasi rien.
Dark storm a écrit :
Idem, de limiter drastiquement les lignes dans un fichier ? Parce qu'un code de 25 lignes non commenté est plus compréhensible qu'un code 50 lignes commenté ?

Je ne commente pas mes codes, (sauf pour organiser mes headers) et, de toute manière, la norme n'autorise pas de commentaire à l'intérieure des fonctions.
Concernant le nombre de ligne, c'est quelque chose que je considère pas comme critiquable: il force à synthétiser et organiser son code, et, je vous montrerais bien deux de mes codes, avant et après Epitech, la différence est sans appel.
Je n'ai jamais codé aussi proprement que depuis que je suis Epitech. En plus, quand on sais ce qu'on veut mettre dans une fonctions, la faire en 25 ligne est assez facile.
Dark storm a écrit :
Autant faire un fichier par fonction, ce sera bien décomposé non ? Et puis, quel est l'intérêt de décomposer quelque chose qui est plus logique que certaines fonctions dans deux fichiers, parce qu'un type a décrété que au delà de x fonctions dans un fichier, c'est sale.

Avant d'être mort tu es vivant ! Malheureusement, la moulinette, comme le reste de l'info en générale, est manichéenne. Tout comme pour le nombre de ligne, tu peux pas demander à la moulinettes de tolérer 81 colonnes, 26 lignes ou 6 fonctions, il faut poser une limite ! C'est ça qu'on appelle l'éducation, c'est savoir poser des limites.
Comme l'a dit Cakeisalie5, et comme tu l'a si bien repris après, Dark storm, que ce soit 25, 50 ou 100 lignes, et que ce soit 5 10 ou 50 fonctions, ce qui te choque, c'est le côté manichéen de la chose. Mais à ce moment là, aurais-tu une solution pour la moulinette ?
Cakeisalie5 a écrit :

Citer : Posté le 01/01/2016 23:30 | #
Dark storm a écrit :
C'est comme si en français on demandait aux élèves de ne faire que des dissertations en 5 paragraphes, sinon c'est 0. Quel est l'intérêt pédagogique ?

On ne leur dit pas de faire leurs dissertations en 5 paragraphes, on leur dit "faites ça en maximum 300 lignes". C'est pas un ==, c'est un <=. (EDIT : ouais, plus j'y pense, plus j'ai l'impression que cette comparaison est foireuse. m'enfin, l'idée est là, quelque part)

Non cette comparaison n'est pas foireuse du tout, ce serait effectivement plus <= que ==, et du coups :
Sujet Espagnol LV2 S 2015 a écrit :

1.Explica en qué medida el documento 2 puede relacionarse con un aspecto de la noción«Espaces et échanges». (15 líneas)
2.Comenta libremente la frase del documento 3 (l. 1 y 2): “Por recomendación de la Unesco, las autoridades peruanas han limitado a 2.500 el número de visitas diarias a Machu Picchu el principal destino turístico del paíspara preservar el santuario.” (15 líneas)

Il y a effectivement une limite, même au bac ! Je rajoute même que ma prof d'Espagnol nous racontait que certains correcteur de l'académie (grenoble pour moi) comptaient le nombre de ligne, et si il excède le nombre indiqué, bah ils corrigent pas !

Matoux42
Ad augusta per angusta !
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 02/01/2016 00:47 | #


Enfin, la manière dont je vois ça, c'est comme apprendre le français en disant "Avec 500 mots vous pouvez tout faire, utilisez pas les autres sinon vous serez perdus.". Je reconnais qu'au moins t'es tellement cadré que tu peux pas te planter ; mais si par malheur tu apprend un truc super utile, que tu comprends parfaitement, et que t'aimerai bien utiliser à bon escient, ben t'es niqué…

Ouais, pour ceux qui ont de grosses difficultés scolaires, je peux comprendre que le dictat de la Norme peut les aider à assimiler certains trucs. Mais c'est plus par automatisme que par compréhension que ça rentre dans ce cas.

En prépa, mon prof d'info nous apprend à coder proprement. Si il arrive pas à lire ton code facilement, il enlève des points. Comme tout bon prof, il donne des conseils, t'indique la bonne manière de faire, et te note en fonction. Mais en aucun cas il va t'obliger à faire exactement comme il veut.

Au passage, l'explication fournie dans la Norme de 42 sur l'imposition de celle-ci aux devoirs me convient pas car elle ne répond pas à la question du pourquoi pédagogique. Elle impose une vision des choses sans être suffisamment argumentée pour que je me dise "ouais, ils ont de bonnes raisons".

Sinon, ça vous dérange pas d'être noté par des machines sur la prétendue qualité de vos codes ? Je suis sur que je suis capable d'écrire un truc ignoble qui respecte la Norme. Et à l'inverse écrire un truc très propre qui ne le respecte pas…

Faut vraiment aimer chier du code pour pouvoir se contraindre à faire exactement comme un type a décrété. Ouais, je suis bien content d'être libre de mes choix algorithmiques. x)

Ajouté le 02/01/2016 à 00:56 :
Je ne commente pas mes codes, (sauf pour organiser mes headers) et, de toute manière, la norme n'autorise pas de commentaire à l'intérieure des fonctions.


No comment…

C'est le cas de le dire
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Smashmaster Hors ligne Membre d'honneur Points: 4561 Défis: 253 Message

Citer : Posté le 02/01/2016 02:11 | #


Dark storm a écrit :
... à Epitech ou 42 ils aient des DS papier où la forme est notée. ....

Epitech est très stricte, si tu ne respectes pas les normes, alors tu risques d'avoir une note en dessous de 0/20, c'est que qu'un étudiant d'Epitech m'avait dit il y a 5 ans.

Après concernant les normes, je code un peu comme je veux, tant que ça reste lisible.

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 101 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd