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.
En direct du cours d'informatique :

« Déclarez toutes vos variables en global. C'est plus simple, et plus sécurisé. »
« La boucle en for est bien, mais ne vous embêtez pas avec la syntaxe. De toute façon, on peut tout faire avec des goto… »
« Optimiser un code, c'est faire en sorte qu'il s'écrive sur le moins de lignes possible. »
« N'abusez pas des commentaires. Cela ralentit l'exécution du code. »

Une seule réaction s'impose : PEBKAC.
PEBKAC #8828 proposé par Dorni le 19/10/2013 | 50 commentaires | 👍🏽 👎🏽 +343
Dernier point : il n'y a rien de mieux que l'assembleur. Ce n'est pas ce pseudo langage développé par ces deux hippies de Thompson et Ritchie qui fera mieux. Hein ? On est plus en 1970 ?
Commentaire #115729 écrit par Link le 19/10/2013 à 09h06 | 👍🏽 👎🏽
C'est laquelle l'école à éviter? :p
Commentaire #115730 écrit par Skwi le 19/10/2013 à 09h08 | 👍🏽 👎🏽
ma première réaction à la lecture de ce PEBKAC : "oh pu*ain. oh pu*ain !" o_o
Commentaire #115732 écrit par Lou Montana le 19/10/2013 à 09h43 | 👍🏽 👎🏽
Même ma prof qui s'est formée en lisant les cours dédiés aux élèves ne sort pas des énormités comme celle la !
Commentaire #115735 écrit par Sebhug le 19/10/2013 à 10h10 | 👍🏽 👎🏽
C'est presque complètement vrai... en Basic interprété :)
Commentaire #115737 écrit par cpn42 le 19/10/2013 à 10h23 | 👍🏽 👎🏽 +1
Ou alors le prof testait sa classe pour voir s'il y en a qui savent déjà coder, et le lendemain il aura dit que c'était une grosse blague...

/me cherche des petits morceaux de foi en l'humanité.
Commentaire #115739 écrit par Acné le 19/10/2013 à 10h41 | 👍🏽 👎🏽 +1
je vote pour la caméra cachée
Commentaire #115740 écrit par yomama le 19/10/2013 à 10h44 | 👍🏽 👎🏽 +1
Le champion du monde!
Commentaire #115743 écrit par ROB le 19/10/2013 à 11h00 | 👍🏽 👎🏽
J'ai voté BEDP mais j'ai un peu de mal à y croire, quand même.
Commentaire #115744 écrit par n0p le 19/10/2013 à 11h18 | 👍🏽 👎🏽 +1
Idem, plus c'est gros plus ça passe, mais là...
Commentaire #115746 écrit par X3N le 19/10/2013 à 11h28 | 👍🏽 👎🏽
TOUTES.

Le mieux, (si tu en as la possibilitée bien sûr) c'est d'apprendre de manière autodidacte.
Commentaire #115751 écrit par MrNumer0 le 19/10/2013 à 12h32 | 👍🏽 👎🏽
On vient de lui refuser son augmentation. Il se venge sur les élèves.
Commentaire #115758 écrit par Siggy le 19/10/2013 à 13h32 | 👍🏽 👎🏽 +1
Sauf qu'un diplôme, c'est quand même pas plus mal pour passer les barrières du recrutement...
Commentaire #115761 écrit par Taiki le 19/10/2013 à 13h47 | 👍🏽 👎🏽
Ah ouais merde, j'ai oublié ce détail

- Tu peux toujours passer le diplôme en candidat libre .(mais j'avoue que malheureusement, certains établissements refusent les candidats libres)

- Tu peux toujours apprendre de toi même et entrer plus tard dans une école histoire de faire valider tes acquis. (certains établissements te dispenserons même de certains cours théoriques)

- Tu peux toujours trouver un boulot sans diplômes (contrairement à la désinformation orchestrée par pôle emploi), il suffit juste de savoir se mettre en valeur et d'avoir la Tchache. (vécu)
Commentaire #115767 écrit par MrNumer0 le 19/10/2013 à 14h54 | 👍🏽 👎🏽
Bonjour !
Donc petites précisions, pour ne pas passer pour un fake :
Ce sont des cours "d'info" destinés à résoudre des problèmes mathématiques connus à l'avance. On a un problème, on code tout en dur, le code ne sert donc qu'une fois (le temps d'avoir la réponse, puis suppression). Donc il propose bien des choses très crades, mais comme les codes ne sont jamais réutilisés (et que les cours d'infos ne sont pas donnés par un prof d'info...), il n'a jamais du être confronté au moindre problème (et donc, forcément il ne change pas sa méthode ^^)
Pour les deux dernières phrases, je n'ai strictement aucune explication du comment il peut croire ça
Commentaire #115769 écrit par Dorni le 19/10/2013 à 15h25 | 👍🏽 👎🏽
C'est bien connu qu'en autodidacte, on apprend les bonnes pratiques de programmation, on a de bons exercices pour s'entraîner, on a des corrections, on apprend à travailler en groupe, etc.

Il y a de très bonnes formations pour apprendre à coder, après c'est sûr faut pas aller à la fac ni à Epitech...
Commentaire #115772 écrit par neeko le 19/10/2013 à 15h42 | 👍🏽 👎🏽
Moi je serai pourtant plus d'avis de dire qu'on trouve plus d'absurdités sur les cours du net que dans toutes les écoles d'informatique réunies. :')
Commentaire #115773 écrit par xTG le 19/10/2013 à 15h43 | 👍🏽 👎🏽
C'est marrant parce qu'à mon école on m'a appris exactement l'inverse. Reprenons :

- Ne déclarez jamais vos variables en global, si vous n'avez vraiment pas le choix mettez un accesseur avec le get public mais le set privé.
- La boucle en for est bien, mais préférez un foreach. N'utilisez JAMAIS des goto
- Si vous devez répéter ne serait-ce que 2 fois un bout de code, écrivez une fonction qui le fait.
- Commentez tout.
Commentaire #115782 écrit par Shadam le 19/10/2013 à 17h18 | 👍🏽 👎🏽
Merci Captain.
Commentaire #115786 écrit par Tata le 19/10/2013 à 18h38 | 👍🏽 👎🏽
Effectivement, la programmation scientifique est quasiment synonyme de code dégueulasse.
Commentaire #115792 écrit par TD le 19/10/2013 à 19h04 | 👍🏽 👎🏽
Il faut qu'on m'explique quelque chose. On demande de ne jamais utiliser goto, alors pourquoi l'implémente-on ?
Commentaire #115794 écrit par TD le 19/10/2013 à 19h05 | 👍🏽 👎🏽
Une seule réaction s'impose : PAN.
Commentaire #115799 écrit par Cartman34 le 19/10/2013 à 19h45 | 👍🏽 👎🏽
3 personnes ont loupé ta balise ironie neeko.
Commentaire #115802 écrit par Millman le 19/10/2013 à 19h57 | 👍🏽 👎🏽
"- Si vous devez répéter ne serait-ce que 2 fois un bout de code, écrivez une fonction qui le fait."

Ça va sur PC, mais en embarqué c'est comme ça que j'ai découvert le stack overflow.
Commentaire #115804 écrit par Millman le 19/10/2013 à 20h00 | 👍🏽 👎🏽
Parfois, ça permet d'optimiser en vitesse. J'en ai trouvé dans les sources de libs de calcul scientifique (GMP).
Commentaire #115807 écrit par Folco le 19/10/2013 à 20h58 | 👍🏽 👎🏽
De rien.
Commentaire #115814 écrit par Shadam le 19/10/2013 à 22h47 | 👍🏽 👎🏽
C'est historique. Sur les vieux framework (procéduraux en général) le goto était là pour passer d'une procédure à l'autre, mais avec l'apparition des fonctions ça n'a plus était nécessaire de passer par là et il est toujours présent pour des problèmes de non régression (je suppose).
Commentaire #115815 écrit par Shadam le 19/10/2013 à 22h51 | 👍🏽 👎🏽
En lisant le PEBKAC je me suis dit "c'est pas possible c'était le cours du premier avril".
Commentaire #115818 écrit par Acorah le 20/10/2013 à 00h11 | 👍🏽 👎🏽
1) Pour raison historique.
2) Pour faciliter les générateurs de code comme VisualAge, qui génère du Cobol en utilisant pratiquement que GOTO, MOVE et ADD (oui, le résultat est illisible).
3) Dans certains cas goto peut être utile, par exemple pour sortir immédiatement d'une boucle ayant 15 niveaux d'imbrications. Mais dans ce genre de cas il faudrait songer à réécrire le code, et pas que à cause du goto.
Commentaire #115820 écrit par Shirluban le 20/10/2013 à 01h20 | 👍🏽 👎🏽
@Dorni: La remarque sur les commentaires qui ralentissent l'exécution est vraie pour des langages interprétés si l'interpréteur ne fait aucune optimisation. Mais le temps de re-parser les commentaires à chaque exécution devrait être négligeable.

@TD: Tu veut parler de gens qui utilisent Matlab tous les jours et ne savent pas ce qu'est une fonction ?
Commentaire #115822 écrit par Shirluban le 20/10/2013 à 01h35 | 👍🏽 👎🏽
Dire bêtement de ne JAMAIS utiliser GOTO est aussi stupide que de dire de tout faire avec. Il y a bien sûr des cas où utiliser un GOTO ne salit pas le code et contribue à sa lisibilité (par exemple, lorsqu'on vérifie plusieurs conditions, pas forcement au même endroit, qui peuvent faire sortir d'une fonction, il m'arrive de faire "if condition goto CLEANUP_AND_EXIT" plutot que de recoller 20 fois les désallocations de buffers, fermetures de fd/handles, etc.)
Commentaire #115824 écrit par n0p le 20/10/2013 à 02h09 | 👍🏽 👎🏽
@Shirluban : ça inclut effectivement ce genre de comportement, mais aussi la manie de ne pas nommer correctement les variables, ne pas (ou très mal) indenter le code ou encore ne rien commenter.

Tout ça vient des mathématiques : variables sur une seul lettre, « explications » au tout début du calcul, présentation d'un calcul sur papier, etc.
Commentaire #115842 écrit par TD le 20/10/2013 à 11h38 | 👍🏽 👎🏽
J'espère que la balise <irony> était sur le premier paragraphe de neeko...

Par ailleurs, la fac c'est très bien pour apprendre les bonnes pratiques (en tout cas celle où j'étais...). Après, faut aussi aimer la théorie sur laquelle se base toute notion d'informatique...

Mais pour revenir au Pebkac, celui-là est tellement excessif, que je me demande presque si ça n'est pas un fake...
Commentaire #115844 écrit par o4b le 20/10/2013 à 13h17 | 👍🏽 👎🏽
"Recoller 20 fois..." ? Bah et les fonctions?
Par ailleurs, juste pour ma culture perso, est-ce qu'il y a empilement de contexte lorsqu'on effectue un GOTO, ou est-ce que le GOTO a une portée limitée à la fonction? Si non, on peut considérer que le GOTO évite un empilement de contexte de l'appel de la fonction de nettoyage, mais ce me semble, il reste possible, par exemple avec le petit inline d'avoir le compilateur qui s'occupe lui-même de recopier le code. (quitte à faire un exécutable plus gros...)

Bref, je pense que le GOTO est évitable à chaque fois...
Commentaire #115845 écrit par o4b le 20/10/2013 à 13h26 | 👍🏽 👎🏽
Fake...
Commentaire #115848 écrit par Ko le 20/10/2013 à 15h12 | 👍🏽 👎🏽
Probablement parce que c'est ce qui est le plus proche du fonctionnement du CPU (ie. "va a tel offset en mémoire"). Par contre je pense qu'il faut le voir comme une primitive d'accès dont on ne devrait JAMAIS avoir besoin quand on fait du code propre, et laisser ca aux trucs vraiment low level (par exemple si tu decompile de l'IL C# tu va voir que lui s'en sert abondamment).
Commentaire #115849 écrit par dr1rrb le 20/10/2013 à 15h14 | 👍🏽 👎🏽
Il ne manque plus que 3.21 gigowatts et on peut retourner dans le passé...
Commentaire #115858 écrit par Raizarachi le 20/10/2013 à 17h23 | 👍🏽 👎🏽
Ca doit dépendre du programme utilisé, je ne me souviens pas avoir déjà vu de goto en décompilant du C#.
Commentaire #115870 écrit par Acorah le 20/10/2013 à 21h29 | 👍🏽 👎🏽
Tu aurais donc actuellement -1 GigoWatt ? J'ai du mal à imaginer le concept.
Commentaire #115871 écrit par Acorah le 20/10/2013 à 21h30 | 👍🏽 👎🏽
Un prof de Basic en 2013 ?
Commentaire #115880 écrit par Bourriks le 21/10/2013 à 08h39 | 👍🏽 👎🏽
Dans les outils pour l'embarqué. Il existe des arguments de compilation pour gérer ta pile sans dégueulasser ton code; même en assembleur. ;)
Commentaire #115882 écrit par but2ene le 21/10/2013 à 09h02 | 👍🏽 👎🏽
CLEANUP_AND_EXIT peut très bien être une macro. Donc le tout sans empilage et dépilage et le gcc sait très bien le gérer.

Le goto pose généralement problème aux algorithmes d'optimisation et de vérification.
Commentaire #115884 écrit par but2ene le 21/10/2013 à 09h11 | 👍🏽 👎🏽
Kaï !
Commentaire #115892 écrit par Mufman le 21/10/2013 à 11h16 | 👍🏽 👎🏽
c'est pas plutôt 2,21??
Commentaire #115945 écrit par nonolelion le 21/10/2013 à 14h49 | 👍🏽 👎🏽
En VO c'est 1.21 GW
Commentaire #115958 écrit par karl legrand le 21/10/2013 à 16h34 | 👍🏽 👎🏽
o4b >

Faire une sous-fonction pour désallouer plusieurs buffers locaux à une fonction, qui n'ont pas forcement de lien entre eux, je trouve ça plus sale que d'utiliser un GOTO. Je ne parle pas d'optimisation de code mais bien de lisibilité de la source. Bien sûr que le GOTO est évitable à chaque fois, seulement il y a des fois ou JE (c'est mon avis perso, donc.) trouve qu'il est plus lisible qu'une autre solution.
Commentaire #115969 écrit par n0p le 21/10/2013 à 17h39 | 👍🏽 👎🏽
Même sans aller jusque à l'assembleur ou aux préprocesseurs : inline permet de mutualiser du code dans une fonction virtuelle qui sera dupliquée à chaque appel. Ainsi, on a le même effet qu'un copier-coller sans les problèmes de style modifier à 2 endroits et oublier le 3ème.
Commentaire #115971 écrit par Epok__ le 21/10/2013 à 18h19 | 👍🏽 👎🏽
Avec IPSpy, les "break" et "continue" apparaissent régulièrement avec des "goto IL_[0-9]+". Je n'ai pas de règle précise, mais ça semble être quand il y'a peux de cas dans un switch ou des tests simples dans une boucle ... bref quand le compilateur l'estime utile pour gagner en perf.
Commentaire #115972 écrit par dr1rrb le 21/10/2013 à 18h25 | 👍🏽 👎🏽
En fait, un prof (très) basique
Commentaire #116016 écrit par vualatele le 22/10/2013 à 08h41 | 👍🏽 👎🏽
Malheureusement 3 et 4 etaient vrais a une epoque ancienne.
C'est ce qu'il se passe quand on met des vieux pour apprendre aux jeunes sur un sujet qui evolue.
Commentaire #117841 écrit par Nico le 08/11/2013 à 17h18 | 👍🏽 👎🏽