SICP logs

SICP logs

[3da7c2b8] 2022-01-09-12-31: taking a break from (SICP) for now. moving on to the next book in (TYCS).

[ed72bc6a] 2022-01-09-12-14: apparently in (TYCS), they recommend chapters 1-3 at minimum. I've done that. and now I'm hitting diminishing returns. moving on.

[b1588400] 2022-01-05-10-08: imperitive programming: programming that makes extensive use of assignment. (SICP)

[7b224cfe] 2022-01-05-10-04: functional programming: programming without assignment (SICP).

[a0cad208] 2022-01-04-15-07: in the later chapters now. I like how they acknowledge how mathy the earlier chapters were. It was something I noticed. These later examples feel more like your typical CS problems.

[b4dd6d67] 2021-12-11-06-39: really hoping that busting through a book the first time 'round without fully understanding everything is an okay approach. I want to think of it as map-building for the second time 'round.

[66d2627c] 2021-12-11-06-38: stumbling my way through section 2.2. Onto 2.3 (symbols).

[164a2255] 2021-12-11-06-31: message passing: a style of programming found in languages such as LISP/Scheme which involve the ability to manipulate procedures as objects (which automatically provies the ability to represent compound data).

[83af25bf] 2021-12-11-06-27: abstraction barriers: being able to isolate different levels of a system using abstraction.

[b9ba3e65] 2021-12-06-16-25: "a signal processing engineer would find it natural to conceptualize these processes in terms of signals flowing through a cascade of stages, each of which implmements part of the program plan"

[57174bf8] 2021-12-06-16-21: it also says to look at count-leaves, so, onto that as well...

[6a1d2aeb] 2021-12-06-16-20: mapping over trees isn't as bad as I thought it would be conceptually. scale-tree makes perfect sense in terms of expected inputs and outputs. looking at the procedure itself more closely, and comparing it to scale-list from the previous section.

[707f3801] 2021-12-06-15-49: Going to have a look at 2.2 more closely, as there are concepts and things there that are being referenced later.

[21b998b6] 2021-12-06-15-47: skimming around, and I am very much looking forward to what "picture language" is. applying this expressiveness to creative pursuits is really what this is all about.

[6bd70dd7] 2021-12-06-15-44: the structures presented in chapter 2 are mostly familiar to me so far. Though, "mapping over trees" is something I'm going to want to look at a bit closer if I'm going to grok that scheme code. All this code I'd like to come back to and study more closely here. I like the LISP.

[287d1e13] 2021-12-03-15-22: starting to realizing a distinction between text editing and notation. With Scheme, a notation system is created that happens to sort of translate okay to text that text editors can write. but, not really.

[e1f92e95] 2021-12-03-15-15: probing the intro of chapter 2

[6e9d2920] 2021-12-03-15-15: okay, 1.3 starts to get a little bit mathy towards the end. I'm skimming mostly right now, but to actually grok this I'm going to have to sit down and study the examples a bit more closely.

[d745713f] 2021-12-03-15-10: half-interval method described in 1.3.3 superficially reminds me of divide-and-conquer algorithms stuff. might be, might not be. I'm not looking too closely at this point.

[c63fb9f2] 2021-12-03-10-43: 1.3: computing cubes vs the ability to express the concept of cubing. I like that kind of distinction.

[8bfaceec] 2021-12-03-10-25: it seems that orders of growth can measure things in steps (time) and space. recursive factorial required O(N) in steps and space. iterative factorial was O(N) in steps, O(1) in space. I never considered space before.

[5c4fd45e] 2021-12-03-10-20: order of growth: a notion used to describe the rate at which a process consumes computational resources. This is obtained via the gross measure of resources required by a process as the inputs become larger.

[50275e78] 2021-12-03-10-18: the "counting change" problem smells like a dynamic programming problem. something I am very inexperienced at. worth looking at more closely.

[60a162f4] 2021-12-03-10-17: tree recursion: a common pattern of computation. A recursive process whose evolution looks like a tree. in (SICP), the fibonacci algorithm is used as an example of a process with tree recursion.

[5e49582e] 2021-12-03-10-14: note to self: excercise 1.9 is worth working out by hand at some point.

[78e125e0] 2021-12-03-10-12: there's a difference between a recursive procedure and a recursive process. A recursive procedure is only syntactical self-referential. recursive process talks more about pattern of evolution.

[2d39add0] 2021-12-03-10-09: iterative processes does not grow and shrink the way recursive processes do.

[df8a770b] 2021-12-03-10-09: linear iterative process: an interative process whose growth is linear.

[3213c89c] 2021-12-03-10-07: iterative process: a process whose state can be summarized by a fixed number of state variables, together with a fixed rule that describes how the state variables should be updated as the process moves from state to state and an optional end test that specifies conditions under which the process should terminate.

[8d060b80] 2021-12-03-10-05: linear recursive process: a recursive process that keeps track of a chain of deferred operations. This chain has linear growth.

[df9039dd] 2021-12-03-10-04: recursive process: a process defined by a chain of deferred operations.

[0dec860e] 2021-12-03-10-04: deferred operations: in recursion, operations that are created while a process expands an expression, and are performed during the contraction.

[bf1c5770] 2021-12-03-09-56: 1.1.7: square roots by newtons method... worth looking at more closely.

[6b13fa56] 2021-12-03-09-53: imperative descriptions: how-to descriptions. computer scientists are usually concerned with this (vs "what is").

[43977097] 2021-12-03-09-52: imperative description: "what" description. mathematics are concerned with this (vs "how to").

[0a1e66b2] 2021-12-03-09-48: predicate: procedures that return true or false.

[3c37b7af] 2021-12-03-09-47: consequent expression: the value of the corresponding expression associated with a predicate that is true. used in conditional expressions.

[8347a6a9] 2021-12-03-09-14: clause: in lisp, a parenthesized pair of expressions that follow the cond symbol.

[4e8e776f] 2021-12-03-09-12: case analysis: a special form in lisp that can make tests and perform different operations depending on the result of the test.

[4128c915] 2021-12-03-09-09: applicative-order evaluation: an evaluation method that evaluates the arguments and then applies. this is the method that the scheme interpreter uses.

[5170f643] 2021-12-03-09-08: normal order evaluation: an evaluation method that fully expands and then reduces.

[cc905d10] 2021-12-03-09-05: procedure definitions: a compound operation that can be given a name and then referred as a unit.

[60c6c350] 2021-12-03-09-00: special forms: exceptions to the general evaluation rule. define in scheme is an example of a special form.

[4eeaa860] 2021-12-03-08-58: recursive: evaluation rule that includes, as one of its steps, the need to invoke the rule itself.

[ef93d5f9] 2021-12-03-08-56: environment: some sort of memory in the interpreter that keeps track of name-object pairs. more precisely called the global environment.

[f7831585] 2021-12-03-08-55: read-eval-print loop: the operation cycle of interpreter. read an expression from the terminal, evalulate the expression, and print the result.

[482364c0] 2021-12-03-08-53: pretty-printing: a formatting convention in which each long combination is written so that the operands are aligned vertically.

[d4e8ec69] 2021-12-03-08-53: nested: to have combinations whose elements are themselves combinations.

[4f640f70] 2021-12-03-08-52: prefix notation: convention of placing operator to the left of the operands.

[eb7bdf99] 2021-12-03-08-52: operand: the other elements following the operator.

[5fefc499] 2021-12-03-08-51: operator: the leftmost element in the list.

[6eac2bec] 2021-12-03-08-51: combinations: expressions in lisp formed by delimiting a list of expression within parentheses in order to denote procedure application.

[b65c0ef8] 2021-12-03-08-50: you type an expression, and the interpreter responds by displaying the result of its evaluating that expression.

[cd67834a] 2021-12-03-08-49: means of abstraction: compound elements can be named and manipulated as units

[532c2c17] 2021-12-03-08-48: means of combination: compound elements are built from simpler ones.

[cd16f788] 2021-12-03-08-48: primitive expression: the simplest entities the language is concerned with.

[70be8912] 2021-12-03-08-46: beginning the first chapter today. skimming it, as it covers a lot of fundamental stuff I am pretty familiar with already. I think I will take notes on some of the keywords though./

[a9db07bc] 2021-12-02-15-57: SICP is going to be the first book to tackle in the (TYCS) series.