Dear all, I'm a PhD student at the Dept of Computing, Goldsmiths, London UK supervised by Prof. Geraint Wiggins. By way of introduction here's a recent paper of mine: http://doc.gold.ac.uk/~ma503am/writing/nime09.pdf and my blog: http://yaxu.org/
I discovered PPIG recently and am enjoying reading through the past papers, it's really great to have all the recent papers on open access, much appreciated! I particularly enjoyed Alan Blackwell's "Metaphors we program by" paper, and took the liberty of collating all the conceptual metaphors he found in java library documentation here: http://yaxu.org/metaphors-of-javadoc/ As you might see someone commented on my post with a link to Dijkstra railing against anthropomorphism in computer science. Dijkstra is of the opinion that computing is so radical that we shouldn't try to use any metaphors relating to our bodies, or indeed of any actions over time, otherwise you get in a terrible mess with `operational thinking' and end up with buggy code. This opinion seems extreme these days now that computing is pervasive and often centres around tight synchronisation between sensors and actuators over time and space [2]. If Cognitive Linguists such as Lackoff are right then thinking without metaphors grounded in physical experience is barely possible in any case. Further, I don't see why declarative language can't include functions over time, e.g. Functional Reactive Programming [3]. It would be interesting though to rerun the Java experiment with programmers of other languages, including declarative ones, and see how the conceptual metaphors differ? Actually I'm interested in all comparisons between declarative and imperative language, including psychological and pedagogical studies. Is one approach easier to learn than the other? Is it easier to switch from declarative to imperative approaches than vice-versa? My guess is that that functional programming is easier to learn than procedural programming for absolute beginners, but that it's harder to progress from procedural to functional programming than vice versa, giving the false impression that functional programming is generally harder... Does anyone know of studies attempting to test this? Best wishes, alex [1] http://www.cs.utexas.edu/~EWD/ewd09xx/EWD936.PDF [2] http://www.eecs.berkeley.edu/Pubs/TechRpts/2009/EECS-2009-30.pdf [3] http://conal.net/papers/push-pull-frp/