Laurent Pointal a écrit :
> Le Tue, 01 Apr 2008 20:54:13 +0200, Wykaaa a écrit :
>
> <zip>
>
>> Le débat entame ici le fond du problème pour l'enseignement de la
>> programmation.
>> Je vais donner mon point de vue personnel qu'on peut ne pas partager
>> (mais sans polémique SVP) :
>
> Il est partagé.
> J'y ajouterais des langages à paradigmes différents (style Lisp, Prolog
> et assimilés). C'est un truc qui me manque je trouve, j'ai fait un peu de
> prolog au CNAM, mais c'est tout.
Oui tu as raison, même si cette part est moindre, pour de futurs
informaticiens, il est nécessaire de parler un minimum de programmation
fonctionnelle et déclarative. Je savais bien que j'avais oublié des
"trucs"...
>
> Note: mes collègues qui enseignent dans les cursus d'informatique en fac
> ont de plus en plus de mal de trouver des étudiants intéressés par le
> simple fait de programmer - la pluspart veulent devenir analystes, chefs
> de projets... mais surtout pas mettre les mains dans le cambouis. Pas sûr
> qu'à terme ça ne fasse pas de mauvaises surprises au niveau des cahiers
> des charges qu'ils rédigeront...
C'est tout à fait vrai mais quand on sait qu'il y a des bataillons de
programmeurs en Inde et même en Roumanie avec les salaires que l'on sait...
>
> <zip>
>
>> 2) Pour les scientifiques non informaticiens - notion de variable, de
>> valeurs litérales (sans les encombrer avec les classes d'allocation
>> mémoire (quoique des fois) - notion de sous-programme (sans les
>> subtilités de tous les types de passage d'arguments)
>> - quelques notions de typage
>> - notion de récursivité
>> - notion de modularité
>> - notion d'héritage et de polymorphisme (peut-être même pas nécessaire.
>> Dépend du contexte)
>
> + évidemment les tableaux, structures de contrôle & Co, les entrées/
> sorties...
Encore un oubli. En fait, plus généralement, il faut parler de variable
scalaire, de structures homogènes homogène (tableau, vecteur) et de
structures hétérogènes (les "records" et "structures").
>
> AMA il est important de leur montrer la réutilisation de bibliothèques
> existantes, de leur apprendre à chercher d'abord si ce dont ils ont
> besoin n'a pas déjà été réalisé dans un langage/outil quelconque.
C'est même un besoin essentiel car, aujourd'hui, un développeur fait
plus un travail d'assemblage, via des bibliothèques, qu'un pur travail
de programmation à partir de la feuille blanche.
>
>> Langage support : un langage utilisé en simulation permettant de faire
>> aisément des graphiques et de mettre en place une IHM, même rudimentaire
>> Un langage tel que le regretté HyperCard (sur Mac) était parfait pour
>> cela. Il faut trouver l'équivalent et, là , je fais appel à vos
>> suggestions à tous.
>
> HyperCard... nostalgie (SuperCard aussi dans mon cas).
>
> Il y a un soft (commercial) qui tourne de la même façon et permet de
> faire des "piles" (certains de mes collègues l'utilisent pour monter des
> manips simples).
> Ah, j'ai trouvé sur Wikipedia:
> http://en.wikipedia.org/wiki/HyperCard#External_links
> Pour mes collègues, c'est "Revolution"
Merci. Je l'avais oublié celui-là . Je vais voir où ça en est...
>
> Il y a aussi PythonCard (mais non je ne fait pas de prosélytisme) qui est
> l'utilisation de Python avec une architecture événementielle type pile
> HyperCard (mais avec les nombreuses librairies Python dispos).
> Je ne sais pas trop où il en est (voir si le dépôt versionné n'est pas
> très en avance par rapport aux tgz téléchargeables).
>
> http://pythoncard.sourceforge.net/
>
Une piste intéressante (je ne suis pas sectaire, contrairement à ce que
peut penser Bruno Desthuilliers...
>> 3) Pour les non scientifiques
>> Excel et VBA ??? (non pas taper...)
>>
>> J'ai certainement oublié des trucs mais, pour tous ceux qui sont
>> impliqués dans l'enseignement de l'informatique au sens large dans des
>> cursus divers et variés, peut-être est-ce une base de discussion ?
>
> Le premier problème avec Excel et VBA c'est un verrouillage certain sur
> des outils propriétaires (et pas donnés - s'il faut que les étudiants y
> aient accès il faut le prendre en compte... quoique Microsoft fasse des
> tarifs très préférentiels aux étudiants afin d'élargir sa gamme
> d'utilisateurs captifs).
Oui mais j'ai un collègue qui a fait des fractals (pour voir) juste avec
des macros Excel (sans VBA).
> Le second c'est que l'on préfère souvent utiliser ce que l'on connaît
> déjà pour réaliser ce dont on a besoin (on serait peut-être/sûrement plus
> efficace avec des outils plus adaptés... mais il y a la barrière/le temps
> d'apprentissage).
> Et comme outils génériques, Excel et VBA ne sont pas bons. Ce qui fait
> que l'on se retrouve avec des trucs développés par des gens de bonne
> volonté, mais qui sont des horreurs du point de vue informatique.
Les horreurs sont-elles importantes, dans ce contexte, s'ils arrivent au
résultat attendu ?
>>>> Si tu enseignes à des personnes pour qui la programmation n'est qu'une
>>>> unité de valeur obligatoire dans leur cursus, qui leur servira
>>>> peut-être plus tard (mais pas sûr), alors autant leur apprendre un
>>>> langage qui leur permette de faire simplement des choses
>>>> puissantes,:interfaces graphiques, accès fichiers, liens avec des
>>>> bases de données, manipulation des protocoles de l'internet...
>> Entièrement d'accord mais je n'ai pas la réponse en terme de langage (je
>> sens que certains vont dire ... Python)
>
> Oui oui oui.
> Bon, il faut dire que les gens qui font du Python un peu avancé ont
> beaucoup de code écrit dans d'autres langages (réutilisation de
> librairies C/C++ existantes, écriture de code de calcul optimisé...).
> Tu n'iras pas faire un soft de traitement d'image complètement en Python,
> ce n'est pas le but et ça serait particulièrement inefficace. Par contre
> tu réutiliseras des librairies pour pouvoir profiter facilement de leurs
> fonctionnalités et ajouter des services par dessus (GUI, réseau,
> changements de formats...).
Alors dans ce cas, pourquoi pas, effectivement...
>
>
> [pause] Si je reprend un exemple par rapport à ce que tu sembles avoir
> fait (vu ce que j'ai pu lire du début de la discussion), tu n'iras pas
> faire un soft embarqué d'assistance au pilotage d'un avion en Python, ça
> n'aurais aucun sens. Par contre, tu peux très bien utiliser Python pour
> automatiser les enchaînements de build et de tests unitaires de ton soft
> écrit en ADA.
> Pour cet usage, tu peux remplacer Python par Ruby, TCL, Perl ou tout
> autre langage de script un peu avancé - mais Python est une excellente
> glue - et il y a PyAda, dont le développement est malheureusement
> abandonné: http://pyada.sourceforge.net/index.html
> [/pause]
Tu sembles privilégier l'aspect script de Python. Ne serait-il utile que
dans ces cas-là ?
>
>
>>> Tout à fait.
>>> Mais l'enseignement de la programmation dans des cursus non
>>> informatiques est un vrai problème: en fait, ce sont rarement des
>>> informaticiens de formation qui les font, ce qui pose non pas un
>>> problème de qualité (que des physiciens codent des scripts python ou
>>> matlab comme des pieds, c'est pas très grave)
>
> Ouaif... sauf quand il faut les reprendre pour les adapter...
Là c'est une tâche lourde.
Je me rappelle, dans un mastère, dans les années 80 quand on apprenait
la programmation à des étudiants non informaticiens. C'était le début de
la micro et certains croyaient que, parce qu'ils avaient fait quelques
petits programmes de 50 lignes en Basic (celui de l'époque !), ils
étaient programmeurs...
C'était très difficile de les "recadrer".
>
>>> mais de positionnement
>>> (qu'est-ce que l'informatique, quels sont ces enjeux en 2008, etc).
>>>
>> Je suis assez d'accord que la "propreté" de la programmation est très
>> secondaire dans ce contexte.
>> Cependant, une vraie réflexion est nécessaire sur la place de
>> l'informatique par grandes filières et les besoins par métier. Par
>> exemple, un architecte, un géologue ou un graphiste n'ont absolument pas
>> les mêmes besoins vis-à -vis de l'informatique. Sans parler des
>> historiens, des sociologues, etc.
>
> Je leur trouverais en commun d'avoir à accéder à des bases de données et
> Ã faire des traitements pour extraire ce dont ils ont besoin... des cours
> de SQL?
Après tout, pourquoi pas. Avec l'utilisation d'outils comme BO (Business
Object) aussi.
Wykaaa