Journal Il faut sauver le soldat %

Posté par  (site web personnel) .
Étiquettes : aucune
-2
26
fév.
2009
Bon ok, c'est voué à l'échec, mais n'empêche !

J'aime les challenges, donc faisons bouger le monde, révoltons nous, menaçons de faire du perl (euh non) ou du ruby (non plus) à la place

Bref, si vous aussi vous n'aimez pas la verbosité du string.format pythonesque, alors signez mes très chères moules, signez !


C'était un message de l'association des castors lapons

http://www.petitiononline.com/PyString/
  • # Mouhahahaha

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

    N'importe quoi.
    • [^] # Re: Mouhahahaha

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

      non mais sans blague, j'ai pas suivi le troll de bout en bout, mais pourquoi ils ne pourraient pas cohabiter ensemble ? C'est dur à maintenir ce petit % ?

      Si c'est juste philosophique, je trouve ça dommage. Pour de vrai hein
      • [^] # Re: Mouhahahaha

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

        Une pétition n'est pas la bonne méthode pour discuter d'une fonctionnalité. Passe plutôt par la liste de discussion « python-dev », explique les arguments pour conserver l'ancienne notation et répond aux critiques que tu vas recevoir.

        Au sujet de ton argumentation, je la trouve très faible.

        ... string.format which is (...) more _verbose_

        boring to type

        The brackets are not easily found by our fingers on azerty keyboard (altgr + [5/+])

        the resulting expression is longer

        good syntaxic sugar

        Tu ne vas pas convaincre les développeurs avec ces arguments. L'argument de la concision est opposé aux principes de Python : relit « import this ».

        Dans la balance, il faut aussi mettre les défauts de cette notation qui sont nombreux et ont plus de poids selon moi :
        http://linuxfr.org/comments/1011166.html#1011166
        • [^] # Re: Mouhahahaha

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

          Mon argumentation est faible, mais c'est malheureusement les seuls éléments que j'ai pour la défense de ce brave %

          Oui, je trouve ça plus simple à écrire, et c'est tout !

          écrire {0} ca revient à tapper [altgr+4][shift+0][altgr+=] soit 6 touches (sans compter le .format(...)) là ou avant je faisais [shift + %][s] soit 2 touches. C'est tout. Alors après on peut dialoguer 10 ans sur le fait de savoir si c'est mieux, moins bien, pareil ou pas, mais moi, à mon très humble niveau, bah je préfère tapper %s et donc si _ça ne coute rien_ (et j'insiste là dessus, car je ne sais pas ce que ça peut couter, justement), bah je préfèrerai que les gentils développeurs de python ne touchent pas au %.
          Après pour l'histoire des erreurs, de l'homogénéité du langage et tout et tout, c'est sûrement vrai d'autant que t'es impliqué dans le développement python donc tu sais sûrement plus que moi de quoi tu parles, mais pour l'usage quasi quotidien que j'ai de python (une sorte de couteau-suisse), j'ai jamais eu de soucis avec le % !

          Voilà, donc non je n'irai pas dialoguer avec les gens de la mailing list python, car comme tu l'as souligné, mon argumentation est pauvre et je vais me prendre une volée si je tente de dialoguer avec des gens qui s'impliquent vraiment.

          Mais bon, je me disais, une pétition ca prend 4 minutes à écrire, j'ai pas trop besoin d'argumenter, les gens qui sont ok signent, les autres passent leur chemin, et tout le monde il est content, et je moi je m'auto-congratule à constater que j'suis pas tout seul à aimer le % :)
          • [^] # Re: Mouhahahaha

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

            Sinon tu peux changer d'agencement de clavier…
            • [^] # Re: Mouhahahaha

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

              ah non alors. Je me suis enquiquiné toute ma vie à tapper sur un azerty, alors c'est pas maintenant que je rox les ours que j'vais apprendre une autre disposition !

              Surtout que pour avoir déjà été obligé de tappoter sur un qwerty quelques temps, je sais qu'après c'est pas évident de jumper d'un clavier à l'autre, car même en étant mauvais au qwerty, je choppais des habitudes malgré tout

              Et dans la vraie vie les 3/4 des claviers sont azerty, donc autant rester sur le standard de fait.
              • [^] # Re: Mouhahahaha

                Posté par  . Évalué à 3.

                Et dans la vraie vie les 3/4 des claviers sont azerty, donc autant rester sur le standard de fait.

                Je pense quand même que dans la vrai (en tout cas dans ma planète), la majorité des clavier sont imprimer avec la disposition chinoise (je ne sais pas ce que c'est et je ne sais même pas si je sais l'écrire) ou en qwerty (si c'est la disposition qu'ils utilisent majoritairement en inde)

                De plus de quel azerty parles-tu? Par exemple l'azerty belge a les accolades en altgr+9 ou 0.

                Donc un standard dans les clavier, à part au milieu de la France, je ne vois pas d'où tu le sort.

                « 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: Mouhahahaha

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

                  c'est de la mauvaise fois ou bien ?

                  Bien sûr que statistiquement il y a sûrement beaucoup plus de clavier chinois dans le monde ou de qwerty que mon azerty, et je te crois sur parole quand tu me dis que l'azerty belge n'est pas comme l'azerty français. Mais moi, dans ma vraie vie à moi qui vit en france, je me fiche royalement des dispositions des pays d'à coté, car chez moi les claviers sont tous les mêmes à quelques détails près. Que ce soit au boulot, chez des amis, ou sur tous mes précédents pc, les touches étaient à peu près au même endroit, donc oui l'azerty est pour moi un standard, et manque de pot les accolades sont très mal situées dessus.
                  • [^] # Re: Mouhahahaha

                    Posté par  . Évalué à 2.

                    Ce qui me choque c'est que tu dise que c'est un standard de fait, il suffit que tu passe une frontière (ou que tu trouve un geek avec un dvorak ou un bepo) pour te trouver avec une autre disposition donc à part le qwerty (puisque les chinois l'utilise), je ne vois pas ce que tu peux appelé un standard de fait.

                    C'est ce genre d'arguments qui fait que tu te retrouve (cas vécu, mais sous windows), avec un logiciel qui n'utilise pas le mappage par défaut de windows mais l'azerty français parce que le logiciel est en français.

                    « 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: Mouhahahaha

                  Posté par  . Évalué à 5.

                  Pour info:
                  Les chinois utilisent un clavier qwerty standard.
                  De toute façon ils tapent leurs caractères soit en suivant la phonétique (le plus courant et de loin), soit suivant un code qui décrit le dessin du caractère.
                  Le chinois simplifié compte environ 20,000 caractères, donc ils ne se sont jamais fait ch... à trouver une disposition adaptée à ça.

                  HS1: Je n'ai pas connaissance d'un Dvorak adapté au chinois simplifié. Mais il faut se rappeler aussi que le "Chinois" comme langue, c'est en fait le Mandarin pour la Chine continentale et Taiwan, et le Cantonais pour HK et le Canton (enfin pour ces deux derniers on voit une nette progression du Mandarin aussi). Bref, il va falloir faire plusieurs Dvorak chinois...

                  HS2: Pour ceux que ça intéresse, le dessin du caractère, il faut savoir que les idéogrammes chinois doivent être dessinés suivant un ordre précis dans les traits, avec une direction précise de la plume. Ainsi, un trait "horizontal" n'est pas un simple trait horizontal, c'est un trait tracé de gauche à droite, qui intervient à une certaine étape précise et prévisible -quand on y comprend quelquechose- dans le dessin. Ainsi, à partir d'une description de l'enchaînement des traits élémentaires sans indiquer leur position précise, le logiciel d'entrée peut proposer les caractères correspondant.
              • [^] # Re: Mouhahahaha

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

                [ironie]
                ah non alors. Je me suis enquiquiné toute ma vie à utiliser du windows, alors c'est pas maintenant que je rox les ours que j'vais apprendre un autre système !

                Surtout que pour avoir déjà été obligé d'utiliser un unix quelques temps, je sais qu'après c'est pas évident de jumper d'un système à l'autre, car même en étant mauvais avec unix, je choppais des habitudes malgré tout

                Et dans la vraie vie 90% des postes sont sous windows, donc autant rester sur le standard de fait.
                [/ironie]

                /me satisfait d'avoir appris à utiliser la disposition bépo et à utiliser un système unix.
          • [^] # Re: Mouhahahaha

            Posté par  . Évalué à 2.

            Fais du latex.

            Tu auras les doigts tellement exercés pour les {} que ça te semblera même plus rapide :)
            • [^] # Re: Mouhahahaha

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

              J'ai fais du latex. Et c'est précisément parce que ça me saoulait d'écrire ces accolades que j'ai très vite utilisé Kile :)
              • [^] # Re: Mouhahahaha

                Posté par  . Évalué à 3.

                Je vois pas en quoi Kile te permet d'éviter les accolades (du moins la plupart).

                « 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: Mouhahahaha

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

                  Bah Kile a un set plutôt pas mal de fonctions accessibles via les menus, pour insérer des balises automatiquement, ce qui limite pas mal l'appel aux touches { ou }
                  On sélectionne par exemple le texte qu'on veut mettre en gras, on clique sur le bouton "Gras" et hop plop devient \textbf{plop}
                  • [^] # Re: Mouhahahaha

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

                    Le gras, c'est mal. Et les balises de mise en forme logique, c'est pire.
                    • [^] # Re: Mouhahahaha

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

                      Et les balises de mise en forme logique, c'est pire.

                      Physique, pardon, physique. Les balises de mise en forme logique, c'est ce qu'il faut utiliser à la place.
                      • [^] # Re: Mouhahahaha

                        Posté par  (Mastodon) . Évalué à 1.

                        Tu veux dire, par exemple en HTML, utiliser STRONG à la place de B, et EM à la place de I ?

                        Yth.
                        • [^] # Re: Mouhahahaha

                          Posté par  . Évalué à 2.

                          Mais ça n'a aucun sens en LaTeX (vu que c'est déjà censé etre des balises de mise en forme logique).

                          « 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: Mouhahahaha

                    Posté par  . Évalué à 2.

                    Donc tu préfère perdre du temps à bouger la main de ton clavier vers ta souris pour aller cliquer sur gras plutôt que de taper 2 accolades, j'ai quand même l'impression qu'il y a une perte de temps.

                    « 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: Mouhahahaha

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

            c'est malheureusement les seuls éléments que j'ai pour la défense de ce brave %

            Accessoirement, dans la branche Python 2.x, aucune fonctionnalité n'est supprimée depuis Python 2.0 (sorti en 2000). Donc ton « brave % » restera jusqu'à la mort de Python2... et c'est pas encore prévu. Donc, tu t'inquiètes un peu tôt je trouve. Personne ne t'oblige à utiliser Python3.
            • [^] # Re: Mouhahahaha

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

              En fait, j'ai testé la branche py3k (future 3.1) : bah la syntaxe « format % args » existe toujours... Où as-tu vu que la syntaxe % est dépréciée, car ça me dit rien ?! Apparemment, cette pétition est donc doublement inutile.
              • [^] # Re: Mouhahahaha

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

                Bah dans "what's new in python 3.0"[1] on peut par exemple lire :

                PEP 3101: Advanced String Formatting. Note: the 2.6 description mentions the format() method for both 8-bit and Unicode strings. In 3.0, only the str type (text strings with Unicode support) supports this method; the bytes type does not. The plan is to eventually make this the only API for string formatting, and to start deprecating the % operator in Python 3.1.


                [1] http://docs.python.org/3.0/whatsnew/3.0.html
                • [^] # Re: Mouhahahaha

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

                  The plan is to eventually make this the only API for string formatting, and to start deprecating the % operator in Python 3.1.

                  Il y a beaucoup de conditionnel... Parfois, des fonctions marquées comme dépréciées survivent de longue années, voir perdent leur status « déprécié » plus tard :-)
                  • [^] # Re: Mouhahahaha

                    Posté par  (Mastodon) . Évalué à 5.

                    "eventually" n'a rien de conditionnel. Le but est bien, à terme, de ne garder qu'une seule API.
                    • [^] # Re: Mouhahahaha

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

                      Le cas désormais classique des frenchies qui confondent eventually avec eventuellement et actually avec actuellement :)

                      Pour rappel : "eventually" signifie "finalement" ou "au bout du compte", et "actually" signifie "en fait"
  • # J'aime pas les %

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

    Je n'aime pas les %. Pas plus que je n'aime l'utilisation d'accolades. Les %, je ne les aime pas parce que c'est une syntaxe absconse issue du C et que je déteste le C. Le string.format, je ne l'aime pas parce que c'est une syntaxe abstruse qui n'a pas sa place dans un langage élégant. Franchement, vous avez envie d'écrire "My name is {0:{1}}.".format(name, length)

    Si jamais j'ai l'idée bizarre de faire un print, je préfèrais utiliser sa variadicité :
    print "My name is ", name[:length], "."
    Ou éventuellement (vu qu'en py3k, ça ne passera sans doute pas) faire des concaténations de chaînes.
    • [^] # Commentaire supprimé

      Posté par  . Évalué à 6.

      Ce commentaire a été supprimé par l’équipe de modération.

      • [^] # Re: J'aime pas les %

        Posté par  . Évalué à 2.

        Oui sur ce coup là on se demande si c'est pas fait exprès pour ne pas ressembler à leur concurrents.
        Quoique pour éviter tout problème, je préfère entourer systématiquement mes variables entre accolades ${name} au lieu de $name
      • [^] # Re: J'aime pas les %

        Posté par  . Évalué à 1.

        Ou éventuellement (vu qu'en py3k, ça ne passera sans doute pas) faire des concaténations de chaînes.
        Surtout oh surtout au grand jamais malheureux sinon autant faire du php /o\


        Comment on fait quand les chaînes sont relativement longues, contiennent plus de trois variables tout en gardant le code relativement visible (ie. en gardant l’ordre dans lequel apparaissent les éléments dans la chaîne) ?
        • [^] # Commentaire supprimé

          Posté par  . Évalué à 3.

          Ce commentaire a été supprimé par l’équipe de modération.

    • [^] # Re: J'aime pas les %

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

      Déjà, la notation « format % arguments » est une des seules à utiliser des opérateurs, alors que la grande majorité utilise des méthodes (ex: chaine.strip()) ou des fonctions, (ex: len(chaine)). C'est une exception au langage qui n'est pas homogène avec le reste du langage.

      Cette notation souffre de défauts, il existe la forme « "%s" % var » et la forme « "%s" % (var1, var2) », et la première est source de problèmes :
      >>> x="1 2"; print "%s" % x
      1 2
      >>> x=(1, 2); print "%s" % x
      Traceback (most recent call last):
      File "", line 1, in
      TypeError: not all arguments converted during string formatting

      Il est difficile d'expliquer pourquoi « parfois ça marche, parfois non ». Il faut utiliser la 2e forme qui est plus laide (virgule toute seule qui semble bizzare) dans ce cas :
      >>> x=(1, 2); print "%s" % (x,)
      (1, 2)

      Il existe une 3e forme où les arguments sont nommés :
      >>> print "%(truc)s" % {'truc': (1, 2)}
      (1, 2)

      Le problème est le suffixe S qui semble sorti de nulle part et qu'on oublie facilement :
      >>> print "%(truc)" % {'truc': (1, 2)}
      Traceback (most recent call last):
      File "", line 1, in
      ValueError: incomplete format

      Bref, la notation « format % arguments » est concise mais est source de problèmes subtiles, difficile à voir pour un œil non entrainé.

      Anecdote : La traduction française de Gajim comportait un bug. Je me souviens plus des détails, mais c'était une erreur du genre : « Login : %(login)s » qui était traduit « Identifiant : %(login) ». Le S étant oublié, le formatage de la chaîne lance une erreur. Mais bon, je pense qu'un traducteur (très souvent quelqu'un qui ne programme pas) peut aussi faire des bêtises avec la notation "{...}".
      • [^] # Re: J'aime pas les %

        Posté par  . Évalué à 4.

        Déjà, la notation « format % arguments » est une des seules à utiliser des opérateurs, alors que la grande majorité utilise des méthodes (ex: chaine.strip()) ou des fonctions, (ex: len(chaine)). C'est une exception au langage qui n'est pas homogène avec le reste du langage.

        Et alors ? C'est pratique. La pureté n'a aucun intérêt si elle engendre des trucs lourds qui sont obligatoires alors que les trucs légers et pratiques (mais qui ont certes aussi leur défauts) sont supprimés.

        Il faut utiliser la 2e forme qui est plus laide (virgule toute seule qui semble bizzare) dans ce cas

        C'est n'importe quoi comme argument de vouloir supprimer le % parce les tuples singleton sont laids.
        • [^] # Re: J'aime pas les %

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

          C'est n'importe quoi comme argument de vouloir supprimer le % parce les tuples singleton sont laids.

          Non, j'essayais de dire que .format() n'a pas deux formes pour les arguments indexés (en opposition aux arguments nommés) :
          * "%s" % x
          * "%s" % (a, b)
          Dans le 1er cas, le comportement change selon que x est un tuple ou non. On peut tomber dans le panneau.

          Tandis qu'avec format :
          * "{0}".format(x)
          * "{1}, {2}".format(a, b)

          La syntaxe est homogène et ne prête à confusion. Pour reproduire le comportement « args=("cle", "valeur"); "%s=%s" % args », on doit utiliser le caractère étoile qui indique explicitement d'on « déroule » le tuple : "{0}={1}".format(*args).
          • [^] # Re: J'aime pas les %

            Posté par  . Évalué à 2.

            Effectivement c'est mieux d'éviter cette "subtilité" gênante et en repensant à quelques bugs que j'ai écrit à cause de ça j'avoue que le fait que la forme .format() évite ce piège est bonne.

            Mais je reste quand même un peu sentimentalement attaché au %

            J'imagine que dans quelques années je l'aurais oublié. Snif.
    • [^] # Re: J'aime pas les %

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

      print "My name is ", name[:length], "."

      Très très mauvaise idée au niveau internationalisation.
  • # Commentaire supprimé

    Posté par  . Évalué à 10.

    Ce commentaire a été supprimé par l’équipe de modération.

  • # J'ai rien compris...

    Posté par  . Évalué à 6.

    Ma méconnaissance totale de Python semble y être pour quelque chose.
    Mais en attendant, si on avait pu avoir un semblant d'explication du problème, ça aurait pas été un mal...
    • [^] # Re: J'ai rien compris...

      Posté par  . Évalué à 5.

      En python pour mettre en forme une chaine de caractère avec des valeurs, tu peux utiliser l'une des 2 techniques mentionnées ci-dessus. La technique du : print 'Salut %s' % 'plop' (qui sort "Salut plop") est la plus connue et utilisée, mais la nouvelle formule print 'Salut {0}'.format('plop'), qui fait exactement la même chose, tend à la remplacer.

      Tu noteras que la seconde technique est plus longue à écrire.

      D'après l'auteur du journal, la technique utilisant % sera déclarée obsolète dans la prochaine version mineure de Python 3, d'où un appel à sauver le soldat %.
      • [^] # Re: J'ai rien compris...

        Posté par  . Évalué à 1.

        La nouvelle façon d'écrire est peut être un peu plus longue, mais plus claire à l'usage, et surtout on s'abstrait de l'utilisation de types primitifs louches, du genre des dictionnaires ou des tuples dont on se demande ce qu'ils font là.
        • [^] # Re: J'ai rien compris...

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

          Bin euh et aussi, on peut utiliser facilement N fois le même argument au sein de la chaîne.
          "Hello {0}! How are you today {0}?"


          Non, vraiment, meurs % ! Meuuuuurs ! >:-)
          • [^] # Commentaire supprimé

            Posté par  . Évalué à 2.

            Ce commentaire a été supprimé par l’équipe de modération.

            • [^] # Re: J'ai rien compris...

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

              Oui mais apparemment le suffixe 's' semblerait alors sortir de nulle part et certaines personnes l'oublierait facilement :) (cf. ce qui a été dit plus haut)
    • [^] # Re: J'ai rien compris...

      Posté par  . Évalué à 5.

      Dans la philosophie de Python, il ne devrait exister qu'un seul moyen à la fois optimal et unique pour faire une tâche en particulier. L'avantage du caractère % utilisé dans le formatage, et qu'il est concis et proche du C, donc facile à adopter pour des personnes qui connaissent déjà ce langage.


      Par exemple :

      num_loto = 42
      je_gagne = 10000
      print "mon numero de loto est %d, je gagne %d"%(num_loto, je_gagne)

      Maintenant, cette caractéristique faisait double emploi avec l'utilisation des dictionnaires :

      ma_phrase = "bonjour %(perso1)s, bonjour %(perso2)s"%{'perso1':'julia','perso2':'franz'}
      print ma_phrase

      On a aussi les templates :

      import string
      ma_phrase = string.Template('$arg1 additionne a $arg2 donne $arg3')
      ma_phrase.substitute(arg1='1', arg2='2', arg3='3')
      print ma_phrase


      Tout ça fait qu'il est difficile de s'y retrouver pour un débutant qui voudrait apprendre ce langage. Quel outil de formatage ? Dans quelle condition ? Et on s'éloigne alors de la philosophie de Python.

      Ceux qui viennent du C se retrouveront facilement dans le formatage par arguments dans la chaînes, ce qui est un ersatz et est vraiment hétérogène avec le reste du langage.

      Python3, en cassant la compatibilité ascendante, vient résoudre ce genre de petits problèmes du langage.

      Mais les nostalgiques protestent, parce que ça va demander des efforts de se ré-adapter alors qu'on avait déjà une méthode connue.
      • [^] # Commentaire supprimé

        Posté par  . Évalué à 7.

        Ce commentaire a été supprimé par l’équipe de modération.

        • [^] # Re: J'ai rien compris...

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

          On leur a demandé aux débutants ? Pour ma part quand j'ai débuté en python, je me souviens de mettre extasié devant la concision et la clareté du %.

          Pareil, c'est exactement ce que je disais à un gars dans les forums de developpez.net, et qui me disait je cite :"Je ne trouve pas que c'est logique de devoir connaître les tuples et la surcharge d'opérateur pour pouvoir comprendre comment le formatage peut fonctionner."

          Moi quand j'ai commencé le python j'en avais rien à secouer de savoir ce qu'était réellement les parenthèses derrière le %, j'ai juste compris que chaque chaine pouvait être formatée simplement via le "%s%s"%(ma_variable1,ma_variable2) et je trouvais ça génial !

          Mais on doit être une minorité faut croire, vu les vagues (mode marseillais) d'incompréhension qu'on soulève
        • [^] # Re: J'ai rien compris...

          Posté par  . Évalué à 2.

          J'ai été un peu choqué en apprenant Python, de voir qu'il y avait plusieurs manières de formater des chaînes, avec des objets type dictionnaire et tuples que je ne connaissais pas encore, n'ayant jamais utilisé de langage avec un tel niveau d'abstraction.

          Donc, je pense que ce changement contribue à la simplicité du langage, qui se veut tout de même un des principaux atouts de python.
          • [^] # Commentaire supprimé

            Posté par  . Évalué à 3.

            Ce commentaire a été supprimé par l’équipe de modération.

  • # Une pétition ?

    Posté par  . Évalué à -10.

    Demander une pétition pour lutter contre un emplâtre sur une jambe de bois, c'est dommage. Apprends plutôt un vrai langage, et pas cette espèce de langage bâtard qui a dû attendre la version 2.4 pour utiliser un AST dans la phase d'analyse statique du code (ce qu'on apprend au CE1 pour n'importe quel langage un peu sérieux, soit dit en passant).

    'Fin bon, si des amateurs veulent s'amuser avec ce gadget en toc, pourquoi pas.
    • [^] # Re: Une pétition ?

      Posté par  . Évalué à 1.

      À quel "vrai langage" est-il fait allusion ? Ça m'intéresse quand même :)
      • [^] # Re: Une pétition ?

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

        Visual Basic bien sûr
      • [^] # Re: Une pétition ?

        Posté par  . Évalué à -3.

        Au hasard, un langage fortement typé, statiquement typé, compilé ou interprété (au choix), très rapide, peu verbeux, offrant des features sympathiques comme l'inférence de type, des objets comme des foncteurs, du bon gros pattern matching, etc. Il y en a quelques uns, fais ton choix.
        • [^] # Re: Une pétition ?

          Posté par  . Évalué à 3.

          Par exemple ocaml ? C'est intéressant, je m'y mets tout de suite.
        • [^] # Re: Une pétition ?

          Posté par  (Mastodon) . Évalué à 5.

          Je vais choisir un langage disons...
          - interprété, parce que pour le compilé j'ai le C qui me convient bien ;
          - rapide ;
          - peu verbeux ;
          - a la syntaxe claire (au revoir bash, perl...) ;
          - plutôt sans contraintes de typage, parce que si j'ai besoin de faire un truc super précis, ben j'ai encore le C, là ça serait plutôt pour moins me prendre le choux ;
          - un bon paquet de bibliothèques variées et aisément disponibles ;
          - ah tiens, s'il pouvait y avoir une killer-feature comme un interpréteur en ligne de commande, un shell du langage en somme, ça tuerait tout, pouvoir tester rapidement un fonctionnement, une fonction, sans écrire tout un programme, juste écrire le bout de code qui t'intéresse et voir ce qu'il donne, super pratique ça, ça manque a des langages comme le PHP ou même le javascript (pourtant ça serait faisable en js)... ;
          - intéropérable évidemment (au revoir java (on est vendredi !), et visualbasic, la larme à l'oeil (mwarfff...)) ;
          - qui permette aisément de faire un programme, un site web, un script, tout ça dans un même langage, histoire de ne pas en apprendre douze différents, je connais déjà le C en plus, deux langages plus le HTML/CSS/JS, ça suffit amplement ;
          - qui soit adapté au calcul scientifique (bc c'est sympa mais un peu limité quand même) ;
          - et qui fait ce qu'on attend de lui sans même avoir besoin de t'imposer de mettre $ devant tes noms de variables ;
          - qui permette d'éviter de voir l'ignoblissime syntaxe venue de certains inutilisateurs du C qui consiste à mettre l'accolade ouvrante à la ligne, pouaaark !

          Bref, ça fait pas mal de contraintes, j'en ai heureusement un sous la main.

          Python.


          Yth.
          • [^] # Re: Une pétition ?

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

            > sans même avoir besoin de t'imposer de mettre $ devant tes noms de variables ;

            Cela, c'est une connerie.

            Je trouve que le $ devant les variables en bash, en perl génial. C'est d'une clarté limpide. En plus, en perl, il y en a toujours (même à l'affectation). Il n'y a aucune confusion avec les mots clef du langage.

            L'horreur, c'est le CSH qui est tordu sur l'usage du $.

            OK, perl a des problèmes de lisibilité mais ce n'est pas à cause du $ devant les variables.

            En fortran 90, j'avais la convention suivante, tous les mots clef du langage en petit caractère et toutes les variables en majuscules. Le code était limpide.

            Faire resortir les mots clefs du langage par rapport aux variables, ou inversement, est un excelente idée,
            • [^] # Re: Une pétition ?

              Posté par  . Évalué à 6.

              T'utilises le notepad de Windows pour ne pas avoir de coloration syntaxique ?
            • [^] # Re: Une pétition ?

              Posté par  . Évalué à 5.

              > Il n'y a aucune confusion avec les mots clef du langage.

              Oui mais vu que en Python tout est objet même les fonctions, classes, modules etc tu te retrouverai a préfixer absolument tout avec un dollar, sauf une grosse douzaine de mot clé. Un peu ridicule ...
            • [^] # Re: Une pétition ?

              Posté par  (Mastodon) . Évalué à 2.

              J'approuve le commentaire de msieur_happy, la coloration syntaxique est encore ce qu'il y a de mieux, de plus simple et répandu, pour ce différencier variables, valeurs, fonctions, mots-clefs, erreurs de syntaxe, etc.

              Franchement, pour coder en PHP tout les jours pas vraiment par choix, ces $ devant chaque nom de variable me fatiguent. C'est exactement comme le ; en fin de ligne : totalement inutile, ça plante directement dès qu'ils n'y sont pas, la correction de l'erreur est toujours syntaxiquement évidente.
              Le seul et unique intérêt du $ devant les noms de variable est en bash comme en PHP de les glisser directement dans les chaînes de caractères : echo "Bonjour $nom !" , ça c'est pratique.
              Ben... C'est tout ce que j'ai trouvé...

              Après, avoir de bonnes conventions de codage pour voir clairement les variables, leur type prévu ou leur utilisation, ou même leur champs d'action, c'est valable quel que soit le langage.
              Mais je n'ai aucune difficulté à lire, même sans coloration syntaxique, un truc du genre :
              for x in ma_liste:
              print x
              Ce n'est pas moins clair, au contraire, que :
              foreach($ma_liste as $x) {
              echo $x;
              }

              Yth.
              • [^] # Re: Une pétition ?

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

                la coloration syntaxique est encore ce qu'il y a de mieux, de plus simple et répandu, pour ce différencier variables, valeurs, fonctions, mots-clefs, erreurs de syntaxe, etc.

                Plus répandu, il y a des chances. Mais un petit gars qui bosse sur KDevelop te dirait que ce n'est pas ce qu'il y a de mieux : on en arrive à la coloration sémantique, et je trouve l'idée vachement bonne !

                http://zwabel.wordpress.com/2009/01/08/c-ide-evolution-from-(...) pour en savoir plus.
                • [^] # Re: Une pétition ?

                  Posté par  (Mastodon) . Évalué à 1.

                  Tu pourrais expliquer rapidement avec genre un exemple marquant ?

                  Yth.
                • [^] # Re: Une pétition ?

                  Posté par  (Mastodon) . Évalué à 1.

                  Ok, après avoir lu ta page, je vois que j'utilise déjà la coloration sémantique avec Python sous emacs, même si peut-être pas autant poussé que dans les exemples de ton lien.

                  C'est juste que j'appelais ça de la coloration syntaxique... A mon avis c'est simplement l'évolution logique de la coloration syntaxique, et ça me parait tellement évident que je suis surpris que des gens découvrent ça en le trouvant génial.

                  Mais ouais, c'est bien la coloration sémantique, c'est la fête !

                  Yth.
          • [^] # Re: Une pétition ?

            Posté par  . Évalué à 3.

            Youpii c'est vendredi :)

            Le perl peut être très clair; tout dépend de celui qui l'écrit.
            Une expression rationnelle peut être écrite sur plusieurs ligne, commentée en plein milieu; j'ai rarement vu la syntaxe, mais quand on fait un truc de malade, c'est très utile.

            je peux écrire un code python illisible, je peux écrire du perl lisible. Par contre quand je dois écrire un truc qui me servira qu'une fois, j'en ai rien à battre qu'il soit lisible, j'ai besoin de le coder vite, et ça j'y arrive bien mieux en perl (et malgré tout il reste compréhensible, sauf pour les RE qui sont pas commentée :D ...)

            Il ne faut pas décorner les boeufs avant d'avoir semé le vent

          • [^] # Re: Une pétition ?

            Posté par  . Évalué à 3.

            "- qui permette d'éviter de voir l'ignoblissime syntaxe venue de certains inutilisateurs du C qui consiste à mettre l'accolade ouvrante à la ligne, pouaaark !"
            Y a quoi de mal à préférer mettre l'accolade à la ligne ?
            Je veux bien croire que le 'dredi c'est permis... Mais quand même !
            • [^] # Re: Une pétition ?

              Posté par  (Mastodon) . Évalué à 2.

              Oh, c'est vendredi, juste un lâché de troll supplémentaire.
              J'ai personnellement horreur de cette façon d'écrire, je trouve que c'est nettement moins lisible que de laisser l'accolade à sa place à la fin de la ligne à laquelle elle appartient.

              De plus, j'ai comme philosophie qu'une fonction bien écrite est courte, et se « voit » d'un seul regard. Une fonction ne devrait jamais faire plus d'un écran de long en nombre de lignes, et la moitié c'est déjà pas mal. Sachant que j'utilise en gros un terminal allongé à la hauteur de l'écran, un peu moins de 70 lignes, donc 35 lignes pour une fonction ressemble à une bonne limite floue.
              Une fonction trop longue devient illisible, s'il faut faire défiler en haut ou en bas pur la lire en entier c'est insupportable, et plus elle est courte, moins les yeux doivent faire d'aller-retours, plus elle est lisible.
              Tout en gardant une opération par ligne bien sûr.

              Donc la ligne bêtement perdue par cette accolade qui en prend une pour elle toute seule, gène en soi la lisibilité en accroissant le nombre de ligne.
              De plus, l'oeil voit bien les blocs de texte, pour repérer une fonction dans son code, on fait défiler et on regarde la forme du texte, aidé par la coloration syntaxique. Si la fonction est entrecoupée de sauts de ligne incongrus, et de lignes perdues de partout, la fonction semble découpée en tronçons et on a du mal à savoir où elle commence et où elle arrête.
              Attention, je ne dis pas qu'il ne faut pas sauter de lignes parfois dans du code, à certains endroits ça sépare des blocs logique et aide à la lisibilité du code, mais il ne faut pas le faire n'importe où.
              C'est comme écrire un texte, un livre, tu utilises des paragraphes pour aérer, mais pas des tas de paragraphes d'une seule phrase non plus, le texte est regroupé en groupes de phrases logiques.

              Bref, l'accolade à la ligne c'est, à mon sens, une perte de lisibilité.
              Après c'est ma vie, mes couleurs, mon appréciation de la chose, mes gouts, mais c'est au moins un peu réfléchi comme avis, donc pas juste un lâché de troll dans le vent du matin :)

              Yth.
              • [^] # Re: Une pétition ?

                Posté par  . Évalué à 3.

                Ben perso, et j'ai presque envie de dire "pour les mêmes raisons" (la lisibilité, la séparation), je préfère l'accolade à la ligne.
                Je trouve qu'elle sépare la déclaration de la fonction du corps de cette dernière.
                De plus, comme elle se trouve seule et sur la gauche, elle ressort bien. Ce qui me permet de repérer d'un coup d'œil les limites d'un bloc logique, surtout que sa sœur se trouve aussi alignée, plus bas.

                Ensuite, sur le fait qu'une accolade à la ligne, c'est une ligne de perdue... Je trouve l'argument moyen. D'abord, parce que quand on dit qu'une fonction ne devrait pas dépasser mes 70-80 lignes, c'est un ordre de grandeur et non une valeur figée. Ensuite parce que si on approche de cette valeur fatidique, et qu'on en est à décaler les accolades, c'est qu'on n'est pas en train de gratter où il faut. Il vaudrait mieux, AMHA, se pencher sur la découpe de la fonction en plusieurs, à factoriser son code, ...
                • [^] # Re: Une pétition ?

                  Posté par  (Mastodon) . Évalué à 1.

                  On est d'accord sur l'ordre de grandeur, je n'ai pas de valeur précise, ma règle c'est juste : si j'ai du mal à « voir » la fonction d'un seul coup d'oeil, c'est qu'elle est trop longue et qu'il faudrait que je cherche à la découper, ou à la réécrire mieux.
                  « Gagner » une ligne pour chaque accolade ouvrante rend la fonction plus compacte tout en étant à mon sens plus lisible : je vois mieux les blocs logique comme ça, une ligne vide ça a plein de sens, l'indentation en a aussi.
                  On est vraiment dans le visuel là, ce que mon oeil perçoit rapidement, d'un seul coup, avec le minimum d'analyse de la part du cerveau.
                  Et j'ai horreur de l'accolade à la ligne parce qu'elle me gène, et je sépare mes fonctions d'au minimum deux lignes sauf si elles sont très étroitement liées.

                  Donc ces lignes ce n'est pas du grattage pour faire tomber la taille sous une limite dure, c'est vraiment parce que je trouve ça illisible avec l'accolade à la ligne. Ca casse la logique de l'indentation, c'est laid, et j'aime pas ça :)

                  Yth.
            • [^] # Re: Une pétition ?

              Posté par  . Évalué à 1.

              Ca n'est pas la manière bénie par K&R.
              C'est donc le MAAAAAAAL
  • # Viendez faire du Ruby...

    Posté par  . Évalué à 4.

    ...On fait des cookies.
  • # C Uber Alles

    Posté par  . Évalué à 9.

    Ben maintenant, tu as ptet compris que ce qu'il y a vraiment de cool avec le C, le vrai, c'est qu'il n'y a aucun pénible qui vient d'emmerder à t'expliquer comment tu dois écrire ton code.

    Et ça, c'est royal...
    • [^] # Re: C Uber Alles

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

      Ah ouais, et si j'ai envie d'écrire les arguments de mon printf avec des {}, je fais comment ? Me dis pas que le C me force à utiliser des % quand même !?
      • [^] # Re: C Uber Alles

        Posté par  . Évalué à 3.

        Tu peux te coder une fonction my_printf qui prendra la syntaxe que tu voudras.

        Tous les nombres premiers sont impairs, sauf un. Tous les nombres premiers sont impairs, sauf deux.

        • [^] # Re: C Uber Alles

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

          Ah tiens, et en Python on peut pas coder des fonctions ?
          • [^] # Re: C Uber Alles

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

            Ah bah quand ils auront viré l'opérateur % ce ne sera plus possible non. Ce sera tellement verbeux que j'écrirai dorénavant mes fonctions en java
            • [^] # Re: C Uber Alles

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

              Faut coder en Ruby qui permet de rajouter des méthodes/opérateurs aux types de base.
              • [^] # Re: C Uber Alles

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

                En fortran 90, on peut aussi avoir autant d'operateur que l'on veut avec la syntaxe

                .operateur.

                C'est très pratique. J'ai deux vecteurs, je veux le produit scalaire

                v1 .scalar. v2

                J'ai deux tenseurs, je veux aussi le produit scalaire

                t1 .scalar. t2

                Je me suis battu avec des thésards pour avoir cet opérateur .scalar. et non pas * comme beaucoup pense. *, c'est l'opérateur produit, mais produit de quoi : scalaire, vectoriel... Avec l'opérateur *, on ne sais jamais le type du résultat de l'opération et les formlules mathématiques deviennent imbittables.

                En C ou en C++, on ne peut pas faire cela et c'est bien dommage, les formules de math sotn bien moins claires et du coup le risque d'erreur est plus important.

                Si on souhaite un langage qui puisse faire "des math", il est important de laisser libre champs aux opérateurs et ne pas se cantonner aux seules méthodes. Les méthodes cassent la symétrie et ne reflète pas la formule

                v1.scalar(v2)

                est très différent de

                v1 .scalar. v2

                Dans le second cas, on a bien un produit scalaire entre deux vecteurs, ces deux vecteurs étant au même niveau.

                Je crois que c'est une des raisons pour lesquelles perl6 ne sera pas pure objet et que les concepteurs veulent garder l'aspect multi-fonctions.

                En dehors des math, je n'ai pas d'opinion et je ne sais pas si cela est aussi important.
          • [^] # Re: C Uber Alles

            Posté par  . Évalué à 1.

            Rien à voir avec la réponse. Merci d'avoir joué.

            Tous les nombres premiers sont impairs, sauf un. Tous les nombres premiers sont impairs, sauf deux.

  • # Fais un fork!

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

    Ben oui, le libre c'est aussi ça. Tu vas me dire que ça rendra ta version de Python incompatible avec celles installées sur les autres machines. Tu serais bien pessimiste: ta version serait tellement supérieure que tous les utilisateurs et les distribs passeraient rapidement à ta version!
    • [^] # Re: Fais un fork!

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

      J'ai déjà croisé un mec qui a forké Python (il avait SON langage de programmation basé sur Python) pour rendre l'utilisation du point optionnel entre un objet et son attribut : obj.attr=42 s'écrit alors « obj attr = 42 », de même a.b.c=d s'écrit « a b c=d ». J'ai regardé ce que ça donne et je trouve le résultat (code écrit dans ce nouveau langage) moins lisible.

      Après, y'a ceux qui veulent rendre self implicite... Encore un grand débat qui brasse de l'air depuis des années alors qu'il a été expliqué à plusieurs reprises pourquoi self est une bonne chose et nécessaire pour certaines constructions (j'ai pas d'url sous la main) ;-)

Suivre le flux des commentaires

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