+ 1
Low-level means close to the metal, i.e. the CPU. x86 assembly language is an extreme example - all you do is shove numbers around on your physical CPU (kind of). Just so you get a feel for what it looks like: add $4,%esp movl %eax,%edx sub $1,%esi add $4,%esp add %eax,%edx movl %edx,%eax Awful. Assembly doesn't even know the concept of lists! Then there's C, which has convenient things like functions and structs (a bit like python classes I guess..). But you still deal with memory addresses and pointers all the time, and I'd say it's fairly low level. I mean, in Haskell I literally can make a list of *all* the numbers: numbers = [1,2..] This list is infinite! Even though I don't have an infinite amount of RAM, we have no trouble using infinite lists in our code. Clearly something is going on, and it's not obvious how this Haskell code might translate to, say, assembly. Haskell is very high-level, very far removed from the actual thing that's running the code, and very abstract. Haskell is hard to beat, but even python is fairly high-level. When's the last time you asked your operating system to give you some memory? When did you think about which register your numbers go in? In python, you don't worry about these things. In lower-level languages, you do.
11th Oct 2016, 10:44 PM
Schindlabua
Schindlabua - avatar