Est-il difficile de concevoir un langage de programmation?

Auteur | DAVID CASSEL

Traducteur | Crescent Moon, rédacteur en chef | Zheng Liyuan

Carte de titre | Self Vision Chine

Source | CSDN (ID: CSDNnews)

Récemment, Yukihiro Matsumoto, fondateur et concepteur en chef du langage de programmation Ruby et architecte en chef Ruby de Heroku, une société de plate-forme en tant que service cloud, a déclaré dans un discours que la communauté Ruby dirigée par Yukihiro Matsumoto avait une réflexion approfondie sur le développement du langage de programmation. Le discours de 30 minutes a également mentionné que le langage de programmation est sur le point d'inaugurer de nouveaux développements passionnants.

Matsumoto a déclaré: "Depuis quatre ou cinq ans, je parle de l'avenir de Ruby 3. Peut-être que beaucoup de gens sont fatigués de ce cliché. Mais cette année, Ruby 3 arrive vraiment. Le 25 décembre, Ruby 3 sera Version officielle. »Il est de tradition de publier des mises à jour du langage Ruby le jour de Noël.

"Si tout se passe bien, nous publierons officiellement Ruby 3 en décembre, à moins d'un très grave accident."

Le dilemme du créateur

Des centaines de téléspectateurs du monde entier (de l'Inde à l'Indonésie, du Brésil à Berlin) ont regardé l'émission en direct de Matsumoto, et de nombreuses personnes ont fait des commentaires enthousiastes. Ils se sont réunis pour regarder le discours de Matsumoto, qui a consacré 25 ans au développement de Ruby. On dit que Ruby 3 devait initialement être lancé à la veille des Jeux olympiques de Tokyo, mais comme les Jeux olympiques ont été reportés à 2021, les développeurs principaux doutaient que Ruby 3 devrait également être reporté d'un an.

"Mais après quelques discussions, nous avons décidé de sortir Ruby 3 cette année, car en tant que communauté open source, nous devons aller de l'avant. Nous devons continuer d'avancer. La communauté open source ne peut généralement pas arrêter de se développer, sinon nous ferons face à la mort ...".

Matsumoto a décrit en profondeur les dilemmes auxquels sont confrontés tous les concepteurs de langage. «Tout le monde aime les nouvelles choses, donc en tant que programmeur et ingénieur, j'aime aussi les nouvelles choses. De plus, j'aime beaucoup les langages, donc j'aime étudier de nouveaux langages de programmation, tels que Elixir, Rust, Go, etc. Je suis très excité. "Cependant, cela a également exercé une pression sur le changement de langue Ruby. Matsumoto a déclaré: "Ruby est un peu vieux, il est sorti en 1995. Nous ne sommes que des mortels. Nous avons commis des erreurs. Donc, en tant que concepteurs de langage, nous espérons corriger les erreurs du passé."

Mais en même temps, "Personne ne veut éprouver de douleur." Avec toutes les applications Web utilisant des versions existantes de Ruby, il est un peu dangereux de forcer les développeurs à mettre à niveau. "Personne n'aime la douleur. En ce sens, Ruby devrait C'est stable. Cela semble un peu contradictoire, non? "

"Par conséquent, la conception de la langue Ruby et le plan de la langue sont difficiles à surmonter cette contradiction. Cette contradiction vient de notre cœur."

Il a décrit d'autres langages de programmation confrontés à des difficultés similaires, notamment Python, PHP et ECMAScript, et a souligné qu'il a fallu de nombreuses années de travail acharné à ces communautés pour que tout le monde accepte ces changements. Par exemple, Python 3, la communauté a passé plus de dix ans, et PHP 6 a même été annulé. Ils ont abandonné les changements majeurs avant la publication, puis sont passés directement de PHP 5 à PHP 7. EMCAScript4 a également été annulé.

Matsumoto a expliqué que si des changements ne sont pas apportés, les gens peuvent quitter la communauté. "Ils arrêteront d'utiliser Ruby parce qu'ils s'ennuient." Mais en même temps, il craint aussi que si la douleur de la mise à niveau vers une version supérieure est trop lourde, ils pourraient aussi quitter la communauté car ils décideront "Peut-être que notre prochain projet devrait Utilisez Rust, Go ou d'autres langages de programmation. "

"Par conséquent, il est difficile de concevoir un langage, mais nous devons quand même avancer pour créer l'avenir."

Laissez Ruby revivre

Dans le discours, Matsumoto a également présenté des plans pour maintenir la compatibilité tout en "accélérant Rust et en améliorant l'efficacité des programmeurs Ruby". Il a identifié trois objectifs clairs et spécifiques, qui représentent le prochain Ruby 3 Caractéristiques: rapide, simultané et correct.

Pour accélérer Ruby, l'équipe de développement entreprendra d'améliorer son compilateur JIT (utilisé pour générer du code natif). Afin de parvenir à la concurrence, ils n'ont pas choisi une solution dans d'autres langues, mais avaient l'intention d'essayer leur propre méthode. Node. Un bon moyen de contrôler les threads asynchrones. "Le changement de contexte entre les fibres étant rapide, les performances peuvent être améliorées."

Ils pensent qu'une autre raison pour laquelle cette méthode peut améliorer les performances est qu'elle a été développée par le créateur du serveur d'applications Falcon de Ruby, et Matsumoto pense que ce projet est très rapide. Mais ce n'est pas la seule façon d'améliorer les performances. Ils ont également implémenté "Ractor" (Ruby Actor), similaire à la façon dont JavaScript fournit le script derrière le "Web worker". Chaque Ractor peut fonctionner en parallèle, a expliqué Matsumoto, ce qui tire parti du traitement parallèle dans les systèmes multicœurs modernes.

Le troisième objectif de Ruby est l'exactitude. Cet objectif fait référence à la détection précoce des erreurs, qui est principalement implémentée par l'analyseur de type. Il générera des signatures Ruby (Matsumoto compare cela au fichier d.ts décrivant le type dans TypeScript). Ruby 3 fournira des signatures de type pour sa bibliothèque principale, qui peuvent être utilisées pour la vérification de type et peuvent également être utilisées pour améliorer les futurs IDE.

Mais il a aussi ses limites. Matsumoto a expliqué: "Nous ne recherchons pas l'exhaustivité et la rationalité du système de types, car Ruby est Ruby. Ruby est fondamentalement typé dynamiquement, ce qui signifie que même si nous avons maintenant un système de type progressif, nous ne pouvons rien faire de complètement correct. Vérification de type, donc nous ne pouvons qu'abandonner. Nous n'ajouterons pas de déclarations de type à la grammaire. "

Trois nouvelles fonctions

La syntaxe de Ruby 3 a subi quelques modifications. Matsumoto est très satisfait des trois nouvelles fonctionnalités. Il a déclaré: "Ruby ira de mieux en mieux. La première est la syntaxe complexe de correspondance de modèles. Vous n'avez pas besoin de déconstruire les tableaux et les hachages parce que vous pouvez écrire des modèles, ce qui est très facile."

La deuxième nouvelle fonction peut affecter des valeurs aux variables sur le côté droit du signe égal. Il a dit que bien que nous puissions nous sentir un peu "contre nature" de l'apparence, l'EDI sera un peu inconfortable, car les expressions générales commencent par des variables, même si la valeur est affectée à un long bloc de code. "Si vous pouvez transformer l'affectation en une opération rvalue, cela semblerait naturel, mais nous ne la recommandons pas partout. Vous n'êtes pas obligé de remplacer chaque opération d'affectation par une attribution rvalue, mais dans certains cas , C’est très pratique. "

La troisième nouveauté de Ruby 3 concerne les paramètres de bloc numérotés, «Vous n'avez plus à nommer les paramètres de bloc locaux temporaires».

Matsumoto a déclaré: "La stabilité est importante", il n'a donc pas dit qu'il y aurait des changements grammaticaux majeurs après Ruby 3. Au lieu de cela, ils se concentreront sur l'amélioration des outils de support existants de Ruby, tels que Solargraph pour les protocoles de serveur de langage, Sorbet pour la vérification de type statique et Rubocop pour aider les développeurs à écrire du code conforme à la spécification Ruby. "Ces outils prouvent que meilleur est l'outil, meilleure est l'expérience utilisateur. Par conséquent, nous devons continuer à travailler dur. Je pense que nous avons besoin de plus d'outils, et ensuite nous devons également améliorer ces outils." Matsumoto espère également voir mieux Outils de vérification de type et de formatage, ou meilleurs outils de réglage des performances et de débogage. De plus, Matsumoto a d'autres idées sur la façon d'accélérer Ruby, comme la configuration d'un autre compilateur JIT léger au-dessus de la machine virtuelle, tel que MIR ou DynASM.

Rubis plus léger

Enfin, dans la discussion sur Ruby 3, Matsumoto a également mentionné une autre idée: «Bien que ce ne soit qu'une idée folle, mais j'envisage un sous-ensemble Ruby plus léger, ce sous-ensemble n'est pas seulement plus simple et plus strict. , Et c'est plus rapide ou plus facile à optimiser. "

Ce sous-ensemble Ruby est rétrocompatible, c'est-à-dire qu'il peut s'exécuter dans toutes les versions Ruby existantes (bien que toutes les versions de Ruby ne puissent pas s'exécuter dans ce Ruby léger). En expliquant ses principes de base, Matsumoto a montré une diapositive qui disait: "Ce Ruby léger fonctionne plus vite." Il a dit: "Ce n'est qu'une idée préliminaire. Ce n'est pas très clair. Nous La compatibilité doit être maintenue, mais si nous nous arrêtons à ce sous-ensemble Ruby, il peut manquer de flexibilité, mais il devrait être plus facile à optimiser. " 

Matsumoto a également déclaré: "J'ai beaucoup d'idées folles, nous allons les essayer une par une pour rendre Ruby de mieux en mieux."

Lien d'origine:

https://thenewstack.io/ruby-creator-yukihiro-matsumoto-on-the-challenges-of-updating-a-programming-language

更多精彩推荐

Je suppose que tu aimes

Origine blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/108675044
conseillé
Classement