
Programming as interaction: A new perspective for programming language research - jgamman
http://tomasp.net/blog/2018/programming-interaction/
======
azhenley
This is not new at all. There have been people studying this (myself only for
the last 6 years) for quite some time, generally falling under the field of
human-computer interaction. Even in the 70s researchers were studying how
people _read_ code.

In fact, there are niche conferences like VL/HCC (human-centric computing),
ICPC (program comprehension), and PPIG (psychology of programming) that
publish papers in this area each year. Bigger conferences, such as CHI, also
publish a handful of papers on novel ways to interact with code each year too.

~~~
wcrichton
Some specific resources for the interested:

\- Cognitive Dimensions of Notations (Green 1989)
[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128...](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.270&rep=rep1&type=pdf)

\- Programmers Are Users Too: Human-Centered Methods for Improving Programming
Tools (Myers et al. 2016)
[http://faculty.washington.edu/ajko/papers/Myers2016Programme...](http://faculty.washington.edu/ajko/papers/Myers2016ProgrammersAreUsers.pdf)

\- Programmer Interrupted (Parnin 2013)
[http://blog.ninlabs.com/2013/01/programmer-
interrupted/](http://blog.ninlabs.com/2013/01/programmer-interrupted/)

\- Empirical analysis of programming language adoption (Meyerovich and Rabkin
2013)
[https://dl.acm.org/citation.cfm?id=2509515](https://dl.acm.org/citation.cfm?id=2509515)

\- Learnable Programming (Victor 2012)
[http://worrydream.com/LearnableProgramming/](http://worrydream.com/LearnableProgramming/)

\- Usability of Programming Languages working group at CHI'16
[https://docs.google.com/document/d/1-GUt5oVPpi7rlObbU1WbA5V1...](https://docs.google.com/document/d/1-GUt5oVPpi7rlObbU1WbA5V1OQBX1iaghryLJ6-ND9o/)

~~~
azhenley
All great examples! Here are some other great researchers/groups that do
research in this area:

\- Brad Myer's Natural Programming Project at CMU (tons of novel tools!):
[http://www.cs.cmu.edu/~NatProg/index.html](http://www.cs.cmu.edu/~NatProg/index.html)

\- Andy Ko's work on debugging and learning to code:
[http://faculty.washington.edu/ajko/publications](http://faculty.washington.edu/ajko/publications)

\- Emerson Murphy-Hill's work on the usability of dev tools, especially
refactoring tools:
[https://people.engr.ncsu.edu/ermurph3/pubs.html](https://people.engr.ncsu.edu/ermurph3/pubs.html)

\- Chris Parnin's studies on the cognitive aspects of coding:
[http://chrisparnin.me/](http://chrisparnin.me/)

\- Chrsitian Bird's empirical studies of developers:
[http://www.cabird.com/wp/publications/](http://www.cabird.com/wp/publications/)

\- Thomas LaToza's work on the collaborative aspects of development:
[https://cs.gmu.edu/~tlatoza/papers.html](https://cs.gmu.edu/~tlatoza/papers.html)

\- Bjorn Hartmann's help support in code editors and tutorial generation:
[https://people.eecs.berkeley.edu/~bjoern/](https://people.eecs.berkeley.edu/~bjoern/)

\- Philip Guo's tools to support novices with coding:
[http://www.pgbovine.net/publications.htm](http://www.pgbovine.net/publications.htm)

\- My dissertation "Human-Centric Tools for Navigating Code":
[http://web.eecs.utk.edu/~azh/publications.html](http://web.eecs.utk.edu/~azh/publications.html)

\- Margaret Burnett's work on how people forage for information in code:
[http://web.engr.oregonstate.edu/~burnett/reprints.html](http://web.engr.oregonstate.edu/~burnett/reprints.html)

------
asprouse
Back in 2003 my fundamentals of CS course heavily relied on the interactions
window of DrScheme (now DrRacket [https://racket-lang.org/](https://racket-
lang.org/)). It was a extremely powerful educational tool. When I started
doing web development I found myself frequently putting snippets like
`javascript:alert('abc'.substr(1)` into the URL bar. With the advent of the
Firebug console it became even easier to try out new snippets. Now a days the
Chrome console tab even has autocomplete. I'd be interested to know how these
simple interactions contributed to the widespread adoption of JS and other
languages.

~~~
Something1234
Better completion usually makes me more productive no matter how crap the
language is. Looking at you Java with your ginormous standard library with
poor docs, and poor completion in eclipse.

------
mettamage
I always use a debugger, primarily to catch bugs, but I'm also realizing that
because of that process, the debugger is a learning tool.

If I'd teach programming education, I'd teach them a language with great
debugger support and preferably also support to single step through the
machine language as well.

I suppose C is a good language for that. I wish JavaScript would show it's
underlying machine code that you could single step through.

------
qaq
Sounds interesting from a practical side people might be worried that this
info will be immediately streamed into some system used to derive some
meaningless KPIs.

