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.
Ce début d'année, une option programmation est proposée dans mon lycée. Excité comme une puce, je m'inscris sans perdre de temps. Pour apprivoiser les algorithmes simples, nous commençons par un simple logiciel pour en coder quelques uns.

Chacun reçoit une feuille et les 20 exercices sont bouclés en trois mois de courtes séances hebdomadaires. Certains, dont moi, commencent à creuser le C et le Java, pensant que nous allions travailler ces langages. C'est alors que le professeur, nous apprenant qu'il n'a aucune connaissance en langages complexes, nous annonce que nous allons refaire tous les exercices, mais cette fois en Python.

Je n'ai rien contre le Python, qui est très simple à travailler, juste que je ne m'imaginais pas apprendre cela. Pour ce prof' qui nous promet du C et nous donne du Python : PEBKAC.
PEBKAC #9493 proposé par Axetibe le 17/02/2014 | 46 commentaires | 👍🏽 👎🏽 -226
"Pour ce prof' qui nous promet du C et nous donne du Python"
Ben, je vais peut-être dire une bêtise, mais à quel moment il vous a promis du C ?

Et puis, le python c'est très bien, ça permet de faire de super trucs. Même dans le domaine de la 3D (Severance Blade Of Darkness ainsi que le programme QuArK en sont de bons exemples - même s'ils ne sont pas récents). Et si je ne m'abuse, il y a la possibilité de coder en objet en python.
Donc il y a quand-même bien moyen de faire des choses complexes si on creuse un peu.

PS: Et puis ça peut être intéressant d'apprendre à marcher avant d'essayer de courir. Comme ça on se casse moins la gueule après.
Commentaire #130297 écrit par Youplà le 17/02/2014 à 17h52 | 👍🏽 👎🏽
Concrètement, le Python peut être bien plus pratique et utile pour apprendre la programmation de façon "immédiatement applicable" : si demain tu as besoin de faire un petit script pour automatiser quelque chose, ça sera bien plus facile de le faire en Python qu'en C (au niveau rapidité de mise en place).

Et en plus, estime-toi heureux, les "vieux" n'ont pas eu la chance d'avoir ce genre d'option quand ils étaient au lycée... ^^
Commentaire #130311 écrit par AlexK le 17/02/2014 à 18h17 | 👍🏽 👎🏽
Je trouve déjà très bien que vous ayez accès à ce genre de cours, en étant au lycée. Lorsque j'étais au lycée, les seules fois où nous avions accès à des ordinateurs, dont la configuration était obsolète, étaient dédiées à des recherches documentaires dans le cadre de cours ou des TPE.

Par ailleurs, le titre de l'option est "Programmation". Cela ne précise aucunement un ou des langages particuliers. Tu vas être extrêmement déçu par ton parcours étudiant, au regard de toutes les promesses non tenues par les formations.
Commentaire #130317 écrit par Samael le 17/02/2014 à 18h44 | 👍🏽 👎🏽
Python ou "comment apprendre à indenter ses programmes"...^^

Si seulement tous les langages étaient aussi intransigeants sur ce domaine, quel bonheur ce serai de repasser sur le code d'un autre développeur !
Commentaire #130320 écrit par Youplà le 17/02/2014 à 18h49 | 👍🏽 👎🏽
Moi je trouve ça bien. Tu apprends le C, le JAVA et le Python. Trois langages complètement différents, avec une philosophie différente. En fait, en connaissant ces trois là, tu saura a peu près tout de la programmation.

Pourquoi s'en plaindre ? o.o
Commentaire #130321 écrit par OzoneGrif le 17/02/2014 à 18h53 | 👍🏽 👎🏽
Si tu confond complexité "a priori" du langage et possibilités qu'il offre alors un gros CTLP. D'autant que si tu veux du design pattern et des structures complexes en Python tu va en trouver sans peine !
Commentaire #130324 écrit par Argonath le 17/02/2014 à 18h59 | 👍🏽 👎🏽
En même temps, une configuration obsolète suffit amplement pour faire du hello world.

Je confirme que tu auras très peu de chance de commencer par le C.
Commentaire #130330 écrit par but2ene le 17/02/2014 à 19h17 | 👍🏽 👎🏽
<vieux croulant>
De mon temps, c'était BASIC sur Sharp de poche, puis si on était dans la bonne filière Turbo Pascal, le C c'était réservé pour l'info indus, la prog objet ça n'existait pas.
</vieux con>

Par contre, le but de cette formation, c'est peut-être plus l'algo que l'apprentissage d'un langage particulier ?
Commentaire #130331 écrit par steph06 le 17/02/2014 à 19h20 | 👍🏽 👎🏽
Et puis je commence à sérieusement douter de l'intérêt du C en tant que langage d'approche de la programmation... En 2014, se soucier du contenu de ta mémoire et de l'emplacement de tes variables dans celle-ci, le tout sans orienté objet...
Commentaire #130334 écrit par Alfred456654 le 17/02/2014 à 19h24 | 👍🏽 👎🏽
Tu as probablement mal lu.
Commentaire #130337 écrit par Paulli le 17/02/2014 à 19h31 | 👍🏽 👎🏽
> Certains, dont moi, commencent à creuser le C et le Java

Je ne vois pas ce que j'ai mal lu. Il apprend le C et le Java. Même si c'est de façon autonome.
On apprend pas la programmation à l'école, seulement les bases.
Commentaire #130342 écrit par OzoneGrif le 17/02/2014 à 19h56 | 👍🏽 👎🏽
"Trois langages complètement différents, avec une philosophie différente. En fait, en connaissant ces trois là, tu saura a peu près tout de la programmation."

Attention, connaitre des langages ne met pas à l'abri de mauvaises pratiques de programmation. Il faut veiller également à apprendre les fondamentaux (sans s'appuyer sur un langage), faire du pseudo-code, et apprendre à coder intelligemment (bon tu me diras, le compilo s'occupera de certaines optimisations, mais ça ne dispense pas d'une certaine discipline quant au codage).
Commentaire #130346 écrit par Sonny le 17/02/2014 à 20h13 | 👍🏽 👎🏽
Vu que la programmation n'est ici qu'une option je pense en effet qu'il vaut mille fois mieux aborder Python que le C, pour les raisons qu'à relevé AlexK. Pour ce qui est de Java c'est peut-être mon langage le plus fréquemment utilisé, mais pour un usage simple et non professionnel j'y préfèrerais probablement aussi le Python, surtout pour des scripts ou du code procédurier en général.

Si je voulais faire un comparatif "pour les noobs" (pas taper!), je pense que je dirais cela :
C : (+) possibilités d'optimisation, possibilité d'écrire du code très dense et d'utiliser des 'hacks' | (-) nécessité d'optimisation, possibilité d'écrire du code très dense et d'utiliser des 'hacks'
Java : (+) Standard, beaucoup de librairies standardisées ou supportées par des géants de l'informatique | (-) très verbeux
Python : (+) pédagogue, intuitif, possibilité d'écrire du code très dense | (-) moins utilisé que les deux autres en entreprise, non-compatibilité des syntaxes 2.x et 3.x, possibilité d'écrire du code très dense

Après Axetib, dis-toi que cela t'auras permis d'aborder 3 langages ;)

Edit : Youpla, tu croises vraiment encore du code récent mal indenté? Je pensais que ça avait disparu il y a une dizaine d'années ! :O Je veux dire, il n'y a plus aucune excuse maintenant avec les indentations automatiques et tous ces autres gadgets des IDEs récentes...
Commentaire #130349 écrit par Noraa le 17/02/2014 à 20h15 | 👍🏽 👎🏽
Axetibe, vous vous êtes trompé, VDM c'est en face. Et puis, tant qu'à faire, trouvez-vous (en tant qu'étudiant) si mal de vous ouvrir l'esprit à apprendre un langage même si vous ne l'exploiterez pas au, niveau notation ? J'ai eu la démarche inverse, à savoir apprendre Python alors que j'ignore complètement si ce langage me servira un jour.
Commentaire #130357 écrit par H. Finch le 17/02/2014 à 20h23 | 👍🏽 👎🏽
Hmmm il y a quand même bien plus que le C, le Java et le Python.
Exemples faciles :
- le SQL
- le CSS (qui rappelons le, est turing complete si on veut se faire chier)
- le XQuery

Pour ces trois là tu auras du mal à capitaliser plus que la logique de base de ton apprentissage de Java, C et Python.
Commentaire #130358 écrit par Noraa le 17/02/2014 à 20h23 | 👍🏽 👎🏽
Moi, style assembleur sur Ti57, 50 pas de programme, pas un de plus. Et bien plus tard, Cobol. Et maintenant Java, C et Perl
Commentaire #130359 écrit par spidermoon le 17/02/2014 à 20h26 | 👍🏽 👎🏽
Comme toujours ça dépend du secteur. Mais j'ai toujours eu besoin de me préoccuper de l'espace mémoire de mes programmes. Après c'est sûr que si c'est pour faire du PHP et équivalents c'est pas trop utile ...
Commentaire #130372 écrit par Noname le 17/02/2014 à 20h56 | 👍🏽 👎🏽
Oh et puis je remplacerais SQL ou XQuery qui partagent un bout de philosophie (sélection et transformation d'ensembles de données) par le javascript avec POO, la POO prototypée surprenant toujours au début les habitués de Java et autre.
Commentaire #130373 écrit par Noraa le 17/02/2014 à 20h58 | 👍🏽 👎🏽
Et là t'apprend que tu dois programmé sur php et t'es bien content d'avoir commencé avec ta TI57 </ironie>
Commentaire #130378 écrit par Elodie Wildstars le 17/02/2014 à 21h19 | 👍🏽 👎🏽
Tu apprends le C, le JAVA et le Python. Trois langages complètement différents, avec une philosophie différente. En fait, en connaissant ces trois là, tu sauras a peu près tout de la programmation.

Ouate le phoque ?
Et la programmation fonctionnelle ?
(Entre autres, mais je suis pas expert en zoologie des langages de programmation.)

Tiens, un document intéressant sur les différents langages, compétences à maîtriser, et Java.
http://www.crosstalkonline.org/storage/issue-archives/2008/200801/2008[...]
Commentaire #130380 écrit par Geist le 17/02/2014 à 21h52 | 👍🏽 👎🏽
Je pense que c'est quand même plus sain de commencer par gérer ces choses « basiques » , même si c'est pour ne jamais arriver à être proficient (je ne trouve pas de traduction française qui me satisfasse) en C, de même qu'il est préférable d'au moins aborder l'assembleur et le concept de jeu d'instructions processeur, fût-ce pour ne jamais s'en servir, ou de coder des fonctions de tri alors que personne ne se fait iech à réinventer la roue à chaque programme : Pour savoir ce qui se passe en-dessus à chaque fois que tu alloues un variable ou que tu tries un array.

Documentation intéressante : http://www.crosstalkonline.org/storage/issue-archives/2008/200801/2008[...]

(Oui, je l'ai déjà posté dessous. Mais c'est vraiment très intéressant.)
Commentaire #130382 écrit par Geist le 17/02/2014 à 21h59 | 👍🏽 👎🏽
Python permet la programmation fonctionnelle.

Ca reste un étudiant, dans le contexte, connaitre ces trois langages est une excellente base. Bien plus que de se restreindre à du Python. Savoir à peu près tout de la programmation ne signifie pas savoir programmer. Je disais ça comme on dit "Une maison a des fondations, des murs porteurs, et un toit. Tu sais à peu près tout. Maintenant a toi de jouer."
Commentaire #130390 écrit par OzoneGrif le 17/02/2014 à 23h59 | 👍🏽 👎🏽
Au moins, de mon temps, on savait gérer la mémoire, pas comme ces langages de jeunes qui sucent la mémoire comme une nabilla en chaleur :)
Commentaire #130392 écrit par spidermoon le 18/02/2014 à 00h22 | 👍🏽 👎🏽
Et le brainfuck ? personne ne parle jamais du brainfuck :-(
Commentaire #130403 écrit par jack le 18/02/2014 à 08h27 | 👍🏽 👎🏽
Si on ajoute le malbolge, le prolog et le lolcode, ça fout à nouveau tout en l'air.
Commentaire #130404 écrit par Alfred456654 le 18/02/2014 à 08h32 | 👍🏽 👎🏽
Euh, perso je fais pas de Python, mais y'a des frameworks web assez utilisés de mémoire (Django, Flask), y compris professionnellement :)
Commentaire #130416 écrit par neemzy le 18/02/2014 à 09h17 | 👍🏽 👎🏽
« Si seulement tous les langages étaient aussi intransigeants sur ce domaine, quel bonheur ce serai de repasser sur le code d'un autre développeur ! »
J'indente tous mes codes mais je ne supporterais pas qu'un langage m'oblige à indenter comme il veut et non pas comme je veux. Rien que parce que j'ai horreur d'avoir à indenter un code comme
if (n < 0) { k = true; }

Et puis un bloc qui n'est pas délimité par des caractères, c'est sale, j'me sens souillé...
Commentaire #130429 écrit par Dominus Carnufex le 18/02/2014 à 09h52 | 👍🏽 👎🏽
Si tu veux faire du logiciel embarqué tu as putôt intérêt à choisir un langage performant et à bien faire gaffe à ta mémoire qui est limitée par rapport à un ordinateur.
Et comme l'a dit Geist si tu veux avoir un programme qui ne consomme pas trop de ressources inutilement il vaut mieux savoir ce qui se passe (même grosso-modo) ce qui se passe derrière le programme. Ce n'est pas parce que ta machine dispose de plusieurs Go de RAM que tu es obligé de tout utiliser.
Commentaire #130439 écrit par Acorah le 18/02/2014 à 10h20 | 👍🏽 👎🏽
W3C va encore gueuler si tu ne fermes pas correctement tes balises.
Commentaire #130442 écrit par Acorah le 18/02/2014 à 10h26 | 👍🏽 👎🏽
Je te confirme, Dominus, évite Python, il va t'en envoyer de la crasse.
Commentaire #130443 écrit par Aaargh!!! le 18/02/2014 à 10h26 | 👍🏽 👎🏽
L'importat c'est surtout l'algorithmie et les principes de fonctionnement d'un ordinateur. Après un langage tu peux l'apprendre tout seul, ça n'est que de la syntaxe.
Commentaire #130445 écrit par Acorah le 18/02/2014 à 10h28 | 👍🏽 👎🏽
Toi, tu avais la chance d'avoir des pas de programme dans ta jeunesse. Ma règle à calcul n'en avait pas... (bon, ça ne nous empêchait pas de tricher !)
Commentaire #130446 écrit par Aaargh!!! le 18/02/2014 à 10h28 | 👍🏽 👎🏽
Heu... tu as des obligations de sécurité, ou de sa gestion, des fonctions existant sur certains langages qui te font gagner 100 lignes... des astuces lambdas... bien connaître un langage spécifique c'est pas mal non plus. Je suppose que cet étudiant n'en est pas au stade d'apprendre comment faire un print hello.
Commentaire #130447 écrit par Aaargh!!! le 18/02/2014 à 10h30 | 👍🏽 👎🏽
Ce n'est pas un étudiant mais un lycéen. Quand j'y étais on avait eu (pour ceux qui avaient pris l'option MPSI) quelques cours en turbo pascal, et ça n'était pas très loin du print hello.
Et bien sûr il y a des spécificités à chaque langage, mais ça on les apprend avec le langage en question. Ce que je voulais dire c'est que quand on commence la programmation on le fait par les bases qui ne dépendent pas des langages.
Commentaire #130453 écrit par Acorah le 18/02/2014 à 10h40 | 👍🏽 👎🏽
C aussi permet la programmation fonctionnelle, techniquement ; ça n'en fait pas un langage orienté programmation fonctionnelle, ou dont la philosophie est complètement différente de Java et Python.

Personnellement, j'ai commencé par apprendre bash, puis C, puis Java, puis Python. Aucun ne m'a dépaysé comme les quinze lignes de Haskell ou les vingt de LISP que j'ai du écrire en tout dans ma vie.
Commentaire #130454 écrit par Geist le 18/02/2014 à 10h55 | 👍🏽 👎🏽
Le lolcode n'a d'ésotérique que son vocabulaire, sinon +1 pour des langages comme malbolge ou Piet
Commentaire #130460 écrit par Noraa_unlogged le 18/02/2014 à 11h17 | 👍🏽 👎🏽
Moi je trouve que le prof à eu au moins honnêteté intellectuelle d'avouer qu'il n'y connaissait rien en C. Il aurait très bien pu vous faire du C, en copiant-collant des exercices glanés sur le net et en vous enfumant dès qu'un problème se serait pointé. Après j'espère qu'il est callé en phyton, comme dit plus haut, c'est un langage assez sympa je trouve (pour du scripting c'est vraiment pas mal) et ça ne fait jamais de mal de découvrir un nouveau langage.

De mon temps, j'ai connu un prof d'informatique qui apprenait le C++ et Unix en même temps que nous OO'...
(oui, et c'est bien lui qui nous faisait les cours hein)
Commentaire #130461 écrit par Poji le 18/02/2014 à 11h33 | 👍🏽 👎🏽
@Noraa: Oooooh que oui j'en croise beaucoup. Parce qu'à mon boulot je bosse avec un truc à la fois récent et archaïque, et qu'il faut se sortir les doigts du fût pour pour indenter soit même. Du coup, on a eu des gros crades (et d'ailleurs je ne devrai pas parler au passé car on a toujours un boulet dans l'équipe) qui indentaient avec autant de soin que je pose ma #### le matin au toilettes.

J'ai pourtant développé un petit programme qui peut aller ré-indenter à la demande les autres programmes, mais c'est apparemment trop que demander à notre boulet de s'en servir...
Commentaire #130489 écrit par Youplà le 18/02/2014 à 13h09 | 👍🏽 👎🏽
Dans le cas présent, il s'agit d'une simple initiation à la programmation, pas d'un cours pour futurs programmeurs de logiciels embarqués. Je ne suis pas convaincu que c'est en faisant du C qu'on donne le plus envie aux gens de poursuivre dans cette voie. Je pense que pour comprendre les bases des concepts de programmation, un langage comme python, qui ne se préoccupe ni de pointeurs ni d'adresses mémoire, et qui offre la possibilité d'écrire des classes, est bien plus didactique pour faire comprendre à des débutants ce qu'est et ce que n'est pas un programme informatique.

Voir "ce qui se passe derrière le programme est bien entendu intéressant et indispensable, mais à mon avis c'est une deuxième approche de la programmation. D'ailleurs, dans mon école d'ingé généraliste, tout le monde faisait un gros séminaire de langage C dès leur arrivée à l'école. Bilan, tout le monde écoeuré dès le début de la première année. Dans les années qui suivent, beaucoup ont recours à des langages plus haut niveau (R, Matlab, VB/.NET, ...) et la plupart se sont rendu compte qu'en fait, programmer ça peut être marrant et intéressant seulement à ce moment-là. Si on avait commencé par ce genre de langages plus simples, pour après approfondir (dans la filière informatique uniquement), non seulement la pilule serait bien mieux passée, mais en plus les gens auraient appris quelque chose d'intéressant. Expliquez moi ce qu'un futur ingénieur en mécanique/biochimie/... en a à faire de savoir allouer proprement de la mémoire pour une variable ? Avec python, pas besoin de s'embêter avec ça, c'est beaucoup plus concret. Pour un non-informaticien, c'est bien plus intéressant.

Et puis on ne peut pas dire qu'utiliser python utilise tous les Go de RAM que j'ai sur ma machine...

EDIT : désolé pour le pavé :(
Commentaire #130492 écrit par Alfred456654 le 18/02/2014 à 13h12 | 👍🏽 👎🏽
Merci Sonny, tu as tout dit !
Commentaire #130503 écrit par aDev le 18/02/2014 à 13h23 | 👍🏽 👎🏽
Pour chipoter, c'est le combo HTML+CSS3 qui est turing complete. Le CSS seul n'emmène guère loin.
Commentaire #130505 écrit par aDev le 18/02/2014 à 13h26 | 👍🏽 👎🏽
+1 Gueist.
Commentaire #130507 écrit par aDev le 18/02/2014 à 13h27 | 👍🏽 👎🏽
En licence d'info, on nous fait découvrir les joies de la prog impérative avec le ADA. Contrairement au C, ça oblige à être rigoureux dans la syntaxe, et ça donne de bons réflexes pour les langages appris ensuite...
Commentaire #130642 écrit par o4b le 18/02/2014 à 22h58 | 👍🏽 👎🏽
L'avantage du python est qu'il permet donc d'apprendre la programmation impérative, le POO et la prog fonctionnelle (au sens lambda calcul... qui n'est pas dans le C et à été juste ajouté au C++ depuis C++11 (j'ai eu une conf là dessus y'a pas longtemps :p). Et si je ne m'abuse, le python c'est un langage de script aussi, donc on peut aborder les limites des langages de script par là.
Enfin, l'avantage du python est aussi qu'il permet d'aborder des types de données que ne possède pas le C. Par exemple, le type "entier sur n bits", qui, je trouve, est quand même très important à prendre en compte surtout au niveau algorithmique (enfin algo théorique), car ça te fait passer d'une complexité constante (O(1)) à une complexité linéaire (O(n)) pour les opérations de base (genre la somme...). Je pense que ce genre de détail est à prendre largement en compte lorsque l'on aborde vraiment la programmation...
Commentaire #130644 écrit par o4b le 18/02/2014 à 23h09 | 👍🏽 👎🏽
python_can_do_one_liner_if_then = True
if python_can_do_one_liner_if_then : print("Dominus Carnufex is wrong")
Commentaire #130649 écrit par Noraa le 18/02/2014 à 23h50 | 👍🏽 👎🏽
Plains toi, y'en a certains à qui on propose une option info et on leur y apprend le Caml (je ne pense pas du tout aux classes prépa par exemple -_-), au moins le Python tu pourras t'en resservir même si tu ne te fais pas engager par l'INRIA !
Commentaire #131480 écrit par OptionInfo le 24/02/2014 à 17h37 | 👍🏽 👎🏽