understanding code


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)

general overview of understanding theory


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)

the problem of understanding in human and machines

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 metaphors of code

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

the computer as a technical apparatus

this section talks about computation, symbolic logic, math and turing and lambda functions and all that beautiful stuff.

the computer as cognitive apparatus

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

the problem of understanding in humans and humans

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