IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Actualit�s Discussion :

Programmation : Python gagne de plus en plus en popularit�

  1. #81
    Membre tr�s actif
    Homme Profil pro
    Programmeur des cavernes
    Inscrit en
    Ao�t 2017
    Messages
    364
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : Programmeur des cavernes
    Secteur : Enseignement

    Informations forums :
    Inscription : Ao�t 2017
    Messages : 364
    Par d�faut
    Citation Envoy� par jedema Voir le message
    Ouais, les mecs chez Google, Reddit et Dropbox n'aiment pas coder...
    Ils aiment coder. Mais cela n'emp�che pas que Python est le langage pr�f�r� de ceux qui n'aiment pas programmer.

    Interroge n'importe quelle promo de Miage ou de BTS. Tu verras que tous les neuneus (ceux qui ne savent toujours pas faire un programme correct de dix lignes apr�s leurs ann�es d'�tudes) te diront que Python est leur langage pr�f�r�, parce que c'est (celui qui parait) le plus simple au d�part.

    Avant le d�but de la popularit� de Python, c'�tait Java qui avait ce r�le de "langage pr�f�r� de ceux qui n'aiment pas programmer".

    Lorsqu'un autre langage aura d�tr�n� Python � son tour, je respecterai peut-�tre � nouveau Python

  2. #82
    Membre averti
    Homme Profil pro
    D�veloppeur Fullstack (Python)
    Inscrit en
    Janvier 2011
    Messages
    52
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activit� : D�veloppeur Fullstack (Python)
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 52
    Par d�faut
    Citation Envoy� par nerack Voir le message
    <<Et n'�tant pas un pro, je ne connais pas la syntaxe du C dont d�coule celle de C+, Java, JS, et tant d'autres, absconse, voire rebutante, et pr�f�re un langage lisible tel que Ruby (mais trop cantonn� au Web seul) ou python.

    Et bien tu vois, moi, c'est le contraire. Je trouve la syntaxe Python immonde et globalement les IDE d�di�s bien pourris. Concevoir une interface adapt�e au code, �a fait aussi partie des indispensables d'un IDE... Quelle gal�re avec Python. Quand on sait ce que font les autres... Et surtout comment il le font. Effectivement, je suis bien content d'avoir le choix d'�tre parfaitement satisfait de mon utilisation quotidienne de Visual Studio et de C#, d'Eclipse et de Java/Javascript/PHP. C�t� IDE orient� code, on a aussi Visual Studio Code (quand m�me bien plus sympa que Notepad++). Bref! Python, c'est pour la domotique et assimil�, les scienteux. Sorti de �a je me demande encore � quoi �a sert. Je l'ai test� trois semaines et... Jamais plus. En tout cas pas en l'�tat.
    Je vais essayer d'expliquer rapidement pourquoi j'aime particuli�rement la syntaxe de Python. En la comparant � celle d'autres langages :

    Chercher dans une chaine en PHP :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    if (strstr($ma_chaine, "texte"))
    En Python :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    if "texte" in ma_chaine:
    Chercher un �l�ment dans un tableau en PHP (notez l'inversion de param�tres en strstr() et in_array()). :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    if (in_array("valeur", $mon_tableau))
    En Python :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    if "valeur" in mon_tableau:
    Ternaire en PHP :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    $frais_de_port = ($prix > 30) ? 8 : 0;
    En Python :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    frais_de_port = 8 if prix > 30 else 0
    Je comprend que le Python soit d�stabilisant au d�but, notamment le fait de baser les blocs sur l'indentation. Mais on s'y fait vraiment bien. Je codais en PHP/JS avant de me mettre � Python. On oublie les accolades et on utilise l'indentation. A chacun son probl�me.
    Et Python ne sert pas que dans l'�ducation o� les projets scientifiques. Je l'ai utilis� pour :
    • Un projet de centralisation de tous les certificats SSL stock� sur les serveurs Certificate Transparency de Google
    • Un projet de robot effectuant des trades automatis�s sur le march� des crypto
    • Des outils de contr�le de qualit� du code.
    • Des outils de minification automatis�.
    • Un outil de monitoring de serveur utilisant inotify de Linux
    • Des sites WEB avec Django (ayant aussi cod� en Laravel, Django m'offre une productivit� 3 fois sup�rieure).
    • etc....

    Et la liste n'est pas fini, car c'est uniquement ma liste personnelle.

    En bref, je comprend ceux qui n'aiment pas Python. On ne peut pas tout aimer, surtout lorsqu'on est attach� � une techno. Mais la mont�e de Python est ind�niable et la justifier par l'�ducation est tr�s r�ducteur.

    Ce sont surement les m�mes personnes qui disaient : Le Minitel c'est largement mieux qu'Internet. Internet est li� � l'�ducation, la preuve HTML a �t� cr�� par un scientifique

  3. #83
    Membre extr�mement actif
    Avatar de Sodium
    Femme Profil pro
    D�veloppeuse web
    Inscrit en
    Avril 2014
    Messages
    2 324
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeuse web

    Informations forums :
    Inscription : Avril 2014
    Messages : 2 324
    Billets dans le blog
    1
    Par d�faut
    J'avoue que moi qui fais du PHP et n'ai jamais touch� au Python, je trouve �a limpide, surtout pour l'op�rateur ternaire que je trouve particuli�rement immonde dans les autres langages.

  4. #84
    Membre confirm�
    Homme Profil pro
    Conseil - Consultant en syst�mes d'information
    Inscrit en
    Mai 2018
    Messages
    73
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (�le de France)

    Informations professionnelles :
    Activit� : Conseil - Consultant en syst�mes d'information

    Informations forums :
    Inscription : Mai 2018
    Messages : 73
    Par d�faut
    Citation Envoy� par Christian_B Voir le message
    Je n'ai jamais compris la vogue de Python qui, au vu de n'importe quel bout de programme, me para�t mal structur�.
    En particulier les instructions composites comme if ne se terminent jamais. R�sultat, si j'ai bien compris, le programme est �troitement d�pendant non seulement des retours � la ligne (comme les shells et les anciens Basic) mais des indentations.

    Je suppose que cela donne lieu � des bogues peu visibles inconnues des autres langages, selon les blancs et les tabulations pr�sents en d�but de ligne.
    Et l'absence de mots cl�s de fin d'instruction (ou d'accolades comme en C) ne contribue s�rement pas � la clart� de programmes un peu longs.
    Et dans quel but ? une "simplification" minime et illusoire ?
    Petite pr�cision : il existe bien un indicateur de fin de bloc (pas d'instruction, un bloc �tant compos� de plusieurs instructions) : d�sindenter.

    Oui, je confirme, le risque de bogs est r�el et je l'ai r�guli�rement observ�, mais ce n'est pas un probl�me du langage mais des d�veloppeurs qui ne pr�tent aucune attention au code qu'ils �crivent. Dans leur techno d'origine o� les blocs sont d�finis par les accolades, ils se reposent en g�n�ral sur le ctrl-f pour retrouver un semblant de lisibilit� et les bogs existent car il n'y a �videmment aucun test unitaire.

    Donc � la question de pourquoi, simplement pour une question de rigueur, lisibilit� et maintenabilit�.

  5. #85
    Membre confirm�
    Homme Profil pro
    Conseil - Consultant en syst�mes d'information
    Inscrit en
    Mai 2018
    Messages
    73
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (�le de France)

    Informations professionnelles :
    Activit� : Conseil - Consultant en syst�mes d'information

    Informations forums :
    Inscription : Mai 2018
    Messages : 73
    Par d�faut
    Citation Envoy� par jedema Voir le message
    Chercher un �l�ment dans un tableau en PHP (notez l'inversion de param�tres en strstr() et in_array()). :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    if (in_array("valeur", $mon_tableau))
    En Python :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    if "valeur" in mon_tableau:
    Et encore, ajoute les

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    if "valeur" in mon_tableau[len(mon_tableau // 2:]:
    ou

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    if "valeur" in [extract_value(element) for element in mon_tableau]:
    et

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    for element in mon_tableau:
        if validate(element):
            break
    else:
        print('no such element')

  6. #86
    Expert confirm�
    Profil pro
    Inscrit en
    D�cembre 2007
    Messages
    6 814
    D�tails du profil
    Informations personnelles :
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations forums :
    Inscription : D�cembre 2007
    Messages : 6 814
    Par d�faut
    Citation Envoy� par Jamatronic Voir le message
    Ils aiment coder. Mais cela n'emp�che pas que Python est le langage pr�f�r� de ceux qui n'aiment pas programmer.
    (.../...)
    Possible, quoique je n'en sache rien.

    Mais �a pose une question : doit-on juger un langage juste sur le fait que des gnous l'utilisent? A ce titre, VBA pour excel est une sombre bouse. Pourtant, eu �gard � son �ge, il est tr�s puissant, et j'ai vu des trucs en b�ton fait avec(et j'ai aussi fait quelques trucs pas mal moi-m�me, m�me si je ne suis pas le meilleur). Ses seules vraies limites sont l'absence d'h�ritage(largement contournable) et surtout l'aspect "partage des donn�es" d'EXCEL qui est, euh, comment rester poli? Plus quelques sucres syntaxiques modernes qui montrent l'�ge du truc(pas de typage des collections, argh).

    Python permet de tout faire, avec un parti pris fort de conception, qui plait ou pas (l'indentation sert de s�parateur de bloc). Comme avec tout langage, on peut faire du meilleur comme du pire. La vraie question, pour mol, c'est juste : est-ce le meilleur outil pour mon besoin sp�cifique? Et si mon besoin sp�cifique change? La r�ponse est g�n�ralement non � la premi�re question, un langage g�n�raliste est g�n�ralement moins fort qu'un langage de niche sur un domaine pr�cis. La r�ponse � la deuxi�me question est diablement plus complexe. Et le simple fait de la poser justifie l'existence de langages g�n�ralistes comme le Python ou le Java.

    De toutes fa�on, il y aura toujours des para-programmeurs, des gens dont le m�tier n'est pas de programmer mais qui programment � l'occasion pour des besoins ponctuels. Et la plupart d'entre eux iront au plus direct, qui est g�n�ralement une sombre bouse. Accuser le langage, �a me parait un peu injuste. Critiquer le Python sur son choix de d�limiteur de bloc, pourquoi pas(m�me si je ne suis pas d'accord). Ou sur ces choix de conception, ou sur sa syntaxe(que j'aime bien, mais encore une fois, je suis ouvert au d�bat). Mais parceque des gens moins bien form�s que nous font des choses avec qui nous d�plaisent? Non.

  7. #87
    Membre confirm� Avatar de Christian_B
    Homme Profil pro
    Retrait�
    Inscrit en
    Octobre 2016
    Messages
    299
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Retrait�

    Informations forums :
    Inscription : Octobre 2016
    Messages : 299
    Par d�faut
    Citation Envoy� par jedema
    Je vais essayer d'expliquer rapidement pourquoi j'aime particuli�rement la syntaxe de Python. En la comparant � celle d'autres langages : [...]
    Je reconnais que sur les exemples simples que tu donnes la syntaxe de Python para�t plus agr�able car proche du langage naturel (enfin surtout pour les anglo-saxons). Et en PHP, un nom de fonction comme strstr est assez bizarre.
    Mais Python n'est pas le seul langage qui utilise des mots cl�s comme in ou is sous if.

    Le probl�me est que sous pr�texte de simplification on supprime des d�limiteurs, ce qui aboutit � une d�pendance rigide � la mise en page.
    Notamment les notations fonctionnelles (d'origine math�matique) qui peuvent para�tre moins �videntes au d�part, permettent facilement et de fa�on succincte et coh�rente d'utiliser des notions complexes (comme la r�cursivit�).
    Je me demande comment Python se comporte dans de telles situations.
    Et je suppose que pour une longue suite lin�aire d'instructions on doit aller � la ligne � chaque fois, ce qui nuit � une vue d'ensemble rapide.

    Quand � l'op�rateur conditionnel ternaire, on n'est pas oblig� de l'utiliser mais il pr�sente l'avantage d'une grand compacit� et on peut l'inclure n'importe o� en tant que fonction.
    A ce propos :
    Citation Envoy� par Sodium
    J'avoue que moi qui fais du PHP et n'ai jamais touch� au Python, je trouve �a limpide, surtout pour l'op�rateur ternaire que je trouve particuli�rement immonde dans les autres langages.
    De quoi parles-tu ? Cette syntaxe provient du langage C. Dans quel langage cet op�rateur est-il "immonde" ?

    Par ailleurs le rapport avec la comparaison Minitel/Internet n'est pas s�rieux. Le Minitel �tait certes pionnier mais demandait un mat�riel sp�cialis� et poss�dait �videmment des possibilit�s beaucoup plus limit�es qu'Internet. Ici c'est un peu l'inverse : certains langages demandent sans doute un apprentissage plus long au d�part mais facilitent ensuite l'inventivit� et la r�alisation de programmes complexes.
    Il est vrai que pour n'importe quel langage, le succ�s appelle le succ�s ind�pendamment de ses qualit�s syntaxiques. La disponibilit� de nombreuses biblioth�ques, l'interop�rabilit� et un apprentissage pr�coce en facilitent l'usage. Mais une syntaxe trop primaire garde quand m�me des inconv�nients.

  8. #88
    Membre extr�mement actif
    Avatar de Sodium
    Femme Profil pro
    D�veloppeuse web
    Inscrit en
    Avril 2014
    Messages
    2 324
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeuse web

    Informations forums :
    Inscription : Avril 2014
    Messages : 2 324
    Billets dans le blog
    1
    Par d�faut
    Citation Envoy� par Christian_B Voir le message
    De quoi parles-tu ? Cette syntaxe provient du langage C. Dans quel langage cet op�rateur est-il "immonde" ?
    Je disais que la syntaxe =?: �tait immonde quel que soit le langage, que ce soit en PHP, C, JavaScript ou autre. Pour moi un code doit �tre aussi proche du langage naturel que possible.

  9. #89
    Membre confirm�
    Homme Profil pro
    Conseil - Consultant en syst�mes d'information
    Inscrit en
    Mai 2018
    Messages
    73
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (�le de France)

    Informations professionnelles :
    Activit� : Conseil - Consultant en syst�mes d'information

    Informations forums :
    Inscription : Mai 2018
    Messages : 73
    Par d�faut
    Citation Envoy� par Christian_B Voir le message
    Je reconnais que sur les exemples simples que tu donnes la syntaxe de Python para�t plus agr�able car proche du langage naturel (enfin surtout pour les anglo-saxons). [�]
    Mais Python n'est pas le seul langage qui utilise des mots cl�s comme in ou is sous if.
    Certes, mais dans le cas de Python, c'est une intention d�s la conception. C'est un des points pr�sent�s par Van Rossum lors de l'initiative Computer Programming for Everybody en 1999 : que le code soit aussi lisible que du texte en anglais (et il faudra s'y faire que l'anglais est la langue de l'informatique).

    Le probl�me est que sous pr�texte de simplification on supprime des d�limiteurs, ce qui aboutit � une d�pendance rigide � la mise en page.
    Pour Van Rossum, le choix de l'indentation n'est pas motiv� par la simplification (ce n'est pas le cas) mais par l'esth�tisme et la lisibilit�. La mise en page n'est pas plus rigide mais structur�e. Toutes les r�gles de la PEP8 ont pour objectif d'am�liorer la relecture du code et donc sa maintenance et son �volutivit�.

    Je me demande comment Python se comporte dans de telles situations.
    Et je suppose que pour une longue suite lin�aire d'instructions on doit aller � la ligne � chaque fois, ce qui nuit � une vue d'ensemble rapide.
    Python est aussi un langage fonctionnel, donc je ne vois pas trop le probl�me. Attention par contre � ne pas confondre "une instruction par ligne" et "l'instruction doit tenir sur une ligne". Le contenu d'une ligne peut en prendre plusieurs. Chose int�ressante, l'alignement est aussi cadr� par la PEP8�

    Quand � l'op�rateur conditionnel ternaire, on n'est pas oblig� de l'utiliser mais il pr�sente l'avantage d'une grand compacit� et on peut l'inclure n'importe o� en tant que fonction.
    On va quand m�me rappeler que dans un langage comme Java, l'usage de l'op�rateur ternaire ( ? : ) est consid�r� une mauvaise pratique sous le pr�texte qu'il est peu lisible. Ce qui est mis en avant par jedema, c'est la syntaxe qui rend l'op�rateur ternaire Python plus agr�able � utiliser. Et au fait, l� aussi, l'int�r�t de l'op�rateur ternaire ne devrait pas �tre la compacit� mais la compr�hension de l'intention. Un op�rateur ternaire informe imm�diatement que nous obtiendrons une valeur puis que cette valeur sera fournie de mani�re conditionnelle. Sans op�rateur ternaire, le code nous informe d'abord qu'il va faire quelque chose en fonction d'une condition. En gros, il faut lire toute la structure pour comprendre qu'on extraie une valeur. Je chipotte peut-�tre juste sur le terme, mais "compact" et "lisible" ne sont pas la m�me chose.

    certains langages demandent sans doute un apprentissage plus long au d�part mais facilitent ensuite l'inventivit� et la r�alisation de programmes complexes.
    Il est vrai que pour n'importe quel langage, le succ�s appelle le succ�s ind�pendamment de ses qualit�s syntaxiques. La disponibilit� de nombreuses biblioth�ques, l'interop�rabilit� et un apprentissage pr�coce en facilitent l'usage. Mais une syntaxe trop primaire garde quand m�me des inconv�nients.
    Personnellement, c'est ce que j'appr�cie avec Python : c'est un langage qui permet de faire les choses simples simplement et les choses complexes tout aussi simplement.

  10. #90
    Membre �prouv�

    Profil pro
    Grand Timonier des Chats
    Inscrit en
    D�cembre 2011
    Messages
    884
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : Grand Timonier des Chats

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 884
    Par d�faut
    Je n'aime pas trop le Python, car ma pr�f�rence va � la programmation fonctionelle, avec une syntaxe plus math�matique que celle du Python (ah, le Haskell). Cela dit, le Python a un cahier des charges pr�cis (pour un langage g�n�raliste) et y r�pond assez bien. Et si l'importance de l'indentation est une particularit�, elle n'est pas si �trange quand tu consid�re que souvent on se rep�re avec les indentations plutot que les parenth�ses/crochets dans les langages old school (comme le LISP, on ne compte pas le nombre de parenth�ses...).

  11. #91
    Membre confirm�
    Homme Profil pro
    Conseil - Consultant en syst�mes d'information
    Inscrit en
    Mai 2018
    Messages
    73
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (�le de France)

    Informations professionnelles :
    Activit� : Conseil - Consultant en syst�mes d'information

    Informations forums :
    Inscription : Mai 2018
    Messages : 73
    Par d�faut
    Citation Envoy� par MiaowZedong Voir le message
    Je n'aime pas trop le Python, car ma pr�f�rence va � la programmation fonctionelle
    Et vu que Python est un langage fonctionnel, j'ai du mal � comprendre l'argumentaire�

  12. #92
    Membre confirm� Avatar de Christian_B
    Homme Profil pro
    Retrait�
    Inscrit en
    Octobre 2016
    Messages
    299
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Retrait�

    Informations forums :
    Inscription : Octobre 2016
    Messages : 299
    Par d�faut
    Citation Envoy� par el_slapper
    A ce titre, VBA pour excel est une sombre bouse. Pourtant, eu �gard � son �ge, il est tr�s puissant, et j'ai vu des trucs en b�ton fait avec [...]
    Certes Visual Basic peut �tre qualifi� de "puissant" comme beaucoup de langages g�n�ralistes.
    Et Excel fournit une interface graphique toute faite si on n'est pas trop regardant sur la pr�sentation. Son emploi va de soi si on veut manipuler des tableaux Excel. J'ai aussi eu l'occasion de l'utiliser (il y a longtemps) quoique sans conviction.

    Mais VBA est une usine � gaz avec une syntaxe h�t�roclite et lourde.
    Un bout de syst�me � objets par ci, une syntaxe partiellement inspir�e des anciens Basic par l�, des fonctions Excel avec des syntaxes et des limitations peu coh�rentes, et bien d'autres possibilit�s directement incluses plut�t que trait�es par des biblioth�ques. Y compris le r�put� dangereux (et d�funt j'esp�re) ASP.

    Et il est �troitement li� � l'environnement Windows.
    Heureusement qu'il y a une aide abondante (enfin pas pour tout). Mais curieusement divis�e en deux syst�mes ind�pendants selon qu'il s'agit d'objets ou non.

  13. #93
    Membre �prouv�

    Profil pro
    Grand Timonier des Chats
    Inscrit en
    D�cembre 2011
    Messages
    884
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : Grand Timonier des Chats

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 884
    Par d�faut
    Citation Envoy� par dad3zero Voir le message
    Et vu que Python est un langage fonctionnel, j'ai du mal � comprendre l'argumentaire�
    Mais oui bien s�r. Python est un langage multi-paradigmes qui veut pouvoir faire du fonctionnel, mais il n'offre pas le m�me support et la m�me optimisation qu'un vrai langage fonctionnel come Haskell (). Il y a de grandes diff�rences.

  14. #94
    Membre confirm� Avatar de Christian_B
    Homme Profil pro
    Retrait�
    Inscrit en
    Octobre 2016
    Messages
    299
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Retrait�

    Informations forums :
    Inscription : Octobre 2016
    Messages : 299
    Par d�faut
    Citation Envoy� par dad3zero
    Et vu que Python est un langage fonctionnel, j'ai du mal � comprendre l'argumentaire�
    Dans quel sens Python est-il fonctionnel ?
    Le terme recouvre au moins deux sens :

    - une syntaxe fonctionnelle, avec en g�n�ral des param�tres entre parenth�ses et donc des inclusions (ou imbrications) possibles repr�sentant une composition de fonctions. De ce point de vue la syntaxe de Python (comme celle du langage C d'ailleurs) est clairement imp�rative et s�quentielle � la base.

    - dans le cas des vrais langages fonctionnels, une garantie (en principe) que l'environnement d'ex�cution d'une fonction n'est pas manipulable et donc qu'une fonction donne toujours le m�me r�sultat pour les m�mes entr�es, ce qui facilite le d�bogage. Avec sans doute des limitations en contrepartie (faute d'exp�rience de ces langages je ne suis pas s�r). Est-ce le cas de Python ?

    Par ailleurs un langage imp�ratif peut avoir des capacit�s �tendues de manipulation de fonctions (comme le langage C). Veux-tu dire que c'est le cas de Python ?

  15. #95
    Membre Expert
    Avatar de Pyramidev
    Homme Profil pro
    Tech Lead
    Inscrit en
    Avril 2016
    Messages
    1 513
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Tech Lead

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 513
    Par d�faut
    Citation Envoy� par Christian_B Voir le message
    Et je suppose que pour une longue suite lin�aire d'instructions on doit aller � la ligne � chaque fois, ce qui nuit � une vue d'ensemble rapide.
    Le code suivant n'a pas un style conseill�, mais est valide en Python :
    Code Python : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    print('Saisie : ', end=''); inputStr = input()
    if   inputStr == '7':  print("C'est le nombre de jours de la semaine.")
    elif inputStr == '12': print("C'est le nombre de mois dans l'année.")
    else:                  print('Je ne sais que dire.')

    Citation Envoy� par dad3zero Voir le message
    Et vu que Python est un langage fonctionnel, j'ai du mal � comprendre l'argumentaire�
    Ouh l�, non. Si un jour tu as le temps d'apprendre le Haskell, tu verras que c'est tr���s diff�rent du Python.
    La vraie programmation fonctionnelle ne se limite pas aux fonctions d'ordre sup�rieur et aux fermetures. Il y a aussi un fort accent mis sur la puret� des fonctions et l'immuabilit�.

  16. #96
    Membre confirm� Avatar de Christian_B
    Homme Profil pro
    Retrait�
    Inscrit en
    Octobre 2016
    Messages
    299
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Retrait�

    Informations forums :
    Inscription : Octobre 2016
    Messages : 299
    Par d�faut
    Une id�e me vient.
    Ne pourrait-on pas concevoir un langage source utilisant les m�mes instructions que Python, ajoutant ce qu'il faudrait pour le rendre ind�pendant de la mise en page et traductible automatiquement en Python ? Donc 100% compatible avec le compilateur.
    J'ai l'impression (mais je peux me tromper) que syntaxiquement il y aurait peu � faire. Quelques ";" et mots cl�s de fin en plus.
    Mais je ne me sens pas de le faire (sauf n�cessit� peu probable) ce qui suppose de bien conna�tre Python (paradoxal pour moi qui ne l'aime pas) et faire des traducteurs dans les deux sens

  17. #97
    Membre Expert
    Avatar de Pyramidev
    Homme Profil pro
    Tech Lead
    Inscrit en
    Avril 2016
    Messages
    1 513
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Tech Lead

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 513
    Par d�faut
    Citation Envoy� par Christian_B Voir le message
    Une id�e me vient.
    Ne pourrait-on pas concevoir un langage source utilisant les m�mes instructions que Python, ajoutant ce qu'il faudrait pour le rendre ind�pendant de la mise en page et traductible automatiquement en Python ? Donc 100% compatible avec le compilateur.
    Tout �a juste pour avoir une syntaxe qui se rapproche davantage du langage C ?
    Je suis r�guli�rement surpris que tant de d�veloppeurs soient � ce point focalis�s sur ce genre de d�tail. C'est dommage car, en dehors des langages d�riv�s du C, certains sont tr�s enrichissants (par exemple Haskell et les dialectes du Lisp).

    Citation Envoy� par Christian_B Voir le message
    J'ai l'impression (mais je peux me tromper) que syntaxiquement il y aurait peu � faire. Quelques ";" et mots cl�s de fin en plus.
    On peut d�j� ajouter des ";" � la fin des instructions, m�me si c'est inutile quand il n'y a pas une autre instruction sur la m�me ligne.
    Le code suivant est valide en Python :
    Code Python : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    a = 1
    b = 2;
    c = 3; d = 4
    print(a); print(b); print(c); print(d);
    Concernant les accolades, actuellement, elles sont utilis�es pour d�limiter les ensembles et les dictionnaires :
    Code Python : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    mySet = {1, 2, 3, 4}
    myDict = {2: 'deux', 3: 'trois', 5: 'cinq'}
    for key in sorted(mySet):
    	if key in myDict:
    		print(myDict[key])
    Je n'ai pas analys� quelles seraient les cons�quences pour le parseur si les accolades servaient aussi � d�limiter des blocs dans des structures de contr�le.
    Si �a int�resse quelqu'un, voici la page qui sp�cifie la grammaire du Python 3 : Full Grammar specification.

  18. #98
    Membre confirm� Avatar de Christian_B
    Homme Profil pro
    Retrait�
    Inscrit en
    Octobre 2016
    Messages
    299
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Retrait�

    Informations forums :
    Inscription : Octobre 2016
    Messages : 299
    Par d�faut
    Citation Envoy� par Pyramidev
    Tout �a juste pour avoir une syntaxe qui se rapproche davantage du langage C ?
    Je suis r�guli�rement surpris que tant de d�veloppeurs soient � ce point focalis�s sur ce genre de d�tail. C'est dommage car, en dehors des langages d�riv�s du C, certains sont tr�s enrichissants (par exemple Haskell et les dialectes du Lisp).
    Je ne pensais pas forc�ment � des accolades (dont je n'ai pas parl�), encore que ce soient des d�limiteurs de blocs utilis�s par beaucoup de langages. D'ailleurs, je suis familier de la syntaxe Lisp (trop �loign�e de celle de Python pour qu'on songe ici � s'en inspirer).
    Mais pour moi n'importe quel moyen simple d'�viter de consid�rer les retours de ligne, tabulations ou blancs multiples comme �l�ments syntaxiquement distincts du s�parateur de base (le blanc) ferait l'affaire.

    Pour les instructions composites je pense que les mots cl�s de fin sont plus explicites car plus sp�cifiques que les parenth�ses, par exemple endif ou fi apr�s if, ou wend apr�s while. Ils aident � se rep�rer et � d�tecter et mieux situer certaines erreurs comme l'effacement accidentel d'un caract�re s�parateur.

    Quand au conflit avec les tableaux, on peut modifier simplement leur syntaxe de bien des mani�res s'il y a conflit puisque je ne songe pas � un sur-ensemble de la syntaxe de Python mais seulement � une syntaxe proche.

    Je ne connaissais Haskell que de r�putation, je m'aper�ois qu'il semble d�pendre des indentations et des lignes vides . D�cid�ment cette mode est envahissante. Mais j'ai l'impression que c'est facultatif, car je vois qu'on peut �crire :
    Code Haskell : S�lectionner tout - Visualiser dans une fen�tre � part
    doubleSmallNumber' x = (if x > 100 then x else x*2) + 1
    Ce style d'inclusion est exclu en Python je suppose.

  19. #99
    Membre Expert
    Avatar de Pyramidev
    Homme Profil pro
    Tech Lead
    Inscrit en
    Avril 2016
    Messages
    1 513
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Tech Lead

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 513
    Par d�faut
    Citation Envoy� par Christian_B Voir le message
    Je ne connaissais Haskell que de r�putation, je m'aper�ois qu'il semble d�pendre des indentations et des lignes vides . D�cid�ment cette mode est envahissante.
    En Haskell, la mani�re normale d'�crire du code est effectivement de s'appuyer sur l'indentation. Mais, � la place, on peut aussi s'appuyer sur les point-virgules et les accolades. Par exemple, voici trois mani�res �quivalentes de d�finir la fonction liftM2 de la biblioth�que standard :
    Code Haskell : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    liftM2 :: (Monad m) => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r
    liftM2 f m1 m2 = do
        x1 <- m1
        x2 <- m2
        return (f x1 x2)
    Code Haskell : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    liftM2 :: (Monad m) => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r
    liftM2 f m1 m2 = do {
        x1 <- m1;
        x2 <- m2;
        return (f x1 x2)
    }
    Code Haskell : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    liftM2 :: (Monad m) => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r
    liftM2 f m1 m2 = do { x1 <- m1; x2 <- m2; return (f x1 x2) }
    La derni�re version est un copi�-coll� du code source de GHC. Visiblement, les auteurs aiment bien utiliser les accolades pour tout faire tenir sur une seule ligne. Par contre, quand le code est sur plusieurs lignes, ils se basent sur l'indentation.

    Citation Envoy� par Christian_B Voir le message
    Mais j'ai l'impression que c'est facultatif, car je vois qu'on peut �crire :
    Code Haskell : S�lectionner tout - Visualiser dans une fen�tre � part
    doubleSmallNumber' x = (if x > 100 then x else x*2) + 1
    Ce style d'inclusion est exclu en Python je suppose.
    En Python, le code �quivalent serait :
    Code Python : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    def doubleSmallNumber(x):
    	return (x if x > 100 else x*2) + 1
    Ou alors, si on veut vraiment le faire tenir sur une ligne :
    Code Python : S�lectionner tout - Visualiser dans une fen�tre � part
    def doubleSmallNumber(x): return (x if x > 100 else x*2) + 1
    Code Python : S�lectionner tout - Visualiser dans une fen�tre � part
    doubleSmallNumber = lambda x: (x if x > 100 else x*2) + 1

  20. #100
    Membre confirm� Avatar de Christian_B
    Homme Profil pro
    Retrait�
    Inscrit en
    Octobre 2016
    Messages
    299
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Retrait�

    Informations forums :
    Inscription : Octobre 2016
    Messages : 299
    Par d�faut
    Merci Pyramidev,
    Pour Haskell, je suis tout � fait rassur�.
    Je pr�sume que si on code dans le style de ton exemple :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    liftM2 :: (Monad m) => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r
    liftM2 f m1 m2 = do {
        x1 <- m1;
        x2 <- m2;
        return (f x1 x2)
    }
    on est pratiquement affranchi syntaxiquement des contraintes de mise en page (ce qui n'emp�che pas d'adopter une pr�sentation coh�rente), sauf peut-�tre pour le passage de la 1�re � la 2e ligne et sans doute on peut aussi modifier ce point.
    Et en somme, pour un langage qui peut �tre utilis� interactivement (comme un shell) il est compr�hensible que le retour � la ligne joue un r�le.

    Tout ce qui manque (de mon point de vue) pour garantir une bonne structuration � des "vrais programmes" destin�s � �tre compil�s serait un environnement d'�dition qui r�duise ou �limine la d�pendance � la mise en forme en consid�rant l'absence de d�limiteurs comme erron�e.
    Cela �viterait un m�lange des styles confus et dangereux.
    D'ailleurs, j'ai l'impression au vu de ton exemple que les r�dacteurs du code source de GHC sont de cet avis.

    En somme Haskell cache son jeu. La syntaxe par indentation est l� pour rassurer ceux qui ne sont pas � l'aise avec les notations fonctionnelles (ce qui est assez paradoxal pour un langage fonctionnel ).

    Pour Python c'est moins clair. La notation "(x if x > 100 else x*2)" m'appara�t tr�s illogique avec une valeur au d�but et une � la fin. Et pas m�me proche d'une tournure du langage naturel.
    Mais elle me sugg�re une question. Est-ce que les parenth�ses utilis�es comme d�limiteurs d'expressions sont propres � if, ou est-ce que toutes les instructions (ou la plupart) peuvent �tre consid�r�es comme des fonctions et imbriqu�es de cette fa�on ?
    Cela changerait beaucoup mon point de vue sur Python ...
    D'autant plus que la pr�sence de "lambda" dans ton dernier exemple sugg�re que Python serait moins �loign� de langages comme Lisp qu'il n'y para�t.

Discussions similaires

  1. R�ponses: 13
    Dernier message: 19/05/2014, 14h16
  2. Windows Azure : plus simple, plus flexible, plus ouvert
    Par Gordon Fowler dans le forum Microsoft Azure
    R�ponses: 2
    Dernier message: 08/06/2012, 21h44
  3. comment devenir de plus en plus bon en programmation.
    Par bigs3232 dans le forum La taverne du Club : Humour et divers
    R�ponses: 24
    Dernier message: 15/06/2011, 16h49
  4. programme en bash qui ne fonctionne plus
    Par maxime612001 dans le forum Shell et commandes GNU
    R�ponses: 2
    Dernier message: 06/12/2009, 13h00
  5. R�ponses: 4
    Dernier message: 10/04/2006, 08h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo