home.social

#kandr — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #kandr, aggregated by home.social.

fetched live
  1. Evolution of how I think of #loops while #coding:

    1. When I first learned "loops":

    while (condition is true) {do these things, adjust things so a slightly new condition is checked}

    // That's where I first saw infinite loop and how there are intentional infinite loops.

    2. A small step to move condition update out of the loop body:

    for (i=0; i< N; i++) {do these things}

    // After the couple of days it took to get used to them, I found them neater and closer to how I think of things.

    3. Most of the time, the i from before is indexing into something, so let's directly deal with the item being indexed:

    for item in collection:
    do stuff

    # After the few days to rewire syntax muscle memory, going back would decidedly feel like a step back.
    # I don't want to give up automatic (and transparent) out-of-bound checks.

    4. There are actually only about 3/4 things one does inside a loop:

    map/fold/scan/filter function-to-call collection-to-traverse-through

    ;; Getting rid of explicit indexing was just step one.
    -- After a few days/months/years, I now realize that it is more important and less buggy if I think only of the function to call (and whether I want to end up with a new (maybe pruned) collection, a single thing, or "both" (that's how I think of scans))

    ----------
    Alternatively, my evolution as I learned new #programming languages idioms:
    #KandR -->
    #cpp or #java -->
    #python -->
    #lisp or #haskell --> ???

  2. Evolution of how I think of #loops while #coding:

    1. When I first learned "loops":

    while (condition is true) {do these things, adjust things so a slightly new condition is checked}

    // That's where I first saw infinite loop and how there are intentional infinite loops.

    2. A small step to move condition update out of the loop body:

    for (i=0; i< N; i++) {do these things}

    // After the couple of days it took to get used to them, I found them neater and closer to how I think of things.

    3. Most of the time, the i from before is indexing into something, so let's directly deal with the item being indexed:

    for item in collection:
    do stuff

    # After the few days to rewire syntax muscle memory, going back would decidedly feel like a step back.
    # I don't want to give up automatic (and transparent) out-of-bound checks.

    4. There are actually only about 3/4 things one does inside a loop:

    map/fold/scan/filter function-to-call collection-to-traverse-through

    ;; Getting rid of explicit indexing was just step one.
    -- After a few days/months/years, I now realize that it is more important and less buggy if I think only of the function to call (and whether I want to end up with a new (maybe pruned) collection, a single thing, or "both" (that's how I think of scans))

    ----------
    Alternatively, my evolution as I learned new #programming languages idioms:
    #KandR -->
    #cpp or #java -->
    #python -->
    #lisp or #haskell --> ???