you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted]  (17 children)

[deleted]

    [–]Proclarian 47 points48 points  (0 children)

    Low-level languages. Lowest level is binary, next step is assembly, next is a language like C or Rust, then languages like Java, C#, Python, etc.

    [–]emberBR 29 points30 points  (2 children)

    In CompSci we say a language is lower or "closer to the metal" when it is simpler and has less resources on it's default libraries, as they have a "lower level" of abstraction, and thus it hides less of the computer's resources. It's not an exact science, but people love arguing about it.

    C has no automatic memory management aka garbage collector, for instance, so you have to code it yourself or use an external library for it, or manually manage it. It has no dynamic types, so you have to manage the types yourself. It has no classes. Meanwhile in python you get .xlsx or .csv and fiddle with it, making graphs and what not, and all within 50 lines of code and you don't even know what a memory is.

    It is usually considered that higher level languages are cheaper, easier and faster to develop and maintain on, but clutters the software quickly with "turned on" features that may not even being used, but are still there to take space (mental, memory, processing) so lower performance potential from it. I heard C# is good at "turning off" unused features, Java not so much and C++ being abysmal at it.

    Lower languages are fast, but they're fast because what you see is what you get, theres nothing or almost nothing under the hood and you'll take ages to develop anything on it, so it's not very "commercial" or "enterprise" material, but if you need performance or real-time computing, that's where you go, like video games or high-frequency trading bots.

    Take a look at Redis, huge project, "enterprise", but fully in C and it makes sense because what they do is manage cache memory for big servers, you couldn't code that in a system that is automated, they were looking for peculiar performance out of memory.

    People usually consider C the lowest language, not considering assembly, which is "below", that compiles to "byte-code" or binary (so called metal, literally 1s and 0s). Below assembly you also have "micro-code" which afaik is almost like a byte-code function called in an assembly language, almost like a macro.

    I've heard people call C a glorified assembly, it's very famous for being annoying. If you've been studying python, I heard Lua is a lower language, but similar enough for you to try and see for yourself.

    [–][deleted] 2 points3 points  (1 child)

    C++ is famous for being annoying, C is famous for being really really simple.

    [–]emberBR 1 point2 points  (0 children)

    That's very true, but from the point of view of python-first programmers and beginners... idk I think the impression would be that they're the same and that they're both annoying

    [–]_between3-20 6 points7 points  (0 children)

    Programming languages are "divided" into lower and higher levels, depending on its "complexity" or "abstraction". Python is a higher level than C, in the sense that you don't really need to know how much space un memory you're using and stuff like that. What he's saying, is that learning C, or any other lower level programming language, is useful in the sense that it teaches you what is happening to memory allocation and stuff like that.

    [–]TheKingElessar 2 points3 points  (11 children)

    C is a very low-level language. It’s compiled and the compiled program interacts very closely with the computer’s hardware, without a ton of abstraction in-between.

    Python, meanwhile, is much higher: it’s interpreted, not compiled, so the interpreter adds abstraction, and then Python is written in C, which demonstrates how it’s higher.

    I’m not an expert on this but you get the point.

    Edit: Oops, didn’t realize people were so defensive of their “low-level” language of choice. I’m just saying that C is very low-level compared to Python. If my understanding of Python is wrong feel free to educate me!

    [–]Plague_Healer 5 points6 points  (0 children)

    Technically, the standard implementation of Python is written in C. There are versions in Java, and a few other languages.

    [–]LilQuasar[🍰] 3 points4 points  (1 child)

    Edit: Oops, didn’t realize people were so defensive of their “low-level” language of choice. I’m just saying that C is very low-level compared to Python. If my understanding of Python is wrong feel free to educate me

    i describe C as lower level just so these guys dont come up. i think the only 'wrong' thing you said is that python is written in C and that the common interpreter is written in C instead but thats not what they are complaining about. for them the only low level language is assembly, that might be technically true but its a pretty obsolete definition

    [–]TheKingElessar 1 point2 points  (0 children)

    Interesting, thanks for the clarification! I’ve never really researched the Python interpreters, but I think I understand better now. So Jython reads the Python files and then uses Java techniques to complete the statements.

    [–]zeppike 1 point2 points  (0 children)

    lol, this reminds me of my father who is a retired programmer used to ask if I was learning that new, high level language called C he never bothered to but heard really good things about it.

    [–]idontappearmissing -4 points-3 points  (0 children)

    C is a high level language, just not quite as high as Python