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.
Toujours en cours de COO, j'ai eu la surprise d'entendre de la part du professeur : « Le logiciel, vous lui donnez votre diagramme, et il va vous sortir du code en C, et en Java ».
Dans le fond l'objet en C est faisable, mais au vu de ce qu'il a déjà dit… PEBKAC.
PEBKAC #9903 proposé par Speace le 18/07/2014 | 39 commentaires | 👍🏽 👎🏽 +75
Oui l'objet en C est faisable. Ça s'appelle le code source d'un compilateur C++ (supra, #9902)
Commentaire #143095 écrit par ygnobl le 18/07/2014 à 12h46 | 👍🏽 👎🏽
Ou le code de Duqu/Flame :)

Après, je veux bien voir comment il génère un code C ou Java avec un diagramme fait sous powerpoint :D

"Mais Monsieur, vous nous avez dit qu'on pouvait le faire avec n'importe quel logiciel de dessin !"
Commentaire #143102 écrit par Loy le 18/07/2014 à 13h03 | 👍🏽 👎🏽
Ce n'était pas un simple abus de langage (sans jeu de mot...) du genre dire "C" pour désigner C++ et C# ?
Commentaire #143103 écrit par Youplà le 18/07/2014 à 13h04 | 👍🏽 👎🏽
Dans le précédent PEBKAC, il propose de faire les diagrammes sous power point pour les inclure dans leur présentation, pas dans leur logiciel d'analyse.
Commentaire #143104 écrit par Youplà le 18/07/2014 à 13h06 | 👍🏽 👎🏽
Il propose "pour les créer". Perso, quand je me tape un diagramme de classes, je le fait UNE fois, et de là je le met là où il va bien. Car si t'a 3 classes, avec 2 attributs et 3 méthodes, ça passe, quand t'a un truc volumineux, ça passe pas, mais alors pas du tout !
Commentaire #143106 écrit par Loy le 18/07/2014 à 13h10 | 👍🏽 👎🏽
@ygnobl : en fait j'ai mis "c'est faisable" pour éviter que quelqu'un se ramène pour dire "blabla tu peux faire ça avec des structures blabla".

@Youplà : je ne sais/pense pas, c'était un de ces moments où tu cherches des exemples pour illustrer ton propos (et dans son cas tu dit tout et n'importe quoi).

(sinon il y a un "et" en trop à la fin de la citation)
Commentaire #143107 écrit par speace le 18/07/2014 à 13h11 | 👍🏽 👎🏽
Si les profs sont comme les miens, ils mélangent effectivement C et C++. (mon prof qui m'avait sorti "et on fera du C objet" ... qui s'est avéré être du C++ basique et mal foutu (j'ai des Pebkacs le concernant qui devraient un jour arriver, t'en fais pas).
Mais les deux malwares que j'ai cités sont bien en C objet
Commentaire #143110 écrit par Loy le 18/07/2014 à 13h14 | 👍🏽 👎🏽
A priori, rien n'empêche d'implémenter un diagramme de classes dans un langage non objet.
Simplement le résultat ne sera pas un code objet, mais après tout peu importe si le résultat est généré automatiquement...

L'objet n'est qu'une manière de développer destinée à simplifier la vie du dev. Arrêtez-moi si je me trompe, mais tout ce qui est faisable en objet est faisable sans utiliser ces structures...
Commentaire #143122 écrit par Epok__ le 18/07/2014 à 13h52 | 👍🏽 👎🏽
POO plutôt non ?
Commentaire #143126 écrit par Shadam le 18/07/2014 à 13h56 | 👍🏽 👎🏽
Oui et si on va par là on peut tout coder en assembleur aussi !
Commentaire #143127 écrit par aDev le 18/07/2014 à 13h58 | 👍🏽 👎🏽
C'est ce que je me suis dit au début mais il parle bien de Conception OO. Ils font de l'UML, des représentations IHM, ce genre de truc.
Commentaire #143128 écrit par aDev le 18/07/2014 à 13h59 | 👍🏽 👎🏽
Ah oui effectivement maintenant que tu le dit ça prend tout son sens. C'est juste que je n'avais jamais croisé cet acronyme...
Commentaire #143133 écrit par Shadam le 18/07/2014 à 14h03 | 👍🏽 👎🏽
Oui, bien sûr. Ou même directement en hexa, pourquoi s'embêter avec des langages intermédiaires...

M'enfin bon, ce que je voulais dire, sans rentrer dans ces considération extrêmes, c'est que la représentation d'un modèle ne présage pas de son implémentation. Et même s'il est (extrêmement) maladroit de parler du C en cours de POO, les propos du prof ne sont pas fondamentalement faux.
Commentaire #143134 écrit par Epok__ le 18/07/2014 à 14h06 | 👍🏽 👎🏽
Mouais, c'est pas faux.
Commentaire #143139 écrit par Youplà le 18/07/2014 à 14h33 | 👍🏽 👎🏽
Oh, mes connaissances en C sont alors encore plus rouillées que je ne le croyais. Je ne pensais pas qu'on puisse faire du "C objet". Du C avec des structures et tout un pataquès pour que ça ressemble à de l'objet, oui, mais de la vraie prog objet, je n'savais pas.
Commentaire #143140 écrit par Youplà le 18/07/2014 à 14h35 | 👍🏽 👎🏽
Rhô les lourds, moi je préfère de loin faire des portes logiques avec des transistors et mesurer mes niveaux de tension en 0V et -5V. C'est tellement plus simple pour retranscrire un diagramme de classe.
Commentaire #143142 écrit par Youplà le 18/07/2014 à 14h40 | 👍🏽 👎🏽
Je veux bien te croire speace, pendant les 2 ans qu'a duré mon BTS, je me suis supporté un prof de prog qui était une bille monumentale.

JLA, si tu lis ceci ... retourne à la machine à café, ça vaudra mieux.
Commentaire #143143 écrit par Youplà le 18/07/2014 à 14h41 | 👍🏽 👎🏽
Ben je l'ai appris en suivant succinctement les avancées sur la décompilation de DuQu :) Sinon je sais pas faire, loin de là !
Commentaire #143145 écrit par Loy le 18/07/2014 à 14h55 | 👍🏽 👎🏽
c'est quoi que t'a pas compris ?? (:p)
Commentaire #143146 écrit par Loy le 18/07/2014 à 14h56 | 👍🏽 👎🏽
@Youplà : Je n'aurai qu'un mot à dire : HLS.

On n'est certes pas sur les niveaux de tension, mais oui, on génère des circuits de portes logiques à partir d'une description en langage "logiciel"...

Après, t'appliques une petite équation de Schrodinger, et tu sort un modèle mathématique de ton circuit. Simple comme bonjour. Ou pas.
Commentaire #143148 écrit par Epok__ le 18/07/2014 à 15h10 | 👍🏽 👎🏽
Je ne sais pas ce que veut dire "HLS" Enfin, si, ça veut dire "Handi Laser Services", "Habitat et Lien Social", "Handball Loisir Semine", "Hue, Lightness, Saturation", "Huntingdon Life Sciences" ou encore "HTTP Live Streaming". Et sans doute bien d'autres.
Mais là, dans le contexte, je n'ai pas saisi à quoi HLS faisait référence.
Commentaire #143150 écrit par Youplà le 18/07/2014 à 15h25 | 👍🏽 👎🏽
Ah oui, je viens de trouver un article.

" Dans un billet de blog, le chercheur en sécurité de Kaspersky, Igor Soumenkov, lève le voile et explique « avec un degré élevé de certitude que Duqu Framework se compose de code source en langage C, compilé avec Microsoft Visual Studio 2008 et des options spéciales pour optimiser la taille du code et son expansion en ligne. Le code a été également écrit avec une extension personnalisée permettant de combiner la programmation orientée objet avec le langage C (une combinaison généralement connue sous l'appellation « oo C »). » "
Commentaire #143151 écrit par Youplà le 18/07/2014 à 15h28 | 👍🏽 👎🏽
En clair, de vieux aficionados du C... Ils sont fort à la NSA :p
Commentaire #143154 écrit par Loy le 18/07/2014 à 15h36 | 👍🏽 👎🏽
Oups, pardon, l'habitude d'utiliser le terme, mea culpa.

HLS = High Level Synthesis = Générer du code HDL à partir d'un langage de haut niveau (généralement C, C++ ou SystemC)
Commentaire #143156 écrit par Epok__ le 18/07/2014 à 15h37 | 👍🏽 👎🏽
Ah, ok.
Si j'ai compris ce que j'ai lu en diagonale sur wikipedia, le HLS est le travail effectué par la machine pour transformer les instructions haut niveau en écriture ou lecture de bits sur les adresses de ses composants, non ?
Commentaire #143157 écrit par Youplà le 18/07/2014 à 16h03 | 👍🏽 👎🏽
Non, pas tout à fait. Le code HDL décrit un composant (donc hard), au lieu de décrire l'utilisation d'un composant (par exemple un processeur) comme fait le soft. Tu peux par exemple décrire un processeur en langage HDL. Ou un bus. Ou tout autre circuit logique.

Pour simplifier (beaucoup) l'image, le HLS consiste à créer le processeur, les bus et autres périphériques exactement nécessaires à la réalisation d'un algo spécifique (algo donné par le code tapé). Circuit qui, par la suite, pourra être implémenté sur FPGA, ou bien utilisé pour créer des masques et tout le barda nécessaire à la fabrication d'une puce.
Commentaire #143158 écrit par Epok__ le 18/07/2014 à 16h10 | 👍🏽 👎🏽
Ok ! "Non, pas tout à fait", c'était un peu un euphémisme.^^

Merci, je n'ai pas perdu cette journée vu que j'y ai appris un truc (et qu'en plus ça m'a donné envie d'aller y voir de plus près sur le sujet quand je serai rentré chez moi) :)
Commentaire #143171 écrit par Youplà le 18/07/2014 à 18h02 | 👍🏽 👎🏽
Oui enfin... Le C c'est du C, le C++ du C++ ... Essaye de compiler du C++ avec un compilateur C... Par contre, l'inverse est possible.
Commentaire #143254 écrit par Cartman34 le 19/07/2014 à 08h32 | 👍🏽 👎🏽
Dand l'absolu c'est possible oui, regardez l'ignoble langage utilisé par iOS (celui d'apple)... Si je me souviens bien c'est du C avec deux ou trois frameworks greffés autour. (pour moi c'est ultra moche, et pas du tout agréable à utiliser x) )
Commentaire #143327 écrit par Nejaa Halcyon le 20/07/2014 à 08h33 | 👍🏽 👎🏽
Objection, j'ai assisté à deux conférences, un sur objective C et une sur le sdk Android. Et le sdk ios est clair et compréhensible, alors que le machin Android, c'est du java à la mord moi l'noeud :)
Commentaire #143330 écrit par spidermoon le 20/07/2014 à 11h53 | 👍🏽 👎🏽
Ce que je disais, c'est que pour faire vraiment de l'objet en C, le mieux, c'est de récupérer le code source en C d'un compilateur C++, de le compiler, et d'utiliser ce compilateur C++ pour compiler du code C++.
Commentaire #143339 écrit par ygnobl le 20/07/2014 à 15h38 | 👍🏽 👎🏽
Suffit de prendre un petit Simulink (ouais, je suis comme ça, un petit logiciel obscure que personne n'utilise) pour faire de la programmation à partir de blocs qu'on relie entre eux, aka diagramme, et ensuite en tirer un code en C.
Par exemple, le régulateur du moteur Renault F1 est programmé comme ça.
CTLP
Commentaire #143380 écrit par Peredur le 21/07/2014 à 12h51 | 👍🏽 👎🏽
Pas d'objet en C, par contre, on peut en faire un ersatz à base de TAD (Types Abstraits de Données).
Commentaire #143623 écrit par Ysendrin le 30/07/2014 à 17h02 | 👍🏽 👎🏽
Désolé, je ne sais plus où j'ai mis mes balises ironie, humour, décalage trolldi...
Commentaire #143626 écrit par ygnobl le 31/07/2014 à 13h55 | 👍🏽 👎🏽
Comme dit plus haut, désolé, j'ai perdu mes balises, du coup sur mes posts vous n'avez pas de repères... <HUMOUR><BLINK>Tiens, je les ai retrouvées, ça devrais mieux passer maintenant</BLINK></HUMOUR>
Commentaire #143627 écrit par ygnobl le 31/07/2014 à 14h00 | 👍🏽 👎🏽
Pour répondre à ton objection : Non, objective C n'est pas du C.

<J_ai_retrouvé_mes_balises_mais_je_sais_plus_laquelle_il_faut>
De même Javascript n'est pas du Java, et l'assembleur 68k ne permet pas de développer pour ms_dos (Y a pas eu de portage, dites ?)
</J_ai_retrouvé_mes_balises_mais_je_sais_plus_laquelle_il_faut>
Commentaire #143628 écrit par ygnobl le 31/07/2014 à 14h05 | 👍🏽 👎🏽
Absurde!

Un objet c'est défini par ses propriétés (les variables), son état (représenté par leurs valeurs) et ses méthodes (les instructions qui modifieront l'état de ton objet). Deux objets de la même instance partageront donc leurs propriétés et leurs méthodes qui seront identiques (en mettant l'héritage de côté parce qu'après c'est le bronx) la seule différence viendra de leur état. Lorsque l'on manipule un objet, on n'utilise que des méthodes définies par cet objet (get, set, toString, platypus).

Une structure peut avoir des propriétés et un état (youpi). Par contre aucune des instructions permettant de modifier l'état de la structure n'est connue de celle-ci. Au final on peut changer la valeur des variables d'une structure un peu comme on veut. Et quel que soit la fonction qui utilisera cet structure, elle pourra y mettre ce qu'elle veut.

Au final, la grosse différence entre la programmation objet et la programmation impérative, c'est que dans un cas, c'est l'objet qui définit ce que l'on peut faire avec (changer le nom, afficher l'age...) dans le cas de l'impérative, c'est la fonction qui définit ce que l'on peut peut faire avec les valeurs d'une structure.

Sinon, y'a aussi la programmation fonctionnelle et moi je trouve ça carrément fendard (oui, fendard vous avez bien lu!).
Commentaire #143646 écrit par Hum. le 04/08/2014 à 05h41 | 👍🏽 👎🏽
Salut,

Bon franchement, comme disait plus haut. On peut faire de la COO en C il n'y a aucun problème à ça. C'est juste que tu n'as pas écouté le reste du cours!!

En fait tu confonds langage de prog et concept (je rappel que le COO signifie Conception Orientée Objets) et non pas Programmation dans un langage Objet. Je vous rappel que votre source qu'il soit en C ou C++ ou autre (natif) sera au final convertit dans un langage très bas niveau ...

Après toutes les personnes disant "Ouais, il s'est gourré avec le C++, c'est nul" PAS DU TOUT!! J'ai envie de vous répondre. Eh bien essayé de compiler du java avec un compilateur natif C++ et vous aurez aussi des surprises. Cependant avec un compilateur adapté on peut tout à fait générer à partir du java du code C++ (chercher sur google et vous verrez...), j'imagine que certains prof tordu ont du demandé ce genre de chose en cours de Compilation il faut juste chercher.

Donc Messieurs, faite un effort et mettez des "C'est toi le PEBKAC" pour un n-ième étudiant n'ayant pas écouté en cours... :p (bon d'accord on a été nombreux dans son cas...)

PS: je réponds aussi dans l'autre post sur UML...
Commentaire #143710 écrit par MarreDesFauxPebkac le 07/08/2014 à 11h03 | 👍🏽 👎🏽
Mais si on peut faire de la conception Objet en C, mais on ne peut pas compiler du C++.

Ca s'appelle les conventions d'écriture du code...
Commentaire #143711 écrit par MarreDesFauxPebkac le 07/08/2014 à 11h05 | 👍🏽 👎🏽