Wikipédia abstraite/Mises à jour/2021-05-11
◀ | Actualités de la Wikipédia abstraite | ▶ |
- Phase δ (delta) achevée.
Lorsque nous avons commencé l’effort de développement pour le site Wikifonctions, nous avons subdivisé le travail devant mener au lancement de Wikifonctions en onze phases, nommées d’après les onze premières lettres de l’alphabet grec.
- Avec la phase α (alpha) achevée, il était devenu possible de créer dans le wiki des instances des Types fournis par le système.
- Avec la phase β (bêta), il était devenu possible de créer des Types sur le wiki et de créer des instances de ces Types.
- Avec la phase γ (gamma), tous les principaux Types du modèle de fonction pré-générique étaient disponibles.
- Cette semaine, nous avons terminé la phase δ (delta).
Le but de la phase δ (delta) était de fournir la capacité à évaluer des mises en œuvre intégrées.
Qu’est-ce que cela signifie ? Chaque fonction dans Wikifonctions peut avoir plusieurs mises en œuvre. Il y a trois façons différentes d’exprimer une mise en œuvre :
- En tant que code dans un certain langage de programmation, écrit par les utilisateurs de Wikifonctions : la mise en œuvre d’une fonction peut être donnée dans tout langage de programmation pris en charge par Wikifonctions. Éventuellement nous visons à prendre en charge un grand nombre de langages de programmation, mais nous commencerons par un petit nombre.
- En tant que fonction intégrée, écrite par l’équipe de développement : ceci signifie que la mise en œuvre est gérée par l’évaluateur dans une boîte noire. Nous espérons ne compter que sur un très petit nombre de fonctions intégrées nécessaires, puisque chaque évaluateur aura besoin de mettre en œuvre toutes les fonctions intégrées pour qu’il soit utilisable et nous voulons rendre l’ajout de nouveaux évaluateurs (et également de nouveaux langages de programmation) aussi facile que possible. Une liste de fonctions intégrées actuellement disponible est donnée ci-dessous. Cette liste n’est probablement pas finale, mais nous espérons qu’elle ne grossira pas.
- En tant que composition d’autres fonctions : ceci signifie que nous utilisons les fonctions existantes comme blocs de construction afin de mettre en œuvre de nouvelles capacités. Nous avons publié quelques exemples de mises en œuvre composées. La mise en œuvre en exemple des fonctions booléennes peut être particulièrement instructive.
Dans la phase δ (delta), nous avons créé l’infrastructure et les interfaces pour évaluer tout appel de fonction et permis des mises en œuvre intégrées. Les fonctions intégrées actuellement disponibles sont les suivantes :
If : Boolean, Any, Any ➝ Any
— retourne le deuxième argument si le premier est vrai, sinon le troisième ; « si » a deux lettres.Value by key : Key reference, Any ➝ Any
— retourne la valeur de la clé donnée de l’objet donné.Reify : Any ➝ List(Pair(Key reference, Any))
— transforme tout objet en une liste ordonnée de paires clé – valeur ; cela déconstruit l’objet.Abstract : List(Pair(Key reference, Any)) ➝ Any
— transforme une liste de couples clé-valeur en un objet ; cela construit un objet.Cons : Any, List ➝ List
— insère un objet en tête d’une liste ordonnée d’objets.Head : List ➝ Any
— obtient le premier élément d’une liste.Tail : List ➝ List
— obtient la liste avec son premier élément retiré.Empty : List ➝ Boolean
— retourne si une liste ne contient aucun élément.First : Pair ➝ Any
— extrait la première valeur d’un couple.Second : Pair ➝ Any
— extrait la seconde valeur d’un couple.Convert : String ➝ List(Character)
— convertit une chaîne en une liste de Caractères.Convert : List(Character) ➝ String
— convertit une liste de Caractères en une chaîne.Same : Character, Character ➝ Boolean
— compare deux caractères et retourne s’ils sont égaux.Unquote : Quote ➝ Any
— dé-cite une Citation.
Toutes ces mises en œuvre intégrées, bien que simples, sont de premières ébauches et actuellement seulement faiblement testées. Si vous les testez et trouvez des problèmes, veuillez les signaler sur Phabricator ou envoyer un courriel à notre liste de diffusion. Nous améliorerons celles-ci durant les prochaines semaines.
Les deux captures d’écran montrent une nouvelle page spéciale qui vous permet d’évaluer un appel de fonction. Ici nous offrons deux captures d’écran avec des exemples. La première affiche l’appel à la fonction « Si ». La condition est fixée à vraie et donc l’appel de fonction devrait retourner le conséquent (donnée comme la chaîne « this ») et non l’alternative (donnée comme la chaîne « that »). Et de fait, le résultat de l’Orchestration sous l’appel de fonction affiche un résultat normalisé représentant la chaîne « this » :
Le second exemple est directement repris de la condition d’achèvement de la phase sur le plan des phases de développement. Ici nous vérifions si une liste vide est bien vide (nous appelons la fonction Z813/Vide et l’argument Z813K1/liste est une liste vide). Le résultat est vrai (c’est-à-dire le Z40/Booléen avec la Z40K1/identité Z41/vrai) :
Nous promettons d’améliorer l’interface utilisateur avant le lancement ! Cette sortie JSON brute est essentiellement destinée au débogage et aux objectifs de développement alors que nous travaillons sur un langage de développement pour l’expérience de l’utilisateur.
Nous passons désormais à la phase ε (epsilon). Dans cette phase nous visons à prendre en charge des mises en œuvre écrites par l’utilisateur dans un langage de programmation. Notre plan initial est de prendre en charge du code écrit en JavaScript ou Python.
Puisque l’exécution de code arbitraire écrit par quiconque sur l’Internet comporte des risques majeurs de sécurité et de performance, nous suivrons le travail dans cette phase par des passages en revue approfondis de sécurité et de performance en travaillant avec nos collègues répartis au sein de la Fondation.
Nous n’avons actuellement pas d’instance publique et officielle de test du système WikiLambda en fonctionnement. Lucas Werkmeister, dans les limites de ses capacités en tant que bénévole, nous afourni jusqu’à présent une instance publique de test régulièrement mise à jour, notwikilambda, ce dont nous le remercions profondément, mais cette instance n’a pas encore été mise à jour pour prendre en charge le dorsal de l’orchestrateur (puisque nous devons encore documenter comment le faire). Nous continuerons à ne pas exécuter notre propre instance avant la conclusion des passages en revue de sécurité et de performance (mais nous ne stopperons personne d’autre de vouloir le faire et nous pouvons fournir un peu d’assistance sur les canaux habituels si quelqu’un désire en installer une).
Après la conclusion de la phase actuelle, nous passerons à la phase ζ (zeta), qui permettra le troisième type de mise en œuvre, les compositions.
Merci à l’équipe, merci aux bénévoles, pour leur fabuleux effort nous amenant jusqu’ici et je suis impatient de voir les prochaines étapes du projet !
(Note : il n’y aura pas de bulletin la semaine prochaine.)