[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