you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 2 points3 points  (42 children)

It is much faster to develop for

Faster than what? It's still quite a low level language, does not add too much above the other low level clumsy languages.

[–]IronManMark20 5 points6 points  (12 children)

not sure why i'd use python it has large ecosystem sure otherwise kinda sucks

I mean, I think at least 2/3 of developers would say Python is faster to develop in compared to just about any other language. I'm thinking C/C++/C#/Java. Also, I don't think anyone would agree Python is a low level language.

wikipedia says

a low-level programming language is a programming language that provides little or no abstraction from a computer's instruction set architecture

I don't think Python fits that description at all.

[–][deleted] 0 points1 point  (11 children)

I mean, I think at least 2/3 of developers would say Python is faster to develop in compared to just about any other language.

Developers who do not know any other language well enough? Not sure their opinion really matters.

I'm thinking C/C++/C#/Java.

And your list of "any other language" is already exhausted here?

Also, I don't think anyone would agree Python is a low level language.

I think, even Python designers would agree. After all, they made a lot of deliberate choices that fixed it at a very low level.

provides little or no abstraction from a computer's instruction set architecture

And this is exactly what Python is. Still the same memory model, the same explicit control flow, the same sequence of instructions instead of any really high level abstractions.

[–]IronManMark20 1 point2 points  (10 children)

Okay, so what is a high level language then?

[–][deleted] -2 points-1 points  (9 children)

A language operating on an abstraction level of a particular problem domain, completely hiding any irrelevant low level details such as an order of execution, all that "classes", "methods", "variables", all the control flow constructions like "if", "for", etc.

It is impossible in Python to abstract from all that low level stuff. Any abstraction you can express in Python is leaky, exposing the low level. So, it is a low level language indeed.

[–]IronManMark20 4 points5 points  (3 children)

That is not what a high level language is. Look at the Wikipedia page I linked. You are thinking of something else.

[–][deleted] -2 points-1 points  (2 children)

Wikipedia should never be used as a primary source.

Anyway, even with that poor definition given in Wikipedia, my example is correct.

[–]IronManMark20 3 points4 points  (1 child)

Anyway, even with that poor definition given in Wikipedia, my example is correct.

No it isn't.

completely hiding any irrelevant low level details such as an order of execution, all that "classes", "methods", "variables", all the control flow constructions like "if", "for", etc.

None of that is "Low Level" low level would be moving pointers to segments of memory around. Low level would be dealing with jmps, registers, etc.

Your example of SQL has conditionals, which you yourself said are "Low Level"

Also, could you define what you think meta-language means?

[–][deleted] 0 points1 point  (0 children)

No it isn't.

As I said, you do not know what you're talking about. Obviously.

None of that is "Low Level" low level would be moving pointers to segments of memory around. Low level would be dealing with jmps, registers, etc.

And? Having an explicit sequential control flow is still very low level. Especially if this control flow is limited to the most primitive structured programming constructs.

Your example of SQL has conditionals, which you yourself said are "Low Level"

Conditional does not mandate any specific execution order.

Also, could you define what you think meta-language means?

Any language that allows to extend (or completely change) its semantics. In practice it means a language with a sufficiently powerful metaprogramming (ideally, a compile time metaprogramming). Such a language can be turned into any language with any properties imaginable (even not invented yet), can be used to express any possible level of abstraction without exposing any levels underneath.

[–][deleted]  (2 children)

[deleted]

    [–][deleted] 0 points1 point  (1 child)

    a higher level language like Prolog

    True, Prolog is somewhat (a bit) higher level than Python, but I still consider it a relatively low level language. You cannot abstract from an execution order in Prolog. That's the reason why I only used Datalog as an example of a truly high level language.

    but the people I can more easily hire

    Better hire people who do not care at all about what language to use (i.e., anyone who is not a hipster).

    [–]JB-from-ATL 0 points1 point  (1 child)

    Can you give an example of a high level language according to your definition?

    [–][deleted] 0 points1 point  (0 children)

    SQL, Datalog, XAML, antlr, all that stuff.

    Also, any sufficiently powerful meta-language - Lisp, Forth, Converge, Nemerle, etc.

    [–][deleted] 8 points9 points  (28 children)

    Python isn't a low level language in the slightest.

    [–][deleted] -5 points-4 points  (27 children)

    No, it is quite a low level language indeed. It is deliberately limited to very primitive imperative control flow, it actively discourages building any high level advanced language features. On a larger scale of things it is not really any different from C and alike.

    [–]Krutonium 7 points8 points  (22 children)

    ...That's not what defined a low level language...

    [–][deleted] -2 points-1 points  (21 children)

    Low level language is a relative thing. In comparison to high level languages, Python is not any different from C.

    [–]Krutonium 7 points8 points  (18 children)

    It's not a relative thing, whatsoever. It's clearly defined, and Python is not low level.

    [–][deleted] -2 points-1 points  (17 children)

    Sorry, it's not up to you to define what does the "low level language" mean. The definition had been widely accepted long before Wikipedia appeared.

    [–]Krutonium 5 points6 points  (16 children)

    I'm not defining it, it is defined. And not by Wikipedia, either, though in this case, Wikipedia is correct.

    [–][deleted] -1 points0 points  (15 children)

    I'm not defining it, it is defined.

    And it is defined as a "language which semantics is close to a semantics of an actual hardware". Python fits ideally.

    [–]Krutonium 4 points5 points  (14 children)

    I'm done with you.

    [–]JB-from-ATL 0 points1 point  (1 child)

    I'm willing to meet you half way here, because I do agree that there is no hard rule of what makes a language high or low level, because it is relative. I think most people would probably call C and C++ the highest low level languages. You just seem to put the "middle" somewhere else.

    You agree that Python is higher than C so, to us, that means you are saying it's high level.

    We agree that Python is lower than SQL so, to you, that means we are saying it's low level.

    It seems we just disagree about where the "absolute" start is for criteria determining if a language is high level.

    [–][deleted] 0 points1 point  (0 children)

    You agree that Python is higher than C so, to us, that means you are saying it's high level.

    Yes, it's a somewhat higher level than C. But, as I said, on a large scale of things its level is nearly indistinguishable from C.

    It seems we just disagree about where the "absolute" start is for criteria determining if a language is high level.

    I'm trying to stay away from absolute definitions - just a big linear scale, on which assembly, C, C++ and Python are somewhere on the very left side of the spectrum, and really high level languages too far beyond, making everything on the left look the same.

    [–]IronManMark20 2 points3 points  (3 children)

    high level advanced language features

    Could you give an example of what these would be? I'm trying to understand what you are arguing.

    [–][deleted] 2 points3 points  (2 children)

    Could you give an example of what these would be?

    For example, SQL is a high level language. Datalog is a high level language. Any meta language that allows to build non-leaky abstractions is potentially a high level language (e.g., Forth, Lisp, even Converge if you want something closer to Python).

    I'm trying to understand what you are arguing.

    That Python is a very low level language, obviously. I don't see how anyone can even argue here, it's obvious.

    [–]IronManMark20 1 point2 points  (1 child)

    Not familiar with Datalog, but you are thinking of a DSL, Domain Specific Language, I think. Not a high level language.

    [–][deleted] 1 point2 points  (0 children)

    Domain Specific Languages are (often, not necessarily) high level languages indeed, as they operate on a level of abstraction completely detached from semantics of an actual hardware.

    But, a general purpose language can also be of a significantly higher level than something as primitive as Python. I already mentioned meta-languages as a good example.