heftyAD

huge, elegant, fast and transparent Algorithm Demystifier

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Hello everybody !

Je suis misterFad, étudiant comme certains parmi vous. Je suis actuellement en train de développer heftyAD, une application ayant pour but la démystification des algorithmes et je viens donc ici pour vous la présenter.

heftyAD, c'est quoi ?

heftyAD se prononce en anglais. Ce nom est un acronyme pour « huge, elegant, fast and trasparent algorithm demystifier ». Il s'agit en effet d'un vulgarisateur d’algorithmes qui se veut pédagogique, ludique et intuitif pour son utilisateur.

Écrite en C++11 avec la librairie graphique Qt dans sa dernière version, l'application est interactive et son utilisation intuitive. Aussi, heftyAD se veut « hefty », i.e. en anglais,

  • huge : proposer un maximum de fonctionnalités à l'utilisateur ;
  • elegant : pour pallier à sa complexité, l'application se doit d'être élégante et unique en son genre ; ;)
  • fast : le fonctionnement de l'application étant essentiellement basé sur le dessin de formes et l'exécution d'algorithmes, il est essentiel qu'elle soit rapide. Au revoir donc les lags, pas de temps de chargement kilométriques, que du bonheur ;
  • and transparent : et enfin, les notions abordées dans heftyAD étant pour la plupart réputées imbitables, il est impératif que l'application apporte un maximum de précisions et de clarté.

Capture d'écran n° 1

heftyAD, pourquoi ?

C’est les constats que j’ai faits à l’issu de certains cours qui m’ont fait tilter et m’ont ainsi orienté vers le développement de l'application. En effet, j’ai remarqué que très peu d’étudiants arrivent à suivre les cours d'algorithmie. Ce n'est pourtant pas toujours la faute aux apprenants, ni même celle des enseignants qui font souvent très bien leur travail…

Qu'il s'agisse de la théorie des graphes et des automates, ou encore de la théorie sur la complexité des algorithmes, la mystification même involontaire des algorithmes amène de plus en plus de personnes à s'y désintéresser. C’est donc pour changer cette donne que j'ai commencé à développer heftyAD.

Capture d'écran n° 2

heftyAD, pour qui ?

L'objectif de heftyAD est simple : enlever le mystère sur les algorithmes afin de les rendre accessibles à tout le monde. Lycéens, étudiants et curieux y trouveront donc leur compte.

Plus précisément, heftyAD est dédié à deux familles d'utilisateurs. D'un côté on retrouve ceux ayant compris le fonctionnement d'un certain nombre d'algorithmes et qui souhaitent partager leurs connaissances. De l'autre côté, se trouvent ceux ne comprenant pas ou souhaitant s'améliorer en algorithmie. Ils pourront récupérer des algorithmes écrits par des "initiés" afin de les exécuter et de mieux comprendre leur fonctionnement.

De plus, les enseignants (au lycée, à l'université ou en école d'ingénieurs) pourront s'en servir comme support de cours. L'application pourrait même être utile aux chercheurs en informatique (du moins à ceux dont les travaux sont en rapport avec les algorithmes).

heftyAD, c'en est où ?

La version 1.3 de l'application : c'est une version clé car c'est à partir de celle-ci que la réalisation même de l'application m'apparaît plus que jamais possible. Elle est accessible via le site web du projet (dont le lien est fourni tout en bas du présent post). Toutefois, même si cette version de l'application permet à l'utilisateur de contrôler le flux d'exécution d'un algorithme (mettre en pause, avancer ou reculer vers une itération souhaitée, recommencer, …), elle demeure limitée puisqu'on ne peut par exemple pas créer ses propres algorithmes. Aussi, seul l'algorithme de Dijkstra pour la recherche du court chemin est proposé. Mais l'application permet par ailleurs de créer des automates et présente de nombreux autres points positifs que vous découvrirez seulement en la testant.

Les prochaines versions de heftyAD : le code source de l'application est en cours de réécriture (à partir de zéro). Cela dit, les différentes captures d'écran montrées depuis le début illustrent les prochaines versions de l'application qui se veut complète, ludique et pédagogique.

D'autres infos ?

Merci de m'avoir lu. Si vous avez des remarques ou suggestions, je vous répondrais avec plaisir. :)

Édité par misterFad

heftyAD [YouTube, Git], un élégant vulgarisateur d'algorithmes écrit en C++, avec Qt.

+5 -0

Super projet !

Cet outil sera aussi bien utile pour les élèves que pour les profs. Fini de dessiner son graphe sur une feuille de papier user par les coups de gomme :p

Des screens que tu montres ça à l'air clair, intuitif, précis et pédagogique au possible.

Continue ainsi l'ami ;) !

Édité par Proktor

+1 -0
Auteur du sujet

Merci pour ces beaux commentaires. ;) Tout n'est pas encore parfait mais j'y travaille.

@Javier : Une matrice des arcs orientés ? Oui j'y ai pensé mais je n'ai pas trouvé ça très intuitif, surtout avec le nom des sommets en indice et les coups que l'on efface lorsqu'on en trouve un de meilleur. Mais bien sûr je suis d'accord avec toi une représentation sous forme de tableau pourrait être intéressante aussi.

De plus comme je l'avais dit, j'ai commencé à préparer la vidéo présentatrice du projet qui sera diffusée plus tard sur YouTube. Cela vous permettrait aussi de mieux comprendre ce que fait l'application, de voir comment heftyAD calcule le plus court chemin, et bien d'autres choses. Les algorithmes sur les automates seront aussi intégrés aisni qu'un système de jeu présenté plus haut.

Pour l'heure j'ai arrêté un peu de coder ; je dessine les icônes ainsi que le logo de l'application. Voici par exemple ce à quoi ressemble actuellement le logo. Ce n'est qu'un début ; je modifierais ensuite ce dessin fait à la main dans un outil approprié (Gimp ? PhotoShop ? etc).

un logo en cours

Donc si vous savez comment on modifie une image faite à la main sur ordinateur, je suis tout ouïe. Merci à vous. :)

heftyAD [YouTube, Git], un élégant vulgarisateur d'algorithmes écrit en C++, avec Qt.

+0 -0
Auteur du sujet

Merci à vous !

@QuanticPotato: Merci pour cette remarque, c'est une erreur très bête. ;) C'est corrigé !

C'est l'une des parties non traduites de l'application.

Une capture d'écran

@LeB0ucEtMistere: Avec les logiciels que tu cites (et que je connais que de nom), peut-on dessiner des courbes comme pour les ailes d'un papillon par exemple ?

Merci bien.

Édité par misterFad

heftyAD [YouTube, Git], un élégant vulgarisateur d'algorithmes écrit en C++, avec Qt.

+0 -0

Cette réponse a aidé l'auteur du sujet

Oui c'est le principe du dessin vectoriel, y'a pas plus adapté au dessin de logo car le principe c'est que tu dessines des courbes mathématiques (droites, splines, gaussiennes,…) donc je te le recommande fortement ;) je te laisse chercher sur internet et youtube, il y a une foule de tuto sur comment utiliser ces logiciels (ça change pas mal du dessin traditionnel quand même ^^)

+0 -0
Auteur du sujet

Merci pour ce tuyau. J'ai vu quelques tutoriels sur YouTube. Les logiciels sont vraiment intéressants. Mais pour arriver à faire quelque chose de potable, il est essentiel de les utiliser non pas occasionnellement mais très souvent. Du moins c'est ce que je pense d'après ce que j'ai vu. Je vais m'y mettre et espère pouvoir créer un beau logo.

Sinon Adobe Illustrator est écrit en C++, Inkscape en partie. Que dire donc ! Il faut vraiment que je termine heftyAD et bien. :)

Image utilisateur

Merci à vous et à très bientôt pour d'autres nouvelles. Avec toutes les icônes, le logo, sans oublier les logiciels de dessin que je ne connais pour l'instant que de nom, je pense que j'ai déjà pas mal de taff.

Édité par misterFad

heftyAD [YouTube, Git], un élégant vulgarisateur d'algorithmes écrit en C++, avec Qt.

+0 -0
Auteur du sujet

Les logiciels de dessin vectoriel (Inkscape en particulier) sont vraiment impressionnants. Et dire que quasi tous mes amis à qui j'ai parlé de la création de logos m'ont orienté vers Gimp. ^^

Ce n'est pas encore top, étant donné que je découvre le logiciel. Mais j'espère y arriver. Sinon j'ai implémenté hier la fonctionnalité permettant d'éditer le texte affiché dans un état ou un sommet (vu que heftyAD les nomme automatiquement : 1, 2, 3, … ou bien A, B, C, …).

heftyAD [YouTube, Git], un élégant vulgarisateur d'algorithmes écrit en C++, avec Qt.

+2 -0
Auteur du sujet

Salut Rem's, merci pour le commentaire. ;)

Pouvoir tester l'application ?

Pour ce qui est de pouvoir tester, j'avoue y avoir déjà pensé. Aussi, depuis le début, je comptais faire de heftyAD une application accessible à tout le monde. Mais puisque je suis étudiant, il est tout à fait compréhensible que je ne veuille pas me consacrer entièrement à sa réalisation, surtout que c'est ce que j'ai fait ce semestre et j'ai fini avec un ridicule 11 de moyenne. ^^ Afin donc de mieux me motiver à travailler dessus, je me disais que ce serait peut-être mieux si je pouvais la vendre à un prix s'élevant au maximum à 5 euros. C'est un chiffre que j'ai pris au hasard parce que pour moi c'est la limite idéale pour inciter une personne (un apprenant à fortiori) à acheter une application.

Mais bien sûr cela reste des suppositions : rien n'est sûr pour l'instant. Pendant ces vacances (qui arrivent bientôt à terme) je vais faire le maximum que je peux pour la rentrée. Je publierais ensuite la vidéo de présentation (qui sera à mon avis beaucoup plus qu'une démo) sur YouTube.

1ère version de Shadow dans heftyAD

Pour ce qui est de l'assistant dans l'application, celui qui sera l'ombre de l'utilisateur dans son apprentissage des algorithmes (Shadow), mais aussi pendant les phases de jeu (challenge), voici ce à quoi je pense pour l'instant :

Une première version de l'assistant Shadow

Je me demande si c'est une bonne idée de procéder ainsi ou bien faudra-t-il carrément que j'aille chercher un outil de modélisation tel que Blender pour le réaliser ? Pour l'heure j'ai juste dessiné sur papier puis retracer les contours essentiels (pas tous car sinon trop compliqué) dans Inkscape.

Édité par misterFad

heftyAD [YouTube, Git], un élégant vulgarisateur d'algorithmes écrit en C++, avec Qt.

+0 -0
Auteur du sujet

Hello !

Est-il normal que tous les commentaires que nous avons écrit aient disparu. Aussi, depuis hier, je n'ai pas pu me connecter à ce site et mon PC m'indique que le site possède un certificat de sécurité qui n'est pas fiable. What's going wrong ?

heftyAD [YouTube, Git], un élégant vulgarisateur d'algorithmes écrit en C++, avec Qt.

+0 -0
Auteur du sujet

@Arius: Ah je n'avais pas compris cela. ;)

@ux autres, par rapport à vos précédents commentaires Comme vous l'avez probablement déjà lu, nos précédents commentaires sont perdus et il semble que cette perte est définitive. Pour ceux donc qui n'auraient pas pu lire ma réponse, je vous la résume en quelques lignes.

Au début je comptais faire de heftyAD une application gratuite. Mais des profs ayant clairement exprimé leurs intérêts pour l'application, et des amis m'ayant même suggéré de la vendre ^^ , j'ai commencé à hésiter. Mais il est clair qu'au vu de vos arguments et de ceux évoqués dans ma réponse à vos commentaires, il est bien plus facile et plus rentable pour moi de la rendre gratuite comme je le pensais.

Je publierais donc les exécutables sur ce compte git. Pour l'instant il est vide mais il sera étoffé d'ici là. Vous serez alors averti en temps et en heure. Je suis en train d'apporter quelques modifications en interne. Voici quelques nouveautés : l'intégration de l'assistant (Shadow) et la réécriture du texte entre autres.

avancée 1

Avancée 2

Je vous tiendrais au courant dès que les exécutables seront près. Et en attendant si vous éventuellement vous avez une remarque, surtout n'hésitez pas.

heftyAD [YouTube, Git], un élégant vulgarisateur d'algorithmes écrit en C++, avec Qt.

+0 -0

C'est pas tant gratuit, que "ouvert" en fait. (effectivement, dommage que les arguments aient disparus…).

Gratuit pourquoi pas, à la rigueur peu importe. Par contre donner le code pour que des gens puissent regarder comment tu as fait, et surtout t'aider à améliorer ton logiciel, ou en reprendre des petits bouts parce qu'ils n'ont pas besoin de tout, t'aider à corriger des bugs, … Ça, ça risque de "te faire de la pub".

Donc en gros, c'est pas les exécutables qu'il faut mettre sur GitHub, ça ne te fera pas de (bonne) publicité, mais le code source (mets les exécutables aussi si tu veux distribuer facilement le logiciel). Sans le code source, certes les gens trouveront ton logiciel, mais tu perds beaucoup beaucoup des intérêts que j'avais cités dans mon message perdu.

Si tu as peur qu'on te "vole", sache que certaines licences peuvent te permettre de protéger ton code contre des utilisations (commerciales par exemple, ou non). Ce n'est donc pas un "bon" argument :)

Bon courage, bonne continuation.

Happiness is a warm puppy

+0 -0
Auteur du sujet

Je te remercie pour ce commentaire très intéressant. :)

Il est clair qu'un projet rendu public et où tout le monde peut contribuer ne peut avoir que du succès. Les preuves évidentes sont Linux, Inkscape, OpenOffice et j'en passe.

Cependant, mise à part la création d'interface graphique Qt, j'ai appris les principales fonctionnalités implémentées dans heftyAD entre début avril et aujourd'hui. Autrement dit, je découvrais les fonctionnalités tout en essayant de les intégrer au mieux dans l'application. Cette remarque est tout aussi valable pour le C++ que j'ai appris sur le tas. Et par fonctionnalités je désigne essentiellement

  • les vues Qt que je ne connaissais pas : pour dessiner les graphes et les automates à la souris
  • ainsi que les threads Qt : pour réaliser des animations lorsque l'algorithme de Dijkstra s'exécute par exemple.

En conséquence, le code source n'est pas très propre et nécessite certainement une réécriture. Je me dis donc que publier un code que tout le monde peut facilement critiquer n'est peut-être pas une bonne idée. Pour information, voici une capture d'écran du dépôt git actuel du projet mais il est privé.

Compte git actuel qui est privé - donc moi seul y est accès

Pour ce qui est des licences, je n'y connais pas grand chose. J'ai cherché sur internet et ai trouvé pas mal d'informations. Mais aucune des licences que j'ai trouvées ne semble empêcher l'usage commercial de l'application par autrui (sauf les Creatives Commons mais j'ignore si on peut l'appliquer à un logiciel). ^^

Édité par misterFad

heftyAD [YouTube, Git], un élégant vulgarisateur d'algorithmes écrit en C++, avec Qt.

+0 -0

Ça mériterait un topic à part pour trouver la licence qui te conviendrait le mieux :) (notamment à l'aide des licences françaises : CECILL peut-être ?).

Pour ce qui est du code, il te suffit de l'expliquer dans le README.md. Et plutôt voir ça dans le bon sens :) Tu es débutant et plus ou moins autodidacte, c'est normal que tu produises un code de débutant qui pourrait être repris. Si quelqu'un te dit que c'est mal écrit, demande lui pourquoi. S'il te répond tu progresseras, s'il te "snob" et est condescendant c'est que c'est un abruti. Ca s'arrête là !

Happiness is a warm puppy

+1 -0

Malheureusement, les CeCIll ont exactement les mêmes clauses que (respectivement) la GPL, la BSD et la LGPL, donc pas de protection contre l'utilisation commerciale. Les BiPu proposent quelques variantes avec clause non-commerciale, mais elles excluent explicitement le logiciel. Quant aux CC, même si le nom est trompeur, elles bloquent bien plus que les utilisations commerciales, et ne sont pas vraiment conçues pour le logiciel.

À ma connaissance, il n'y a pas de licence logicielle qui inclue une telle clause (c'est un peu tabou, le non commercial, dans le monde du logiciel libre). Il faudrait sans doute en créer, en prenant la CeCIll pour base. Mais si ça vous intéresse, faudrait ouvrir un nouveau sujet, dans « Autres savoirs ».

#JeSuisGrimur #OnVautMieuxQueÇa

+1 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

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