0

In computer science, programming languages like Java, C++, and Python are considered to be very popular. C++ is considered low-level, Java is considered mid-level, and Python is considered high-level.

Most people would assume that Python is the hardest as it is high-level, but in fact the opposite is true. High-level means that it is closer to regular language (when coding) and usually it cannot do as much things.

On the other hand, C++ a low-level language, which can do more than Python and Java (and usually faster and in this case especially Python) is considered the "best," where it can do the most and things faster, but is much harder. C++ is considered "difficult" and usually recommended after learning Java or Python (yes, there are other programming languages).

What would be the word or phrase to describe this phenomenon, where things are counter-intuitive with Python (the weakest) being called high-level, which makes people assume that Python would be the best (as I did when I was first introduced to computer science three years ago)?

I know of opposite and inverted, but is there a better way to phrase this?

5
  • 1
    I'm a programmer and have used all these languages. It is correct to say C++ can do things faster, as in the program runs more quickly. But I don't agree that Python does less than C++. It will do almost everything C++ does, and a a lot more such as regular expressions, memory allocation and data dictionaries. I feel that 'High level' is an appropriate term here. You use advanced constructs and syntax to express a program more elegantly and with less lines of code. You optimize for development time instead of run time
    – Kim Ryan
    Aug 20, 2015 at 10:31
  • "What would be the word or phrase to describe this phenomenon?" It's called "computing". We programmers always swap the meanings of words 180 degrees.
    – Hot Licks
    Aug 20, 2015 at 12:18
  • 1
    @KimRyan - High vs low level has little to do with performance. Java regularly outperforms C and C++. It does, as you suggest, have to do with ease of development.
    – Hot Licks
    Aug 20, 2015 at 12:20
  • An example of what I think you're trying to get at, but taken from the non-CS world, is pain threshold. I always have to think carefully not to get things backwards when trying to describe someone's pain threshold. Aug 23, 2015 at 12:05
  • "High-level" doesn't mean harder to learn, it means further abstracted from the hardware. there is no dilema.
    – Taryn
    Apr 22, 2019 at 1:28

5 Answers 5

4

The "higher" the programming language, the less likely it is to provide means for the programmer to move individual bits around; the "lower" the programming language, the less likely it is to have conveniences such as built-in memory allocation.

I doubt there's a word that means "to label something, in a particular domain of endeavor, in a manner that neophytes and lay people would find counter-intuitive."

Doesn't counter-intuitive apply here better than any other word? I think so.

3
  • But Python has many bit level operators. High level languages like Python, Perl and Ruby didn't discard many of the functions that C++ can do, and added lots more. Agree that counter-intuitive is the best word though.
    – Kim Ryan
    Aug 20, 2015 at 10:52
  • Aware that there are exceptions, and wanting to speak in general terms, I wrote "less likely".
    – TRomano
    Aug 20, 2015 at 11:05
  • 2
    When I first learnt to program the examples would have been assembly code and basic with C in the middle. The question would have been the same and "counter-intuitive" captured it perfectly. You could also add "but that's not skill level".
    – Chris H
    Aug 20, 2015 at 12:06
3

I am not sure that it is "counter-intuitive". Your so called high-level languages work at higher levels of abstraction, are further removed from direct machine implementation.

0

You could say it's an irony.

Ironically, the high-level programming languages are easier to learn, but the low-level languages are often faster, more extensive, and complex.

Although, personally, if I were to describe it, I'd go with "counterintuitive," which shares a very close meaning with irony.

Dictionary.com "Irony" (Definition 5): an outcome of events contrary to what was, or might have been, expected.
Dictionary.com "Counterintuitive": counter to what intuition would lead one to expect.

0

Perhaps you can stretch this out into two dimensions:

  1. High- or low- threshold, and
  2. High- or low- ceiling.

In this article about computer environments, Visual AgenTalk: Anatomy of a Low Threshold, High Ceiling End User Programming Environment, the abstract states that

programming environments are either easy to use and not very expressive (low threshold/low ceiling) or more difficult to use but more powerful (high threshold/high ceiling).

<Soapbox>

I have found C++ to be high-threshold / high-ceiling in that it is both harder to learn (especially multiple indirection and garbage collection) and is quite powerful.

In contrast, I would consider Java to be a low-threshold / high-ceiling language. It is easy to learn (taking pointers and garbage collection out of your hands) while delivering power and portability (admittedly at the cost of speed and having to run through a JVM).

<Soapbox/>

Two dimensions implies four quadrants, which is Garner's claim to fame.

The Cartesian plane is divided into four, labeled quadrants. Cartesian coordinate system with quadrants

You might place computer languages on such a plane and contrast Quadrant I with Quadrant III. With hope, your dilemma will dissolve into understanding.

1
  • C++ doesn't have garbage collection. Jun 16, 2016 at 8:24
0

I think what you described here is a trade-off between ease of programming and run-time efficiency. (But I'm a mathematician who would never say that "C++ can do more than Python" unless somebody convinced me that Python isn't Turing-complete.)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.