Le paradoxe du programmeur
|
04-09-2014, 14h47
Message : #1
|
|
Commodor
Ho ! Dodgson ! Messages : 64 Sujets : 9 Points: 36 Inscription : Nov 2011 |
Le paradoxe du programmeur
Bien le bonjour à vous
De plus en plus cette question me trotte dans la tête, ne sommes nous pas en train de devenir de simples utilisateurs plutôt que de véritables programmeurs ? Le "progrès" dans le domaine de l'informatique me donne l'impression de me trouver face à une boite noire à la croissance exponentielle Alors que nous "hacker" cherchons à comprendre le fonctionnement d'une technologie qui nous inspire, nous sommes pourtant amenés à faire usage d'autres technologies sans en comprendre le véritable fonctionnement. Nous disposons à l’heure actuelle d’outils formidables pour accélérer et simplifier le processus de développement d’une application. Ne serait ce que par l’intermédiaire des librairies. Celles-ci nous offrent diverses fonctions auquel personne ne comprend le fonctionnement mais qui offrent à n’importe quel ‘’amateur’’ l’opportunité de concevoir une application complexe en un temps minimum et avec des connaissances limitées. C’est vrai après tout, pourquoi apprendre les sockets bruts ou passer par l’assembleur afin de capturer des paquets sur le réseau alors que libpcap fais cela très bien ? Pourquoi utiliser malloc ou calloc plutôt que d’apprendre à réécrire ces fonctions soit même ou de redescendre encore plus bas dans les langages en passant par l’assembleur pour en comprendre le fonctionnement (et en même temps le fonctionnement de l’ordinateur) ? Un grand gain de temps en effet… 3000 lignes de codes en deviennent 30. Le temps d’apprendre à utiliser les fonctions plutôt que de chercher à en récréer le fonctionnement réduit considérablement l’apprentissage mais au détriment de nos connaissances. En dehors de ce gain de temps nous nous retrouvons bridés. Soumis à avoir seulement les bonnes idées et la création de trouver une utilité à des librairies pondues par des chercheurs, mais sans jamais aller au delà. Bien sûr nous sommes contraint de suivre le ‘’progrès‘’. Au début de l’informatique, avec seulement quelques langages informatique et tout à inventer, tout à comprendre, cela ne posait pas de problème éthique pour le ‘’hacker’’. Mais aujourd’hui ? On ne peut en effet redescendre jusqu’au plus bas des niveaux pour en comprendre même jusqu’aux circuits électroniques. Comment pourrait-on comprendre le fonctionnement au plus bas niveau des fameuse googleGlass ? Le domaine tel que la micro-informatique nous empêche de nous épanouir faute de moyens et de connaissances. Peut de personnes se donneront la peine de comprendre, il n’y a plus cette curiosité qui animait les informaticiens d’antan… ‘’Savoir à tout pris comment ça marche’’ plutôt que d’utiliser sans se poser la moindre question On peut néanmoins partager différent axiomes philosophiques. Ça ne me gêne pas de voir une personne faire usage d’un tas de librairies sans même en comprendre le fonctionnement du moment qu’il en ait conscience et qu’il cherche juste à développez rapidement une app pour son entreprise. Mais quand il s’agit du domaine ‘’autodidacte’’ ou du moins lorsque la cible est celle de la connaissance (plus encore que le résultat final) j’ai du mal à consentir à ce genre de pratique qui petit à petit viens à réduire les vrais passionnés qui cherchent à comprendre. Si une personne utilise une librairie mais l'a déjà décortiqué alors ok pas de problème (en générale) mais au cas contraire nous devenons tous de simples utilisateurs avec une standardisation du code, où le ‘’grain’’ de chaque programmeur disparaît à petit feux grâce à la surpuissance (ou pas) du progrès. Pour introduire une comparaison, disons que nous apprenons essentiellement à utiliser une boite à outils plutôt qu’à apprendre à mettre les mains dedans. Il y a d’un coté le restaurateur qui confectionne ses plats de A à Z. Qui a sa petite touche perso, qui connait tout de ses ingrédients, la cuisine n’a plus aucun secret pour lui. Et de l’autre il y a le restaurateur qui reçoit un plat tout fait qu’il n’a plus qu’a mettre dans sa machine qui chauffe le tout. Il a juste eu à apprendre à s’en servir. Au final il n’y a pas la petite patte du maître, le petit quelque chose en plus, et tout viens à se ressembler. Préférant la rapidité et la simplicité plutôt que la qualité. Et c’est vers cette voie que l’informatique se tourne, malheureusement. on peut généraliser en sortant de la programmation. Quand je vois beaucoup d'informaticiens en entreprise se vanter d'avoir désinfecter tel machine avec THE super Antivirus, scan, etc. Mais que au final, même un enfant peut le faire. Suffit de savoir lire un tutoriel. Le pire c'est qu'il n'y a pas cette curiosité de savoir comment marche les outils qu'ils utilisent, alors qu'ils sont informaticiens ça devrait être par passion ? cela leurs suffi t-il de savoir utiliser des logiciels plutôt que de savoir comment ceux-ci fonctionnent ? Merci d’avoir pris attention à ce post et je suis ouvert à votre point de vue j'espère que l'utilisation de la première personne du pluriel ne vous a pas trop déstabilisé, je ne vise personne en particularité. Je m'adresse autant aux hacker, qu'aux programmeurs, qu'aux simples informaticiens, qu'aux amateurs, qu'au ingénieurs, etc. Que pensez vous de la programmation de nos jours ? On compte des centaines si ce n’est plus de langages de programmation et des milliers de libraires. Avantage ou désavantage selon vous ?
Hahaha you didn't say the magic word !
|
|
04-09-2014, 17h21
Message : #2
|
|
b0fh
Membre actif Messages : 210 Sujets : 17 Points: 309 Inscription : Jul 2012 |
RE: Le paradoxe du programmeur
Mais la complexité des systèmes d'informatique d'aujourd'hui n'a plus rien à voir avec celle d'il y a 30 ans.
Par exemple, pourquoi s'arrêter au software ? étudier le fonctionnement des librairies c'est bien, descendre jusqu'a l'assembleur aussi, comprendre le fonctionnement du kernel, parfait. Quid du matériel en dessous ? Pourquoi ne pas également s'intéresser a l'architecture du CPU, des divers bridges, descendre jusqu'a l'électronique ? Seulement voila, breaking news: a l'heure actuelle, aucun humain ne serait capable de créer à la main le circuit d'un CPU moderne. Les CPU modernes sont conçus en software, a partir de blocs combinés, mais la tâche de concrétiser les schémas-bloc et les descriptions fonctionnelles en un circuit ne sont plus faites par des humains depuis quelque temps, mais par des machines. Pareillement, l'immense majorité des binaires aujourd'hui sont produits par des compilateurs, pas par des malades d'asm. Ce n'est plus possible de tout maitriser, c'est la vie. Les libs et les langages abstraits sont un moyen de construire des systèmes encore plus gros, encore plus complexes, au modeste prix de la perte de la compréhension des détails. De cette manière, un système bénéficie de l'expertise de tous les auteurs de libs à tous les niveaux, plutot que de dépendre de la compétence d'un seul codeur. C'est peut-être dur à admettre pour l'ego, mais c'est beaucoup plus efficace comme ça. |
|
05-09-2014, 01h05
(Modification du message : 05-09-2014, 01h10 par Mika.)
Message : #3
|
|
Mika
Newbie Messages : 7 Sujets : 1 Points: 3 Inscription : Jul 2014 |
RE: Le paradoxe du programmeur
C'est une chose à laquelle je pensais la dernière fois, sur la route.
Je pensais que j'étais le seul gogo, mais non Blague à part, je déplore un peu ce que tu déplores. Dans le cadre d'un projet, j'avais codé en JS avec jQuery, bon c'est super cool, on peut faire plein de trucs, ça pète et ça bouge de partout,... Bref, ça fait plaisir au client. Et c'est là tout l'intérêt, force est de constater que nous sommes dans une société où le temps, c'est de l'argent . C'est là où je rejoins b0fh, nous avons à faire aujourd'hui à des systèmes de plus en plus complexe qu'il y a quelques décennies. Et concevoir en repartant de zéro, depuis le début, ça prendrait trop de temps et évidemment, on y perdrait de l'argent. C'est le raisonnement d'aujourd'hui en fait. Quand je codais avec jQuery, c'était cool mais... Dans le fond j'étais un peu frustré, car tu parles de patte perso et je suis tout à fait d'accord, tout ce que j'utilisais ne venait pas de moi. Bon certes réinventer la roue ne sert à rien. Mais j'aurais aimé prendre un peu plus le temps de pouvoir faire du "fait maison" si tu vois ce que je veux dire. Tout ça pour dire que par soif de connaissance, j'essaie de faire au mieux comment ça fonctionne en dessous, d'où ça vient, comment c'est fait... Sinon je suis pas tranquille, je suis quelqu'un qui a besoin de savoir, de creuser. Sinon effectivement comme tu dis, n'importe qui pourrait le faire. Je fais l'analogie avec l'automobile, je ne me contente pas de la conduire, je cherche aussi comment ça tourne, pourquoi c'est conçu de la sorte, comment concevoir, ou contourner ce système, comment faire mieux, etc.... Pendant que d'autres se contentent d'utiliser les technologies à bord et point barre. Ils s'en servent et ça marche, pour eux c'est tout ce qui compte. |
|
05-09-2014, 13h31
(Modification du message : 08-09-2014, 10h11 par Booster2ooo.)
Message : #4
|
|
Booster2ooo
Contributeur Messages : 165 Sujets : 14 Points: 63 Inscription : Aug 2011 |
RE: Le paradoxe du programmeur
Code : Le "progrès" dans le domaine de l'informatique me donne l'impression de me trouver face à une boite noire à la croissance exponentielle Rien n'a changé, ce qui était vrai à l'époque des pionniers l'est toujours aujourd'hui. Rien ne vous empêche de monter votre homebrew dans votre garage après le boulot. Vous avez juste la chance d'avoir un accès à la documentation facilité, ce qui n'était pas forcément le cas à l'époque. (on est quand mm à l'air des MOOC, du rPI et du "open hardware" non?) Selon moi, il faut différencier "Développeur/Programmeur" et "Hacker". Dans un cas, on a affaire a des techniciens(et/ou artistes) qui regroupent des technologies, qui les assemblent, qui les utilisent et qui en créent de nouvelles. Dans l'autre, on se retrouve face à des "transgresseurs", des curieux qui détournes ce que la première catégorie a fait. Il y a les constructeurs de trains électriques, ceux qui les utilisent et ceux qui les détournent |
|
05-09-2014, 13h52
Message : #5
|
|
Kiwazaru
Padawan d'un super escargot Messages : 284 Sujets : 26 Points: 139 Inscription : Mar 2012 |
RE: Le paradoxe du programmeur
Là en fait, je pense qu'il faut différencier une chose: Un programmeur n'est pas un hacker ni un bidouilleur ou quoi que ce soit d'autre. J’emploie le terme programmeur dans le sens de la profession, c'est-à-dire que son but n'est pas de comprendre (il est censé l'avoir un peu fait avant ça), mais de confectionner ce que lui demande son client le plus rapidement possible et avec une fiabilité maximum (ce qui est l'utilité double d'une librairies).
Et là, on fait une différence majeure, entre celui qui fait ça dans le cadre de son travail, et celui qui fait ça dans un cadre personnel. Et c'est de ces personnes, qui font cela dans un cadre personnel, qu'il vaut mieux parler. Ces personnes peuvent se nommer avec n'importe quel statut, hacker, bidouilleur, passionné, n'importe quoi, la seule chose qui les définis c'est ce qu'ils savent, ce qu'ils sont capable de donner et la manière dont ils le font. Un hacker, comme tu le dis si bien, est une personne censée être en recherche constante du fonctionnement d'un certains système, d'un certains concept, afin d'en déceler les problèmes, ou de détourner son usage; Or aujourd'hui, les librairies et les logiciels qui font tout à notre place se sont démocratisés, et c'est dans ce cas précis, qu'un gros problème intervient. Prenons un exemple simple: Un "hacker" qui utilise metasploit pour pénétrer un système est-il un hacker, ou un simple utilisateur ? Je pense que là, la réponse est simple et honnête, il est utilisateur. Mais il ne faut pas voir que jusqu'au bout de son nez, ce "hacker" a peut-être très bien compris le concept de l'exploit qu'il utilise, et c'est ça qu'on demande n'est-ce pas? Alors d'un côté, ces programmes et librairies sont utiles, de l'autre elle ruinent l'expérience que certaines personnes pourraient avoir à termes si ces choses n'existaient pas, mais en réalité, c'est ce que tu en fait toi qui est important. Mon avis est clair aujourd'hui, une personne qui ne fait qu'utiliser sans comprendre est un utilisateur, contrairement à celle qui utilise, en fouinant et en essayant de comprendre. Et en effet, on peut remarque qu'aujourd'hui beaucoup de personnes se prétendant "hacker" ne font qu'utiliser des programmes pour découvrir des ports exploitables, des scanners pour détecter différentes failles sur un site web, les légendaires "tools de script kiddies" nommés les RAT, ou encore les Stealers; Et tout ça sans réellement comprendre comment au final, ils ont eu un accès au PC de la victime, ou comment ils ont réussi à mettre leur deface trop d4rk sur le site attaqué. Je prends l'exemple des programmes car je le trouve très représentatif en vérité; Aujourd'hui le problème n'est pas le fait qu'il existe des librairies nous facilitant la tâche, c'est utile, ça permet de développer et de créer de nouvelles idées à une vitesse incroyable, c'est beau et c'est bien. Non, cela n'est pas le problème, le problème réel est celui de la démocratisation des apprentissages par la voie de la facilité. Il suffit de regarder l'évolution des études, nous n'utilisons plus que des librairies par-ci, par-là sans même expliquer aux élèves pourquoi on l'utilise, et encore moins comment fonctionnent les fonctions qui sont utilisées, on nous formate juste à pondre un code fonctionnel pour le monde en entreprise. Je pense qu'un apprentissage en profondeur, en expliquant la source serait un bon choix. Alors certains diront perte de temps, moi je dirais gain de temps, et cela pour une simple et bonne raison: La compréhension claire, et précise d'un concept de bas niveau de base, permet la compréhension instinctive de son utilisation dans tous les autres concepts de plus haut niveau par la suite. En clair, et pour faire un exemple simple, quand j'étais au collège, j'ai commencé l'apprentissage du langage VB.net, c'était simple, efficace et on pouvait même faire une fenêtre, c'est vraiment cool; Mais en réalité, je me suis vite rendu compte qu'il fallait apprendre par coeur son texte, pour que le compilateur nous donne une bonne note à la fin. Alors j'ai commencé à ingurgiter des samples de code, encore et encore, et je n'ai finalement pas réussi à tenir. Après avoir appris une dizaine de nouvelle fonction, j'avais déjà oublié comment fonctionnaient les autres, la place de l'argument, qu'est-ce qu'il fallait définir avant etc... Alors une idée simple m'est venue à l'esprit: Et si j'apprenais toute les bases de l'ordinateur? En allant chercher au plus profond du fonctionnement, finalement je finirais pas comprendre comment un concept fait fonctionner une petite partie de ces foutues fonctions qui me paraissaient toute si différentes; Et là intervient le langage Assembleur, un langage où il n'y a que quelques centaines d'opcodes qui permettent à des milliers de milliers de fonctions d'exister. De là, le choix était simple, comprendre la bases des bases, ça permet finalement de comprendre ce que tout le monde s'acharne à retenir. Savoir coder c'est bien, connaître plein de fonction c'est bien, mais les faire devenir instinctives c'est mieux, et c'est là que l'avancée de l'informatique se trompe sur toute la ligne, ce n'est pas sur son évolution même, mais sur l'apprentissage par tout les sites, tutoriels whateveruwant qui ne font que rabâcher comment utiliser un set de fonctions afin d'arriver à faire fonctionner un programme, sans même comprendre pourquoi le programme nous pond ce résultat. Et je pense qu'à terme, nous serons tellement inondé de fonction par-ci, par-là qui se cumulent pour faire ci et ça que nous ralentirons la croissance de l'informatique et l'efficacité des futurs programmeurs. Alors essayons de transmettre le plus possible notre passion et nos convictions qui sont celle d'un génération de personnes qui veulent perpétuer le bon apprentissage pour le bien du futur de l'informatique, mais ne crachons pas sur les librairies et sur tous les concepts qui nous permettent entre autre, de pouvoir partager celui-ci plus aisément.
Toucher au Kernel, c'est un peut comme se shooter au LSD, on pense pouvoir tout faire mais ça finit souvent mal.
|
|
05-09-2014, 16h41
Message : #6
|
|
gruik
gouteur de savon Messages : 757 Sujets : 44 Points: 482 Inscription : Oct 2012 |
RE: Le paradoxe du programmeur
au delà du constat qu'on fait tous plus ou moins, le fait que plus l'informatique se complexifie moins mécaniquement un unique individu peut tout savoir dessus, je pense qu'il y a ce truc dont j'ai souvent entendu parler dans les communautés informatiques/hacking qu'est le manque d'imagination aka "je suit pacionay mé je sé pa koi codé"
il faut de l'imagination pour appréhender cette technologie qui évolue en permanence, envisager de nouvelles façons de travailler avec, envisager de nouveaux buts/objectifs à se fixer avec, envisager ce que ses nouveautés vont pouvoir nous apporter sans trop d'imagination, on reste bloqué sur des techniques, des technologies, des habitudes et autres fonctionnements personnels qui petit à petit n'offrent plus de possibilités motivantes n'être qu'un utilisateur (par opposition à un vrai programmeur, comme dit dans le post initial) ne me dérange pas du moment que la finalité de mes réalisations en vaut la chandelle, j'attacherais plus d'importance à une idée lumineuse qu'au nombre de lignes de code pour la mettre en œuvre au delà de la "technologie fautive" avec ses lib obèses qui font que le quidam ne plonge plus dans l'assembleur je pense que l'informatique intéresse beaucoup de monde au premier abord, mais rares sont ceux qui en retireront véritablement quelque chose, il convient - à mon sens - de s'interroger sur soi-même, ses motivations, son envie, sa capacité à apprendre seul, à s’intéresser etc. pour ne pas tomber dans la masse grouillante de "wannabe" scotchés à leurs challenges et qui n'en décolleront pas. je suis d'accord c'est éminemment philosophique, et aussi une réflexion très personnelle à mener... ou pas
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure. Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau, L'Art poétique) |
|
05-09-2014, 20h37
Message : #7
|
|
formollover
Newbie Messages : 21 Sujets : 3 Points: 6 Inscription : May 2013 |
RE: Le paradoxe du programmeur
Il y a le même problème dans les Jeux vidéo , une technologie surpuissante mais pas de jeux innovants. Les mecs à l'époque ils codaient à l'octet prêt du m'étonne qu'ils devaient être créatif , conclusion les lib abondantes , la technologie overpuissante peut aussi avoir aussi un impact sur la création
|
|
« Sujet précédent | Sujet suivant »
|
Utilisateur(s) parcourant ce sujet : 1 visiteur(s)