8

One of biggest epiphanies came through this fundamental critique in SICP of the assignment operator. Through years of imperative programming it seems so innocent, doesn't it? But that you lose referential transparency, run into the alias problem and fundamental difficulty to determine object equality (or of their instances) - that was kind of eye opening considering all the pain I had already experienced with state in concurrency.
(It led me so far to think it's an ontological issue, that even in the discrete computing universe we have not come so much further than Zenon's paradoxa on change.)

Comments
  • 3
    I'm going to wait for my AH-HA moment when I actually understand this post.
  • 1
    @exceptionalGuy The thing with those Lisp's as I understood, is that you can 'program' just through substitution (on lists or S-expressions). Just like functions in maths where where we usually use the letter x for the variable and then replace it, when we want to evaluate the function for a specific value. - This is already quite powerful if not Turing-complete. Though maybe a bit alien to our usual way of 'programming'.

    Now when you can assign different values to 'x' the substitution is no longer feasible, because the value you want to substitute might change through expressions on the way.

    But.. so far I've unfortunately never really programmed in any functional language.
  • 1
    @phorkyas there's a book called Functional Programming Through Lambda Calculus by Greg Michaelson, really hammers in this style of programming. You might like it (or you may already know all the stuff in it lel). Also the various Lambda the Ultimate articles.

    You might also be interested in combinator calculus (SKI and so on, pretty cool stuff).
  • 1
    @RememberMe thanks for the pointers. Never heard of SKI combinator calculus. - I'm still trying to wrap my head around this Curry-Howard correspondence: programs as proofs. But probably will help you even less in the day to day life, even if you grasp it.
  • 1
    @phorkyas ooh, Bartosz Milewski has a good set of videos and articles on introductory category theory. He covers the CH isomorphism as part of it. https://youtube.com/playlist/..._

    His blog with the articles: https://bartoszmilewski.com/2014/...

    You might also be interested in this set of videos on type theory, it's the most down to earth, programmer-focused one I've found yet: https://youtu.be/ev7AYsLljxk

    I don't understand this stuff very well either - I don't have a proper formal mathematics background. I guess I'll just bash my head against these till something sinks in.
  • 1
    @RememberMe Hey, I've come across that characteristic beard, but somehow it spun out of focus. Thanks for the reminder. Will look for it.
Add Comment