France-ioi / codecast

Codecast C learning platform (formerly fioi-recorder).
MIT License
30 stars 17 forks source link

Language Server Protocol #108

Closed remisharrock closed 6 years ago

remisharrock commented 6 years ago

ACE est un très bon éditeur, mais ne supporte pas le Language Server Protocol. L'editeur Monaco le supporte par exemple:

https://typefox.io/teaching-the-language-server-protocol-to-microsofts-monaco-editor

Ceci permet d'avoir des fonctionnalités du style "intellisense" d'autocompletion intelligentes comme le montre la démo ici http://52.29.251.2/calcmonaco/

En interne, voici l'explication:

The Monaco Editor Language Client provides a language client that establishes communication between Monaco editors and language servers over JSON-RPC and the VSCode WebSocket JSON-RPC package enables JSON-RPC to work over web sockets.

Une équivalence pour ACE existe-t-elle ?

epixode commented 6 years ago

Je pense qu'il ne faut pas perdre de vue l'objectif pédagogique de codecast. Intégrer de l'autocomplétion "intelligente", dont l'objectif est un gain de productivité, ne me semble pas contribuer de manière significative à l'objectif principal qui est de comprendre finement ce que l'on écrit.

remisharrock commented 6 years ago

Oui pour l'autocompletion, après il y a aussi d'autres avantages au support du Language Server Protocol pour l'apprentissage de la programmation:

Il me semble que sur le long terme, avoir le support du Language Server Protocol est une bonne chose pédagogiquement :)

epixode commented 6 years ago

Ce n'est pas un mince effort. Non seulement en terme de dev (supporter l'enregistrement de toutes les interactions nouvelles avec l'éditeur [qui ne le prévoit pas forcement] et avec le language server), mais aussi en terme d'infrastructure (pour chaque instance de codecast ouverte, il faut une instance de clangd [ou du language server propriétaire de Microsoft, j'imagine?] sur un serveur dans le cloud, donc un usage très important (coûteux) de ressources.

J'ai brièvement regardé la documentation de l'API de Monaco, elle n'est pas de bonne qualité, ce qui n'aiderait pas. Il semble très récent, en version 0.13.1, donc sans garantie de pérennité de l'API. Je comprends le désir de plus de fonctionnalités et d'outils à la pointe, mais c'est pas trivial à intégrer.

remisharrock commented 6 years ago

Tout à fait! Je fais de la veille technologique pour le futur à long terme de Codecast ;) ACE n'a pas avancé de ce côté: https://github.com/ajaxorg/ace/issues/3124 Pour répondre à ta question, il existe de nombreuses implémentations du langage server protocol pour tous les langages de programmation. Tout est open source. Un exemple pour le langage c est le serveur cquery https://github.com/cquery-project/cquery Il supporte notamment le "semantic highlighting" avec support du rainbow semantic highlighting

Ok pour Monaco, il faut tout de même continuer à faire de la veille sur Language Server Protocol qui est maintenant un standard incontournable.

remisharrock commented 6 years ago

liens importants: https://github.com/Microsoft/language-server-protocol https://microsoft.github.io/language-server-protocol/overview Specification: https://microsoft.github.io/language-server-protocol/specification Implementations: https://microsoft.github.io/language-server-protocol/implementors/servers/

mathias-hiron commented 6 years ago

Pour les discussions sur les évolutions futures possibles de codecast, nous utiliserons un document séparé, et non des issues github.