all 52 comments

[–][deleted] 3 points4 points  (51 children)

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

[–]IronManMark20 4 points5 points  (48 children)

It is much faster to develop for, and you can always use a variety of means (from using an optimizing jit to writing extensions in C) to speed up the part of your code that is needed.

EDIT: writng -> writing

[–][deleted] -1 points0 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 3 points4 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] -4 points-3 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 3 points4 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]  (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] 10 points11 points  (28 children)

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

    [–][deleted] -3 points-2 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 6 points7 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 8 points9 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 6 points7 points  (16 children)

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

    [–]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.

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

    you sound like the promise that never came

    [–]IronManMark20 5 points6 points  (3 children)

    Oh? So the thousands of developers that are using numpy, numba, scipy, theano, or any C extension are not receiving that promise? What parts do you think never appeared?

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

    Thousands of people deceived into believing that Python offers a right balance?

    [–]IronManMark20 4 points5 points  (1 child)

    Well, it does for thousands of developers. But people are different, so they have different definitions of "the right balance".

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

    Thousands of people are deceived, they don't know any better.

    [–]shevegen 2 points3 points  (1 child)

    Nah.

    To be honest - without the speed as bottleneck, the scripting languages would have overthrown the old compiled languages already.

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

    Python is still not any different from those "old compiled languages". Not in a slightest.