Bienvenue sur PEBKAC.fr, le site qui recense les anecdotes où l’on se moque des utilisateurs ne maîtrisant pas l’outil informatique. PEBKAC est un acronyme signifiant « Problem Exists Between Keyboard And Chair ».
Le problème se situe entre la chaise et le clavier : soumettez vos histoires, donnez votre avis !
Ce site n'est pas le site original pebkac.fr. Je publie ici la liste des PEBKAC que j'ai pu sauvegarder avant que le site original ne soit mis hors ligne.
Aujourd'hui, en cours d'ISN (Initiation aux Sciences du Numérique) dans mon lycée, le professeur – qui n'avait pas l'air de réellement comprendre ce qu'il racontait – nous a enchaîné bourdes sur bourdes. En voici un florilège :

– On ne peut pas déclarer plusieurs variables sur une seule ligne (en langage C) ;
– Cela ne sert à rien d'initialiser les variables si on les remplit juste après, avec des calculs ;
– Nous sommes des « Geeks programmateurs (sic) qui êtes les seuls à comprendre votre code », si on ne commente pas suffisamment un code d'environ 10 lignes.

Bien que cela ne soit que la deuxième année où c'est enseigné, je trouve ça tout de même limite d'apprendre ce genre de bêtises à des apprentis développeurs. PEBKAC.
PEBKAC #8852 proposé par LimaLayla le 24/10/2013 | 28 commentaires | 👍🏽 👎🏽 +124
Avis : le sic est utilisé ici à bon escient.
Commentaire #116345 écrit par val070 le 24/10/2013 à 08h45 | 👍🏽 👎🏽
– Cela ne sert à rien d'initialiser les variables si on les remplit juste après, avec des calculs ;

Ben, je vois pas l'intérêt de faire un int c = 0; si on fait juste après c = a + b;

– Nous sommes des « Geeks programmateurs (sic) qui êtes les seuls à comprendre votre code », si on ne commente pas suffisamment un code d'environ 10 lignes.

Un peu dur à comprendre à la première lecture, mais je vois ce que tu veux dire. Un code de 10 lignes peux vite devenir imbitable pour peu qu'il fasse une opération complexe. Ça m'arrive en relisant des fonctions que j'ai codées moi-même d'avoir du mal à comprendre ce qu'elle est supposée faire.
Commentaire #116346 écrit par Link le 24/10/2013 à 08h46 | 👍🏽 👎🏽
Bon d'accord c'est pas optimal comme conseils à donner, mais c'est loin d'être catastrophique ! Enfin on est loin du PEBKAC du prof qui dit «mettez pas de commentaires, ça ralentit le code»
Commentaire #116348 écrit par yomama le 24/10/2013 à 08h49 | 👍🏽 👎🏽
Les commentaires, c'est le bien. Tu ne peux jamais être certain que tu ne vas réintégrer ton code de 10 lignes dans un plus grand projet. Fais ça avec des dizaines de bouts de code, tu te retrouves avec un truc imbitable et pas commenté. GG.
Commentaire #116351 écrit par Dominus Carnufex le 24/10/2013 à 09h10 | 👍🏽 👎🏽
La première est un PEBKAC, mais les deux autres sont vraies. Du coup à 2 conte 1 c'est toi le PEBKAC ?
Commentaire #116359 écrit par Acorah le 24/10/2013 à 09h37 | 👍🏽 👎🏽
"On dit "Développeur" et pas "Programmateur". Les programmateurs c'est pour les lave-linges ou les VCR."

A faire recopier 200 fois par ton prof, les voyelles en bleu, les consonnes en rouge.
Commentaire #116360 écrit par Aran le 24/10/2013 à 09h39 | 👍🏽 👎🏽
À mon avis, c'est plutôt le "Geeks programmateurs" qui passe mal.
Sinon oui, comme tu dis parfois 10 lignes peuvent être compliquées à comprendre, et encore plus si c'est mal codé.

Mais bon, là au lycée en cours d'initiation, le programme de 10 lignes ça doit être deux boucles for et un printf() pour afficher une pyramide de '*' dans le terminal.
Commentaire #116361 écrit par Muphins le 24/10/2013 à 09h43 | 👍🏽 👎🏽
Pour l'initialisation de la variable, moi je ne vois pas l'intérêt de faire deux lignes ;)
int c = a + b;
Commentaire #116369 écrit par BugsyLansky le 24/10/2013 à 10h15 | 👍🏽 👎🏽
Allez, 8 lignes suffisent ;) BEDP quand même !

CALL:LABEL1 "%web_home%/bin/twiddle.bat serverinfo -l | findstr jboss.web.deployment:war=%GUI_NAME%" BEAN_NAME
 CALL %web_home%/bin/twiddle.bat invoke "%BEAN_NAME%" stop
 EXIT /B 0
 :LABEL1
 SET val=%1
 SET val=%val:|=^|%
 set "%2="
 for /f "delims=" %%a in ('%val%') do set "%2=%%a"
 
Commentaire #116370 écrit par Alfred456654 le 24/10/2013 à 10h17 | 👍🏽 👎🏽
Je crois que:
A) Tu t'es trompé de quote
B) Il dit qu'il voit pas le rapport
C) J'avais oublié à quel point les BATCH étaient moches
D) Obiwan Kenobi
Commentaire #116377 écrit par Chieur le 24/10/2013 à 10h27 | 👍🏽 👎🏽
J'exprimais ma désapprobation par rapport à :
– Nous sommes des « Geeks programmateurs (sic) qui êtes les seuls à comprendre votre code », si on ne commente pas suffisamment un code d'environ 10 lignes..
Donc :
A) Non.
B) Voir ci-dessus.
C) Ouais, horribles :'(
D) Certes.
Commentaire #116380 écrit par Alfred456654 le 24/10/2013 à 10h42 | 👍🏽 👎🏽
En C, tu dois définir tes variables locales en début de bloc. Si tu n'as pas la valeur de a ou de b à ce moment là, tu dois le faire en deux lignes.

Note : c'était le cas quand j'ai appris le C, au siècle dernier... Aujourd'hui, je ne fais plus de C autrement que pour le fun sur de l'embarqué (Atmel AVR) et j'ai gardé cette habitude. Ce n'est peut-être plus obligatoire.
Commentaire #116382 écrit par Acné le 24/10/2013 à 10h47 | 👍🏽 👎🏽
Dans ce cas là, c'est sûr...

`String line;
while ((line = br.readLine()) != null) {
...
}`

Et là ? Quelqu'un voit un intérêt à écrire `String line = null;`, à part faire une affectation useless ?

Donc,
"On ne peut pas déclarer plusieurs variables sur une seule ligne (en langage C) ;
Oui c'est un PEBKAC, on peut tout à fait. Cela dit, c'est pas tjs top de faire ça...
`int x, y;` => ok
`char *ptr, c = 0x34, **strArr, a, *p = NULL;` => franchement illisible...
Donc on peut, mais c'est pas forcément conseillé. En plus, je pense que à peu près tout le monde s'est fait piégé une fois avec des `int x, y = 0;` à se demander pourquoi x n'était pas initialisé à 0^^

"Cela ne sert à rien d'initialiser les variables si on les remplit juste après, avec des calculs ;"
Tout à fait correct.

"Nous sommes des « Geeks programmateurs (sic) qui êtes les seuls à comprendre votre code », si on ne commente pas suffisamment un code d'environ 10 lignes."
Ni juste, ni faux, chacun à sa vision de l'utilité de commenter ou pas... ça dépend aussi des languages. Mais pour moi ce qui est sûr c'est que vaut mieux ne pas avoir de commentaires que d'avoir des commentaires pourris qui n'apportent rien...
`// Boucle allant de 0 à n-1
for (int i=0; i<n; ++i) {
...
}`
Merci, je sais lire, moi ce qui m'aurait intéressé c'est de savoir à quoi sert cette boucle sans me plonger dans le code de la boucle...
Commentaire #116384 écrit par Chieur le 24/10/2013 à 10h51 | 👍🏽 👎🏽
Initialiser une variable c'est juste pour être sûr qu'à aucun moment dans l'exécution elle ne se retrouve avec une valeur null.

Donc effectivement, quand c'est un objet, ou tout autre type pouvant être null, ça ne sert à rien de l'initialiser. Mais quand c'est un entier, un booléen & co, ça mange pas de pain, et ça sécurise le code au niveau de l'exécution.
Commentaire #116394 écrit par neeko le 24/10/2013 à 11h14 | 👍🏽 👎🏽
Programmateur : Personne chargée d'établir des programmes informatiques.
C'est dans le dictionnaire : http://www.cnrtl.fr/definition/programmateur
Commentaire #116396 écrit par Tharkun le 24/10/2013 à 11h27 | 👍🏽 👎🏽
en vert les voyelles, en vert...
Commentaire #116398 écrit par Vinm le 24/10/2013 à 11h35 | 👍🏽 👎🏽
<chipoteur> Juste, ISN dans les papiers officiels, dans le B.O, c'est Informatique et Sciences du Numériques, qui je crois, permet de diviser l'informatique, et les problèmes sociétales liés, et d'autres trucs. Enfin du moins, c'est ce que j'ai lu ;) </chipoteur>
Commentaire #116404 écrit par LeGeekReveur le 24/10/2013 à 12h17 | 👍🏽 👎🏽
Oui c'est vrai que ça ne sert à rien d'initialiser des variables « basiques ». C'est pas comme si :
int i;
 ...
 ++i;

posait un problème ...
Commentaire #116415 écrit par Noname le 24/10/2013 à 14h08 | 👍🏽 👎🏽
Naooooooooooooon !!!! :'(
Commentaire #116421 écrit par mini le 24/10/2013 à 14h49 | 👍🏽 👎🏽
Voici un petit extrait du code source de Quake III Arena, pour le plaisir des yeux :

https://github.com/id-Software/Quake-III-Arena/blob/master/code/game/q[...]

En tout cas j'aime toujours les "what the fuck?" et autres "here be dragons" en commentaires.
Commentaire #116435 écrit par FlashSoul le 24/10/2013 à 16h49 | 👍🏽 👎🏽
@neeko : une variable non initialisée ne vaut pas null. Sa valeur est indéfinie.

Si c'est une variable de stack, elle aura la valeur d'une précédente variable de stack, ou du frame pointer, ou d'une adresse de retour précédemment utilisée.

Donc quand tu dis "quand c'est un objet, ou tout autre type pouvant être null, ça ne sert à rien de l'initialiser", c'est complètement faux.

La seule règle qui vaille est : une variable doit être initialisée avant que sa valeur soit utilisée. Supposer que sa valeur va être 0 ou NULL ou quoi que ce soit est une grave erreur.
Commentaire #116440 écrit par FBM le 24/10/2013 à 17h16 | 👍🏽 👎🏽
Tu avais vu ce thread dans StackOverflow ? :)
http://stackoverflow.com/questions/184618/what-is-the-best-comment-in-[...]
Commentaire #116447 écrit par Alfred456654 le 24/10/2013 à 18h10 | 👍🏽 👎🏽
Bien sûr, c'est un classique ! ;)
Commentaire #116449 écrit par FlashSoul le 24/10/2013 à 19h28 | 👍🏽 👎🏽
Mes yeux me brûlent, pourquoi ? Pourquoi ? POURQUOIIIII ?
Commentaire #116534 écrit par ygnobl le 25/10/2013 à 13h14 | 👍🏽 👎🏽
Je suis entièrement d'accord, mais il faut savoir que quand je dis 10 ligne, ce n'est pas un morceau du code, mais bine TOUT le code... Et que ce dernier consistait à additionner 2 variables a et b dans une variables c, et de l'afficher grâce à un printf ! (D'où l'inutilité de TOUT commenter.)
Et là où je trouve cela très gênant, c'est qu'il s'agit d'un cours pour débutant, c'était la 3e fois que l'on codait. Ce que je relève ici c'est que le professeur ne donne pas de bonnes bases et de bons conseils...
Commentaire #116581 écrit par LimaLayla le 25/10/2013 à 15h28 | 👍🏽 👎🏽
En effet, erreur de ma part ! ;)
Commentaire #116583 écrit par LimaLayla le 25/10/2013 à 15h33 | 👍🏽 👎🏽
Concernant les commentaires... Sérieusement quand on voit le nombre de personnes qui chient du code impropre, en plus de ça agrémenté de commentaires sont inexistants ou inutiles, je suis content qu'on rabâche ça aux débutants.

Il faut TOUT commenter, même un programme de 10 lignes.

Ça ne t'as jamais gonflé, jusqu'aux lycée, le sempiternel "détaillez tous les calculs" ? Ben là c'est pareil, il s'agit juste de prendre les bonnes habitudes.

Pensez un peu à ceux qui risquent de passer après :)

Pour le reste... oui il est préférable de déclarer ses variables le plus haut possible dans le code, 1 seule par ligne. C'est plus clair et ça permet, encore une fois, de les commenter sans équivoque si besoin est.

en PHP par exemple :
/**
  * Description de la variable
  * @var MonObjet
  */
 $truc;


Au final ce sera vote neutre pour moi.
Commentaire #116590 écrit par aDev le 25/10/2013 à 15h52 | 👍🏽 👎🏽
Oui.
Commentaire #116663 écrit par ROB le 27/10/2013 à 18h54 | 👍🏽 👎🏽