Slashdot Mirror


Ask Slashdot: Will Python Become The Dominant Programming Language?

An anonymous reader shares their thoughts on language popuarity: In the PYPL index, which is based on Google searches and is supposed to be forward looking, the trend is unmistakable. Python is rising fast and Java and others are declining. Combine this with the fact that Python is now the most widely taught language in the universities. In fields such as data science and machine learning, Python is already dominating. "Python where you can, C++ where you must" enterprises are following suit too, especially in data science but for everything else from web development to general purpose computing...

People who complain that you can't build large scale systems without a compiler likely over-rely on the latter and are slaves to IDEs. If you write good unit tests and enforce Test Driven Development, the compiler becomes un-necessary and gets in the way. You are forced to provide too much information to it (also known as boilerplate) and can't quickly refactor code, which is necessary for quick iterations.

The original submission ends with a question: "Is Python going to dominate in the future?" Slashdot readers should have some interesting opinions on this. So leave your own thoughts in the comments. Will Python become the dominant programming language?

32 of 808 comments (clear)

  1. Betteridge says: by KeensMustard · · Score: 5, Insightful
    No.

    But in all seriousness, is this even for real or just clickbait? Why would we want just one programming language?

  2. No, because meaningful whitespace by mfearby · · Score: 5, Insightful

    Enough said. Whitespace which has meaning is just nasty.

    1. Re:No, because meaningful whitespace by thesupraman · · Score: 5, Insightful

      Iseeyourpointinfactifeelthatyoushouldpushforsuchaconcepttobemorewidelyaccepted.

      Or, on the other hand, perhaps it is just as valid as any other parsing requirement? Language commands need some form of context, python just happens to choose that one.

      The real issues with python are lack of performance scaling within the language (without using extension hacks), and the horrific threading problem. If those were solved then it would be much much much better.

      Fwiw I have been developing commercial systems in python for over ten years.

    2. Re: No, because meaningful whitespace by plopez · · Score: 3, Insightful

      The last programming I know of, other than the joke ones, that had significant white space was Fortran 77. That was due to punch cards. It was due to punch cards that you also could not use lower case letters. F90 discarded white space significance in 1990. Thee years later Guido reinvents it. What next, is he going to force us to use UPPERCASE CHARACTERS?

      --
      putting the 'B' in LGBTQ+
    3. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 2, Insightful

      BS. Any sensible programmer will produce code with the same correct indentation, but with the added ugly-braces or ENDIF, or whatever clutter that language uses. Python recognizes this, and does away with the clutter for the sake of cleaner code.

      And if you start mixing up the indentation then you'll get a big mess anyway, no matter the language.

    4. Re: No, because meaningful whitespace by superwiz · · Score: 1, Insightful

      Braces didn't win over whitespace because of C's readability. They won over because C won over and then Java used em so not to confuse all the struggling C++ programmers. If you can't handle a slight change in how scoping is expressed, you have no business having an opinion on which programming language to use. You'll do what you are told.

      --
      Any guest worker system is indistinguishable from indentured servitude.
    5. Re:No, because meaningful whitespace by Geeky · · Score: 4, Insightful

      Agree. Code should not fail to run because of programmer errors that are not visible in the text editor - i.e. a stray tab instead of spaces.

      It's also a nightmare copying code snippets, especially from the web - you might as well retype them by the time you've fixed the tab vs. space issues.

      --
      Sigs are so 1990s. No way would I be seen dead with one.
    6. Re: No, because meaningful whitespace by itsdapead · · Score: 5, Insightful

      Braces didn't win over whitespace because of C's readability.

      Its not about readability: its about not having your code turned into line noise because you accidentally left "hard tabs" enabled in the editor, some idiot hit "reformat" or or mixed DOS and UNIX line endings, or tried to merge code written by some heretic who indented by 3 spaces instead of the 2 spaces carved in stone by His Noodley Appendage.

      Like all punctuation, it is a bit of Belt and Braces (haha!) redundancy that removes any ambiguity and which you'll be grateful of should you ever need to reformat your code.

      Maybe that's the thing - it appeals to the Sheldon Coopers of this world that code written by anybody who doesn't follow their particular One True Indentation Style (or nests blocks more than 1 deep when they should implement any sequence of more than two lines as a function) can be deemed officially unusable and can't be fixed at a stroke by hitting Escape-meta-whatever.

      --
      In a survey of 100 programmers, 111111 thought that duck-typing was a good idea.
    7. Re:No, because meaningful whitespace by Geeky · · Score: 5, Insightful

      The difference between wrongly balanced braces and whitespace is that whitespace is invisible. You're literally trying to debug an invisible error - it's indented to the same level, but with a single tab instead of spaces.

      Maybe I'm using the wrong editor, but I get annoyed at the number of times it seems to forget that I'm using spaces to indent and adds a tab, throwing off the code. I have to keep running the "convert tabs to spaces" function on it before I save.

      OK, I'm an occasional Python programmer, so maybe it annoys me more than someone working with it all day every day. It's just a mental gear shift and annoyance that I could do without compared with every other language I currently use. There's a lot I like about Python, but the whitespace thing is a pain in the arse.

      --
      Sigs are so 1990s. No way would I be seen dead with one.
    8. Re: No, because meaningful whitespace by Anonymous Coward · · Score: 2, Insightful

      Python reminds me of the assholes who insist everyone indent with literal spaces instead of tabs:

      Pointless rules by rockstar fuckos who are so talented they can't even figure out how to adjust tab width on their editor.

    9. Re:No, because meaningful whitespace by goose-incarnated · · Score: 4, Insightful

      So:

      #include int main(void){int i;for(i=1; i<=100; i++){if(((i%3)||(i%5))== 0) printf("number= %d FizzBuzz\n", i);else if((i%3)==0) printf("number= %d Fizz\n", i);else if((i%5)==0) printf("number= %d Buzz\n", i);else printf("number= %d\n",i);} return 0;}

      Actually, that IS superior to using whitespace for indentation, because I ran it through indent on the default settings and got this..

      If that line of code was python, no tool on earth will figure out the correct formatting. You provide a compelling reason for whitespace to be independent of meaning in the source code.

      --
      I'm a minority race. Save your vitriol for white people.
    10. Re:No, because meaningful whitespace by fnj · · Score: 1, Insightful

      I would go so far as to state that Python's design is stupid in that it doesn't just flag all hard tab characters in the text as ERRORS. This would complete eliminate the potential for criticism. As it is, the criticism that invisible characters represent a fatal weakness is NOT entirely specious, and it is unfortunate because it is so unnecessary.

  3. Wrong on all accounts by Anonymous Coward · · Score: 1, Insightful

    Python is the fidget spinner of programming languages. Python devs are an uppidy bunch who have no idea of the benefits of other languages. Saying the "compiler gets in the way" shows their level of ignorance on this.

  4. Re:Dominant where? by Anonymous Coward · · Score: 5, Insightful

    And is not an important project, so that you will never do branches or merges.
    Because merges + significant whitespace = unholy mess you will spend ages debugging after each merge.

  5. Ruby by Meneth · · Score: 2, Insightful

    I should hope not. Ruby is much nicer.

  6. Re: Clickbait is clickbait by Malenx · · Score: 5, Insightful

    My college taught had a course that went through every language to teach differences and focused on the fact that there were different tools for different tasks. The core classes however all used java to teach programming principles. I really felt it was the right approach. Learning different tools is necessary as a programmer, but even more important is the proper mindset, patterns, and approaches, regardless of our chosen language. A good programmer can pickup any language and work towards proficiency then mastery.

  7. Ok, I'll bite... by wheelbarrio · · Score: 4, Insightful
    I'm a fan of Python, but this question is a joke, right?
    Sidestepping interminable arguments about the merits of language A vs language B, and ignoring the flat-out ignorant assertions in the 'anonymous reader's thoughts' about IDEs and compilers, the question is predicated on a culpably ignorant interpretation of the very data they cite.

    So here's how PYPL works:

    The PYPL PopularitY of Programming Language Index is created by analyzing how often language tutorials are searched on Google.

    so... what the data actually show is that relatively more folks want to learn Python these days than C or Java or Haskell (or whatever) — which is scarcely surprising since more non-specialist programmers are learning to code than ever before, and Python is easy to learn and great to teach with for that demographic — what the data definitely do NOT show is that Python is replacing C or Java or Haskell (or whatever) in the production domains in which those languages shine. And it never will.

  8. Re: No by K.+S.+Kyosuke · · Score: 5, Insightful

    The prime weakness of BASIC was goto.

    I'd say that the prime weakness was the lack of product types and named objects such as functions and procedures, but that's just me...

    --
    Ezekiel 23:20
  9. Re:Lol by Entrope · · Score: 4, Insightful

    Most of my time is spent working on an app with C++ at the low levels, Python at the high levels, and Perl/JS for web stuff. I am one of two developers who primarily does C++, we have two who primarily do Python, and one who primarily does the web bits. The Python code unsurprisingly does a lot of database operations and IPC, so many of its endpoint types are strings. I am always shocked how many of the Python-domain commits are only to add or remove type conversions that testing missed. That problem is almost entirely absent in C++, with its strong static typing, and in Perl and JS, with their mostly "DWIM" operators and types.

    I do not bet on Python being much more than a glue language unless it gets strong compile-type type checking. That may be enough to make it a "dominant" language, because people ship more and more good libraries that can be simply picked up and used by higher-level code, but it will probably never displace other languages without stronger compile-time checks.

  10. Re:No by h33t+l4x0r · · Score: 2, Insightful

    Python has completely stepped on it's own dick by making v3 scripts incompatible with v2. In all likelihood it will never get over that clusterfuck. For data science, R is the future, and for everything else, it's really a toss-up.

  11. Re: No by goose-incarnated · · Score: 4, Insightful

    The prime weakness of BASIC was goto. I suspect you're just trying to conflated the two because both are popular as teaching languages. Besides that, the two aren't comparable in any way.

    Except that python is ALSO useful in the real world.

    You think Basic wasn't useful in the real world? You must have been asleep for the latter part of the nineties.

    --
    I'm a minority race. Save your vitriol for white people.
  12. Re:No by goose-incarnated · · Score: 5, Insightful

    The clusterfuck was not that some stuff broke in version 3 but that the community wasted an inordinate amount of effort and time supporting version 2 and version 3 in parallel, backporting some things, writing shims, maintaining & building two code bases.

    Version 3 should have come out and the community told that in 18 months version 2 was going to be mothballed. A clear timeline that would have focused minds and moved the language forwards.

    That would have killed both versions. You underestimate the utility of backwards compatibility. Entire sub-optimal technology stacks currently owe their existence to being backwards compatible. The optimal ones with no backwards compatibility didn't make it.

    --
    I'm a minority race. Save your vitriol for white people.
  13. Re:No by Blrfl · · Score: 5, Insightful

    Entire sub-optimal technology stacks currently owe their existence to being backwards compatible.

    The x86 platform being a perfect example of that.

  14. Re:No by RabidReindeer · · Score: 5, Insightful

    That, and the fact that python is horribly slow.

    So was Java, once. Python has JIT-compiling these days, and thus, like Java, can potentially run faster than static-compiled programs.

    What Python doesn't have is strong type enforcement. Unless you pre-compile the whole app, entire source files could be filled with monkey-typed gibberish and until the fateful day came that the defective modules were referenced (say, once a Leap Year), they'd be serpents in the grass.

    Even pre-compiling won't help if there are insufficient cues to ensure that you won't be passing a dingus to a module that expects to use a wackdoodle.

  15. Overconfident bullshit by lorinc · · Score: 5, Insightful

    People who complain that you can't build large scale systems without a compiler likely over-rely on the latter and are slaves to IDEs. If you write good unit tests and enforce Test Driven Development, the compiler becomes un-necessary and gets in the way.

    Says the guy that never worked on a project with 100+ classes and 100k+ lines of code...

    Don't get me wrong, I love python and it's become my main programming language. But hey, I'm a researcher and everything I code doesn't have to do more than producing a few results to put in a paper and then be thrown away and never looked at again.

    You know why Java is the top language now? It's not only because it's so easy that many professional applications have been written 15 years ago by dumb interns, but also because it's so robust that these applications can still be maintained by even dumber interns today. You're never going to get that with python (or js, or ruby, or whatever new hype thing you believe is the new messiah).

  16. Re:No by fnj · · Score: 4, Insightful

    I'm going to say this is a case where Betteridge does NOT rule. Yes, python is not perfect: it is as slow as molasses in execution speed, and has terrible multithreading capability. So what. These imperfections are completely outweighed by its superb readability/understandability/clarity, and the ease with which it can be learned.

    No one is going to write an OS or an office suite all in python. But for a large swathe of programming tasks it is ideal. It is a lot more than just a scripting tool like, for example, perl.

  17. Re: No by beelsebob · · Score: 3, Insightful

    The two are very comparable. They're both dynamically typed interpreted languages that are commonly used for writing more complex scripts, and some basic things that might be called "applications". They both provide ease of programming, relatively human readable syntax, and both suffer from significant performance issues relative to more on-the-metal solutions.

    I'd say the comparison is spot on.

  18. Re:No by swillden · · Score: 5, Insightful

    What Python doesn't have is strong type enforcement.

    Actually, it does - Python is a strongly typed language, what it isn't, is statically typed.

    Which means that you have no idea that you passed a dingus instead of a wackadoodle until some codepath that exercises the difference... and then you only find out at run-time, when your production system crashes. Sure, you can argue that this just means your automated tests were deficient, but that's always going to be the case, even when you apply great effort to get to 100% coverage. And you can argue that static typing isn't a perfect solution either, and I would never claim otherwise.

    But the combination of TDD and static typing catches more defects than TDD alone, and static typing often enables errors to be caught at the time when they're easiest to fix, compilation. Judicious use of strong static typing enables us to write code that cannot compile unless it's correct. It's unfortunate that the very best popular-language example of this comes from the most powerful footgun language, C++, but that doesn't make it any less true. The C++ templating system, combined with static typing, makes it fairly easy to build infrastructure that allows the compiler to catch huge classes of likely errors. Haskell is an even better example of the tremendous error-correction power of strong and thorough static typing, though it's not likely ever to become popular.

    Python is great for rapid prototyping and small scripts, but for large, complex systems I want both TDD and strong typing. At present, Java is probably the best language for such systems, when you consider availability of experienced staff, tooling and native features.

    --
    Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
  19. Re:Yes and for bad reasons by blind+biker · · Score: 3, Insightful

    I dunno, I think Pascal was awesome and I would always love to use it. I see absolutely no downside to Pascal.

    --
    "The agriculture ministry is not in charge of Gundam" - Japanese ministry official.
  20. Re:No by goose-incarnated · · Score: 1, Insightful

    These imperfections are completely outweighed by its superb readability/understandability/clarity, and the ease with which it can be learned.

    Those attributes, in any profession, are not the ones that career-folk care for. They are highly desired by amateurs in every field, but not by professionals in the same field. This applies to all professions, not just s/ware development.

    --
    I'm a minority race. Save your vitriol for white people.
  21. Re:No by goose-incarnated · · Score: 3, Insightful

    , the typing is quite strongly enforced. Me's thinks you don't know what you're talking about.

    The typing is strongly enforced at runtime. We'd like to catch those obvious errors before it runs.

    --
    I'm a minority race. Save your vitriol for white people.
  22. Re:No by mysticgoat · · Score: 3, Insightful

    The point of my earlier post got lost in the reverie.

    Python is nothing like the Basic of the 1980s. Basic's development was strongly shaped by the limitations of the hardware it was run on. Python's development is shaped by the self-imposed limitations of the minds of its developers. Two very different things.