Resoudre une bonne partie des topics "Quel langage choisir" qui vont fleurir

Un tuto pour les gouverner tous

a marqué ce sujet comme résolu.

Je pense qu'il faudrait, dans l'idéal, qu'un petit groupe motivé pour bosser dessus ce constitue et commence à pondre un truc viable. Dans l'idéal avec un scope limité (ex: uniquement les langages) pour voir ce à quoi on peut arriver.

Je veux bien être volontaire pour donner les coups de fouet :pirate:

+1 -1

Ah mais on ne me pingue jamais quand il y'a des trucs aussi cool à implémenter. :(

C'est typiquement le genre de feature qui pourrait être cool a implémenter et donc je peux aider au développement si ça vous dit.

C'est clairement du système expert avec un algo de chainage avant.

Moi je l'identifie ainsi à première vue.

Les propositions

Une proposition étant une assertion, elle peut être vraie ou fausse. On peut donc avoir dans la base de donnée, un ensemble de propositions telles que.

  • Apprendre quelque chose
  • Réaliser un projet
  • Un projet de site web
  • Un projet de jeux vidéos
  • Un projet de marketing
  • Un projet de cuisine
  • Apprentissage de l'informatique
  • Apprentissage de la cuisine
  • Apprentissage d'un langage informatique
  • Apprentissage de la modélisation informatique
  • Utilisation d'une base de données
  • Utilisation d'un frameworks
  • etc.

En gros, il va falloir remplir le système expert de tout une Stack de propositions.

Le moteur d'inférence

Il va donc falloir relier sous forme de réseaux de neurones nos fameuses propositions (qu'on appellera des premisses) avec leurs conclusion (une conclusion qui est elle aussi une proposition).

Pour moi cette partie devra se faire par le staff. En gros, c'est le staff qui devra valider le fait que pour "Apprendre le Node JS", il faudra valider les premisses ("connaitre le Lanage JS", "Connaitre le langage HTML") par exemple.

On peut brancher les tags du site dans la listes des propositions (qui serviront pour conseiller les membres sur les tutos à lire).


Il ne reste plus qu'a coder.

Un des problèmes, ça sera que chaque ajout de tutoriel devra (à priori) être répertorié sur ce système pour être intégré dans les solutions proposées au visiteur.

Il serait peut-être du coup important de réfléchir aux critères de sélection de tel ou tel contenu : est-ce qu'on se base uniquement sur les données rentrées manuellement ? Est-ce qu'on peut également utiliser de façon précise les "métadonnées" des tutoriels ? (D'ailleurs, à ce propos, actuellement, les tags ne sont pas forcément très précis, ou pas forcément représentatifs de ce qu'on recherche. Est-il prévu/possible d'ajouter d'autres métadonnées aux tutoriels (difficulté, temps d'apprentissage, thème global - science ou informatique-) ?)

Par ailleurs, je ne suis pas sûr que l'emploi du même système que Akinator soit judicieux. Akinator va chercher à éliminer des possibilités, en sachant qu'il n'existe qu'une seule solution. Dans notre cas, proposer un seul tutoriel serait-il réellement pratique ? Pourquoi pas plutôt un panel de différents thèmes/tutos, avec éventuellement quelques infos supplémentaires ?

Du coup, pour mettre en place cette solution, il faudrait plutôt partir sur le principe que plusieurs tutos sont "éligibles", et donc pourquoi pas introduire une notation des différents tutos selon les réponses de l'utilisateur, puis lui présenter ceux qui auront obtenu la meilleure note, quitte à éliminer ceux qui seront trop HS.

+0 -0

Un des problèmes, ça sera que chaque ajout de tutoriel devra (à priori) être répertorié sur ce système pour être intégré dans les solutions proposées au visiteur.

Java.com

C'est bien pour ça que dans ma proposition (présentée de manière un peu technique) je précise que les conclusions à donner devront être des tags.

En gros, le système répondra au membre par des tags (et ces tags permettront d'afficher la liste des tutos existants). Donc il n'y aurait pas de problème d'alimentation des tutos dans les solutions possibles.

Le boulot sera plus au niveau de l'association des premisses (questions) aux conclusions (tag).

Le problème, c'est qu'en utilisant simplement les tags, tu ne peux pas distinguer par exemple un tutoriel en C adressé aux débutants d'un tutoriel portant sur un point précis du langage C. Tous les deux auront le tag #C.

Et puis ensuite, ça risque de faire trop de tutoriels. C'est possible qu'on ait rapidement beaucoup de tutoriels ayant le même tag ; on ne pourra plus les distinguer assez facilement.

Pour moi les deux doit être décorrélés. Un tel systeme ne serait utile que si il est exaustif. Or nos tutos sont loin d'etre exaustif.

Si je veux faire du front pour un site web, le systeme doit me répondre d'apprendre le HTML et le JS. Or aucun des deux n'est présent ici. Du coup, il ne va rien répondre ?

Je pense donc que les données finales doivent être des entité avec, optionnellement, des tutos "pour débutant" lié et choisi par le staff. Pour éviter de proposer un cours de metaprogramation et template a quelqu'un qui veut apprendre le C++.

Enfin, dans un premier temps, je pense qu'il faut beaucoup plus limiter le scope que ce qui a été proposé par firm1. Pour moi une v1 ne devrait s'attacher qu'à proposer par exemple des langages de programmation. Et quand ça marchera et qu'on aura fait les ajustement, on pourra rajouter autre chose (biblioteques et framework, sciences, etc.)

Je pense pour ma part que dans une v1 il faudrait partir sur l'approche suivante (je peux être à côté de la plaque, pas de pb) :

Les feuilles de l'arbre, donc ce qui est proposé à l'utilisateur à la fin des questions ou de sno cheminement sont des "ressources" abstraites.

Une ressource possède certes des tags qui nous permettent de la ranger quelque part, mais ne sont pas nécessairement des tutoriels du site. Je pense que si on part là-dessus on se ferme des portes intéressantes. Une "ressource" ça peut être un langage de programmation agrémentés de cours, de documentations, d'exemples de code, à laquelle on peut lier des topics de forum éventuellement, ou un article. C'est une page de présentation d'une technologie.

Ca peut paraître délirant ou hors de propos ou infaisable (je le reconnais volontiers) mais je pense que si on ne présente que nos tutoriels le système va vite trouver ses limites (Kje a donné un excellent exemple). Et se dire : on est là pour aiguiller les gens, pas leur vendre nos tutos. Si on a des cours sur le domaine tant mieux, on les présente, sinon bah fair enough on leur présente la technologie.

C'est vraiment qu'une idée que je lance comme ça tant qu'on n'a rien décidé ni implémenté pour recueillir vos points de vue. J'ai du mal en toute honnêteté à me rendre compte de la charge de travail que ça implique. N'hésitez pas à m'envoyer bouler si vraiment ça vous semble hors de propos :)

+0 -0

N'oublions pas que le but du truc, pour que ça soit vraiment utilisable, c'est de proposer un minimum de résultat en posant a l'utilisateur un minimum de questions. Si on commence a vouloir indexer toutes les ressources extérieurs au site ne serait-ce pas décoder Google ?

J'ai pensé aux tags ici car un tag peut constituer une conclusion a un ensemble de problème et le tag en lui même a la capacité d'ouvrir sur une multitude de ressources.

Un exemple tout bête : je veux faire un jeux video comme light bot, mais je ne sais pas comment m'y prendre.

Je consulté le système qui va me poser 3-4 questions et la réponse du système en fonction de mes réponses pourra par exemple être le tag "kivy". Ce tag pourra donc déboucher sur une foulitide de ressources.

Peut-être qu'il ne faut pas aller aussi loin.
Le but est de répondre à la question en citant un ou des langages de programmation. Si il y a des ressources sur ZDS, on peut les ajoutés dans la réponse sinon c'est pas grave, l'utilisateur aura eu sa réponse et pourra éventuellement chercher des tutos ailleurs.

L'avantage de cette méthode, c'est que du coup on "recense" toutes les technologies (on du moins le plus possible), même si elles ne sont pas sur ZdS. Du coup, si un nouveau tuto apparaît, peu importe le sujet, il pourra entrer dans le système de choix.

Du coup, si jamais on décide par la suite de restreindre le champ des propositions aux tutos de ZdS, tous les tutoriels et toutes les technologies seront prises en compte. L'idée serait donc de faire une description de nombreuses technologies, quitte à ce qu'elles ne servent pas si jamais aucun tuto du site ne porte dessus. Mais le jour où un tuto sera publié, on n'aura pas besoin de modifier le système utilisé, ni d'y ajouter quoi que ce soit.

Bonjour à vous, je pense qu'en effet créer ce genre de module peut être réellement intéressant. En effet il y a souvent ce genre de question et on voit régulièrement qu'il n'y a pas UNE techno précise pour arriver à tel ou tel but. Du coup ne faudrait il pas envisager, en réponse à l'utilisateur, une liste de techno allant de celle qui semble la plus pertinente par le site/staff en donnant quelques infos sur celle ci, à celle qui semble la moins efficace pour répondre à la problématique ou du moins les autres techno qui peuvent également répondre à sa demande.

Tu proposes les trois plus populaires sur ZDS (après tout si le moteur d'inférence est codé, c'est par nous, faut penser à mettre en avant l'argument communautaire) en faisant un "podium de popularité". Un débutant a besoin d'être guidé, je pense que la force de la communauté est extrêmement importante si le moteur d'inférence est le point d'entrée.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte