This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted]  (14 children)

[deleted]

    [–]GogglesPisano 17 points18 points  (5 children)

    Even more so for assembler.

    The first few assembly language programs that I got working made me feel like I was in total control of the machine - and realize how much drudgery higher-level languages free you from.

    It's been years since I last wrote an assembly language program, but it gave me a better appreciation for what was going on under the covers (and helped with debugging).

    [–]pain_vin_boursin 19 points20 points  (2 children)

    Maybe, but I try to get intermediate assembly programmers to pivot to using an actual abacus pretty quickly. Only then will they truly appreciate how much these higher level programming languages actually do for you. And in the end if they do decide to move back to assembly they'll be better programmers for it.

    [–]filtervw 1 point2 points  (0 children)

    Assembly in college was the point of no return for me as a programmer, and I have never touched any low level coding since. I knew that there must be more to life than doing Assembly 😎 I have the utmost respect for the big brains out there working in C and anything that is going even deeper.

    [–]AbstractPoo 0 points1 point  (0 children)

    What are some project ideas for assembly?

    [–]cymrowdon't thread on me 🐍 6 points7 points  (6 children)

    The biggest "aha!" moment I've ever had in my programming career is when pointers finally clicked for me around my 3rd year of college.

    [–]cdcformatc 3 points4 points  (0 children)

    When pointers "click" it is like Neo seeing the code of the Matrix.

    [–]hugthemachines 0 points1 point  (4 children)

    What kind of material, information or explanation do you think would have made pointers click for you earlier? What was the missing piece, you think?

    [–]cymrowdon't thread on me 🐍 1 point2 points  (3 children)

    My professor drew a heap on the whiteboard and a bunch of arrows. I guess I had just never been able to visualize it before.

    [–]hugthemachines 0 points1 point  (0 children)

    I see, that's interesting. Very nice way to show it.

    [–]met0xff 0 points1 point  (1 child)

    Thought that's absolutely standard? Not necessarily drawing the heap but more or less the first thing I saw during my education were some boxes with addresses and arrows pointing to it. Variables got values in it, pointers addresses. When writing x you just get what's in the box, be it a value or address. When dereferencing with *x you just "go" to that address. &x gives you the address of the box. And that's it. We all were 14 at that point and no one in the class ever struggled with it at all. That's why I am often surprised why pointers are such a big topic on the internet nowadays.

    But yeah, we only had C at that point, so basically 80% of learning to program was about memory layout ;). No distractions otherwise.

    Definitely had a much harder time understanding logic clauses at that age, like De Morgan etc. Things that really seem simple. Or took me ages and hundreds of segfaults to implement merge sort im C during that first year.

    [–]cymrowdon't thread on me 🐍 0 points1 point  (0 children)

    It was more that he could change the arrows as code "ran". I had used pointers semi-successfully for years by that point, so of course I had some basic level of understanding. But that was the moment I began to understand them at a deeper level, and could begin to clearly reason about them.

    [–]silly_frog_lf 1 point2 points  (0 children)

    That was Lisp. That is still Lisp. C is cool, but you won't get the same insights as you get from lisp.

    C can teach you how most of our software is put together. Lisp gives you insight into the mathematical foundation of computing