You can go study religious spells in a school as well. There are catholic universities teaching exorcism, and buddhist schools teaching tantric magics that give you superpowers. The critical difference is that I don't believe in either of these things, so I've labeled them "occult". I believe in programming and I'm not calling it occult, but there's little to objectively distinguish it from those other practices.
This is simply a reflection of my beliefs though, not an objective reality of the world. I trust that the TRM for my chip accurately reflect the details I can't observe for myself. Many devs don't even go that far down and trust that their OS, or programming language to behave as they expect. We're all dealing with black boxes on some level.
To quote a reasonable definition from an actual scholar on this subject, Jesper Sorensen:
Thus, magic is generally conceived of as referring to a
ritual practice aimed to produce a particular pragmatic and locally defined result by means of more or less opaque methods.
This pretty much perfectly describes how programming is perceived by normal people. I could also quote Malinowski, who argued that magic must have a kind of "strangeness" to differentiate it from non-ritual speech. And programmers regularly describe difficult bits of code as magical (e.g. magic constants, or fast inverse square root) even though these are easily explained in most cases.