5 ms·
What I took from SICP is something, no one else and no other ressource has taught me and it has enabled me to start a long possibly never ending journey of lear
by zelphirkalt 4y ago
What I took from SICP is something, no one else and no other ressource has taught me and it has enabled me to start a long possibly never ending journey of learning. I will be forever thankful for having learned the lessons I took from it. I think I would be half the engineer I am today, if I had not read and worked through the part of SICP, that I did work and read through.
What I use most of those in my software development: Avoiding mutation when affordable and feasible (which is often), proper abstraction barriers and modularization, thinking about functions and how to compose them and solve problems with them, instead of going "I heard a noun, I need a class!", how to solve problems recursively (although The Little Schemer did have a hand in teaching that as well), and some kind of idea of minimalism.
Aside from all that, SICP has shown me a different way to learn about math stuff. It has shown me, that there is a way, in which I understand math better than in university lectures. That way is through computer programming. If I can write the code for it and explain what the code does, I usually can also understand the math.
- nequo 4y ago> there is a way, in which I understand math better than in university lectures. That way is through computer programming. Do you have examples of mathematical concepts that you developed an understanding of this way? It is not exactly the same thing but it reminds me of a 1986 interview with David Blackwell[1] in which he went into great detail about how computers helped his own mathematical learning: I have a little computer at home, and it's a lot of fun just to play with it. [...] Jim MacQueen was telling me about something that he had discovered. [...] He has an interesting algebraic identity. [...] Also, I had a conjecture that some stronger result was true. I checked it for some numbers selected at random and it turned out to be true for him and *not* true for what I had said. Well, that just settles it. [1] https://projecteuclid.org/journals/statistical-science/volume-1/issue-1/A-Conversation-with-David-Blackwell/10.1214/ss/1177013814.full https://projecteuclid.org/journals/statistical-science/volum...
- Jtsummers 4y agoYou may be interested in the ideas in Papert's book Mindstorms and the application of Logo to education through "microworlds". Given rules and systems to work within (or possibly to define themselves), students are given the opportunity to explore the systems and the way things interact. Most people only seem to remember Logo for its turtle graphics, which allows an exploration of geometric and (through the connection of geometry and algebra) algebraic concepts. But there were also microworlds for physics (dynaturtles) and others. ---------- https://dl.acm.org/doi/pdf/10.5555/1095592 https://dl.acm.org/doi/pdf/10.5555/1095592 - PDF of the book.
- chii 4y ago> Most people only seem to remember Logo for its turtle graphics i got taught a tiny bit of logo in elementary school - just the very basics of moving the turtle, drawing a straight line, turning an angle, and drawing polygons. The final challenge of the class was to draw a circle. It blew my mind when i figured it out. I suspect that must be the inception of my love for programming.
- chalst 4y agoPapert says in the introduction that he learned the intuitions behind calculus from playing with mechanical gears.
- agumonkey 4y agoI really wish schools would offer various ways to reach for a concept. In programming, as college students, it's not rare to understand an idea better through use of different paradigms. It seems an efficient way to tickle the brain.
- inimino 4y agoAfter SICP Sussman wrote Structure and Interpretation of Classical Mechanics. The text is available free online, and it covers some (advanced) areas of classical mechanics by way of simulation.
- tmtvl 4y agoHe did and it is, but it may be worth noting that the code in SICM is what he calls "Programming for the Expression of Ideas", as expressed at this Lambda Jam talk: https://www.infoq.com/presentations/Expression-of-Ideas/ https://www.infoq.com/presentations/Expression-of-Ideas/ Another interesting piece he wrote is The Art of the Propagator, which is also freely available. His CSAIL page has more of his publications: https://groups.csail.mit.edu/mac/users/gjs/ https://groups.csail.mit.edu/mac/users/gjs/
- inimino 4y agoThere's a talk with slides that includes an overview of several of these projects: https://www.infoq.com/presentations/We-Really-Dont-Know-How-To-Compute/ https://www.infoq.com/presentations/We-Really-Dont-Know-How-...
- inimino 4y agoI've been through the book twice, both times with a group (always thinner at the end) and doing all the exercises. It was well worth every minute. I got a much deeper level of comfort with approaching "hard problems" and it was a bridge to complexity analysis, programming language theory, etc.
- diego898 4y agoSlightly off topic but how did you find a group of people to do this with? I’d love to but I can’t imagine anyone in my social circles/work acquaintances doing this with any book.
- inimino 4y agoBelieve it or not, both times were via HN. Someone set up a mailing list and wiki and we met every week.
- inimino 4y ago...and an IRC channel. The wiki wasn't much used, IRC was where everything happened. I think the way to do it today would be a discord server, and you need more people than you think to start; they will drop off fast.
- typon 4y agoI never understood newtonian mechanics taught in high school physics until I wrote a simulator for it. The code is generally ~100 lines in python but you really get the feel for how the equations work.
- abdullahkhalids 4y agoThere is a reason Newtonian Physics was invented and found huge success throughout the 1600s and 1700s. It's such a simple framework that a wide variety of consequences can be obtained by just playing with the equations by hand, even without a calculator. They are just linear first and second order differential equations. All the questions you asked while writing the code, can be asked to the equations and the consequences worked out almost immediately.
- MichaelMoser123 4y ago> thinking about functions and how to compose them and solve problems with them, instead of going "I heard a noun, I need a class!" Are captured variables of a closures a 'noun' or a 'verb'? In the end they are equivalent, it's the same thing - state by another name. And recursions are no fun, when you run out of stack space.
- ta8903 4y ago>And recursions are no fun, when you run out of stack space. It's been a while since I read anything about this topic but they get optimized out by the compiler in most cases, right?
- MichaelMoser123 4y agoThat is possible, if the recursion call is the last statement of the recursive function (tail call optimization). Now the recursion call is not always at the end of the function, so that this optimization does not always apply. https://en.wikipedia.org/wiki/Tail_call https://en.wikipedia.org/wiki/Tail_call Now Python doesn't do tail call optimization out of the box (surprise). but there is a module that is adding some magical decorator that fixes that: https://pypi.org/project/tail-recursive/ https://pypi.org/project/tail-recursive/ (actually need to look how they implement this decorator, it must be some serious hack.)
- momentoftop 4y agoYou can do tail call optimisation when the last thing you do before you return is a call. That tail call is not necessarily recursive, let alone a call to yourself. Whatever it is, its position means your current stack-frame can be reclaimed before you jump. If you can only optimise calls to yourself, you have a very limited form of tail call optimisation. It's an important point in the context of Scheme, where they made a big deal out of experimenting with continuation passing style. In CPS, all function calls are tail calls, and you want to optimise them all, even though most are not recursive.
- jcrites 4y ago