[SystemSafety] Language tribes
Olwen Morgan
olwen.morgan at btinternet.com
Sun Sep 16 21:59:53 CEST 2018
Before I get into this one, let me first set out some background:
From 1964 to 1971, I attended a school that had a credible claim to
have the best school mathematics department in the UK. (At one point, as
exam practice for A-level, they gave us Cambridge masters papers to do,
which most of us made a reasonable job of.) When I left school, it had
already become second nature to me to use mathematics as a universal
problem-solving tool. Consequently, I have always thought in a
mathematical way about writing programs and have never experienced any
difficulty in using formal methods. When I entered the profession in
1974, it came as a terrible shock to me to find that colleagues did not
think in this way. This must in part be due to the relatively sparse
distribution of mathematics specialists among programmers - but I've
recently begun to wonder if another factor might explain the common
tendency of software engineers to run a mile when there is any
suggestion of using mathematically-based techniques.
In think it is true to say that modern neuroscience supports the view
that doing mathematics and using natural language are dealt with by
distinct areas of the brain. Also, it is noted among specialists in
linguistics that one of the functions of natural language is to sustain
group cultural identity (trust me on this - I have Welsh ancestry and
live in Wales where all kinds of imbecility go on in the name of
protecting the language). This leads me to posit the following, which
may have a bearing on how we can get programmers to think more
mathematically about what they do:
I suspect that the parts of the brain that deal with using a programming
language are likely to be *the same parts* as those used for using
natural languages. Consequently, I posit that asking programmers to
think mathematically about programs falls often on deaf ears because
most people think about mathematics and language as completely separate
fields. This may perhaps explain why programming practices that are
demonstrably sound in formal mathematical terms can get dismissed as,
"not in the spirit of the XXX language" - a cultural declamation if ever
there was one. It may also explain why some mathematically able people
still do not use mathematics to inform their programming practices.
Now, I readily admit that my peculiarities of thought may be due to a
rather privileged mathematical training and being borderline for ASD -
so I'm not suggesting that software engineers should be sent to crammers
for discrete mathematics. On the other hand, I wonder if short courses
on formal methods would benefit from taking more time to explain to
non-mathematician programmers precisely why a programming language can
be regarded as mathematics written in a form that initially does not
look like maths. This amounts to saying that whatever you write in a
programming language can be regarded as a derived notation in some
underlying mathematical system (essentially the starting point for
denotational semantics). There has to be *some* way in which cognitive
connections are made between the mathematical and linguistic centres in
the brain. Otherwise high-integrity software engineering is a lost cause.
If we are ever going to bring critical software engineering up to the
proficiency of other branches of engineering, we shall have to use
mathematics as effectively as those other branches do. Maybe it is time
to start considering questions of cognitive psychology to explain the
seemingly ingrained resistance to the use of mathematical techniques?
Ideas, anyone ... ?
regards,
Olwen
More information about the systemsafety
mailing list