- 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)
NOTER_PAGE: (12 0.12706389088298636 . 0.09322033898305085)
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)
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)
NOTER_PAGE: (24 0.873653984206748 . 0.11228813559322035)
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)
NOTER_PAGE: (38 0.2455132806891601 . 0.2086864406779661)