Objectif : Tentative d'assemblage d'un dispositif d'autoévaluation pour ProLog
Scénario d'utilisation : choisir un exercice dans le dépot,
regarder la spécification (pour etre en accord sur le nombre et l'ordre des paramètres),
essayer d'écrire un/des prédicats dans l'éditeur pour cet exercice,
faire quelques tests d'utilisation dans la console,
lancer les tests automatiques.
Prédicats prédéfinis ProLog : bagof, call, cut, external, fail.
plusun(zero,un).
plusun(un,deux).
plusdeux(X,Y):-plusun(X,Z), plusun(Z,Y).
plusun(X,un).
suivi des versions
Version courante 1.0.0 : intégration des 3 codes (interpreteur prolog, editeur, console) + test
à faire :
spa,
autre-lang,
sav,
paramétrisation forte (editeur, interpreteur, console, comparateur),
pour pouvoir changer un des composants (etre indépendant de ces composants),
en déclarant ce que la platerforme a besoin (needs) et
en vérifiant ce que les composants fournissent (gives) (genre api informative)
+ un assembleur ou un testeur de bon assemblage
+encapsulation (pour séparer les composants et les rendre indépendants)
ajouter un lien plus explicite vers les exercices // faire le lien avec la plateforme
ajouter une video démo
crypter/decrypter réponses
parametres dans url
identifier utilisateur + groupe // utiliser la personnalisation d'une plateforme
transition interface fluide-continue
faire des tests selenium
choisir les idf cote dvpt
compatibilité IE
travail en deconnecte
remplacer toutes les constantes par des parametre
autre idée : console à trace ? (plutot pour js) dans la console on effectue la recherche/l'exo et on bascule dans l'editeur ensuite + ajout des boucles, etc ... (auto, ou à la main)
idée possible : editeur avec bibliotheque de fonctions connues
debugger
à-faire-comparateur : faire des tests automatiques / génériques
à-faire-comparateur : test-all,
à-faire-comparateur : si eval difficile, reponses compatibles ? (renommer les predicats utilisateurs)
à-faire-comparateur : boucle infini traitée à part,
à-faire-comparateur : traitement des multi-réponses, à part, avec tri,
à-faire-comparateur : traitement des variables auto, en les anomysant
à-faire-comparateur : test erreur classique / observé avec diag, explication,
à-faire-comparateur : code couleur pour ok:noire, ?:bleu, pas-ok:rouge (et pas de conclusion ?)
à-faire-console : améliorer la console pour qu'elle s'intégre mieux
à-faire-éditeur : code-suggestion (typée, contextuelle, selon habitude, avec classement de divers type de proposition, ...)
à-faire-éditeur : améliorer coloration automatique (reconnaissance des idf, coloration ligne à ligne)
à-faire-interpréteur : ajouter free / bound (comme prédicat prédéfini : v=value(x,env); if (x.type=="variable") return prove(Goal,Env,db,lvl+1,Rep) else return null
à-faire-interpréteur : ajouter "is" ? contraintes (linéaire, bijection, ... ?)
à-faire-interpréteur : ajouter freeze ?
à-faire-interpréteur : vérifier que l'évaluation en profondeur limitée est une évaluation en largeur.
Help-Dev:
à faire
Ranking exercice, problème, pour de l'auto-organisation.