Gerry Sussman explique que les ingénieurs modernes ne sont pas de vrais programmeurs
La plupart se contentant d'assembler des bibliothèques tierces

20PARTAGES

18  4 
Un ingénieur moderne a-t-il besoin d'apprendre les notions enseignées dans SCIP pour développer ?
À l’occasion de la tenue de la conférence sur le langage LISP, organisée à New York City, un participant avait demandé à Gerry Sussman, coauteur du célèbre livre intitulé « Structure and Interpretation of Computer Programs (SICP) », pourquoi le MIT avait décidé d’arrêter l’enseignement de son cours 6.001 qui était basé sur leur livre. Sussman a répondu qu’il estimait qu’il était temps pour lui et Hal Abelson de se reposer un peu, car ayant enseigné ce cours depuis les années 80.

Cependant, la raison principale de l’arrêt de l’enseignement de ce cours qui apprenait les bases de la programmation telles que les notions d’abstraction, de récursivité et de programmation modulaire était tout à fait ailleurs. En effet, Sussman pense que le contenu du SICP ne correspond plus aux aspirations des ingénieurs de nos jours et des attentes qu’ont les entreprises. Il ajoute que, contrairement aux ingénieurs des années 80, voire les années 90, qui réalisaient des systèmes complexes en partant de zéro en combinant de simples bouts de codes qui étaient bien compris, car les ayant codées eux-mêmes, les ingénieurs contemporains se contentent de mettre ensemble des codes déjà existants pour réaliser des programmes compliqués dont ils ne maitrisent même pas le code la plupart du temps.

Le but de SICP était, selon Sussman, de fournir un niveau d’abstraction pour raisonner sur des systèmes tels qu’il en était construit dans les années 80 et n’est donc plus adapté aux réalités auxquelles sont confrontés les ingénieurs actuellement. Le constat fait par le coauteur de SICP est que l’environnement de programmation des ingénieurs de nos jours se résume en de gigantesques bibliothèques pour produire des logiciels destinés à des matériels compliqués dont ils n’ont aucune idée du fonctionnement interne. C’est ce qui fait, d’après lui, qu’ils n’ont plus besoin de ce niveau d’abstraction enseigné dans le livre et qui était nécessaire pour les ingénieurs de l’époque. Sussman confie que ses étudiants passent maintenant le plus clair de leur temps à lire les manuels de ces bibliothèques essayant de comprendre comment les faire fonctionner ensemble dans le but de réaliser une tâche bien définie.

Sussman déclare que la programmation de nos jours est comme la science en ce sens que le développeur met des bibliothèques ensemble et, sans partir de zéro, écrit le code qui va permettre de les intégrer pour ensuite constater le résultat. Dès lors, l’approche d’analyse par synthèse enseignée par SICP devient inappropriée pour les programmeurs modernes. Ce point de vue de Sussman est aussi partagé par un développeur iOS dont le pseudonyme est Jdmoreira qui affirme qu’il a appris la programmation en suivant les cours basés sur SICP, mais qu’il se trouve réduit aujourd’hui à intégrer des bibliothèques dans un framework propriétaire sans aucune possibilité d’accéder aux sources et naturellement dont il ne comprend pas grand-chose du fonctionnement interne.

Source : Posterioscience

Et vous ?

Pensez-vous que la programmation de nos jours se résume à l'intégration de bibliothèques ?

Voir aussi

le forum Débats sur le développement

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Mat.M
Expert éminent sénior https://www.developpez.com
Le 08/05/2016 à 19:09
Citation Envoyé par Victor Vincent Voir le message

Cependant, la raison principale de l’arrêt de l’enseignement de ce cours qui apprenait les bases de la programmation telles que les notions d’abstraction
je ne sais pas si ce Gerry Susmann a raison mais justement la capacité d'être dans l'abstraction c'est ce qui manque atrocement dans les projets informatiques notamment ceux sur lesquels j'ai pu travailler.
C'est toujours ce que j'ai voulu expliquer sur ce forum ,programmer c'est bien mais il faut construire toute l'étape en amont d'un projet qui consiste à conceptualiser sur le dit projet et à dégager les couches métiers dans une couche abstraite.

Faire abstraction des couches métiers du logiciel ça signifie créer un noyau,middleware indépendant des technologies , langages employés
Au lieu de ça quand on travaille sur un projet il faut bâcler les choses...
Citation Envoyé par Victor Vincent Voir le message

Pensez-vous que la programmation de nos jours se résume à l'intégration de librairies ?
tout dépend évidemment de ce que l'on veut faire !
Si c'est un projet en SSII par exemple où l'heure de développement est comptabilisée eh bien oui il vaut mieux de préférence avoir recours à l'intégration de bibilothéques de tierce partie.
1  2 
Avatar de FoinFoin
Membre à l'essai https://www.developpez.com
Le 09/05/2016 à 2:35
Je dois dire que quand je dis à des gens que je suis un programmeur et que je fais tous (ou presque) par moi-même, on me regarde comme si j'étais un fou. Je n'ai pas peur de la page blanche !!! En autre mots, commencer de zéro, ou presque. Il faut dire que je programme depuis plusieurs années et je réutilise les codes que j'ai faits parmi tous mes projets et je les fais maturer. Le principal avantage est que je suis en contrôle du code que je fais et quand on me mentionne un problème, je sais exactement où chercher et comment corriger le problème.

Ce que je trouve triste lorsque je parle avec d'autre personne qui font de la programmation, c'est que dans la majorité des cas, il ne font qu'assembler du code ensemble. Lorsque je leur demande si ça ne les inquiète pas jouer avec du code qu'ils ne maitrise pas, la réponse est non. À la question des bogues : "S'il y a un bogue dans le code, ceux qui on fait le code vont le mettre à jour éventuellement" Ça se passe de commentaire ...... Dison que livrer un projet à un client en leur disent que s'il y a un bogue dans les parties qui viennent d’ailleurs, je peux rien faire...

J'aurai encore plein d'autres choses à dire. Mais bon!
4  5 
Avatar de Saverok
Expert éminent https://www.developpez.com
Le 09/05/2016 à 3:08
Citation Envoyé par FoinFoin Voir le message
Le principal avantage est que je suis en contrôle du code que je fais et quand on me mentionne un problème, je sais exactement où chercher et comment corriger le problème.
Le hic est que cela ne fonctionne que lorsque l'on travaille tout seul.
En équipe, tu intègres forcément du code que tu ne maîtrises pas car développer par un autre, même si c'est ton voisin de table.

Je pense surtout qu'il faut bien savoir choisir les librairies que l'on intègre à un projet et avoir un bon suivi dans le temps pour les maj de ces dernières.
Rien que ça, c'est déjà pas mal de taf.
16  0 
Avatar de Cafeinoman
Membre éprouvé https://www.developpez.com
Le 09/05/2016 à 7:13
Perso, je travail surtout avec des lib open-source. Du coup, avant d'utiliser un truc, et bien je lis son code! Ca me parait assez étrange de se dire qu'on va pleinement faire confiance a un code que non seulement on ne maîtrise pas, voire ne comprend pas, mais où en plus on ne peut pas engueuler le dev qui l'a fait...
Sinon, une chose étrange dans la logique du monsieur : a l'écouter, les lib tombent du ciel! Il faut bien que des dev partent de zéro ou presque pour les créer ces libs non?
2  3 
Avatar de RyzenOC
Inactif https://www.developpez.com
Le 09/05/2016 à 8:00
Pensez-vous que la programmation de nos jours se résume à l'intégration de librairies ?
Oui, je code en python et j'utilise que des bibliothèques...

1) Je gagne un temps fou, sa me fait 70% du boulot
2) C'est plus pérenne et c'est plus performant que les solutions maison

Exemple: Si je veut faire des calcules matriciel, je vais pas m'amuser a integrer/crée les 50 000 algo en math et crée ma propre bibliothèque de calcule, je prend numpy directement qui est déjà optimisé en plus.

Pour le python les bibliothèques sont le coeur meme du langage, pour les autres langages, sa dépends et sa dépend surtout de qu'il faut faire.
6  4 
Avatar de Excellion
Membre averti https://www.developpez.com
Le 09/05/2016 à 8:04
Je ne sais pas trop si c'est simplement cantonné à l'informatique...

Je développe en collaboration avec un autre programmeur et les utilisateurs finaux, et c'est une catastrophe.

Si on ne prévoit pas les conséquences de chacune de leurs actions, ils sont incapables de les prévoir. Souvent mon code est très mal optimisé, car il doit prévoir tout ce que peut ou voudra faire les utilisateurs.

Pour mon collègue, il se contente de copier coller, et de mettre dans la méthode principale ce qu'il imagine que devrait faire le programme. Un try au début, un catch à la fin, et c'est dans le sac. C'est donc un véritable calvaires de modifier et remodeler l'existant, surtout sur une base de données. A sa décharge, comme beaucoup en France il n'a pas fait d'études en informatique, donc d'algorithmes, et dire non ou objecter à son directeur, c'est toujours prendre le risque de se retrouver rapidement sur le marché du travail...
3  0 
Avatar de ScriptorTux
Membre régulier https://www.developpez.com
Le 09/05/2016 à 9:09
Je suis tout à fait d'accord qu'il important de connaître les bases de la programmation et tout ce que cela signifie. Cependant, ne pas utiliser de bibliothèques me semble un "prétentieux" (en exagérant évidemment un peu). En effet, si des bibliothèques reconnues et solides, et utiles à notre projet, sont déjà sur le marché pourquoi ne pas s'en servir ? Qu'est-ce qui nous prouve que des bibliothèques "maison" seront plus stables et optimisées que certaines bibliothèques sur le marché ou open-source ?

Après je suis aussi d'accord qu'il est aussi intéressant de créer ses propres bibliothèques quand on a le temps ou que c'est pour notre propre loisir, ce qui permet d'élargir nos connaissances et en plus comme l'a dit FoinFoin, on a l'avantage d'avoir plus de contrôle sur ce que l'on écrit.

Mais tout ceci ne reste que mon point de vue.
7  0 
Avatar de foetus
Expert éminent https://www.developpez.com
Le 09/05/2016 à 9:24
Citation Envoyé par ScriptorTux Voir le message
Je suis tout à fait d'accord qu'il important de connaître les bases de la programmation et tout ce que cela signifie. Cependant, ne pas utiliser de bibliothèques me semble un "prétentieux" (en exagérant évidemment un peu). En effet, si des bibliothèques reconnues et solides, et utiles à notre projet, sont déjà sur le marché pourquoi ne pas s'en servir ? Qu'est-ce qui nous prouve que des bibliothèques "maison" seront plus stables et optimisées que certaines bibliothèques sur le marché ou open-source ?
Le truc, c'est que de plus en plus on travaille dans des environnement préfabriqués et souvent cloisonnés ... sans parler de toutes les authentifications/ certificats/ chiffrements/ ...

C'est fini le temps le temps où tu pouvais attaquer le matériel directement (même si c'est en assembleur) ou la couche d'abstraction était assez "fine" (par exemple, le HTML5 qui devient un mini-OS c'est tout sauf fin)
1  0 
Avatar de mayer_450
Nouveau membre du Club https://www.developpez.com
Le 09/05/2016 à 10:04
Je ne vois pas de problèmes d'utiliser des Frameworks qui ont fait leur preuves tel que .NET , J2E ...

Dans ce cas il ne faudrait plus développer de programmes tournant sur des OS spécifique , nous n'avons pas grand contrôle sur des OS tel que Windows .
Ça serait comme empêcher des mathématiciens d'utiliser des théorèmes approuvés par les grands noms de la science sans les avoirs eux-même prouvés .

Les programmeur sont tenues d'avoir de fortes notions en Architecture Logiciel afin de s'avoir comment assembler ces bibliothèques tierces sans mettre en danger l'ensemble de leur projet.
2  2 
Avatar de TheLastShot
Membre extrêmement actif https://www.developpez.com
Le 09/05/2016 à 10:15
Le problème ce n'est pas tant d'utiliser des bibliothèques... Evidemment on ne peut pas tout refaire de zéro pour chaque projet. Le problème c'est de n'utiliser que des bibliothèques pour la moindre petite chose, même les plus basiques.
C'est ce que j'appelle personnellement le syndrome Wordpress, car je vois beaucoup de mes clients ou d'autres "développeurs" qui sont contentent uniquement, lorsqu'il doivent réaliser un projet, utiliser wordpress en installant tout une garnison de plugins divers et variés. Alors, pour ce qui est des clients, c'est normal... Le développement n'est pas leur métier, je ne peux pas leur en vouloir d'utiliser des plugins déjà fait. Par contre dans le deuxième cas, je peine à leur donner la dénomination de développeur (après, je dois avoué, pour avoir travaillé dessus, que wordpress côté code est absolument immonde, donc ça peut rebuter... J'ai moi-même eu les yeux qui saignent tout au long du développement).
Le problème c'est que Wordpress, tant qu'on utilise que les fonctionnalités de bases avec 2-3 plugins ça passe... Mais très vite, on est tenter d'installer plein de plugins, tous n'étant pas bien fait (loin de là) et bien évidemment qui ne sont pas prévu pour fonctionner ensemble. Ce qui fait que, bien souvent, on se retrouve avec le client qui se plein que son site est trop lent.

Et côté client lourd (comprendre logiciel, pas des clients difficiles à supporter (quoique...)) on a parfois la même comportement. Je ne saurais pas dire combien de fois, lorsque je débutais, de chercher sur internet comment faire tel ou tel chose, et de tomber sur la réponse suivante : "Utilise Boost". Alors, outre le fait que Boost soit une usine à gaz absolument immonde qui n'a pour intérêt que de perdre du temps à l'installation et à la compilation, je trouvais (et c'est toujours le cas) aberrant que les réponses ne mettent pas en avant la (ou les) manière(s) de faire les choses par soi-même, quitte à indiquer par la suite des bibliothèques utilisables.

Personnellement, depuis que j'ai commencé la programmation, j'ai toujours eu la même philosophie: Ne jamais (dans la mesure du possible) utiliser une bibliothèque me permettant d'accomplir une tâche si je ne suis pas capable de le faire moi-même. Autrement dit, les bibliothèques doivent servir à gagner du temps, et non pas à combler les lacunes (sinon on se retrouve avec des "développeurs" qui ne savent absolument rien faire).
8  5 
Contacter le responsable de la rubrique Accueil

Partenaire : Hébergement Web