From: RussellE on
On Feb 27, 12:14 pm, Barb Knox <s...(a)sig.below> wrote:
> In article <20100227020331.V50...(a)agora.rdrop.com>,
>  William Elliot <ma...(a)rdrop.remove.com> wrote:
>
> > On Fri, 26 Feb 2010, RussellE wrote:
>
> [SNIP]
>
> > > Yes. I keep forgetting everyone isn't a computer programmer.
>
> > Likely you're ignorant of the fact that programmers know less math
> > learning programing than they'd know if they didn't study programming.
>
> > Yes, programmers need to unlearn what math they thought they learned.
>
> [SNIP]
>
> Similar folk wisdom exists within programming itself:
> "You can learn Lisp in a week if you don't know Fortran, or in two weeks
> if you do know Fortran."[1]
>
> I'd like to know if there have been any experimental studies that
> actually demonstrated (or refuted) the Programming v Mathematics
> interference.  I don't count the fact that most programmers are
> pig-ignorant about mathematics as evidence for such interference, since
> most everyone is pig-ignorant about mathematics.[2]
>
> [1] I can't find the source for this quote; it's presumably from the
> 1960s.  Do you know the source?
>
> [2] By "mathematics" I mean actual mathematics with proofs, not
> arithmetic or cook-book algebra.

I once helped a grad student validate his thesis. He derived a
formula for the translational friction of toroids in a viscous fluid.
Think of a donut sinking into a vat of jelly. I compared his
results with results our lab had derived.

The student didn't know programming, so I worte a program
to compute his results. His formula had a function I had never seen.
He told me it was the gamma function. When I asked him what
gamma function was, he looked at me like a I was an idiot.
He explained it was a generalization of the factorial function.

His face went blank when I asked him how to calculate it.
I don't think it ever occurred to him that someone might want to
compute the gamma function.Two weeks later he gave me a
paper on numerical methods for computing the gamma function.
Looking things up took a lot longer before the internet.

I learned a lot working with this mathematician.
Our first meeting was like trying to communicate with
someone from another planet. His work was based
on atmospheric models of rain drop formation.
Our lab was mostly interested in calculating the
diffusion coefficients of macro-molocules.
It wasn't obvious we even defined friction the same way.
We couldn't come up with a way to convert his units into our units.

This is such a common problem in hydrodynamics,
there is a standard convention to deal with it.
We computed the friction of an object divided by
the friction of a sphere of the same volume.
This gave us a dimensionless ratio we could compare.

I think "math vs programming" is mostly about language differences.
Two groups are solving the same problems for different reasons.
Each group develops methods to solve the problem that
answers the questions they are trying to answer.

For example, I defined functions as circuits.
There are a fixed number of inputs and a fixed number of outputs.
Each output is a circuit of inputs.

WE wants to define function using FOL just like ZFC does.

I am not trying to come up with a powerful set theory like ZFC.
I want a set theory that is provably finite and provably
consistent. I defined functions the way I did because
I know how to count circuits. Using my definition,
I can easily count the number of possible functions.

Defining functions using FOL makes them much
more understandable. We can usually determine
what a fuction does by looking at the FOL statement
that defines it.

Writing out a function using my definition gives us
something that looks like a computer circuit.

We get the same set of functions with either definition.
WE wants to use the full power of FOL. I want to count functions.

I knew Fortran when I learned Lisp.
At first, I tried to convert Lisp into something
"understandable" like Fortran. That didn't work at all.
So, there was some "unlearning" involved.
Of course, people who learned Lisp first will never
understand Fortran.


Russell
- 2 many 2 count
From: Herman Jurjus on
Barb Knox wrote:
[...]
> My question is not about the amount of time spent or not spent learning
> maths, but whether or not there is some *active* cognitive interference
> such that learning programming first (which was not your experience)
> makes it significantly more difficult to then learn actual maths.

Wasn't the original question about the other way around: after learning
maths, people supposedly had to 'unlearn' maths before they could learn
to program?

> The maxim "You can learn Lisp in a week if you don't know Fortran, or in
> two weeks if you do know Fortran" deals with the phenomenon that having
> a Fortran mindset (procedural, non-recursive, mostly mutable data, a
> small fixed set of data types, etc.) actively interferes with acquiring
> the Lisp mindset (largely functional, recursive, much immutable data,
> roll-your-own data types, etc.)
>
> Whether or not there is good evidence for the Fortran v Lisp
> interference, my question is whether there is good evidence for a
> similar programming v maths interference. I find it intuitively
> plausible, especially if the previously learnied programming is of the
> Fortran / C / etc. variety.

My experience is opposite: people who are 'mathematically challenged'
can sometimes become mathematically minded -by learning to program- (and
doing a lot of it).
Moreover, programming is about the only activity that I have seen
achieving this miracle.

> For example, such programming has almost exclusively a time-oriented
> operational semantics ("if such-and-such is the case right before that
> statement is executed then so-and-so will be the case right after").
> This is not the sort of semantics that is common in mathematics, which
> usually deals with "eternal truths".

Programming also forces people to become aware of the difference between
(vague) intuitions and (exact) definitions.

From where I'm standing, this 'dealing with eternal truths', as you
call it, is no more than a personal preference in reasoning style
(static versus dynamic), and is not the demarcation line between
mathematical and a-mathematical.

--
Cheers,
Herman Jurjus

From: Nick Keighley on
On 28 Feb, 23:29, RussellE <reaste...(a)gmail.com> wrote:

> I knew Fortran when I learned Lisp.
> At first, I tried to convert Lisp into something
> "understandable" like Fortran. That didn't work at all.
> So, there was some "unlearning" involved.
> Of course, people who learned Lisp first will never
> understand Fortran.

of course they will! Fortran is just Lisp with some funny syntax (and
some very odd restrictions). Everything is just Lisp with funny
syntax.

[which would you rather do, write a Fortran compiler in Lisp or a Lisp
compiler in Fortran?]

From: pete on
Herman Jurjus wrote:
>
> Barb Knox wrote:
> [...]
> > My question is not about the amount of time spent
> > or not spent learning
> > maths, but whether or not there is some *active*
> > cognitive interference
> > such that learning programming first (which was not your experience)
> > makes it significantly more difficult to then learn actual maths.
>
> Wasn't the original question about the other way around:
> after learning maths,
> people supposedly had to 'unlearn' maths before they could learn
> to program?

I don't know what the original question was,
but out of the two the best programmers that I ever worked with:
one of them had a masters degree in math
and the other was an engineer.

--
pete
From: cr88192 on

"pete" <pfiland(a)mindspring.com> wrote in message
news:4B8BAE67.334A(a)mindspring.com...
> Herman Jurjus wrote:
>>
>> Barb Knox wrote:
>> [...]
>> > My question is not about the amount of time spent
>> > or not spent learning
>> > maths, but whether or not there is some *active*
>> > cognitive interference
>> > such that learning programming first (which was not your experience)
>> > makes it significantly more difficult to then learn actual maths.
>>
>> Wasn't the original question about the other way around:
>> after learning maths,
>> people supposedly had to 'unlearn' maths before they could learn
>> to program?
>
> I don't know what the original question was,
> but out of the two the best programmers that I ever worked with:
> one of them had a masters degree in math
> and the other was an engineer.
>


programming uses lots of math, granted, but the types of math used, and the
way they are used, are not so much similar.

one can think they understand stuff, making heavy use of vectors and
quaternions, for example, but then find themselves very much defeated in
math classes due to far more subtle enemies, such as solving for variables
in polynomials, ...

math can be malevolent in this respect...

more subtly, one can be faced with terrors such as set theory, which proceed
in being not so easy to grasp, ...

some people claim set theory is very simple and easy, but I don't find it
this way...
one is left to try to understand how something can look like a collection of
discrete items at one moment, a continuous volume the next, and at the same
time behave as if it were predicate logic. this entity is difficult to make
sense of (how does one imagine such a beast?...).


then again, even in programming land, both pure functional programming and
SSA also remain just outside of grasp (impure FP languages, such as Lisp,
make sense enough, but this did not extend to attempts to use Haskell...).
(granted, this leaves me with conventional languages, plain tree-structured
IR's and/or RPN, ... but, all this seems to work well enough...).


once, long ago, my math skills were impressive (vs others my age), but in
time, it seems now my math skills suck. it would seem about like
calculus-level math is beyond me (granted, I am fairly good at using math to
implement stuff, but this is hardly the same thing...).

once, long ago, my coding skills were sort of a novelty, but anymore, it is
difficult to find anyone to even carry on a basic conversation with.

life goes on, as others gain more but I seem to stay just the same.


I have found there is a friend and an enemy: standards...

one can make something novel, and maybe more people will take interest, but
at costs:
there is little compatibility, little chance of reuse, or ability to "mix
and match" parts.

one can also implement things according to standards, and suddenly find that
now hardly anyone cares anymore. one can mix and match parts, but who cares,
given as to them it seems it has all been done before...

one may often also be left implementing piles of largely non-functional
boilerplate, as is my experience would seem to be of the Java class
library... much of the code seems to do little beyond redirecting things
elsewhere, and many things, apart from minor complications requiring
alterations, would be a matter of copying and pasting.

and, why? to maybe escape both GPL and the Apache liscense (my compiler
subproject is now free of GPL, but still has some Apache code, notably, the
class libraries).


so, no one cares, and it is unlikely useful to anyone besides myself (and
possibly, even this can be debated...).


but, hell, maybe I am just boring and/or stupid, I don't know...