URL: https://linuxfr.org/users/montaigne/journaux/psychology-of-programming Title: Psychology of programming Authors: Ontologia Date: 2010年08月28日T17:13:50+02:00 Tags: Score: 28 En recherchant quelques docs sur les langages de programmations, je suis tombé sur un thème dont j'avais intuitivement soupçonné l'existence, sans jamais vraiment la vérifier : La recherche sur la psychologie de la programmation. Il se trouve qu'un site [http://www.ppig.org](http://www.ppig.org) , abrite une conférence annuelle se tenant depuis environ 20 ans sur ce sujet. La plupart des papiers sont accessibles en PDF. On y trouve des papiers absolument passionnants. Je vais vous en introduire quelques uns parmi les plus intéressants que j'ai trouvé, bien que je n'ai pas fini d'écumer tout ce qui s'y trouve. Pour la plupart je n'ai lu que l'abstract et la conclusion Divers aspects sont abordés : la compréhension de la programmation par les novices, l'enseignement de la programmation, l'étude de méthodes comme l'extreme programming, l'analyse de la doc des programmes, des analyses comparatives de langage, sans compter des problématiques plus théoriques. **Quelques papiers** [Metaphors we Program By : Space, Action and Society in Java](http://www.ppig.org/papers/18th-blackwell.pdf) : Ce papier analyse la doc, le code et diverses utilisation de java.util et java.bean et analyse les représentations mentales qui se trouvent derrière le code de façon latente. Les auteurs découvrent avec surprise que le code est métaphoriquement structuré par des agent BDI sans le D (Belief, Desire, Intention, modèle agent implémenté dans AgentSpeak par exemple, voir son [implémentation](http://jason.sourceforge.net/Jason/Jason.html) ). En particulier, le vocabulaire utilisé dans la Javadoc pour décrire les lib a été analysé et classé en terme de champ lexical, il y apparait plusieurs catégories : - Borrowings, context, conventional, generic action, mentalistic, physical, society. J'avoue particulièrement aimer ce papier car il me conforte dans mon projet de concevoir un langage intégralement agent. [A Loop is a Compression](http://www.ppig.org/papers/20th-milner.pdf) est une analyse de la perception de novice en programmation lorsqu'on leur apprend les bases des paradigme impératifs. Il y est par exemple analysé le code suivant qu'un novice doit comprendre : x := 0 input n while n is not equal to -99 { if n > x then x := n input n } output x Un extrait de la conversation (l'étudiant est en italique): So what do you think that program would do? _Basically, because x was already set to zero, and then the while loop, n is bigger than zero, its going to be put here, .. er.. (15 second pause) I wouldn't know, I'm not sure (12 second pause)_ You're not sure? _No it kind of gets me confused, if.._ So the interviewer introduces the idea of considering input values. The student needs a lot of help: OK OK if we.. one way to work this out is thinking what would happen if we put different numbers into it, so, x equals 0, input n, let's suppose we typed in 4, OK, so n would be 4, _Which is, err which is more than x_ OK so it says 4 is greater than x, so _x is going to be 4,_ OK so if we just jot that down, x is 4, yeah? Then input another value of n, so lets suppose we put in 6, OK? What will happen? It will loop around, and say n is not equal to -99, so we'll do it again, _Is it just going to print out 4?_ We haven't got there yet. If n is greater than x, so 6 is greater than x, yes it is, x becomes 6. And we input another value. Now suppose we input 2, this time. _Still going to, x is going to be 2, its bigger than zero,_ OK but x now is 6 Pour conclure l'auteur de l'article conclut que le pattern est toujours le même : * L'étudiant lit le code avec précaution sans parvenir à le comprendre * Etudie quelques traces de l'algorithme * Parvient à comprendre ce qui se passe La conclusion finale de l'auteur est qu'il vaut mieux expliquer une boucle en montrant une trace d'exécution, expliquer comment la "comprimer", puis présenter la boucle en elle même. [Gotos Considered Harmful and Other Programmers' Taboos](http://www.ppig.org/papers/12th-marshall.pdf) Recense les tabous qui ont cours chez les programmeurs, comme le goto, l'assembleur, les diagrammes... Assez marrant à lire ;-) [An Experiment on the Effects of Program Code Highlighting on Visual Search for Local Patterns](http://www.ppig.org/papers/18th-hakala.pdf) étudie l'impact de différents types de coloration syntaxique. Très utile pour clouer le bec à un troll... [Evaluating a new programming language](http://www.ppig.org/papers/13th-khazaei.pdf) propose une méthode pour évaluer un nouveau langage de programmation, ici C# (ça vient de Microsoft Research) Citons [Users' participation to the design process in a Free Open Source Software online community](http://www.ppig.org/papers/18th-barcellini.pdf) qui vous intéressera surement... Citons aussi [Programming without Code: A Work in-Progress Paper](http://www.ppig.org/papers/16th-brand.pdf) qui s'approche pas mal de ce que je veux faire. Ouf je suis pas le seul :-) Bonnes lectures !