Coding is […] the technique of providing a dynamic background to controle the automatic evolution of meaning. (von neumann and goldstine)
I highlight the issue of understanding between humans and machines through the medium of source code, as an ambivalent notion which necessitates a symbolic interface. This concept of understanding is also understood in the light of the different fields of programming practice (professional, amateur (hobbyist+hacker), educational, scientific/academic)
define understanding (perspectives: reader/writer)
references, between objective and subjective: - simon penny and representation -> mind-body duality - lakoff & turner -> mental models - gregory chaitin -> data compression and simplicity of rules - wittgenstein (formal, absolute understanding vs. felt, contextual understanding)
The narrow understanding of “working” as “conforms to spec”.
Since everything is defined mathematically, it does not matter what words we use to describe the system; we could use words like “plan”, “learn”, and “understand”; or we could use words like “foo”, “bar”, and “baz”. In fact, programmers frequently employ nonsense terms like these when testing or demonstrating the logical behavior of a procedure.
simondon with his definition of technology as being a connection between magic and rational?
feigenbaum and thought (historical, this seems to be the first anthology published on the topic)
UNDERSTANDING AS MENTAL MODEL AFFECTED BY LANGUAGE [[abelson_sussuman_abelson_sicp]]
dual-positioning of source code text 1. against text (against literary) 2. against text (against productive software)
[[fedorenko_language_of_programming_cognitive_perspective]], about the cognitive implications of programming languages: does it change something in our brain if we learn more PLs?
[[fishwick_aesthetic_programming]] an answer to this question of the cognitive impacts of PLs, by using aesthetic as a link (un liant)
this section redefines the concept of understanding, not as human to human, and not as human to machine, but as human to machine to human, and highlights some of the hurdles that appear in terms of collectivity vs. subjectivity. it makes the claim that contrary to writing literature, in which writing is potentially public and reading private, writing source code is a private act (as illustrated by passages like weizenbaum, computer boys) and reading it is highly public. because of a change in concept, i would argue that the change in manifestation of concept is also necessary.
[[mckenzie_cutting_code]] [[tomov_role_of_aesthetics_in_software]] [[vee_coding_literacy]] [[vee_procedural_literacy]]
also note the place and role of tools (IDEs, teletypes, fast compiling, etc.)
%or at least the role of knowledge, mind as matter:https://dl.acm.org/doi/10.1007/s11023-007-9060-8
this section investigates the main challenge that source code tends to address as a human-machine communication tool
temporality (fast) and spatiality (jumps)
[[cantell_smith_introduction]] - computing as meaning mechanically realized <- this whole introduction is a good reference on the tension between the linguistic and the mechanical
another philosophical approach highlighting the tension in software is [[irmak_software_abstract_artifact]]
[[detienne_software_design_cognitive_aspects]], psychology of programmers, beacons
The most influential conception of computational principles comes from David Marr (1982), who prescribed a definite format for computational theories. For Marr, each theory had three tiers: a computational theory of some problem, a specification of the algorithm by means of which the brain solves this problem, and the implementation of this algorithm in neural machinery. (agre)
this section focuses on the many ways people designate code and digital systems
berry, code as: - engine - image - communication medium - text [[cummings_coding_with_power_rhetoric_coding]]
limits to a literary approach: [[hayles_print_flat_code_deep]], and confirmation via a psychological study [[ivanova_comprehension_computer_code]]
Critical code studies, and rhetorical code studies
this section talks about computation, symbolic logic, math and turing and lambda functions and all that beautiful stuff.
[[rapaport_philosophy_of_computer_science]] [[suber_what_is_software]] [[weinberg_psychology_of_programming]]
this section talks about the computer as a cognitive tool, as a way to think (rokeby, wolfram), along the lines of algorithmic thinking, coding literacy. this will highlight the necessity of translating concepts from one frame of mind to another (formal vs. informal)
“expert programmers know how to choose the level of abstraction appropriate to the task” (sicp)