Re: SV: PPIG discuss: long term effect of introductory programming education

2006-10-31 Thread Frank Wales

Derek M Jones wrote:

Frank,

Not all code is read equally.  If it works, nobody has
to bother comprehending it; if it doesn't work, it tends


It doesn't matter how often code is read, or even if it is
ever read once written.  The subjects have to think about
operators when they are writing it, so this is the connection
to occurrences in source code.


As I suggested in my previous message, if you look at how
often, and in what way, expressions have been changed in that
source code, you might find evidence to point towards which
operators are well-understood and which ones aren't.
As this is from well-known, experienced programmers writing
well-used, large scale programs under real-world conditions,
might this not be more useful evidence for you than small-scale
tests of other people that you then mix with aggregate data
derived from those large programs?


Now what about code that does
get read, do we assume a uniform distribution, 
or is the complicated stuff read more often?


Well, the complicated stuff is certainly read more closely than
the simple stuff, since, by definition, it's more complicated.


It probably doesn't matter,
we are only interested in the relative amount that gets read/written.

 We only need to assume a uniform distribution in the set of operators
 that are read.

 Ok, there is the possibility that code containing some operators will
 get read more often than code containing other operators.  For
 the time being I am happy to assume the consequences of this are
 small.

Do your assumptions about uniformity extend to the beliefs
of programmers too?  If not, how can you be sure any
results you gather are generalizable?

 The language assumption I make is that relative occurrence of
 operators is the same across languages.

Why are you assuming something you can measure?


All the binary operators common to these languages share the
same precedence.


Depends what you mean by common to; for example, '+' works
rather differently in perl, Javascript and C.


What the operators actually do is irrelevant.  When the expression
a + b * c is encountered the reader has to figure out which
operator apply to which operators (the subject of this experiment),
then they can worry about what the operators actually do.


I believe you're confusing how a compiler parses this expression
with how a person thinks about it.

In my experience, programmers only think that way about expressions
in classrooms and on tests.  '*' isn't the operator, whose
function I don't know yet, but that has a higher precedence than '+'.
In the context of C, I would expect the above expression to be
read as a plus b times c, with 'plus' and 'times' inextricably bound
in the mind to what they *mean*.  Precedence follows as a side-effect
of that, rather than being the dominant factor in reasoning about
the expression.

That's why I stress that cross-language problems have to be
controlled for, because when I'm programming in PHP or ruby or
Lisp or Java or some other language, how I think about that
language's operators and expressions is bound up with their
semantics.  This gubbins sticks to my thinking when I switch
languages, and is more likely to happen, the closer the languages
are conceptually and syntactically.  I doubt that I'm alone
in my linguistic befuddlement, since I see evidence of in
in other programmers too.  (I think that it's more likely
to be found in programmers with broader experience, so
programmers who've spent their entire careers programming
in one language might not know what I'm on about.)

Note, for the avoidance of doubt, that I do not separate
'operators' in some language and 'precedence rules for operators'
in that language.  So when I talk about understanding operators,
I'm implicitly talking about their precedence rules too.

It seems to me, from what you've written, that you not only
think that precedence rules are eminently separable from
operators, but that, in fact, programmers routinely think
about them in this entirely separate way; as if syntax trees
are uppermost in their minds when thinking about the software
they want to write.  I believe this is as unlikely as journalists
having Chomskian deep structure in mind when they are writing copy.
--
Frank Wales [EMAIL PROTECTED]

--
PPIG Discuss List (discuss@ppig.org)
Discuss admin: http://limitlessmail.net/mailman/listinfo/discuss
Announce admin: http://limitlessmail.net/mailman/listinfo/announce
PPIG Discuss archive: http://www.mail-archive.com/discuss%40ppig.org/


Re: SV: PPIG discuss: long term effect of introductory programming education

2006-10-31 Thread Bjorn Reese

Guzdial, Mark wrote:


The teachers using these approaches complain that our traditional
introductory courses don't prepare students for science learning.  They
care more about representation (e.g., how you represent a vector is
critical for the kinds of algorithms that you write in physics),
floating point limitations, and iterative methods, and less about type
safety and object orientation.  These teachers also complain that they


Maybe they should be taught domain-specific programming languages,
rather than general-purpose programming languages. In this particular
case it sounds like they might be interested in Fortress:

  http://research.sun.com/projects/plrg/

--
PPIG Discuss List (discuss@ppig.org)
Discuss admin: http://limitlessmail.net/mailman/listinfo/discuss
Announce admin: http://limitlessmail.net/mailman/listinfo/announce
PPIG Discuss archive: http://www.mail-archive.com/discuss%40ppig.org/


RE: SV: PPIG discuss: long term effect of introductory programming education

2006-10-31 Thread Guzdial, Mark
Thanks for the link, Bjorn, but I don't believe that that's the concern.
Most of the scientists and engineers that I know who program use C,
Fortran, MATLAB, Python, or Perl.  Most CS1's that I've ever heard of
use C++, Java, Visual Basic, or Scheme.  The emptiness of that
interaction set is amazing and depressing.  If you can convince the
scientists and engineers to use Fortress, then the students would be
interested, too.  But it's hard to convince the students of the
authenticity of a language without practitioner, researcher, or
professor use.

Mark

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf
Of Bjorn Reese
Sent: Tuesday, October 31, 2006 11:39 AM
To: discuss@ppig.org
Subject: Re: SV: PPIG discuss: long term effect of introductory
programming education

Guzdial, Mark wrote:

 The teachers using these approaches complain that our traditional 
 introductory courses don't prepare students for science learning.  
 They care more about representation (e.g., how you represent a vector 
 is critical for the kinds of algorithms that you write in physics), 
 floating point limitations, and iterative methods, and less about type

 safety and object orientation.  These teachers also complain that they

Maybe they should be taught domain-specific programming languages,
rather than general-purpose programming languages. In this particular
case it sounds like they might be interested in Fortress:

   http://research.sun.com/projects/plrg/
 
--
PPIG Discuss List (discuss@ppig.org)
Discuss admin: http://limitlessmail.net/mailman/listinfo/discuss
Announce admin: http://limitlessmail.net/mailman/listinfo/announce
PPIG Discuss archive: http://www.mail-archive.com/discuss%40ppig.org/

--
PPIG Discuss List (discuss@ppig.org)
Discuss admin: http://limitlessmail.net/mailman/listinfo/discuss
Announce admin: http://limitlessmail.net/mailman/listinfo/announce
PPIG Discuss archive: http://www.mail-archive.com/discuss%40ppig.org/