3

I started university in september and after one semester using java (i learned java three years ago and used since), we started C.

I noticed that developers that program developing with high-level languages, or modern languages (like rust that it's low-lewel, but still has many modern language features) are for spoiled developers.

Comments
  • 4
    C is a high-level programming language.
  • 2
    @nambrosini C is superb! Even if you won't use it for every project, but it teaches you much more how a computer actually works than languages that try to abstract away the whole machine.

    @FilipeRamalho no, it isn't. For example, it has pointer arithmetics and completely manual resource management.
  • 1
    @Fast-Nop C is a abstraction of Assembler. So it’s a high-level programming language, but it’s the one nearest to low-level.
  • 0
    @FilipeRamalho C it's high level if compared to assembler, but low level if compared to java or C#, so C it's actually low level because almost every language has an higher level of abstraction. So C in general is low level, you just got the case in which C is high level.
  • 3
    @FilipeRamalho if everything that isn't assembly were a high level programming language, then there would be only high-level programming languages, and the term "high level" would be superfluous.

    Besides manual resource management and pointers, C also gives you detailed control over memory layout and stack usage.
  • 0
    @Fast-Nop @nambrosini I would consider anything where you don’t have to deal with machine code directly high-level. Other languages are “more” high-level then C, but they are almost all high-level. I don’t see what’s wrong with them all being high-level ? There is no need to compare the high level of one language to another.
  • 2
    @FilipeRamalho as I said, if everything is high level, then this term has no meaning. Then we have just assembly vs. programming languages.

    C is a low level programming language, which is why you use it for operating systems, drivers, and anything that you want close to the metal. Java isn't a useful language for such purposes because it's high level.
  • 0
    @Fast-Nop Why would the term be of no use just because almost all languages are high-level.
  • 0
    @FilipeRamalho because then it doesn't designate anything. It's an empty buzzword. Just like setting all tasks to highest prio doesn't make your computer faster.
  • 0
    @Fast-Nop You know that Assembly isn’t the only machine code language. There are a lot of low-level languages only operating on machine code.

    I would define any language which doesn’t need any lower languages to operate a high-level language. C needs at least a bit of machine code to run.
  • 0
    @Fast-Nop Wikipedia briefs it up nicely.

    https://en.m.wikipedia.org/wiki/...

    In the Assembly section C is compared to Assembly.
  • 1
    tbh C is nothing but a portable assembler at this point
  • 3
    You will quickly lose this attitude when you are tired of manually managing memory and fixing all kinds of memory bugs and undefinded behaviours.
    After all, those "mordern" languages are designed so that developers do not need to care about low-level details, and so they can invest their efforts in other things.
  • 0
    @FilipeRamalho WP is quite unreliable, and C doesn't need a lot of machine language underneath to run. It needs a compiler. The startup code before main is a few lines of assembly, not more. I'm doing bare metal programming without C standard library.
  • 0
    @Fast-Nop The Arguments made there still apply.
    But it needs Machine code.
    Only because it’s the lowest high-level language doesn’t mean it isn’t one.
  • 0
    @FilipeRamalho then give me an example of a low level programming language. Or else, as I pointed out SEVERAL FUCKING TIMES, the term "high level" is redundant to "programming language"
  • 0
    @Fast-Nop Any Assembler language and Machine code
  • 0
  • 0
    @nambrosini Thanks. I agree it’s subjective. But I would say Machine Code is a first generation language, Assembly a second generation language and C the lowest third generation language.
  • 0
    @FilipeRamalho and btw, if I drop the memory test which C doesn't require anyway, then I can do bare metal programming in C without any assembly involved. Not even in the startup code.

    You can't do that in high level programming languages because they aren't close enough to the metal to replace assembly. That's their point.

    Also, the typical application of C is low level programming, that's why it is a low level programming language. The typical point of Java isn't device drivers, interrupts and OS kernels.
  • 0
    @Fast-Nop It still builds up on Assembly and Machine code.
  • 0
    @FilipeRamalho everything gets executed as machine code because that's what the CPUs do, so that's a trivial observation.
  • 1
    @Fast-Nop I’m just saying that I consider C to be the lowest high-level language. I think the abstraction away from machine code is significantly higher then in Assembly so it’s the third generation. I like a good discussion, but I don’t see myself continuing this one as we won’t reach a conclusion and already have said all or arguments.

    Stalemate ?
  • 1
    @nambrosini there is no such thing as a Low level if compared to X and high level if compared to Y.

    C is high level.
    Live with it.
Add Comment