web-dev-qa-db-fra.com

La meilleure façon d'enseigner aux programmeurs novices?

Je travaille sur un projet qui vise à enseigner la programmation aux novices. Je veux qu'ils suivent des directives spécifiques de programmation et s'y habituent (en raison du fait que ces directives sont généralement acceptées comme des "meilleures pratiques").

Pour cela, je voulais utiliser un programme qui peut réagir aux différentes actions prises par l'utilisateur lors de la programmation (par exemple créer un objet).

Ce programme devrait-il plutôt réprimander les "mauvais" comportements ou complimenter les "bons" comportements? Existe-t-il des preuves (scientifiques) qu'une de ces méthodes (ou un mélange des deux) est considérée comme plus efficace ou appropriée pour certaines situations?

2
Stefan Surkamp

J'aimerais penser que les programmeurs aimeraient savoir quand ils font quelque chose de "mal", car un mauvais code est généralement inefficace (pour écrire ou exécuter ), difficile à entretenir, ou les deux.

Lorsque vous pointez du code de faible qualité, l'idéal serait de leur montrer une meilleure façon de l'écrire. Il y a un Haskell Pastebin que j'utilise de temps en temps qui souligne toutes sortes de choses comme des parenthèses inutiles ou recommande une fonction différente de celle que j'ai utilisée.

Par exemple, voici comment j'écrivais un morceau de code particulier dans Haskell:

withTransaction (
    (sequence_ $ map (PG.execute [sqlFile|sql/deletePhoto.sql|]) photos)
    )

C'est la façon la plus propre de l'écrire qui fait exactement la même chose:

withTransaction $
    mapM_ (PG.execute [sqlFile|sql/deletePhoto.sql|]) photos

Je n'aurais jamais connu la méthode plus propre si elle ne m'avait pas été signalée, et je suis toujours heureux d'apprendre ce genre de raccourcis.

Parfois, ce qui ne va pas ne peut pas être démontré en affichant un petit bloc de code soigné car c'est une conception fondamentalement mauvaise pour commencer (comme l'utilisation de prototype sur des objets natifs en JavaScript). Ignorer ces types d'erreurs (à condition que vous puissiez les détecter) n'aidera pas l'utilisateur. Tant que vous montrez à l'utilisateur de manière claire et objective pourquoi son code est mauvais avec une meilleure façon de résoudre le problème, l'utilisateur en bénéficiera.

Parfois, la meilleure façon d'apprendre est de faire des erreurs, mais les erreurs peuvent être difficiles à discerner pour un nouveau programmeur.

1
cimmanon