21 août 2015

7 messages - Retourner à l'article
  • L’informatique sans ordinateur

    le 21 août 2015 à 11:18, par orion8

    Deux extraits de l’article consacré à DIJKSTRA sur Wikipedia :

    — L’aphorisme « L’informatique n’est pas plus la science des ordinateurs que l’astronomie n’est celle des télescopes. » souvent attribué à Dijkstra, est en fait une phrase de Michael R. Fellows et Ian Parberry dans un article du journal Computing Research News.

    et (un peu hors sujet, mais je suis un peu d’accord avec cette opinion, tout en pratiquant -hélas- les BASIC Casio et Texas avec mes élèves de lycée) :
    — « Il est pratiquement impossible d’enseigner la bonne programmation aux étudiants qui ont eu une exposition antérieure au BASIC : comme programmeurs potentiels, ils sont mentalement mutilés, au-delà de tout espoir de régénération. »

    Une anecdote : j’avais émis quelques réserves sur le BASIC auprès d’un élève de 2de particulièrement doué, et lui avais conseillé de s’informer sur PYTHON. Après 15 jours de vacances, il savait parfaitement programmer dans ce langage ! Cet élève entre en Tale S, et a participé brillamment, en 1°S, à toutes les étapes du concours CASTOR/ALGORÉA.
    Ce concours est consacré à l’algorithmique et à la programmation, mais pas aux ordinateurs !

    Répondre à ce message
    • L’informatique sans ordinateur

      le 24 août 2015 à 11:44, par Baptiste Mélès

      Bonjour,

      Merci beaucoup pour votre témoignage. La programmation est tout à la fois à la fois une école de rigueur, comme les mathématiques, et une pratique aussi ludique que les jeux vidéo. Espérons que les élèves y prennent goût, comme l’exemple que vous citez...

      Bien cordialement,

      Baptiste Mélès.

      Répondre à ce message
  • L’informatique sans ordinateur

    le 29 août 2015 à 13:20, par Lhooq

    Je ne réussis pas trop à comprendre cette vision de la chose.

    Je m’explique.

    Vous dites

    les applications des concepts et les méthodes du traitement automatique de l’information ne sont pas réservés au monde des ordinateurs.

    le projet pédagogique Computer Science Unplugged préconise d’enseigner l’informatique à l’aide de cartes, de ficelles et de crayons plutôt qu’en distribuant des tablettes numériques dans les écoles

    L’informatique est une discipline formelle, c’est-à-dire un domaine de recherche dont les concepts, les méthodes et les critères de vérité ne dépendent pas de faits ni de supports matériels particuliers.

    mais pour cela vous vous êtes basé sur trois domaines spécifiques que vous avez réduits à un exemple pour chaque :

    • Les protocoles IP en réseau
    • La recherche dichotomique
    • Le langage UML

    N’est-ce pas là confondre la modélisation et l’implémentation ? Vous faites le parallèle avec les maths et la logique (combien de fois entendrai-je encore ce parallèle, je ne le sais guère) quand je pense qu’un parallèle plus pertinent serait de comparer l’informatique à la physique. Les mathématiques et la logique sont des supports théoriques, la physique mélange théorie et application (ou alors vous pourriez parler de maths appliquées mais il semble que cette discipline soit un peu bâtarde au sein des mathématiciens tout comme l’informatique sur ordinateur à laquelle je vais revenir immédiatement).

    Une façon de voir les choses est de se dire qu’entre l’idée et son application il y a deux travaux différents à fournir. Je peux avoir un algorithme qui sur le papier est très bon et qui calcule ma solution en $\Theta(n)$ mais qui fait un accès mémoire par itération quand un autre calcule en $\Theta(n^2)$ mais ne fait qu’un seul accès mémoire. Si je ne connais rien à l’architecture de ma machine, pensez-vous que je choisirai le bon ? Si je sais quelle quantité de données je devrai manipuler, pensez-vous que j’en sélectionnerai un plus qu’un autre à implémenter ? Si je crée un programme s’occupant de faire voler un drone de façon autonome, verrai-je immédiatement sur le papier que la vibration des rotors risque de gêner mon gyroscope ? N’ai je pas besoin de calculer le bruit de ces rotors ? N’ai-je pas besoin d’avoir ce drone à portée de mains ?

    Je peux même vous proposer un petit jeu. Pourriez-vous me fournir un algorithme calculant l’ensemble des sous-ensembles d’un ensemble ?

    Bien évidemment, il y aura toujours des gens pour distinguer une informatique qu’ils considèrent comme noble, qu’ils aiment à appeler l’informatique théorique en pensant que cela est la même chose que les fondements théoriques de l’informatique d’une informatique d’ordinateur. Des gens qui pensent que coder est trivial ou en tous cas bien moins intéressant qu’un tableau (le noir avec craie est révolu, il faut passer au blanc avec marqueur, c’est bien plus pratique :-p). Des gens qui pensent que ceux qui codent sont des techniciens. J’ai même entendu des chercheurs dire que tel chercheur qui essayait d’accéder à un poste de DR ne pourrait pas l’avoir car il codait, ce qui n’est pas, pour eux, un travail de recherche.

    L’exemple des pigeons, par exemple, est très beau et je trouve que vous n’en avez compris qu’une partie. Oui, la couche réseau est indépendant de la couche physique, mais le réseau contient les deux. Si je veux créer un réseau P2P je n’utiliserai certainement pas les pigeons car je connais le débit de ce réseau. Et c’est ça la richesse de ce vaste domaine, idéaliser, modéliser, se prendre la réalité dans la bouche (lorsqu’un ami et moi avions essayé de coder SimCity sur nos calculatrices nous avions rapidement découvert la triste réalité de l’entier maximal représentable) et s’adapter. Et toutes ces branches sont l’informatique, et faire l’une sans penser aux autres est, je trouve, aberrant.

    En fin de compte, pour résumer tout cela, se baser sur trois exemples étant caractéristiques de la modélisation d’un problème et une solution théoriques de l’implémentation effective de cette solution revient à dénigrer tout un travail sur ce qui se passe dans une machine et qui est du domaine de l’informatique.

    Cordialement,

    Lhooq

    Répondre à ce message
    • L’informatique sans ordinateur

      le 1er septembre 2015 à 10:29, par Baptiste Mélès

      Bonjour,

      Merci beaucoup pour vos remarques. Les exemples que vous donnez ne me semblent pas aller contre la thèse du texte, mais plutôt la confirmer. Dire qu’un savoir est formel, ce n’est pas dire qu’il ne peut pas être matériel, mais simplement qu’il ne dépend pas de ses implantations matérielles.

      Par exemple, vous parlez d’architecture d’un ordinateur : c’est quelque chose d’éminemment formel. Si vous lisez un programme comme le code source d’Unix v6 écrit pour PDP-11, vous n’avez généralement pas de PDP-11 ni même de simulateur sous la main, mais vous pouvez facilement en trouver le manuel sur le web et comprendre le fonctionnement des parties du programme écrites en assembleur. Le code source, édité et commenté par John Lions, peut se lire dans le bus, sans PDP-11 sous la main. Il arrive même très fréquemment dans l’industrie qu’on écrive des programmes pour une machine qui n’existe pas encore et dont on ne connaît que l’assembleur ou les interfaces de programmation (API).

      J’ignore où l’article vous a paru exprimer du dédain pour le codage. Si vous appelez noble ce que j’appelle formel, le codage est une activité aussi « noble » qu’écrire des mathématiques. Quand on écrit des mathématiques, on utilise un stylo et du papier, mais ce n’est pas une activité essentiellement physique pour autant : le matériau utilisé est quelconque.

      Il existe certes une pratique du codage dans laquelle l’interaction avec un ordinateur physiquement existant est importante, c’est l’empirisme (la programmation à tâtons) et le débogage par tests (en nombre fini). C’est une pratique utile quand on commence, et même assez ludique, mais ce n’est pas nécessairement la meilleure pédagogie (dans les universités et écoles d’ingénieurs, les examens de programmation ont plutôt lieu sur papier) et ce n’est surtout pas une garantie d’absence de bugs. Cette dimension-là est l’équivalent du brouillon en mathématiques : on progresse par essais et ratures. Il faut bien commencer par programmer à tâtons, mais l’idéal est d’arriver à s’en passer le plus possible.

      Enfin, vous pensez m’objecter un fait avec lequel l’article est tout à fait en accord : la couche physique est essentielle aux réseaux. Oui, mais elle est quelconque. Si un jour on trouve mieux que la fibre optique ou les câbles électriques, on n’aura probablement pas besoin de refondre le protocole Internet ni la théorie des réseaux.

      Bien cordialement,

      Baptiste Mélès.

      Répondre à ce message
      • L’informatique sans ordinateur

        le 1er septembre 2015 à 10:33, par Baptiste Mélès

        Bonjour,

        Encore une chose : vous qui prêtez à l’article un mépris pour le codage, peut-être serez-vous intéressé par le séminaire suivant, dont le programme 2015-2016 paraîtra prochainement :
        http://poincare.univ-lorraine.fr/fr/seminaire-codes-sources

        Bien cordialement,

        Baptiste Mélès.

        Répondre à ce message
      • L’informatique sans ordinateur

        le 1er septembre 2015 à 17:33, par Lhooq

        Bonjour,

        Justement, c’est là que, selon moi, vous vous trompez. Pour reprendre le principe du réseau, si un jour on trouve mieux que la fibre optique, par exemple qu’on peut créer des noeuds contenant directement la table de routage mondiale, on adaptera sûrement les algorithmes au fait que les possibilités physiques sont meilleures. Autre exemple, un algorithme distribué appliqué à un réseau d’ordinateurs ou à un réseau de capteurs n’est pas du tout le même. Ce que je veux dire est donc la chose suivant :

        L’informatique, contrairement aux mathématiques, a besoin de connaître son support.

        Comprenons-nous bien, je ne néglige pas le travail d’un algorithmicien, je considère simplement qu’il ne fait pas de l’informatique mais bien de l’algorithmique. L’algorithmicien fournit un brouillon formel à l’informaticien :D (oui, émoticône car cette phrase me fait rire moi-même en imaginant la tête d’un algorithmicien qui lirait ça)

        Pour en revenir à

        Il existe certes une pratique du codage dans laquelle l’interaction avec un ordinateur physiquement existant est importante, c’est l’empirisme (la programmation à tâtons) et le débogage par tests (en nombre fini).

        Premièrement, vous n’avez pas répondu à mon petit jeu ;-), deuxièmement, non, il existe beaucoup d’autres domaines où coder avec un vrai ordinateur est important. Par exemple, savoir si on travaille sur une machine acceptant ou pas le parallélisme et coder dessus me semble plutôt fondamental. Récemment, j’ai lu la review d’un article en démonstration automatique (plutôt théorique, comme domaine) où l’auteur se faisait copieusement gronder car il n’avait fournit aucune implémentation et donc son « algorithme révolutionnaire » n’avait aucune réalité.

        Je ne néglige pas la partie « théorique » de l’informatique. C’est ce qui est en partie enseigné à l’université. Mais la raison pour laquelle les machines de Turing restent cantonnées au domaine de l’algorithmique sont bien là. On ne fait pas de l’informatique sur papier. On ne peut que faire un brouillon très éloigné de la réalité.

        Amicalement (oui, il ne faut jamais oublier l’amicalité :-)),

        Lhooq

        Répondre à ce message
        • L’informatique sans ordinateur

          le 2 septembre 2015 à 08:51, par Baptiste Mélès

          Bonjour,

          L’informaticien a besoin de connaître son support ; mais ce support est idéalisé. Si, pour reprendre votre exemple, on trouve un support permettant de délocaliser en chaque nœud la table de routage (ce qui, du reste, n’arrive pas tous les jours, ni même apparemment tous les 50 ans), on inventera un nouveau protocole ou une variante de l’existant (sans doute une surcouche qui permettra de faire abstraction des différences entre les deux supports), et ce protocole vaudra pour tous les supports du même type, aussi différents qu’ils soient, matériellement parlant, du premier découvert. Si Internet avait strictement dépendu du matériel réseau des années 1970, on n’aurait pas pu l’adapter à la fibre optique, aux ondes radio, etc. et ce protocole serait depuis longtemps obsolète.

          De plus, il est évidemment fondamental, comme vous l’écrivez, de savoir si l’on programme sur une machine parallèle ou non (ainsi que de connaître la mémoire disponible, le jeu d’instructions du processeur etc., selon le type de langages que l’on utilise). Il se trouve, fort heureusement, que c’est noté dans la documentation de la machine. On peut ainsi écrire un programme pour une machine qui est encore en cours de construction. Souvent, la machine pour laquelle on programme quand on apprend un langage de programmation est sa « machine virtuelle », qui n’est généralement pas celle que l’on a sous les yeux, et pourtant, aux yeux du programmeur, elle est aussi concrète.

          Quand l’article ci-dessus dit que la matière est laissée « à notre discrétion », il ne faut pas comprendre par là qu’elle soit arbitraire, mais au contraire, selon la définition usuelle, laissée à notre sagacité. Comme indiqué dans l’exemple du dictionnaire, elle doit respecter certaines consignes. Par exemple, l’écriture sur le papier est relativement stable, mais pas l’écriture sur l’eau, ni l’écriture sur le sable un jour de grand vent. L’important n’est pas de connaître le matériau, mais ses propriétés.

          Quant à vos derniers mots, l’article auquel vous réagissez est peut-être plus nuancé que les positions que vous vous déclarez las d’entendre et auxquelles il vous a paru faire écho. Vous semblez lui prêter la thèse selon laquelle la vraie informatique se passe d’ordinateur, alors que son propos est seulement de dire qu’il existe aussi une informatique sans ordinateur. La conclusion dit explicitement que l’ordinateur est l’objet informatique par excellence. Le propos de ce texte n’est pas non plus de privilégier l’informatique « théorique » sur la pratique informatique : comme vous l’aurez remarqué, le premier et le troisième exemple relèvent davantage de l’ingénierie que de l’algorithmique.

          Bien cordialement,

          Baptiste Mélès.

          Répondre à ce message
Pour participer à la discussion merci de vous identifier : Si vous n'avez pas d'identifiant, vous pouvez vous inscrire.