Myths and mythconceptions: what does it mean to be a programming language, anyhow?

tags
Software Development

Notes

software rarely has precise specifications, and it is embedded in systems that involve rich interactions among subsystems that include not only software components but also non-code resources

NOTER_PAGE: (2 0.6223977027997128 . 0.13347457627118645)

THE PROFESSIONAL PROGRAMMER MYTH

NOTER_PAGE: (4 0.4989231873653984 . 0.09639830508474576)

language designers may assume some mathematical background and sophistication on the part of programmers, along with the willingness to spend time learn- ing each new language, its underlying computational model, and its operating environment.

NOTER_PAGE: (4 0.5498923187365399 . 0.375)

do not think of themselves as “doing programming.” Nevertheless, their activity is commonly very like programming, requiring precise descriptions of the computations, comprehensive reasoning about the algorithms (not just a few examples), and evolution of the descriptions as understand- ing of the problem evolves.

NOTER_PAGE: (5 0.1679827709978464 . 0.2902542372881356)

vernacular software developers vastly outnumber highly trained computing professionals, by at least an order of magnitude or two

NOTER_PAGE: (5 0.24335965541995694 . 0.4163135593220339)

may be quite sophis- ticated in the models and analysis techniques of their domains yet unsophisticated as software developers.

NOTER_PAGE: (5 0.49389806173725775 . 0.4279661016949153)

When, as is common, they do not have a precise specification of the desired output, their confidence in correctness co-evolves with the programs.

NOTER_PAGE: (6 0.5671213208901651 . 0.4798728813559322)

THE CODE IS THE SOFTWARE MYTH

NOTER_PAGE: (8 0.4903086862885858 . 0.09639830508474576)

Professional software developers do many things other than write code

NOTER_PAGE: (9 0.3639626704953338 . 0.10063559322033898)

The vastly more numerous vernacular programmers mostly use tools other than general-purpose programming languages

NOTER_PAGE: (12 0.12706389088298636 . 0.09322033898305085)

need notations and tools tailored for their own problems, and they may not be able to justify the overhead of learning traditional general-purpose, high-skill languages

NOTER_PAGE: (12 0.2684852835606605 . 0.09322033898305085)

understand only as much as needed

NOTER_PAGE: (12 0.3330940416367552 . 0.2616525423728814)

Ver- nacular developers need effective ways to find useful fragments; understand, assess, and reuse those fragments; create variants; and understand the reasons for differences between variants.

NOTER_PAGE: (12 0.4343144292893037 . 0.8771186440677966)

developing the soft- ware as a way of understanding their problems or the ramifications of their decisions—people who are using software to work toward a specification rather than from one.

NOTER_PAGE: (12 0.7135678391959799 . 0.7288135593220338)

THE PROGRAMMING LANGUAGE PURITY MYTHS

NOTER_PAGE: (16 0.5096913137114142 . 0.10063559322033898)

software can be “good enough” without being “correct,”

NOTER_PAGE: (17 0.14931801866475233 . 0.4544491525423729)

The myth of Mathematical Tractability favors mathematical elegance over expressiveness or domain-specific power

NOTER_PAGE: (17 0.24910265613783203 . 0.0836864406779661)

survey of professional programmers [StackOverflow 2020], only 3/4 have earned a college degree, and fewer than 2/3 of those received an undergraduate degree in computer science or mathe- matics.

NOTER_PAGE: (17 0.42067480258435036 . 0.07309322033898305)

the kind of language where the most empowered person in the discord chat is the category theorist.”

NOTER_PAGE: (17 0.8348887293610912 . 0.21610169491525424)

There are two important reasons, both legitimate and respectable, for studying and designing programming languages. One emphasizes Purity: the theoretical basis of the languages and values generality, soundness, and mathematical purity. The other emphasizes the usefulness of languages to software developers for describing solutions to their current problems, including messy things like state, interfaces with the real world, richness of expression, and match to problem.

NOTER_PAGE: (19 0.7092605886575736 . 0.11546610169491525)

kind of a Capability vs Tractability thing

value minimality of the language base for its mathematical properties

NOTER_PAGE: (20 0.12491026561378321 . 0.3559322033898305)

value richness of the constructs available

NOTER_PAGE: (20 0.1399856424982053 . 0.3156779661016949)

opportunities to trade generality for power in a language while maintaining the formal rigor

NOTER_PAGE: (20 0.3273510409188801 . 0.3273305084745763)

The myth of Correctness favors functional correctness over fitness for purpose

NOTER_PAGE: (20 0.36611629576453697 . 0.09745762711864407)

This has never actually been accurate for systems of any size, but this Correctness myth has compelling allure.

NOTER_PAGE: (20 0.5010768126346016 . 0.11758474576271187)

Even if individual modules can be formally verified, they execute in an unverified software environment.

NOTER_PAGE: (21 0.3237616654702082 . 0.1419491525423729)

Acquiring specifications has cost, so it makes the most sense to get the specifications rele- vant to the task rather than trying to be complete.

NOTER_PAGE: (21 0.6740847092605887 . 0.13771186440677965)

The criteria for “fitness for purpose”—whether the software is “good enough”—depend on things like the consequence of something going wrong and the likelihood that a problem will be detected

NOTER_PAGE: (21 0.7803302225412778 . 0.12076271186440678)

The End User Software Engineering area [Ko et al 2011] seeks techniques for vernacular programmers to establish fitness for purpose of their software.

NOTER_PAGE: (22 0.8033022254127782 . 0.2298728813559322)

“A programming error in a set of Python scripts commonly used for computational analysis of chem- istry data returned varying results based on which operating system they were run on—throwing doubt on the results of more than 150 published chemistry studies.

NOTER_PAGE: (23 0.6066044508255564 . 0.11652542372881355)

Willoughby replied that the scripts had worked 6 years earlier

NOTER_PAGE: (23 0.8693467336683417 . 0.11546610169491525)

lmao

The myth of Specification favors early specification over exploratory programming

NOTER_PAGE: (24 0.19956927494615936 . 0.09745762711864407)

an important, perhaps even dominant, mode for vernacular programmers is in fact to use the software development process as a vehicle for understanding what problem they’re actually trying to solve.

NOTER_PAGE: (24 0.33955491744436467 . 0.2510593220338983)

Frustrated at first, Brooks eventually realized that the most useful service he was performing for his client was helping him to decide what he really wanted

NOTER_PAGE: (24 0.873653984206748 . 0.11228813559322035)

Our myths cele- brate design as problem-solving, of which Simon [1996] was a leading proponent. In Sciences of the Artificial he presented this problem-solving sort of design as optimization (when the structure of the problem is well-known) or heuristic search (in other cases).1

NOTER_PAGE: (25 0.8542713567839196 . 0.6610169491525424)

evolves that understanding by “conversation with the materials”—that is, by learning through exploration both what the real need is and what (possibly new) capabilities can be supported by the materials.

NOTER_PAGE: (26 0.19454414931801867 . 0.1027542372881356)

He shapes the situation in accordance with his initial appreciation of it, the situation ‘talks back’, and he responds

NOTER_PAGE: (26 0.2727925340990668 . 0.6620762711864406)

THE AI REVOLUTION MYTH

NOTER_PAGE: (27 0.5025125628140704 . 0.09533898305084745)

machine learning systems are so different from conventional systems that we need a brand new software discipline to cope with them.

NOTER_PAGE: (27 0.5850681981335248 . 0.15466101694915255)

AI is an incubator for programming ideas

NOTER_PAGE: (27 0.7559224694903087 . 0.09533898305084745)

It was mind-blowing to see the designers commit half of the available storage to the structure of the data rather the data itself,

NOTER_PAGE: (28 0.2096195262024408 . 0.4385593220338983)

Machine learning is the current offering from AI to the mainstream

NOTER_PAGE: (28 0.7473079684134961 . 0.09533898305084745)

Perhaps machine learning will be the forcing function—the final straw—that finally breaks us free from the mystique of our myths,

NOTER_PAGE: (29 0.17444364680545585 . 0.11228813559322035)

Collection and curation of large datasets plays a central role

NOTER_PAGE: (29 0.2519741564967696 . 0.09851694915254237)

Programming languages’ type models focus on strict type checking,and they do not handle noisy data well.

NOTER_PAGE: (29 0.48743718592964824 . 0.125)

the dirty little secret of electronic health records is that they’re full of errors.

NOTER_PAGE: (30 0.6058865757358219 . 0.5413135593220338)

when patients read the notes on their doctor’s visits, over 20% find mistakes, and they perceive over 42% of these as serious.

NOTER_PAGE: (30 0.6870064608758076 . 0.2563559322033898)

There are other problematic aspects of machine learning

NOTER_PAGE: (32 0.618808327351041 . 0.09851694915254237)

we use ML precisely because we don’t have good Specifications.

NOTER_PAGE: (32 0.8578607322325915 . 0.3760593220338983)

biased algorithms were incorporated in sociotechnical systems long before ML raised them to a level of public concern.

NOTER_PAGE: (33 0.21105527638190955 . 0.7097457627118644)

Nondeterminism

NOTER_PAGE: (33 0.37473079684134963 . 0.10063559322033898)

cyberphysical systems handle nondeterminism explicitly in a number of ways, primarily with feedback loops that inspect the state of the system and apply corrections

NOTER_PAGE: (33 0.7229002153625269 . 0.17266949152542374)

Correctness and bias

NOTER_PAGE: (33 0.8427853553481695 . 0.08898305084745763)

Reliability

NOTER_PAGE: (34 0.46733668341708545 . 0.09216101694915255)

Abstractions

NOTER_PAGE: (34 0.6855707106963389 . 0.1016949152542373)

Machine learning will not be the last challenge

NOTER_PAGE: (35 0.12706389088298636 . 0.09533898305084745)

Even though technology advances breathlessly, the economic principles we rely on are durable.

NOTER_PAGE: (35 0.35247666905958364 . 0.690677966101695)

Quantum computing is waiting in the wings.

NOTER_PAGE: (35 0.5326633165829145 . 0.09639830508474576)

it’s time to rethink what we mean by “correctness” for a complex software system, especially a system rich in real-world data or an embedded system. Although the forc- ing function may be components that embed inexplicable ML algorithms, this is something we should have done long ago.

NOTER_PAGE: (35 0.8147882268485284 . 0.2754237288135593)

OUR MYTHS SHOULD INSPIRE US, BUT THEY SHOULD NOT HOLD US CAPTIVE

NOTER_PAGE: (36 0.5039483129935391 . 0.09216101694915255)

software development in the world—se pragmos (in vivo) —is richer than the software of our myths—se mythos.

NOTER_PAGE: (37 0.5118449389806173 . 0.4088983050847458)

Capabilities grounded in formal mathematics have great power se mythos, but making them effective se pragmos requires packag- ing and presenting them in ways that provide the power without the obli- gation for users to master the formalism.

NOTER_PAGE: (38 0.2455132806891601 . 0.2086864406779661)

Footnotes:

1

Herbert Alexander Simon, The Sciences of the Artificial, 3rd ed. (The MIT Press, 1996).