• [^] # Re: Super projet

    Posté par (site web personnel, Mastodon) . En réponse à la dépêche Une calculatrice scientifique libre sous Linux (materiel). Évalué à 3. Dernière modification le 16 octobre 2014 à 18:15.

    Pour moi c'est le même niveau de difficulté sur cet exemple.

    Non, pour moi l'exemple que tu donnes est plus compliqué, car l'écriture de l'expression mathématique n'est pas "naturelle". Sauf si l'environnement de calcul (la "ligne de commande" de la calculatrice) est une ligne de commande python.

    Je m'explique : le gros avantage des langages que j'ai présenté, c'est que la manière d'écrire les formules dans les programmes, c'est exactement pareil que lorsque l'on tape la formule hors programme. Avec la 8500G, dans sa "ligne de commande", pour calculer 2x√3x2842, je tape 2x√3x2842. (il y a les touches √, x, 2). C'est assez naturel (pas autant qu'un vrai éditeur d'équation qui permet de taper une équation comme sur le papier, il est vrai). Et dans un programme, je tape exactement la même chose.

    Idem avec la HP48 en notation algébrique (en notation RPN, c'est moins naturel, mais une fois maitrisé, on calcul beaucoup plus vite ;-) RPN ROXOR).

    Bref, l'utilisateur n'est pas perdu, il rentre doucement dans le monde de la programmation, avec un très faible investissement.

    Avec une machine avec un langage uniquement python :

    • soit on garde un interpréteur de ligne de commande classique qui comprends directement 2x√3x2842 : l'utilisation "normale" de la calculatrice reste simple et classique. Mais dés qu'il faut programmer, il faut vraiment apprendre un nouveau langage, parce que l'écriture des formules n'est pas la même. Il faut donc savoir que pour calculer une racine carré, on ne tape pas √ mais faut appeler une fonction sqrt(). Premier obstacle : apprendre ce qu'est une fonction, des arguments etc (même si ça peut être assez rapide à comprendre pour un mathématicien). Deuxième obstacle, se souvenir des équivalences notation algébrique <-> fonction python. Par exemple : en lisant a**2, je n'aurais pas su que c'était la notation "puissance" si je n'avais pas eu un équivalent sous les yeux. L'éditeur de programme pourrait faciliter les choses (on appuie sur la touche √, et ça insert un sqrt()), mais la lecture des programmes peut rester un peu compliqué et ça peut dérouter l'utilisateur les premiers temps.

    Bref, le temps d'apprentissage est plus long, la marche plus haute, pour un non développeur. Et tout utilisateur ne se destine pas à devenir développeur.

    • soit l’interpréteur de ligne de commande est un interpréteur python. Donc même syntaxe en ligne de commande et dans les programmes. Mais là, l'écriture des formules devient vite pénible et peu intuitive pour un nouvel utilisateur (c'est très loin d'être "comme sur le papier", comme sur les bouquins de classes).

    Bref, pour moi, Python pour remplacer le "basic" des calculatrices n'est pas une bonne solution (ou alors la calculatrice se destine uniquement aux geeks). Par contre, comme "deuxième" langage pour les développements complexes, ça peut être une bonne chose. Ça ouvre la porte à tout type de programmes.

    PS: autre argument en défaveur du Python comme langage principal : l'indentation. Pas seulement parce que ça oblige à indenter, mais surtout parce que les écrans de calculatrices sont petits. À mon avis, on se retrouve vite à scroller horizontalement, et là, ça devient très très pénible (pour info, l'écran de la hp48, c'est 13 colonnes avec une fonte normale; on peut avoir une fonte plus petite mais on attend peut-être 20-25 colonnes, ce qui reste insuffisant à mon avis, et ça devient vite fatiguant à lire).
    Sur un écran de 15 colonnes, ton programme devient :

    a = input("Sai
    if a > 0:
     print a * sq
    else:
     print "ERREU
    

    ça devient juste illisible (et pourtant la formule est simple). Avec des langages comme ceux que j'ai présenté, n'ayant pas d'indentation à respecter, tout peu passer à la ligne.

    << "Saisissez
    A" PROMPT → A
     << IF 'A>0'
     THEN
     '2*√3*A^2'
     →NUM
     ELSE
     "ERREUR"
     0 DISP
     WAIT
     END 
     >>
    >>
    

    C'est moi beau que sur un écran 80 colonnes, mais ça reste lisible sur 15 colonnes.