4 ms·
having stuff do stuff for you is useful until it doesnt
by dispo001 9y ago
having stuff do stuff for you is useful until it doesnt
- theprotocol 9y agoI agree. I strongly dislike "magic" in programming. I prefer to call it "denial" because you need to know about the complexities anyway, and "magic" often means sweeping them all under the rug.
- prophesi 9y agoExactly, you need to de-mystify the garbage collector so that it does what you want it to do.
- abritinthebay 9y agoAt some point every abstraction above Assemby meets that criteria though. The lines are personal and mostly arbitrary.
- taeric 9y agoMeh, if you try and split hairs, even assembly has magic in it nowdays. Not all instructions take the same amount of time. Some flush caches, thus cause unexpected memory behavior, etc. However, I think it is fair that most people learn roughly what the side effects are of each line at a local level. Ironically, this is an argument against many functional languages. There are not side effects of the logic, per se. However, there are massive implementation side effects that are not necessarily easy to reason on. The saving grace for the vast majority of people is that typically you can get by without knowing all of this. The people that care, do care. But statistically you are not one of them. :)
- abritinthebay 9y agoLike I said - it's mostly arbitrary. ;) That said I think the issues with assembly you mention aren't magic as such, they're just consequences of the commands. They don't really hide much (if anything) behind the scenes that you'd have access to anyhow. It's just that CPUs do so much more than they used to.
- theprotocol 9y agoTrue, in this context the side effects are not intentionally hidden under pretext that "it works automagically."
- horsawlarway 9y agoIt's not that simple though. Most modern CPUs that support the x86_64 instruction set don't actually run them as instructions on the hardware. They do all sorts of magic to queue operations, increase pipeline throughput, manage register access, make branch predictions, etc... You can think of assembly on those cpus as a high level language. It has little correlation with what's actually happening in hardware. This is EXACTLY the same type of "magic" that is getting complained about above. The real implementation details are hidden and unknown, but the abstraction is useful.
- abritinthebay 9y agoAh interesting. Not familiar with x_64 really. Mostly 16 & 32 bit experience here.
- taeric 9y agoI worded my post poorly. The "However, I think it's fair" was me agreeing with you. Pretty much completely. I was just musing on how the arbitrary line is probably not as difficult to see as many other lines we have out there. I think this would fall into "systems languages" and related things.
- theprotocol 9y agoIt's certainly subjective, but for me, what I pejoratively refer to as "magic" is things that there's just no escaping knowing, yet are abstracted in a way that obfuscates what's going on. Often, it's presented as "it just works" which ends up being a hindrance since there's just no getting around the thing that it's hiding for you.
- haburka 9y agoI'm really glad that I use a garbage collected language. Unless I'm doing low level programming that requires controlling allocation and freeing, it's amazing. Yes, I still have to understand the basics of memory but I'm just very glad that most of the time, the basics are far more than enough.