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)
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 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
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]]
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)
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]]