LANGAGE SLADE

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 28 févr. 2012 à 19:27
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 28 févr. 2012 à 20:38
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/54110-langage-slade

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
28 févr. 2012 à 20:38
Met au propre ta source, en appliquant déjà les conseils donnés.
Je vais désactivé temporairement ta source, le temps que tu mettes celle-ci à niveau. Si tu es bloqué, demande de l'aide sur le forum sur des points spécifiques.
lesnouesremy Messages postés 16 Date d'inscription jeudi 7 mai 2009 Statut Membre Dernière intervention 10 avril 2010
28 févr. 2012 à 20:16
Oui le code est peut etre sale, meme très sale mais je ne suis que débutant et je me suis remit au C, c++ que depuis quelques semaine donc je ne suis pas en mesure de faire des chose extrement compliquer ni très prores. Et je n'apprend quand bidouillant les sources existante sur internet donc je n'est pas souvent d'aide et je n'en demande pas souvent ^^'
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
28 févr. 2012 à 20:10
> Peut être mais javais dit que je n'avais jamais réussi a utiliser flex et bison donc j'ai fais avec ce que javais.
Aucun rapport. Flex et Bison facilitent les choses, mais si ton langage n'en est pas un, Flex/Bison ou pas, ça ne change rien. Ici, ce n'est qu'un découpage qui aurait pu être faire via un simple "std::getline". (Edit: au moment d'écrire cette phrase, je n'avais pas encore vu ta source. En voyant le code, c'est effectivement un std::getline. C'est correcte techniquement, mais je pointe juste le fait que c'est un peu simpliste pour un "langage". Même sans Flex/Bison, tu peux écrire un lexer et un parser à la main).

> Et pour répondre a ta 2eme question a propos des headers c'est pour que TCC puisse compiler le code source généré.
Pourquoi ne pas simplement généré la source pour TCC ? Ou mieux encore, généré une source C ou C++ prête à compiler ? Ou encore mieux directement coder en C ou C++ ?
Si le "langage" permettait de réaliser des choses vraiment "difficile", je ne dirais rien, mais là c'est vraiment pour faire des choses extrêmement basiques en plus compliqué...

Au niveau de la source que tu viens enfin d'ajouter, le code est très maladroit. Il y a pas mal de choses à ne jamais faire dans un programme, notamment:
- Evite les using namespace http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace
- Evite les variables globales !
- const_cast => Si tu en es à l'utiliser, il y a de forte chance qu'il y ait une erreur de conception. Soit dit en passant, faire un: strlen(const_cast<char*>(file.c_str()) au lieu d'un file.size(), c'est se compliquer la vie pour rien.
- Au lieu d'écrire:
fichier << "#include <stdio.h>" << endl;
fichier << "#include <stdlib.h>" << endl;
etc..
Tu aurais pu simplement les chaîner:
fichier << "#include <stdio.h>" << std::endl
<< "#include <stdlib.h>" << std::endl
etc...
<< std::endl;

- La fonction monolithique de 400 lignes Oo, c'est juste l'un des pires trucs à éviter. Une fonction ne devrait pas excéder une cinquantaine de ligne (et encore). Un code bien conçu est découpé en plusieurs petites fonctions réalisant chacune une tâche. Ici, on a 400 lignes parce que tu refais pleins de fois la même chose avec une très légère différence => Faire des fonctions au lieu de faire du copier-coller.

Pour conclure:
- Finalité de la source très limité.
- Code (très) sale (mauvais exemple pour les débutants qui vont te relire).
- Commentaires inexistants (intérêt pédagogique limité).

J'ai l'impression que tu as confondu le dépôt de source et le forum. Je rappelle que le dépôt de source est là pour montrer une manière de faire "propre", une méthode très technique, ou une source originale (ta source n'entre dans aucune des trois). Lorsque tu déposes une source, la critique est bien plus sévère que si tu présentes ton code sur le forum. On attend un niveau minimum de qualité (ne pas confondre qualité et niveau du programmeur. On peut être expert et poster une source de mauvaise qualité et être débutant et poster quelque chose de très carré et très propre).
Peut être aurais-tu du poster un message sur le forum, avec comme titre: "Critiquez mon programme afin que je m'améliore".

Pour ces raisons, la source sera désactivé. Rien ne t'empêche de demander de l'aide dans le forum, d'améliorer drastiquement ta source et de revenir la poster lorsqu'elle aura atteint un niveau de qualité satisfaisante.
lesnouesremy Messages postés 16 Date d'inscription jeudi 7 mai 2009 Statut Membre Dernière intervention 10 avril 2010
28 févr. 2012 à 19:41
Et pour répondre a ta 2eme question a propos des headers c'est pour que TCC puisse compiler le code source généré.
lesnouesremy Messages postés 16 Date d'inscription jeudi 7 mai 2009 Statut Membre Dernière intervention 10 avril 2010
28 févr. 2012 à 19:29
Peut être mais javais dit que je n'avais jamais réussi a utiliser flex et bison donc j'ai fais avec ce que javais.
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
28 févr. 2012 à 19:27
Bonjour.

1) Tout d'abord où est le code source ?
2) Pourquoi avoir embarqué dans le zip: les headers du C, les bibliothèques de mingw ? Plein (vraiment plein) de trucs qui ne servent à rien ?
3) La source se résume au final à un découpage de mot séparé par "->". On est loin d'interpréter un langage comme il est dit dans le titre... (C'est plus proche d'un fichier de configuration qu'autre chose).
Rejoignez-nous