Journal La linotte et le python...

Posté par  (site web personnel) .
Étiquettes :
15
6
mar.
2012

Bonjour,

Je ne viens pas vous conter une fable (quoique) mais vous annoncer l'information suivante : la prochaine version du langage de programmation Linotte 1.7 proposera la possibilité d'écrire des greffons en langage de programmation Python !

Voici une première démonstration très simple.

  • La première étape est de créer ce petit fichier en langage Python PyTest.py contenant le code suivant :
    from org.linotte.greffons.externe import Greffon    
    class PyTest(Greffon): 
       
      def slot_message(self):
        return "Spam and eggs!"

Déposez ce petit fichier dans le répertoire "greffons" et vous pourrez l'utiliser ainsi depuis l'Atelier Linotte :

Exemple Python :    
Principal :
  Rôles :
    messager :: pytest
  Actions :
    affiche "message : " + messager.message()

  • L'accès à l'API graphique est également disponible depuis les greffons en langage Python :
    from org.linotte.greffons.externe import Graphique
    from java.awt import Color
    class PyDemo(Graphique):        
        def projette(self, g):  
            g.setColor(Color(125, 167, 116))
            g.fillRect(10, 15, 90, 60)
            g.setColor(Color(42, 179, 231))
            g.fillRect(130, 15, 90, 60)
            g.setColor(Color(70, 67, 123))
            g.fillRect(250, 15, 90, 60)
            g.setColor(Color(130, 100, 84))
            g.fillRect(10, 105, 90, 60)
            g.setColor(Color(252, 211, 61))
            g.fillRect(130, 105, 90, 60)
            g.setColor(Color(241, 98, 69))
            g.fillRect(250, 105, 90, 60)
            g.setColor(Color(217, 146, 54))
            g.fillRect(10, 195, 90, 60)
            g.setColor(Color(63, 121, 186))
            g.fillRect(130, 195, 90, 60)
            g.setColor(Color(31, 21, 1))
            g.fillRect(250, 195, 90, 60)    
            g.drawString(self.getAttributeAsString("texte"), 10, 300);    
        def getShape(self):
            return None

L'utilisateur de langage Linotte pourra afficher cet objet en utilisant le livre suivant :

Démonstration graphique:    
Principal :
    Rôles :
        graphic :: pydemo, texte vaut "Vive Python et Linotte"
    Actions :
        projette graphic

Et pour sa plus grande joie, il admirera la figure suivante sur la toile :

La Toile

Pour information, le code source du langage Linotte est disponible sous la licence GPL V3 ici : http://code.google.com/p/langagelinotte/

Merci d'avoir pris le temps de lire ce journal. Je vous souhaite une agréable journée.

  • # Petit rappel

    Posté par  . Évalué à 9.

    Pour ceux qui ne suivent pas forcément les liens, linotte

    est un langage informatique accessible à des personnes débutantes en programmation. Il offre des mécanismes simples, puissants, pédagogiques, et productifs pour créer ses algorithmes ou programmes (avec interfaces utilisateurs, graphiques en 2D ou 3D, jeux vidéos, sites Internet, etc.).

    Il me semble que la programmation est entrain d'arriver dans les lycées. Je ne connais pas les contraintes des professeurs, mais est ce que linotte est utilisable/utilisé pour ces cours ?

    Remarque pour les aigris qui expliqueraient que linotte n'est pas utilisé dans le monde de l'entreprise, etc. : Personnellement (comme une partie de mes confrères développeurs), j'ai appris la programmation avec du Basic sur ma calculatrice (une TI82). Cela me permettait de mettre au point les algorithmes vu en cours et être plus rapide pendant les contrôles. Ce basic je n'y ai touché que pour cette calculatrice et je n'ai plus jamais retouché à un quelconque basic depuis. Je n'ai pas ressenti de problème par rapport à ça.

    Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

    • [^] # Re: Petit rappel

      Posté par  (site web personnel) . Évalué à 5.

      Moi ce qui me choquerait, c'est pas qu'il soit pas utilise dans le monde de l'entreprise, c'est qu'il soit en français. J'ai rien d'un pédagogue mais je pense que c'est une très mauvaise idée d'apprendre a programmer a des lycéens avec un langage qui n'est pas en anglais (qu'ils sont tous sensée apprendre en même temps de toute façon).

      Et même pour des enfants de niveau primaire, a qui il serait bon de montrer un peu comment marche un ordinateur, je ne suis pas certain du tout qu'un langage en français soit préférable… Les langage informatiques utilisent des mots clefs, il faut de toute façon les apprendre bêtement, et apprendre que "while" permet de boucler est bien plus utile plus tard que d'apprendre que "tant que" fait boucler. En plus, je trouve super ambigu d'avoir des un espace au milieu, c'est beaucoup plus simple en anglais, l'enfant n'a pas l'impression qu'il peut parler n'importe comment a l'ordinateur…

      • [^] # Re: Petit rappel

        Posté par  (site web personnel) . Évalué à 10.

        Les anglophones doivent avoir de sacrés soucis avec la programmation alors…

        • [^] # Re: Petit rappel

          Posté par  (site web personnel) . Évalué à 4.

          Je me suis mal exprimé, c'est pas tellement la langue le problème dans ce cas, c'est le design du langage. J'aurais eu moins de problème avec "tantque" au lieu de "tant que" (comme le C a choisis "sizeof" plutôt que "size of"). Je pense quand même qu'apprendre un langage en français est contre-productif, pas parce que c'est dans notre langue, mais parce que le reste du monde code en anglais.

          • [^] # Re: Petit rappel

            Posté par  (site web personnel) . Évalué à 8.

            Mouais, ce n'est pas franchement ce que je trouve le plus dérangeant puisque pour moi, l'intérêt est d'apprendre à structurer la penser. Le problème me semble donc d'accoler artificiellement une sémantique qui est autre que la programmation : acteurs, rôles, livres, etc. Cela ne peut-il pas apporter une confusion entre leur concept en linotte et celui de la vie de tous les jours ?

          • [^] # Re: Petit rappel

            Posté par  . Évalué à 5.

            Je pense quand même qu'apprendre un langage en français est contre-productif, pas parce que c'est dans notre langue, mais parce que le reste du monde code en anglais.

            Pourquoi ? Il doit bien y avoir une quarantaine de langages « turing complet » utilisé en entreprise, n'utiliser aucun de ceux-là pose un problème ?

            Comme tu le dis ce sont juste des mots-clef quelque soit leur langue on s'en fout, il s'agit d'apprendre l'algorithmique pas un langage. Ceux qui voudront continuer dans cette voie apprendront à minima 4 ou 5 langages avant de devoir apprendre de nouvelles technologies ou langages pour travailler en entreprise. Je vois pas pourquoi se formaliser parce que les mot clefs sont dans un langage ou un autre.

            Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

            • [^] # Re: Petit rappel

              Posté par  (site web personnel) . Évalué à -1.

              Parce que même si la programmation ca marche dans toutes les langues, il se trouve que la culture informatique, c'est l'anglais.

              Quand on apprend la cryptographie, on nous parle d'Alice, de Bob, d'Eve parce que c'est dans la culture des cryptographes, on ne nous parle pas de Toto, Titi, Tata, juste pour le plaisir de changer.

              Quand on apprend une langue, on le fait en utilisant des exemples issues de la culture du pays en question, parce que ca a plus de sens, et parce que ca contribue a améliorer la culture générale.

              Et bien je ne vois pas pourquoi on n'apprendrait pas l'informatique tout en s'imprégnant de sa culture, et il se trouve que la langue largement dominante en informatique, c'est l'anglais, pas le français, pas l'allemand, pas le klingon (quoique…).

              Si effectivement ca ne change rien a l'apprentissage, je ne vois aucune bonne raison de ne pas le faire directement en anglais, pour cette raison la.

              • [^] # Re: Petit rappel

                Posté par  . Évalué à 8. Dernière modification le 06 mars 2012 à 15:38.

                Tu réécris l'histoire : il y a une culture de l'informatique en français.
                Ça ne pose d'ailleurs pas de problème particulier d'utiliser « plus » ou « conjugué » dans un sens mathématique parallèlement à un cours de grammaire qui les emploie dans un sens différent.
                En programmation, certains mots sont employés dans des sens différents par différents langages. Exemple : yield en Java ou Ruby n'a pas le même sens qu'en Python.

                Bref, je ne vois vraiment pas le problème à concevoir un algorithme avec « Si » ou « Tant que » avant de l'implémenter en utilisant les mots clefs et fonctionnalités compris par un compilateur donné ; au contraire, ça aide peut-être à faire la différence entre le cas général traité par la démonstration, et la mise en œuvre dans un langage donné qui dépend du contexte d'application.

              • [^] # Re: Petit rappel

                Posté par  . Évalué à 3.

                Parce que même si la programmation ca marche dans toutes les langues, il se trouve que la culture informatique, c'est l'anglais.

                Sauf que l'objectif n'est, il me semble, pas de leur apprendre une langue mais une manière de pensée. L'idée ce n'est (je crois) pas de leur apprendre comment est organiser la mémoire, comment fonctionne une CPU et qu'elles sont les étapes de compilation.

                Mais je peux me tromper je n'ai pas lu le BO.

                Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

              • [^] # Re: Petit rappel

                Posté par  . Évalué à -1.

                Quand on apprend la cryptographie, on nous parle d'Alice, de Bob, d'Eve parce que c'est dans la culture des cryptographes, on ne nous parle pas de Toto, Titi, Tata, juste pour le plaisir de changer.

                Quand j'ai appris la programmation, je compte pas le nombre de fois où j'ai utilisé la variable toto pourtant.

                • [^] # Re: Petit rappel

                  Posté par  (site web personnel) . Évalué à 3.

                  Ça tombe bien je parlais de la cryptographie et pas de la programmation, pour montrer qu'a chaque discipline sa culture propre.

      • [^] # Re: Petit rappel

        Posté par  . Évalué à 8.

        Quand je vois le nombre de gens qui sont paniqués dès qu'ils voient de l'anglais, je me dis que ça n'est pas forcément une mauvaise idée. Cela permet d'éviter qu'ils soient à la fois paniquer par l'anglais et par le langage programmation. Je suis d'accord que si on rationalise, ça ne fait pas de différence mais les gens qui ont peur/ne sont pas à l'aise n'ont pas vraiment tendance à rationaliser.

        « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

      • [^] # Re: Petit rappel

        Posté par  . Évalué à 3.

        Moi ce qui me choquerait, c'est pas qu'il soit pas utilise dans le monde de l'entreprise, c'est qu'il soit en français.

        Pourquoi ?

        Les concepts restent les même. Passer de tant_que à while à während qu'est ce que ça change à l'apprentissage de l'algorithme ?

        En python on écris def pour définir une fonction, en perl c'est sub, tu pense que c'est un frein au passage d'un langage à l'autre ?

        Je ne pense pas que la syntaxe ai une quelconque importance, ça pourrait être en klingon ça ne change pas l'algorithme, ni sa complexité.

        Et même pour des enfants de niveau primaire, a qui il serait bon de montrer un peu comment marche un ordinateur, je ne suis pas certain du tout qu'un langage en français soit préférable…

        Tant qu'on aura pas fait une mise à jour de nos cerveaux, je ne crois pas que charger continuellement les classes de primaire d'une multitude de matières toutes plus importantes les unes que les autres soit une bonne idée. D'autant plus que les cours sont obligatoire jusqu'à 16 ans rien ne presse.

        Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

        • [^] # Re: Petit rappel

          Posté par  . Évalué à 4.

          Tant qu'à faire, pourquoi ne pas remplacer les mots clefs universels (if, or, for, while, return…) par des symboles (sans trop rechercher, par exemple : while ⥀, nand ⊼) ?
          Ça me donne l'idée d'un clavier à affichage programmable orienté programmation avec

          • une touche "prog-lock",
          • un mode "qwerty" ou "azerty" comme celui que nous connaissons déjà,
          • et un mode (avec une touche "prog lock") qui donne en accès direct
            • les mots clefs du langage
            • la plupart des symboles du module de programme en cours d'édition + mots clefs du langage.

          Par exemple, en Python : une seule touche pour "if", "while", "def"… ainsi que pour une sélection de symboles accessibles dans le contexte courant (arguments, variables, classes, je ne sais pas exactement comment les choisir parce qu'il faut que ces symboles soient accessibles de façon prévisible sans regarder le clavier).

          L'appui sur "def" ou "class" feraient passer en mode clavier ordinaire.

          • [^] # Re: Petit rappel

            Posté par  (site web personnel) . Évalué à 3.

            Wow, tu vas bientôt avoir l'idée d'utiliser Emacs :-)

            • [^] # Re: Petit rappel

              Posté par  . Évalué à 4. Dernière modification le 06 mars 2012 à 15:40.

              Oh l'insulte !
              Au contraire, je suis inspiré par vim qui vise à minimiser le nombre de touches frappées !

          • [^] # Re: Petit rappel

            Posté par  . Évalué à 3.

            Les mathématiques ont déjà un tas de symbole que l'informatique essaie de singer avec des mots clefs comme le forall que l'on remplace par foreach ou for.

            Tant qu'à faire, pourquoi ne pas remplacer les mots clefs universels (if, or, for, while, return…) par des symboles (sans trop rechercher, par exemple : while ⥀, nand ⊼) ?

            La question c'est qu'est ce qu'ils doivent apprendre ? Un langage ou une manière de réfléchir ?

            Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

            • [^] # Re: Petit rappel

              Posté par  . Évalué à 7.

              Sans hésiter : une manière de réfléchir. Le formalisme est là pour rendre service.

              le gouvernement et le Medef répondront sans hésiter : un langage utile dans un cadre professionnel.

          • [^] # Re: Petit rappel

            Posté par  . Évalué à 5. Dernière modification le 06 mars 2012 à 19:13.

            Pour le clavier avec les mots clefs du language, le ZX80/ZX81 le faisait déjà - Ca servait surtout à économiser la mémoire RAM (1Ko en version de base…)

            Pour les symboles mathématiques, le language APL était pas mal pour ça, mais bonjour le clavier…. http://www.quantys.fr/produits/apl/clavierAPL.htm

    • [^] # Re: Petit rappel

      Posté par  (site web personnel) . Évalué à 5.

      Il me semble que la programmation est entrain d'arriver dans les lycées.

      Sous quelle forme ? (c'est une vrai question)

      Je demande car c'est pas comme si on avait supprimer l'enseignement de l'informatique en lycée depuis une bonne dizaine d'année…
      (oui avant il y avait une "option info" qui fut supprimée. entre autre cette option devait également parler de tout ce qui était informatique et libertés)

    • [^] # Re: Petit rappel

      Posté par  (site web personnel) . Évalué à 3.

      De ce que je sais, ce n'est pas la programmation qui est introduit au lycée mais l'algorithmique.

      Le logiciel le plus utilisé aujourd'hui pour ces cours est (mais n'étant pas du milieu de l'éducation, je pars de la vision que j'ai depuis mon navigateur Web et Google) AlgoBox.

      • [^] # Re: Petit rappel

        Posté par  . Évalué à 1.

        De ce que je sais, ce n'est pas la programmation qui est introduit au lycée mais l'algorithmique.

        Tout à fait :
        Dans les programmes de maths au lycée, il n'y a qu'une initiation de base à l'algorithmique (et il n'a jamais été question d'apprendre la programmation)
        Ne sont au programme que :
        - entrées sorties affectation
        - instruction conditionnelle
        - boucle itérative et boucle avec test d'arrêt
        - décrire certains algorithmes en langage naturel ou dans un langage symbolique ;
        - en réaliser QUELQUES UNS à l’aide d’un tableur ou d’un PETIT programme réalisé sur une calculatrice ou avec un logiciel adapté ;
        D'ailleurs l'épreuve de maths restant sur papier, l'éventuelle question d'algorithmique du sujet sera aussi à traiter sur papier.

        Par contre, il y aura de la programmation (entre autres) dans la future spécialité ISN (informatique et sciences du numérique) de terminale S (spécialité indépendante des maths)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.