I think that the situation is worse than described. In particular, I would argue that the typical professional software developer is a vernacular programmer and that there are entire ecosystems (ECMAScript. PHP, Perl, Python, R) where the typical package is authored by vernacular programmers. The typical four-year computer-science degree doesn’t appear sufficient to overcome this situation and might make it worse. I’d be tempted to further argue that I’m a vernacular programmer, although I suspect the author would complain that I’m exactly the sort of non-vernacular language author who needs to read the paper more closely. In particular:
So fewer than half [of self-evaluated professional programmers in a survey] have college education that would suggest any proficiency in formal systems, even assuming that proficiency persists into their careers and is at a high enough level to handle type theory and category theory. Even more concerning, over 15% of the professional developers didn’t think that college education is even needed to be a developer.
It’s not a lack of proficiency which prevents the typical developer from approaching these topics, but a proud and jealous anti-intellectualism. They quote an F♯ design discussion where a language designer says:
“Adding type-level programming of any kind can lead to communities where the most empowered programmers are those with deep expertise in certain kinds of highly abstract mathematics (e.g. category theory). Programmers uninterested in this kind of thing are disempowered. I don’t want F♯ to be the kind of language where the most empowered person in the discord chat is the category theorist.”
This sort of deep misunderstanding demonstrates that, to me, even the language designers are vernacular programmers. First, there’s a fundamental misunderstanding of empowerment; the category theorist sees the underlying structure regardless of whether the programming language exposes it, and the point of using category theory is to simplify programming rather than make it more complex. Second, we have so many languages which deliberately reach out to embrace various scientific communities; what is specifically reprehensible or bogus about abstract maths?
I think that the situation is worse than described. In particular, I would argue that the typical professional software developer is a vernacular programmer and that there are entire ecosystems (ECMAScript. PHP, Perl, Python, R) where the typical package is authored by vernacular programmers. The typical four-year computer-science degree doesn’t appear sufficient to overcome this situation and might make it worse. I’d be tempted to further argue that I’m a vernacular programmer, although I suspect the author would complain that I’m exactly the sort of non-vernacular language author who needs to read the paper more closely. In particular:
It’s not a lack of proficiency which prevents the typical developer from approaching these topics, but a proud and jealous anti-intellectualism. They quote an F♯ design discussion where a language designer says:
This sort of deep misunderstanding demonstrates that, to me, even the language designers are vernacular programmers. First, there’s a fundamental misunderstanding of empowerment; the category theorist sees the underlying structure regardless of whether the programming language exposes it, and the point of using category theory is to simplify programming rather than make it more complex. Second, we have so many languages which deliberately reach out to embrace various scientific communities; what is specifically reprehensible or bogus about abstract maths?
Future of Coding podcast breaks this paper down/argues about in pretty entertaining fashion: https://futureofcoding.org/episodes/069.html.