tag:linuxfr.org,2005:/users/bluestorm/postsLinuxFr.org : les publications de gasche2018-02-07T14:43:18+01:00/favicon.pngtag:linuxfr.org,2005:Post/389732018-02-07T14:43:18+01:002018-02-08T08:44:46+01:00De la conception du langage Python<p>Dans mon journal sur <a href="//linuxfr.org/users/bluestorm/journaux/la-recherche-en-langages-de-programmation-au-quotidien">La recherche en langages de programmation au quotidien</a>, Xavier Combelle demande un avis sur Python—sur les rapports entre Python et la théorie des langages de programmation, j'imagine. J'ai choisi de créer un sujet ici puisque c'est une discussion un peu "hors sujet".</p>
<blockquote>
<p>Quel est ton avis sur mon langage préféré: python auquel je n'ai pas fait défaut depuis sa découverte il y a une dizaine d'année ?</p>
</blockquote>
<p>Je voudrais discuter surtout des aspects qui concernent les aspects linguistiques eux-mêmes (le choix des fonctionnalités du langage, plutôt que des bibliothèques et programmes construits au-dessus), et aussi les aspects de gouvernance sur l'évolution de ce langage et les décisions qui sont prises aujourd'hui ou ont été prises dans le passé.</p>
<p>D'abord j'aimerais commencer par dire des choses qui me plaisent dans Python:</p>
<ul>
<li><p>La gouvernance du projet est bien menée, avec un système de PEP (Python Extension Proposals) installé tôt et qui marche bien.</p></li>
<li><p>La syntaxe de Python est étonnamment sympa. C'est rare de voir un langage qui ressemble autant à ce qu'on écrirait naturellement comme pseudo-code. Je pense que c'est en grande partie lié à un vrai talent de son concepteur principal, Guido Van Rossum, pour trouver une jolie syntaxe. Ça aide pour enseigner Python aux débutants. C'est intéressant parce que la question de "quelle syntaxe est plus jolie/lisible qu'une autre" est une question sur laquelle on a très peu prise, scientifiquement : je ne connais pas de critère objectifs pour s'aider dans ces choix, et je pense que personne ne comprend bien les ingrédients de conception d'une bonne syntaxe.</p></li>
<li><p>Python a une très grosse communauté, vivante, qui apporte beaucoup de choses. Je suis par exemple un grand admirateur du projet <a href="http://www.sagemath.org/">SageMath</a> (anciennement Sage), qui a réussi à fédérer une communauté entière autour d'un projet libre de taille, et du projet <a href="http://jupyter.org/">Jupyter</a> (anciennement <a href="https://ipython.org/">IPython</a>) qui a eu un impact très positif sur les interfaces qu'on utilise pour programmer. Dans les logiciels libres qu'on utilise au jour le jour, beaucoup sont codés en Python, entièrement ou partiellement. (Je suis ravi d'y contribuer si j'en ai l'occasion.)</p></li>
</ul><p>Maintenant quelques critiques :</p>
<ul>
<li><p>Le créateur du langage, Guido Van Rossum, est globalement assez hostile aux idées venant de la programmation fonctionnelle (à part les compréhensions de listes, qui ont plu), et a eu dans le passé une attitude assez fermée vis-à-vis des universitaires du domaine. Ça ne l'intéressait pas de discuter pour comprendre des aspects de Python à améliorer, ce qui est toujours dommage. (Par exemple, il n'y a pas d'appels terminaux en Python, ce qui complique inutilement l'écriture de certains programmes récursifs, alors qu'on sait depuis les années <s>1990</s> 2000 comment combiner appels terminaux et backtraces (<a href="http://digitalcommons.calpoly.edu/csse_fac/48/">A Tail-Recursive Machine with Stack Inspection</a>, John Clements, Matthias Felleisen, 2004), qui est la raison invoquée pour leur absence). Maintenant la gouvernance de l'évolution du langage est plus distribuée, et Guido a peut-être un peu revu sa position, donc les choses se sont améliorées.</p></li>
<li><p>Il y a quelques erreurs de conception qui étaient présentes dès le départ dans le langage et qui viennent d'une ignorance de concepts basiques quand on étudie les langages de programmation. Par exemple, la portée lexicale (la portée des variables avec déclarations imbriquées) est mal conçue, et a nécessité l'ajout du mot-clé <a href="https://www.python.org/dev/peps/pep-3104/">nonlocal</a> (un exemple d'évolution du langage bien menée mais qui aboutit quand même à une solution moche pour un problème qui n'aurait pas dû être là au départ).</p></li>
<li><p>C'est un langage non typé statiquement qui est cependant utilisé pour de gros projets. Personnellement je suis convaincu que les types statiques jouent un rôle essentiel pour permettre la maintenance et le refactoring de code dès qu'on a un projet un peu gros, et je trouve que développer quelque chose comme Django en Python crée des logiciels très difficiles à gérer (même quand on fait un effort considérable sur les tests). Les systèmes de types statiques ne sont pas sans défauts non plus, et le fait d'explorer des idées dans un langage sans typage statique est très raisonnable, mais ça ne produit pas des langages que j'ai envie d'utiliser moi-même, et que je ne pas qu'ils soient adaptés pour de gros projets. (Mais souvent les gros projets commencent petit.) D'ailleurs les efforts actuels pour ajouter du typage après-coup à Python sont majoritairement motivés par ces problèmes de maintenance à grande échelle. Ils sont très difficiles et douloureux—bien plus difficile que si le langage avait été conçu avec du typage dès le départ. Il y a sans doute des gens avec un bagage théorique qui vont se pencher sur la question de proposer un typage de Python après-coup, mais je leur souhaite bien du courage.</p></li>
</ul><p>Voilà, j'ai donné un avis sur Python, mentionnant seulement quelques aspects qui me viennent à l'idée directement. Je pense que c'est important de comprendre qu'aucun langage n'est parfait, et qu'une communauté peut développer des choses de valeurs tout à fait indépendamment des caractéristiques du langage lui-même. Ceci dit, moi j'évite d'écrire du Python sauf pour des petits scripts, et mes expériences de contribution à de plus gros projets dans ce langage (des sites en Django typiquement) m'ont confirmé dans l'impression que ça peut être assez pénible au quotidien de travailler dans un langage non typé sur un gros projet. (Mais ça pourrait être pire, PHP par exemple.)</p><div><a href="https://linuxfr.org/forums/general-hors-sujets/posts/de-la-conception-du-langage-python.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/113692/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/forums/general-hors-sujets/posts/de-la-conception-du-langage-python#comments">ouvrir dans le navigateur</a>
</p>
gaschehttps://linuxfr.org/nodes/113692/comments.atomtag:linuxfr.org,2005:Post/95682005-06-19T17:44:42+02:002005-06-19T17:44:42+02:00Problème de systeme de fichier au bootBonjour, je suis débutant sur linux (Mandrake 10.0, 10.1 ou Mandriva LE 2005), et j'ai eu récemment un problème de disque dur.<br />
<br />
Alors que je batifolais tranquillement, j'ai vu une série de problème arriver, toujours du même type : accès au Disque Dur (DD) impossible.<br />
Peu à peu, tout plantait, j'ai donc éteint mon ordinateur. Je le ralume : Kernel Panic. Je mets le CD en mode rescue de mandrake, lsparts, et mes deux partitions, hda8 et hda9, sont de type "<0xfffffff> inconnu".<br />
<br />
Je prend un autre DD, je montre celui-là (le défectueux) en slave, impossible de monter les partitions.<br />
<br />
Je fais un fsck.ext3 -y /dev/hdc8, il m'affiche plein de "inodes erronnés blabla", et à la fin, ma partition est montable. Pareil pour le hdc9.<br />
<br />
Cependant, quand je remet le défectueux en master, au boot, il ne trouve pas la journalisation, et Kernel Panic. J'ai alors remarqué que l'utilitaire lsparts du mode rescue (que je n'ai pas retrouvé autre part) me note mes partitions comme du etx2. J'ai donc changé mon fstab, en mettant juste 2 au lieu de 3.<br />
<br />
Cependant, j'ai toujours le meme problème au boot. J'ai essayé "tune2fs", sans savoir réellement ce que ca fait, mais cela n'a rien changé.<br />
<br />
Auriez vous des idées, cela vous est-il déja arrivé ? Est-il possible, enfin, que cela soit un virus ? (au moment du prob, j'avais, comme toujours, quelques terminaux ouverts en root, mais je doute que cela puisse tout de meme etre un virus...)<br />
<br />
edit : au moment de la visualisation, votre méchant système insinue que ceci n'est pas le bon forum. Cependant je ne connais pas le forum de linuxfr (pour l'instant) donc j'ai supposé que choisir en fonction de ma distrib était un choix, sinon pertinent, raisonnable. Ai-je bien fait ?<div><a href="https://linuxfr.org/forums/linux-mandriva/posts/probl%C3%A8me-de-systeme-de-fichier-au-boot.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/64538/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/forums/linux-mandriva/posts/probl%C3%A8me-de-systeme-de-fichier-au-boot#comments">ouvrir dans le navigateur</a>
</p>
gaschehttps://linuxfr.org/nodes/64538/comments.atom