Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

La programmation orientée-objet est-elle dépassée ?
Une école en sciences informatiques l'élimine de son programme d'introduction

Le , par Idelways

265PARTAGES

7  3 
Enseigner la programmation aux étudiants de premier cycle sans parler d'orientée-objet : hérésie ? Bêtise inadmissible ?
Pourtant, une prestigieuse école américaine l'a fait. Il s'agit de l'école des Sciences Informatiques de l'Université Carnegie Mellon à Pittsburgh (Pennsylvanie).

Jugée antimodulaire et antiparallèle par essence, et même inappropriée pour un enseignement moderne des sciences informatiques, la programmation orientée-objet a tout bonnement été éliminée du programme d'introduction de cette école.

Robert Harper, enseignant et instigateur de cette « révolution », explique sur son blog qu'il dispensera désormais des cours de programmation fonctionnelle aux étudiants de première année.
Ce cours fera partie du nouveau programme d'introduction qui comportera un autre nouveau cours qui traite de la programmation impérative.

Ces deux cours seront obligatoires pour les promotions « Data Structures » et présenteront, toujours d'après Robert Harper la programmation parallèle comme le cas général plutôt que comme l'exception.

Très facultatif, un cours de méthodologie de conception orientée-objet peut cependant être suivi par les « sophomores » (étudiants de deuxièmes années) qui souhaitent étudier ce sujet.

Et vous ?

Que pensez-vous de cette démarche ?
La programmation orientée-objet est-elle d'après vous dépassée ?
Enseigner la programmation fonctionnelle et impérative avant la programmation-objet a-t-il du sens ?

Source : blog de Robert Harper

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

Avatar de octal
Membre éprouvé https://www.developpez.com
Le 25/03/2011 à 14:33
Citation Envoyé par Idelways Voir le message
la programmation orientée-objet a tout bonnement été éliminée du programme d'introduction de cette école.
Le titre est un peu provocateur/trompeur.
Le cours a simplement été supprimé de la classe préparatoire, la classe d'initiation à la programmation. Il ne s'agit nullement de ne pas apprendre la POO aux élèves durant leur cursus scolaire, il s'agit de pas la leur inculquer durant le cours de première année **uniquement**.

Maintenant personnellement je suis 100% d'accord avec ce choix s'il est fait pour permettre aux élèves de garder un esprit "ouvert" en leur apprenant juste le nécessaire pour être prédisposer à apprendre toutes forme d'expression algorithmique dans le future, qu'elle soit appliquées sur de la POO ou pas.

Actuellement et dans un futur très proche, on parle plus de programmer sur architectures parallèles. Or la POO donne un très mauvais plis pour les élèves qui seront censés plus programmer sur des architectures parallèles.

PS. A ne pas confondre, il n'est pas dis que la POO ne s'applique pas à la programmation concurrente (concurrency), il s'agit de parallelisme (parallelism)!!!
18  0 
Avatar de Ryu2000
Membre extrêmement actif https://www.developpez.com
Le 25/03/2011 à 13:46
Un jour les élèves de cet établissement seront bien obligé de s'y mettre et ça va faire beaucoup à apprendre en une fois.
20  3 
Avatar de julien.63
Membre éprouvé https://www.developpez.com
Le 25/03/2011 à 14:03
je suis surpris de voir à quelle point l'homme est proche de la machine. C'est à dire binaire: c'est noir ou blanc, pour ou contre, objet ou fonctionnel.

Je trouve qu'il est utile d'apprendre différente façon concevoir une application et de choisir celle qui sera la plus adaptée pour répondre à une question donnée.

Au delà de ça, je trouve aussi que c'est très prétentieux. Si certains concepteurs en sont venus à créer la programmation object c'est qu'il y avait un besoin et que cette manière de procéder permettait d'y répondre mieux que les solutions existantes à cette époque.

C'est sain d'avoir l'esprit critique mais il ne faut pas non plus se croire toujours plus malin que les autres.
14  1 
Avatar de octal
Membre éprouvé https://www.developpez.com
Le 25/03/2011 à 14:40
Citation Envoyé par Traroth2 Voir le message

Mais l'OO a un certain nombre d'avantages difficiles à contester : la facilité de séparation des préoccupations, qui est la base de la modularisation, une factorisation du code plus efficace (types génériques, héritage, polymorphisme), une meilleure maintenabilité (hériter d'un type plutôt que de le modifier permet d'éviter beaucoup de régression)...

C'est justement ce genre de phrases que le professeur en question ne voudrait pas voir ses élèves dire, parce que tout simplement c'est FAUX!!! c'est ce que j'ai appelé le "mauvais plis" dans mon poste précédent.

Quand on fait de la programmation concurrente (sur architecture parallèles), ce genre de phrases n'a aucun sens, la POO est même un handicap dans certains cas. En programmation concurrente, on ne sépare pas les tâches en les encapsulant chacune dans une classe à laquelle on affecte une responsabilité, on les sépares en définissant les responsabilité via des contrats (protocoles) et on affect chaque tâche (bout de code) à un process (fut il un thread or vrai process ou ...) à part pour qu'il soit executé. La POO et son encapsulation devient un vrai handicap dans certains cas. C'est encore pire dans le cas des architectures ou l'on a besoin de faire du traitement parallèle et où ce traitement est piloté pas évènements!!!

Pour vous faire un idée à quel point on subit une "déformation professionnelles/intellectuelle" on n'apprenant que le modèle de programmation OO en language impératif, essayez de chercher sur le web la CSP et le langage OCCAM (pas OCALM, je parle bien de OCCAM).

Toujours dans le même post (original en anglais) l'auteur donne une réponse à un commentaire pour expliquer (d'une manière très élégante je trouve) pourquoi la POO pose pb:

johnzabroski says:
March 23, 2011 at 5:01 pm
Object-oriented programming requires correct domain decomposition, and so its primary source of parallelism is going to be the parallelism in the problem domain, rather than sequences of operations performed on objects. (However, I think “anti-parallel” is a bit sensationalistic.)
13  0 
Avatar de ymoreau
Membre émérite https://www.developpez.com
Le 25/03/2011 à 14:06
Je ne vois pas en quoi c'est une révolution, on apprend toujours la programmation fonctionnelle avant la POO, il faut bien démarrer par quelque chose. Cette école ne fait que retarder l'apprentissage de la POO au second cycle ou l'annuler, ce qui va juste créer des lacunes pour les étudiants en développement ou en tout cas les mettre en retard.

Ça revient au même que certains diplômes qu'on donne alors que les étudiants n'ont rien compris à la POO (ou même à la prog en général), des gens qui auront du mal à trouver du travail dans ce domaine.
12  3 
Avatar de Traroth2
Membre chevronné https://www.developpez.com
Le 25/03/2011 à 14:27
Anti-modulaire, l'OO ? Je ne comprends pas.

Personnellement, les trucs qu'on nous expliquait quand j'étais étudiant, que l'OO permettait une compréhension plus intuitive de la programmation parce que ça suivait mieux la logique humaine, j'ai toujours trouvé ça fumeux.
Mais l'OO a un certain nombre d'avantages difficiles à contester : la facilité de séparation des préoccupations, qui est la base de la modularisation, une factorisation du code plus efficace (types génériques, héritage, polymorphisme), une meilleure maintenabilité (hériter d'un type plutôt que de le modifier permet d'éviter beaucoup de régression)...

Surtout, de fait, l'OO est très utilisé actuellement. Ces étudiants seront donc moins bien préparés à la réalité qu'ils rencontreront en entreprise.
10  3 
Avatar de Firwen
Membre expérimenté https://www.developpez.com
Le 25/03/2011 à 15:53
Il est nettement moins absurde d'apprendre l'OO en deuxième année aprés avoir appris un langage impératif, que d'apprendre à des élèves à faire des class avant même d'avoir appris les concepts de base (variable, fonctions, pointeurs, réferences ) comme ça se voit en France.
9  2 
Avatar de Oneiros
Membre à l'essai https://www.developpez.com
Le 25/03/2011 à 16:38
Tout à fait d'accord avec octal. Il y a, au moins en France, une sorte d'obsession pour l'OO qui rend ce paradigme intouchable.
Je dois vivre dans un coin reculé de la france alors...
La plupart des cours ne se base pas sur l'objet puisqu'on a des cours d'objet à coté.

Moi ce que j'ai remarqué c'est que n'ayant commencé de mon coté que par l'objet je comprenait autant l'objet que le reste contrairement à tous ceux qui ont commencé par exemple avec le c qui ne pige rien à l'objet et qui donc ne font pas d'objet juste parce que il n'ont pas l'habitude.

Quand on fait de la programmation concurrente (sur architecture parallèles), ce genre de phrases n'a aucun sens, la POO est même un handicap dans certains cas.
Autant que l'inverse peut être vrai.

Et puis il n'y a pas que l’impératif et l'objet.

Maintenant personnellement je suis 100% d'accord avec ce choix s'il est fait pour permettre aux élèves de garder un esprit "ouvert" en leur apprenant juste le nécessaire pour être prédisposer à apprendre toutes forme d'expression algorithmique dans le future, qu'elle soit appliquées sur de la POO ou pas.
Ne voir qu'un paradigme n'aidera en rien à l'ouverture d'esprit.

Il est nettement moins absurde d'apprendre l'OO en deuxième année aprés avoir appris un langage impératif, que d'apprendre à des élèves à faire des class avant même d'avoir appris les concepts de base (variable, fonctions, pointeurs, réferences ) comme ça se voit en France.
Non c'est faux le problème n'est pas de commencer par l'un ou par l'autre (en plus, concrètement j'ai plus remarquer que ceux qui commençai par l’impératif avait du mal avec l'objet, alors que personnellement ayant fait l'inverse je n'ai eu aucun problèmes preuve que ces généralités sont les vrais absurdités ).

Le problème des écoles est simplement qu'elle n'apprennent pas aux élèves à "apprendre", on leur balance un programme qui de toutes façon ne parcourra qu'une infime partie de ce qui existe.

Avec l’avènement d'internet et des moyen de communication elles ferai mieux d'apprendrent à chercher des ressources plutôt qu'a ce contenter de ce qu'il apprendront dans un temps bien trop cours pour en savoir suffisamment.

Il n'y a pas de paradigme meilleur ou non qu'un autre.
Il n'ont juste pas la même utilité.
Apprendre l'impératif en occultant le reste n'est pas mieux que l'inverse.

Les base en programmation sont avant tous a mon avis, d'apprendre a chercher des info dans la doc technique d'un langage ou d'une librairie, d’analyser les erreurs renvoyer par le compilo ou le débugger, d'apprendre a lire un code source.
De plus avoir un aperçu même bref de ce qui existe a l'avantage de montrer que ça existe libre après de s'y intéresser plus en avant ou non selon ses ambition ses motivation et ses objectifs.

Arrivé en deuxième année et ne même pas savoir que la poo existe ou n'en avoir que des idée reçu (du genre poo = garbage colector,......), c'est pas forcément un bien.

Je trouve pas que l'idée de n'introduire qu'un seul concept soit une marque d'ouverture d'esprit.
La seule vrai réponse à tout restera "ça dépend" (du contexte de l'individu des objectifs de celui-ci,...)

je suis surpris de voir à quelle point l'homme est proche de la machine. C'est à dire binaire: c'est noir ou blanc, pour ou contre, objet ou fonctionnel.
Alors que ç'est ça capacité à apprendre de sa propre volonté qui fait une grande différence avec la machine.

La c'est la technique de l’entonnoir inversé on se concentre sur un point spécifique et lorsque l'ont a tous les réflexes bien encrés, on dois les casser pour apprendre autre chose ou on se contente de ce cas spécifique.

la programmation orientée-objet a tout bonnement été éliminée du programme d'introduction de cette école.
Introduire les sciences informatiques en en virant une bonne partie ?

Bah en même temps, c'est déjà comme ça dans les universités françaises depuis un bon moment.
Dans mon DUT on à fait de l'algo de l'uml du système du python du java du c et du c++ dés la première année (chaque langage associé a une utilisation qui lui va bien)

Par contre en web on a fait que du php/js ce qui ne ma pas empêcher de voir RoR ou django par moi même.

Chaque vision et paradigme à ses avantage et ses inconvénient qui changent en fonction de ses besoins et de ses habitudes.

Moi j'ai décide de me concentrer sur l'objet parce que ça m’intéresse et que ça me sert mes objectif.( ce qui ne m’empêche pas de voir le reste mais je ne peux le faire si je ne connait pas ce reste).

Ce contenter de ce qu'on apprend à l'école c'est ça qui est au final le plus absurde tant les "Sciences de l'informatique" sont vastes.
7  0 
Avatar de Flaburgan
Modérateur https://www.developpez.com
Le 25/03/2011 à 16:19
j'aimerais comprendre de quoi il s'agit vraiment. J'ai fait l'iut informatique de Grenoble et en première année, je n'ai jamais entendu parler d'objet. nous n'avons fait que de l'iteratif en Ada et en C. En deuxième année par contre, beaucoup de C++ et de java. Si c'est de cette approche qu'il s'agit dans la news, rien de révolutionnaire. S'il s'agit par contre de complètement faire disparaître l'objet du cursus, c'est vraiment stupide car les étudiants y seront confrontés en entreprise, et apprendre l'objet sur le tas et pour moi une grosse bêtise.
6  0 
Avatar de daimoc
Membre à l'essai https://www.developpez.com
Le 25/03/2011 à 16:14
Bah en même temps, c'est déjà comme ça dans les universités françaises depuis un bon moment.
Chez nous en Bretagne on fait ses armes avec de la programmation fonctionnelle et plein de parenthèse .... haaaaa le scheme
Perso, j'ai pas eu d'enseignement de la POO avant BAC +3, donc c'est pas franchement une révolution de l'enseignement.
Mais bon ça vient des States c'est mieux.......
5  0