Maison  >  Article  >  développement back-end  >  Après la démission du chef de la langue Go, une langue domestique est née

Après la démission du chef de la langue Go, une langue domestique est née

PHPz
PHPzavant
2023-04-10 12:21:031197parcourir

Event Review

La semaine dernière, Steve Francia, responsable du projet linguistique Go de Google, a annoncé sa démission. La raison qu'il a donnée était que les travaux sur le projet Go étaient au point mort, ce qui lui fait ressentir. inconfortable. Il est intéressant de noter que certains Gophers nationaux (le nom autoproclamé des passionnés de la langue Go) ont également de nouvelles idées sur la langue Go. Par exemple, des Gophers tels que Chai Shushan, l'un des premiers passionnés du langage Go en Chine, et Shi Bin, qui figure depuis longtemps dans le top 50 de la liste mondiale des contributeurs Go, ont décidé de lancer un nouveau langage de programmation basé sur le langage Go. langue : Ao Language™ (Ao prononcé « Wa »).

Actuellement, le code de Concave Language™ est open source sur Github, et des exemples exécutables simples sont fournis. Selon l'introduction de son entrepôt, les objectifs de conception de WaGo Language™ sont les suivants : 1. Langage C++ enveloppé dans la syntaxe Go et Rust 2. Le suffixe du fichier de code source de Wago Language™ est .wa3, et le langage concave ™ est compatible avec la syntaxe Concave et est cohérente avec la grammaire WaGo au niveau AST (les deux peuvent générer le même AST et se convertir sans perte) 4. Concave Language™ prend en charge les mots-clés bilingues chinois/anglais, c'est-à-dire n'importe quel mot-clé. a une version chinoise et une version anglaise. Elles sont équivalentes au niveau grammatical

Après la démission du chef de la langue Go, une langue domestique est née

Indication Gao Language™, source d'image @GitHub

Selon Chai Shushan, Shi Bin et d'autres, le ". Le style "sobre" du langage Go est leur approche des langages de programmation. Le plus grand dénominateur commun de l'esthétique. Par conséquent, lorsque le projet Concave Language™ a été lancé, il s’est largement inspiré des idées de conception et de la mise en œuvre spécifique de Go.

Bien sûr, ils ont également dit que choisir le langage Go comme modèle initial était un compromis qui devait être fait avec un investissement limité. Ils espèrent qu'à mesure que le projet se développe, ils accumuleront des conceptions plus originales et contribueront à la tendance de l'innovation indépendante. Bien que Chai Shushan, Shi Bin et d'autres soient des Gophers seniors, il n'est pas difficile de comprendre leur préférence pour la langue Go, mais nous ne pouvons nous empêcher de nous demander : à quel point la langue Go est-elle magique qui les rend si fascinés par la langue Go ?

Pourquoi choisir le langage Go

À en juger par l'évaluation de Go par de nombreux développeurs qui ont utilisé le langage Go, le langage Go présente les quatre caractéristiques de conception suivantes.

1. Simple et facile à utiliser
Contrairement à ces langages de programmation traditionnels (tels que C++, Java, etc.) qui continuent d'ajouter de nouvelles fonctionnalités en empruntant à chacun D'autre part, les concepteurs de Go sont dans la conception du langage. Dès le début, nous avons refusé de prendre la voie de la fusion des fonctionnalités du langage et avons choisi la « soustraction ».

Ils laissent la complexité à la conception et à la mise en œuvre du langage lui-même, à l'équipe de développement principale de Go, et laissent la simplicité, la facilité d'utilisation et la clarté à la majorité des développeurs qui utilisent le langage Go. Ainsi, le langage Go présente :

  • Syntaxe concise et conventionnelle (pas besoin d'analyser les tables de symboles), seulement 25 mots-clés
  • Aucun fichier d'en-tête ; Pas de dépendances circulaires (packages) ;
  • Les constantes ne sont que des nombres ;
  • La première lettre détermine la visibilité
  • Tout type peut avoir des méthodes (pas de classes) ; pas de sous-classement);
  • Aucune conversion arithmétique ;
  • Aucun constructeur ou destructeur
  • L'affectation n'est pas une expression
  • Dans les affectations et les appels de fonction ; ");
  • Aucune arithmétique de pointeur;
  • La mémoire est toujours initialisée à la valeur zéro;
  • Aucune syntaxe d'annotation de type (telle que const, static en C++ etc.)
  • ……
  • 2. Combinaison préférée
  • Les langages orientés objet grand public tels que C++ et Java couplent diverses parties du programme via un énorme système de types descendants, un héritage, une implémentation d'interface explicite et d'autres mécanismes, mais nous ne trouvons pas de langages orientés objet classiques​ ​dans le langage Go Éléments syntaxiques, systèmes de types et mécanismes d'héritage pour les objets.

    Alors, comment le langage Go relie-t-il les différentes parties du programme ? C'est une combinaison.

    Au niveau de la conception du langage, Go utilise des éléments de syntaxe orthogonaux, y compris le système sans type du langage Go. Les types sont indépendants et il n'y a pas de concept de sous-types ; sont orthogonalement indépendants.
    Grâce à l'intégration de types, les fonctions déjà implémentées sont intégrées dans de nouveaux types pour répondre rapidement aux exigences fonctionnelles des nouveaux types. Lors de l’appel d’une méthode sur une instance d’un nouveau type, la correspondance de méthode dépend du nom de la méthode et non du type.
    De plus, l'agrégation des comportements d'interface est réalisée en intégrant le type d'interface dans la définition de l'interface pour former une grande interface. Cette méthode est particulièrement couramment utilisée dans la bibliothèque standard et est devenue un usage courant dans le. Allez la langue.

    Il s'agit d'une conception innovante du langage Go : une interface n'est qu'un ensemble de méthodes, et la relation avec l'implémenteur est implicite, ce qui minimise le couplage entre les différentes parties du programme.
    3. Concurrence et légèreté

    Les trois concepteurs du langage Go, Rob Pike, Robert Griesemer et Ken Thompson, pensaient un jour que le comité des normes C++ avait une vision à courte vue parce que le matériel était très complexe et des changements majeurs pourraient survenir dans les dix prochaines années. Il est très imprudent de coupler étroitement le langage avec le matériel de l'époque. Cela n'apportera pas beaucoup d'aide aux développeurs lors de l'écriture de programmes simultanés à grande échelle.
    Ils considèrent donc la prise en charge native intégrée de la concurrence multicœur comme l'un des principes de conception du nouveau langage.

    La philosophie de conception de la prise en charge native de la concurrence par le langage Go se reflète dans les deux points suivants.
    (1) Le langage Go adopte un modèle de simultanéité de coroutine léger, rendant les applications Go plus évolutives lorsqu'elles ciblent du matériel multicœur. (2) Le langage Go fournit aux développeurs des éléments de syntaxe et des mécanismes prenant en charge la concurrence.
    4. Orienté vers l'ingénierie

    Dans la phase initiale de conception du langage Go, les concepteurs du langage Go considéraient la résolution des problèmes d'ingénierie comme l'un des principes de conception de Go, puis considéraient Go. syntaxe et chaîne d'outils La conception de la bibliothèque standard constitue également une différence majeure dans les idées de conception entre Go et les langages de programmation plus académiques et axés sur la recherche.
    Cela rend la spécification du langage Go suffisamment simple et flexible pour que les programmeurs ayant une base dans d'autres langages puissent rapidement se lancer. Plus important encore, Go est livré avec une chaîne d’outils complète, ce qui améliore considérablement la cohérence de la collaboration en équipe. Par exemple, Gofmt formate automatiquement le code Go, ce qui élimine en grande partie le problème des styles de formatage incohérents des codes écrits par différentes personnes. Configurez l'éditeur pour qu'il exécute automatiquement Gofmt lors de la modification de l'archive, afin que vous puissiez placer le code à volonté lors de l'écriture du code, et il deviendra automatiquement un code correctement saisi lors de l'archivage. De plus, il existe des outils très utiles tels que Gofix et Govet.

    En bref, la simplicité de Go au niveau du langage permet à Go de gagner une expressivité qui n'est pas inférieure au C++/Java, etc., tout en gagnant également une meilleure lisibilité, une plus grande efficacité de développement, etc. dans le domaine du génie logiciel. comme un élément important.

    L'avenir du langage concave™

    Bien qu'aujourd'hui, Go soit devenu l'un des langages de programmation grand public​​avec ses performances supérieures (plus de 75% des CNCF projet, comprenant Kubernetes et Istio, tous deux écrits en Go, de plus, Go est également l'un des principaux langages d'application cloud), Allez langue en Chine Elle est également très populaire, mais nous ne pouvons toujours pas nous empêcher de nous demander si la langue concave™, née de Go, aura un brillant avenir ?


    Il a toujours été difficile de prédire l'avenir. Cependant, heureusement, il existe un précurseur devant le langage Concave Language™-Go+. Autant spéculer grossièrement sur l'avenir de Concave Language™ en s'appuyant sur. le développement de Go+.

    Go+ est un langage de programmation inventé par Xu Shiwei, PDG de Qiniu Cloud. Il a été officiellement publié en juillet 2020 et la version 1.0 a été lancée en octobre 2021. La dernière version actuellement publiée est la version 1.1 publiée le 13 juin de cette année. En d’autres termes, près de deux ans se sont écoulés depuis sa sortie officielle. Go+ en est encore à sa phase initiale et est encore loin d’une application à grande échelle. On peut prévoir que Concave Language™ n’entrera pas sur le marché avant longtemps. l'avenir. Aux yeux de la majorité des développeurs.

    De plus, selon les opinions exprimées par Xu Shiwei lors de la conférence ECUG Con 2022, bien que tout le monde accorde plus d'attention aux performances des langages de programmation, du seul point de vue des performances, Xu Shiwei estime que Python ne peut être considéré que comme un langage de second ordre parmi les langages de script, Python n'est en fait pas rapide. Pour Xu Shiwei, la chose la plus importante pour une nouvelle langue est le groupe cible qu’elle choisit.

    Le groupe cible choisi par Go+ est le peuple tout entier. Xu Shiwei l'appelle « un langage que même les enfants peuvent maîtriser ». Par conséquent, Go+ part de l'intégration de l'ingénierie et de l'enseignement STEM pour constituer une base d'utilisateurs.

    Ce sont ces fonctionnalités de Go+ qui rendent certains développeurs optimistes quant à l'avenir de Go+. Les attentes positives concernant Go+ constitueront un stimulant pour le développement ultérieur de Go+.

    Ce principe s'applique également à Concave Language™ : L'objectif de développement de Concave Language™ ne réside peut-être pas dans la performance, mais dans quels groupes il choisit comme public cible et comment obtenir des utilisateurs de départ.

    Si l'équipe du projet Ao Language™ annonce ces nouvelles à l'avenir, alors nous pouvons toujours espérer l'avenir d'Ao Language™.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer