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?

808 comments

  1. No by Anonymous Coward · · Score: 4, Interesting

    No.

    1. Re:No by Opportunist · · Score: 3, Funny

      There are no stupid questions, only stupid people.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    2. Re:No by Anonymous Coward · · Score: 0

      That, and the fact that python is horribly slow.

    3. Re:No by Z00L00K · · Score: 5, Interesting

      Python is to programming today what Basic was to programming in the 80's. With similar advantages and disadvantages.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    4. Re: No by Anonymous Coward · · Score: 1

      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.

    5. Re:No by Anonymous Coward · · Score: 0

      Are you telling me that stupid people can ask intelligent questions? Even more, are you telling me that stupid people can't ask stupid questions?

    6. 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
    7. Re: No by CeasedCaring · · Score: 5, Informative

      Back in the day, BBC Basic had both PROC & FN commands

    8. Re: No by K.+S.+Kyosuke · · Score: 1

      Sadly, I had the C64.

      --
      Ezekiel 23:20
    9. 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.

    10. Re:No by Anonymous Coward · · Score: 0

      There are no stupid questions, only stupid people.

      So stupid people don't ask stupid questions?

    11. Re: No by Anonymous Coward · · Score: 0

      Hahaha... C to the F .... cluster****!

    12. Re: No by Rockoon · · Score: 1

      Didn't the C64 use Microsofts ROM BASIC? If so then it should have had DEF FN. Every other machine sporting a Microsoft ROM BASIC did.

      --
      "His name was James Damore."
    13. Re:No by DrXym · · Score: 2, Interesting
      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.

    14. Re: No by K.+S.+Kyosuke · · Score: 3, Informative

      Well it did, and I *did* use them, but single-line branchless definitions is quite far from named definitions being an orthogonal concept in a language.

      --
      Ezekiel 23:20
    15. Re:No by Njorthbiatr · · Score: 1

      But a lot of the changes were for the best. raw_input has been turned into input, for instance. The last thing anyone wants is having a language with built-in runtime errors.

    16. Re: No by Anonymous Coward · · Score: 5, Informative

      There is nothing wrong with GOTO, just as there is nothing wrong with longjmp or branch or break to label, it all depends on how and when you use it.

    17. 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.
    18. 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.
    19. 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.

    20. Re:No by Anonymous Coward · · Score: 0

      No it hasn't. Python 3 is an improved language. If you need the older language, it's still there, ready to run your old software, and still receiving bug-fixes.

      You might as well complain that C++ has stepped on its dick by not being fully compatible with C source, and argue that we should never make newer and better languages.

    21. 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.

    22. Re:No by Anonymous Coward · · Score: 1

      It isn't that bad, I've got a little Perl script that will make all the changes to "upgrade" v2 to v3.

    23. Re:No by Anonymous Coward · · Score: 0

      It matters very little today. With the computers we have these days there's an overwhelming amount of computing tasks that will finish well within reason, even in Python, even on a small netbook.

      And if you do need performance, just use C++ or any other fast and obtuse language.

    24. Re:No by Anonymous Coward · · Score: 0

      It also doesn't have, wait for it, Threads!

    25. Re:No by Anonymous Coward · · Score: 0

      R is great for stats, but for many data preprocessing tasks it is sub-optimal or just plain unsuitable. Python allows you to do both pre-processing and stats using the same language. I doubt it's ever going to outperform R in the stats department, though.

    26. Re: No by Anonymous Coward · · Score: 0

      Try the whole of the 80s and 90s in fact. Whilst most are familiar with one or more microcomputer basics or ms basic there were other professional basics. I used business basic from data general and it was old when I started using it in 1987. It was somewhat unsophisticated in some areas but on the plus side it had its own isam database including locking plus it integrated with some other DG databases.

    27. Re:No by Anonymous Coward · · Score: 0

      Who the fuck do you think asks the stupid questions?

    28. Re:No by xvan · · Score: 2

      As far as I knew, C++ was fully compatible with ANSI C. That played a big part on its success.

    29. Re:No by Anonymous Coward · · Score: 0

      Yeah, typecasting is so 20th century. The nurgle in the latest pre-compiler will morph the dingus into a wackdoodle and the left overs will be cleaned up by the garbage collector. So there is nothing to worry about.

    30. 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.

    31. Re:No by LifesABeach · · Score: 4, Interesting

      I call Bullshit. I've bench marked several Java vs /> and Ms*; only C++, C, and Assembler are faster, and in that order.

    32. 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.

    33. Re:No by LifesABeach · · Score: 1

      Foolish A/C, try using Google; Python has treads, and so does Java.

    34. Re:No by beelsebob · · Score: 2

      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.

    35. Not that sure --- R is such a clusterfuck that someone managed to write a succesful 150-page book about the different ways in which you can shoot yourself in the foot with it.

      --
      My first program:

      Hell Segmentation fault

    36. Re:No by beelsebob · · Score: 2

      Nope, C++ is not a superset of C at all. There's lots of subtle little things that are different in very important ways.

      Some examples:

      1) void* is not considered implicitly castable to any other pointer type. That means that you need to cast the output of malloc for example.

      2) character literals have the type char, rather than int. That means their size is different, and hence programs behave differently.

      3) C++ does not require to use the keyword 'struct' in front of structure names. This can subtly change the behaviour of programs like int A; void foo(void) { struct A { char x; }; return sizeof(A); }, which will return the size of the variable A in C; and the size of the structure A in C++.

    37. Re:No by Creepy · · Score: 1

      Properly programmed assembler should always be as fast or faster than C++ and C, but out of order execution is nearly impossible to program these days. In any case, interpreted languages with Just In Time (JIT) compilers can outperform static compilers, but in practice they rarely do outside of controlled environments, at least in my experience. I've seen SmallTalk (Squeak I believe) absolutely smoke a compiled Windows program, but it was demo'd by a SmallTalk guy that probably wrote everything that is advantageous to SmallTalk and disadvantageous to Windows intentionally just to show off how a JIT can be better than a compiled program if conditions are right.

    38. Re: No by serviscope_minor · · Score: 2

      I what era? BBC basic had functions in 1981. The excellent quick basic (basically QBasic but better) had them by 1985. When QBasic was finally released in 1991, every PC from then on had a basic not beholden to line numbers.

      --
      SJW n. One who posts facts.
    39. Re:No by Anonymous Coward · · Score: 0

      No stupid questions, but plenty of inquisitive idiots.

    40. Re:No by serviscope_minor · · Score: 3, Informative

      You missed FORTRAN. That's often faster than C. If your C is faster than your C++, you can fix it.

      --
      SJW n. One who posts facts.
    41. Re:No by Anonymous Coward · · Score: 0

      This is inaccurate. Python has always had strong typing, but not static typing. (strong != static)

      With respect to the latter, optional static typing is now being worked on, and will probably see adoption in the later 3.x series.
      http://mypy-lang.org/

    42. Re:No by histreeonics · · Score: 1

      (Early 1990's anecdote:) C++ was not fully compatible due to stricter type checking and namespace rules. I found the differences beneficial and made my crew use C++ just as a stricter C. We only used polymorphism when it looked like it would simplify the if-then-else implementations otherwise needed.

    43. Re:No by Anonymous Coward · · Score: 0

      C++ was never a strict superset of C.

      But it was always the case that if you only had a C++ compiler, you could run C code through it and get an executable that basically worked. (Obviously, as long as you don't do janky shit like the things you listed.)

    44. Re:No by Anonymous Coward · · Score: 0

      I have to agree. Those who claim "oh, just use 3 - all the useful libraries have already been ported anyway" apparently don't work on actual systems in actual production. Or else they fail to recognize the kind of factors that lead to buggy, unmaintainable software.

    45. Re: No by Austerity+Empowers · · Score: 1

      It was, is and will always be useless for a certain domain of programming in which some of us live. We're also the same group of people who continue to use C, in spite of the fact that it does not have every new feature that some CS prof thinks is essential. In fact we prefer to not have that stuff, it makes everything more difficult for us.

      However I know many people in finance and business functions who use Basic exclusively to this day, and probably will for some time to come. I'm not sure Python works for them.

    46. 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.
    47. Re:No by DrXym · · Score: 1

      No it would not have killed both versions. Other projects have managed breaking transitions far more quickly and without wasting nearly a decade supporting two code bases with the subsequent confusion and stagnation that goes with it.

    48. 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.

      Well the standard retort to that is "unit tests!!!11". It's like they think implementing something yourself what a compiler would do for you for free is supposed to be satisfactory. Eventually, your unit tests will need unit tests if we take this argument to it's logical conclusion.

      The good news is that PEP484 gives Python3 "type hints" so that, theoretically, one could develop a tool that does exactly what a compiler does with respect to checking types. If I'm not mistaken, pylint already does this. Better late than never. I guess the "Unit Tests Will Solve Everything" crowd were wrong after all.

    49. Re:No by Anonymous Coward · · Score: 0

      Making white space significant is python's biggest flaw. And one of the main reasons I've avoided it as long as I could. But with the push towards 'data science', which we use to call statistics back in the 80s, I'm forced to start paying attention to it.

    50. Re: No by goose-incarnated · · Score: 1

      It was, is and will always be useless for a certain domain of programming in which some of us live.

      That's not was GP claimed. GP claimed it was useless in the real world, not that it was useless for certain domains.

      --
      I'm a minority race. Save your vitriol for white people.
    51. Re:No by beelsebob · · Score: 3, Informative

      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.

      Hey, I never claimed it was good. I just corrected your assertion. Python *is* strongly typed. You absolutely can not pass a dingus instead of a wackadoodle. It will crash with a type error every time. It just will crash, instead of causing a compilation error, making the language strongly dynamically typed, not weakly typed as you asserted.

    52. Re:No by beelsebob · · Score: 1

      Heh, "as long as you don't do janky shit like the things you listed."

      Yes... because using malloc is "janky shit".

    53. Re:No by Jeremi · · Score: 1

      Other projects have managed breaking transitions far more quickly and without wasting nearly a decade

      Can you name some? In order to make the comparison fair, you should limit your examples to other popular programming languages that made a successful breaking change, since invalidating large, established codebases of user code is precisely what makes such a change so expensive.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    54. Re:No by Anonymous Coward · · Score: 0

      I guess you've never used python, or you've never done real work then. The libraries available for Python trump anything available on any platform anywhere when it comes to simply getting work done quickly for an extraordinarily large set of use cases.

    55. Re:No by goose-incarnated · · Score: 1

      No it would not have killed both versions. Other projects have managed breaking transitions far more quickly and without wasting nearly a decade supporting two code bases with the subsequent confusion and stagnation that goes with it.

      Which programming language made changes that broke the last ten years worth of software that was written in it, and survived? Perl?

      --
      I'm a minority race. Save your vitriol for white people.
    56. Re:No by Archangel+Michael · · Score: 1

      x86 is a perfect example of backwards compatibility both helping and hindering.

      It helps adoption, and hinders progress. In the process, it is a stagnation of a large installed base. Eventually, progress happens anyways, and the large installed base misses out on advancements elsewhere and eventually goes away.

      My main PC isn't running x86, it is running ARM(my Phone). I have an x86 PC, but it is fairly specialized to doing tasks built around x86 legacy stuff.

      --
      Agent K: A *person* is smart. People are dumb, stupid, panicky animals, and you know it.
    57. Re:No by Jeremi · · Score: 2

      Nope, C++ is not a superset of C at all. There's lots of subtle little things that are different in very important ways.

      All true, but irrelevant, since C++ is "close enough" to compatible with C that in most cases you can simply rename a .c file to .cpp and it will compile and run correctly (possibly with a few minor tweaks).

      Perhaps more importantly, you can link your C++ code directly to code that was compiled with a C compiler and have it call into the C code without any major hassles.

      So the major benefit -- being able to keep using all those existing C codebases from your C++ program -- was preserved.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    58. Re:No by Anonymous Coward · · Score: 0

      The 'official' Python interpreter (CPython) does not have JIT and is often 10-100x slower than native C code.

      If you want JIT you have to use the PyPy interpreter, but PyPy is incompatible with a lot of popular libraries because it doesn't support Python C extensions (well technically it does, but they need to be recompiled and compatibility is iffy and performance is horrible which completely defeats the point of PyPy). I hope PyPy becomes more mainstream and usable in the future because I do like Python and would love being able to use it without the obscene performance penalty. PyPy does support CFFI and I hope that gains more uptake compared to C exertions.

      There are even subtle incompatibility with actual Python code because PyPy intentionally does not respect refcounting semantics for performance reasons. From the PyPy docs this line of code:
      open("filename", "w").write("stuff")
      "won't fill the file immediately, but only after a certain period of time, when the GC does a collection"
      Not a major issue if you keep it in mind while writing your own code, but again can cause weird issues when trying to use third party libraries.

      People always say that JIT runtimes 'potentially run faster than static-compiled programs' but such situations are rare, PyPy and the latest JVM implemenations seem to run about half as fast as C code on average (but it is indeed highly variable).

    59. Re:No by DrXym · · Score: 1
      Swift would be one recent example and provides a migration tool. But all languages have breaking changes at one point or another.

      And besides, someone using Python 2.x is not compelled to move to 3.x but it can be made clear there are no new versions of 2.x and 3.x is where all development lies. It really isn't rocket science.

    60. Re:No by Anonymous Coward · · Score: 0

      > Python is to programming today what Basic was to programming in the 80's. With similar advantages and disadvantages.

      Python was created in 1989...

    61. Re:No by Anonymous Coward · · Score: 0

      Yeah, the problem here was making the breaking change so big. They should have gone for smaller steps - the Unicode stuff is the biggest one, most of the library ones could have been bridged for 5-10 years, with no other problem than a bit of extra code here and there in the standard library.

      Yes, it would have required ingenuity and discipline, but OTOH Python could now have been in place where Python 3 wasn't even a thing to talk about.

      IMHO it's down to hubris and groupthink. But I didn't follow the development closely.

    62. Re: No by slazzy · · Score: 1

      There's some truth to that in that both are easy to learn, and slower to run. However python is quite powerful - it can do almost anything. Basic was quite limited.

      --
      Website Just Down For Me? Find out
    63. Re:No by serviscope_minor · · Score: 1

      Yeah janky. It's leak prone, not type safe and doesn't respect the pre or post conditions of your types :)

      --
      SJW n. One who posts facts.
    64. Re:No by MightyYar · · Score: 1

      Others who agree with you wrote mypy which is basically a lint-style checker for type. While I do get the occasional bug when a function supports more than one type - len() on strings and lists, for instance - for the most part the strong typing catches most mistakes, so I don't bother with the added clutter of static typing everything.

      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
    65. Re:No by DrXym · · Score: 1
      Look at the history of Cobol, Fortran, C, Java, Ruby etc. They all contain breaking changes in the language specification or the APIs from one version to the next. Some are substantial, some are not. People deal with the changes and move on.

      The differences between Python 2 and 3 are relatively minor at a language level so there is no real excuse for prolonging 2x for ANOTHER decade and the inordinate amount of effort required to do so. Also 2to3 meant most code could be ported with relative ease. Ah but all the Python impls like PyPy, Jython etc. chose to hedge their bets and implement around 2.x and now it's a millstone. In the context of this article where it asks if Python will become the dominant programming language, the answer is perhaps it might have been if it didn't have its head up its ass for 10 years. All of this was avoidable.

    66. Re:No by goose-incarnated · · Score: 1

      Swift would be one recent example and provides a migration tool.

      When Swift made the breaking change the amount of software written in Swift was not even a rounding error. The amount of apps broken by the Swift change is so small you can't even measure it accurately.

      OTOH, the breakage between Python 2 and 3 would have broken tens of millions of lines of code.

      --
      I'm a minority race. Save your vitriol for white people.
    67. Re:No by MightyYar · · Score: 1

      I think you have it backwards - by supporting both versions they have managed to do what few other languages have: increased in popularity while correcting defects and inconsistencies in the original design of the language. I still tend to write for both v2 and v3 in my scripts - it's not hard - but you can pretty much ignore v2 now and be in good shape unless you have a dependency on some very niche library.

      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
    68. Re:No by Anonymous Coward · · Score: 0

      "There are no stupid questions, but there are a LOT of inquisitive idiots"
      https://despair.com/products/cluelessness

    69. Re:No by goose-incarnated · · Score: 1

      Nope, C++ is not a superset of C at all. There's lots of subtle little things that are different in very important ways.

      Some examples:

      1) void* is not considered implicitly castable to any other pointer type. That means that you need to cast the output of malloc for example.

      2) character literals have the type char, rather than int. That means their size is different, and hence programs behave differently.

      3) C++ does not require to use the keyword 'struct' in front of structure names. This can subtly change the behaviour of programs like int A; void foo(void) { struct A { char x; }; return sizeof(A); }, which will return the size of the variable A in C; and the size of the structure A in C++.

      Also, C took the const keyword from C++, and then broke it.

      --
      I'm a minority race. Save your vitriol for white people.
    70. 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.
    71. Re:No by Anonymous Coward · · Score: 0

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

      Except it is still in beta for Python 3 after all these years, because "muh python 2".

      Python died with Python 3. Not because it's worse (quite the contrary), but because it broke backwards compatibility. You can still get code written for Java 1 and it compiles in Java 8, 21 years later. The same applies to C and C++. Any system remotely serious will adopt these languages instead of something like Python which doesn't guarantee cross-compatibility. This is specially true with most third party modules you can install via PIP, which are often incompatible with newer Python versions and OSes.

    72. Re:No by DrXym · · Score: 1
      Swift is now the defacto development language for iOS so yes the changes impact a lot of code, first from 2.2 to 3 and from 3 to 4. The difference is Apple & the open source stewards basically said "here's a migration tool, use it or stay put". They aren't vacillating and dithering about their choice.

      But like I said, every language and platform goes through this. The language evolves, gets standards, changes, deprecates stuff, introduces new APIs, removes old ones. Python made a bad choice to string out 2.x so long because it entrenched itself even deeper.

    73. 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.
    74. Re:No by Wycliffe · · Score: 1

      Which programming language made changes that broke the last ten years worth of software that was written in it, and survived? Perl?

      Perl is backwards compatible as well. There is a Perl 6 but it's pretty much dead in the water because it breaks backwards compatibility with the thousands of modules on CPAN. It's very hard for a programming language to get a high adoption rate. In order to become a popular language it has to bring something new to the table that existing languages don't have. This is doubly hard for an existing language that breaks backwards compatibility because it is also competing with it's older versions which already have an ecosystem. That's why backwards compatibility is so important. It allows you to get the existing userbase for free.

    75. Re:No by Anonymous Coward · · Score: 0

      All a project has to do is have a policy that requires using type annotations. Problem solved.

    76. Re:No by mysticgoat · · Score: 4, Funny

      I worked with a couple of different varieties of Business Basic between 1986 and 1993. Hewlett-Packard's version was particularly easy to work with.

      Basic's two primary advantages in the business office were that

      1. it was the first and best developed interpreted language. If your business was successful enough to have a couple of dedicated IT employees, it could afford a minicomputer and could make good use of compiled languages. But compiled languages suck on the PCs that were affordable to small businesses of that time period. The RAM was too tiny and limiting, hard drives were too small and slow for an efficient compiler environment. Some form of Basic was your only way forward.

      2. With a good business Basic you could get the point of sales pizzabox PCs generating data for the back office accounting PC while your competitor down the street was still working on how to build a string variable in Pascal. You didn't worry about the other competitors who were trying to use C. Their development cycles were constantly broken as bigger businesses hired away their C programming staff.

      Those were the wild and wooly days of cheapernet, LANtastic, and sneakernet, when we were all still buying huge 40 megabyte hard drives that had to be partitioned since DOS was limited to 32 MB. Back when "Windows was a 16-bit GUI running on an 8-bit operating system, written for a 4-bit processor, by a 2 bit company that can't stand 1 bit of competition".

      Umm, some things haven't changed that much I guess. I just came across this definition of Windows 10:

      Windows 10 (n): A 64-bit "upgrade" to a 32-bit patch for a 16-bit GUI shell running on an 8-bit operating system, written for a 4-bit processor by a 2 bit company that can't stand 1 bit of competition!

      I of course use Linux. It's true that during the first decade of switching from Windows to Ubuntu I had a few miserable moments, but now it's all smooth sailing.

    77. Re: No by Jamu · · Score: 1

      I think it depends on the language. You'd want it in C. But what about high-level languages? All control commands can be replicated with gotos, but look at the reverse, shouldn't all high-level languages have a specific control statement instead?

      --
      Who ordered that?
    78. Re: No by K.+S.+Kyosuke · · Score: 1

      In the Dartmouth/ANSI/Microsoft BASIC era. Quck Basic didn't run on any machine available to me in the 1980s behind the Iron Curtain.

      --
      Ezekiel 23:20
    79. Re:No by Anonymous Coward · · Score: 0

      What Python doesn't have is strong type enforcement.

      Check out Cython then (not to be confused with CPython), which is a "superset" of Python and includes this to make the code substantially faster potentially.

    80. 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.

    81. Re:No by Anonymous Coward · · Score: 0

      Python code, like VB, is hard to follow and that's the main reason I avoid it.
      I don't agree at all with the superb readability/understandability/clarity comment.

    82. Re:No by mbkennel · · Score: 4, Informative

      > 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.

      That's my experience as well. I work in what is now called "data science" (though I've been doing the same stuff for decades, back when it might have been called 'computational physics' or 'statistics' or whatever).

      I find that even for initial development past a a hundred or two lines, I now prefer Java. Why? A simple, but universal and ubiquitous answer: just looking up the damn order and meaning of the arguments of a method.

      For instance, in python data manipulation, which uses almost universally the Pandas library, built on numpy library, you could need to pass a DataFrame, a Series, or the underlying numpy array, or even lower level a built-in Python list as arguments (and they can be converted back and forth). I now have to look at my code at the called method to see which it was supposed to take and in what position.

      With a typical Java IDE, I'd get feedback on the spot (red line) if I used the wrong one and a space would likely bring up the appropriate conversion method or a type-matching object reference.

      Python does have many great libraries (though java isn't too bad at all) but I do not at all find it easier or faster to develop once a project is worth setting up a Java devel pipeline. Don't forget the cost to write all those tests which are much more necessary in Python than Java (and yes I have many more run-time errors with Python than Java).

      Kotlin is a face-lifted & flab-tucked Java, compatible with all JVM libraries, and Scala is an interesting and sophisticated language with the same.

      Personally, Fortran, and I mean modern Fortran 95+ is heavily underrated in usefulness. It still has by far the best array and matrix handling, many excellent intrinsic parallel constructions, an very good and ergonomic syntax (it went from the worst to the best with F90) for its purpose, and of course speed speed speed.

      If it had been invented by some well funded Silicon Valley startup with a hipster web designer and partnered with nVidia as their native development platform for CUDA GPUs, it would be the considered the new hotness.

      And it solved the Python indentation vs C/Java brace wars correctly: newlines are significant, tabs and space indentation is not.

      if (cond) then
            statement
      else if (cond2) then
            statement
      else
            statement
      endif

      And there has been academic empirical research on syntax style and errors----that one won. (I think it is also what Ada did).

    83. Re:No by Anonymous Coward · · Score: 0

      Um, the purpose of making a major version increase was to demonstrate that it was not going to be backwards compatible.

    84. Re: No by butzwonker · · Score: 1

      They should have call/cc if they can afford it. But that's not easy to implement and has perfomance implications.

    85. Re:No by butzwonker · · Score: 1

      JIT-compiling these days [...] potentially run faster than static-compiled programs

      Argh, not this phrase again... potentially but never really.

    86. Re:No by Anonymous Coward · · Score: 0

      There are no stupid questions, only stupid people.

      There are no stupid questions, only inquisitive idiots :-)

    87. Re:No by beelsebob · · Score: 1

      Sure - in C++ there are better options. In C though, you don't have new available. It's completely normal for a C program to contain uses of malloc.

    88. Re:No by Anonymous Coward · · Score: 0

      Java don't do shit fast bro

    89. Re:No by angel'o'sphere · · Score: 1

      The correct rebut is: there are no stupid questions, only stupid answers.
      I believe you just gave one.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    90. Re:No by phantomfive · · Score: 1

      Furthermore, it doesn't even need to be a superset. As long as you can make calls between functions written in each language, that's good enough. Separating your code into .c and .cc files isn't a problem.

      --
      "First they came for the slanderers and i said nothing."
    91. Re:No by bondsbw · · Score: 1

      You don't have to loosen your definition of "janky" too much for basically all of C++ to fit.

      --
      All my liberal friends think I'm a conservative, all my conservative friends think I'm a liberal.
    92. Re:No by TimSSG · · Score: 1
      You made a great argument to support the use of COBOL. Tim S.

      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.

    93. Re:No by sl3xd · · Score: 1

      There is a Perl 6 but it's pretty much dead in the water because it breaks backwards compatibility with the thousands of modules on CPAN

      Many would say that Perl 5 is pretty much dead in the water as well.

      Perl 5 & 6 always appeared to me as the case study which lead Python to co-develop both 2.7 and 3.x simultaneously.

      --
      -- Sometimes you have to turn the lights off in order to see.
    94. Re: No by Anonymous Coward · · Score: 0

      Exactly. DEF FN was basically a dumb macro feature. You could do

      10 DEF FNA(X)=X^2-3*COS(X)

      but nothing more complex.

    95. Re: No by Anonymous Coward · · Score: 0

      That's some bull hockey right there. Readability and understandability are the primary concerns of professionals. If your code isn't immediately understandable by the guy you hand it off to, it's garbage. And probably full of bugs.

      Unless you mean that the readability of a few built-in functions doesn't matter after you know the language, in which case we agree.

      But if you mean it's not important whether the language enables you to write understandable code, then we fiercely disagree, and my company will run circles around yours.

    96. Re:No by StikyPad · · Score: 2

      You can shoot yourself in the foot with any Turing-complete programming language, and most of the items noted in "The R Inferno," are in no way unique to R, such as floating-point operations, the pros and cons of various memory allocation strategies, and inherent problems in dynamically typed languages. These are CS101 issues, and the target audience of the book seems to be mathematicians with little or no exposure to programming.

    97. Re:No by Anonymous Coward · · Score: 0

      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.

      Which only goes to show your immense ignorance of what perl is capable of. Not saying it is my favorite, but it is far more than "just a scripting tool".

    98. Re: No by StikyPad · · Score: 1

      Python is quite powerful - it can do almost anything. Basic was quite limited.

      That claim doesn't even make sense. It might be more difficult to perform certain operations in BASIC (or Python, for that matter), but neither is "more powerful" than the other.

    99. Re:No by SCVonSteroids · · Score: 1

      Python has completely stepped on it's own dick

      Yes but, with a dick that big, it would be hard not to step on it at some point.

      --
      I tend to rant.
    100. Re:No by Chewbacon · · Score: 1

      Swift is working on that, too. All the cool languages do it.

      --
      Chewbacon
      The Bible is like Wikipedia: written by a bunch of people and verifiable by questionable sources.
    101. Re:No by doom · · Score: 1

      I went with R, myself. While it's not entirely buzzword- compliant: it's oriented toward keeping the data-set in memory and so is not "Big Data" in vanila configuration, but there are people working on ways around that, and anyway memory gets bigger all the time.

    102. Re:No by doom · · Score: 1

      Perl6 may yet triumph. Yeah, there's fewer cpan libraries, but there's a lot less need for them: a lot of common needs have been moved into the core language.

      (And before you "do one thing and do it well" types get started, you need to focus on the fact that no one really does that, including unix, and sometimes the monolithic strategy wins.)

    103. Re:No by randallman · · Score: 1

      Are you asserting that it's OK if it compiles? I'd rather have a program halt in production than have it silently fail, corrupting data or some other type of silent failure. And if you want to have the program keep running and log errors, that's simple exception handling/logging.

    104. Re:No by doom · · Score: 1

      Can't imagine what you're talking about. By any reasonable standard, perl5 is doing okay, and in any case progress hardly stopped because of the perl6 project (rather there was an infusion of new blood in the core dev team). Perl6 was effectively developed in parallel with perl5 development.

      And if perl5 doesn't seem like the only game in town any more, that has a lot more to do with a backlash from the CS snobs than the perl6 project.

    105. Re:No by Anonymous Coward · · Score: 0

      Lack of arrays and strong typing is also preventing Python from gaining traction on real computing outside of script kiddies playground. Of course the big giant lock is also restricting the scaling of python software.

    106. Re:No by PCM2 · · Score: 1

      2) character literals have the type char, rather than int. That means their size is different, and hence programs behave differently.

      Admittedly I haven't looked at the standard in a long time, but last I heard, all of this is platform dependent. As in, if you're programming C on multiple platforms and making the assumption that a char is the same size as an int, you could be in for a rude awakening at some point.

      --
      Breakfast served all day!
    107. Re: No by Anonymous Coward · · Score: 0

      Interesting because I consider that a great feature.
      It made no difference to my coding style - I could simply drop unneeded stuff.
      IMHO if your coding style does not involve consistent indentation you're doing it wrong and I don't want to have to read your code.

      By using whitespace as indentation Python enforces what everybody should be doing anyway. And by removing superfluous clutter the code is more readable.

    108. Re: No by Anonymous Coward · · Score: 0

      Not really. When was the last time you tried to compile C++ and discovered a keyword had been discontinued? Doesn't happen. Not all languages adopted the Swift "let's apply agile techniques to the language development itself and see what happens." Frankly, it was an amateurish clusterfuck, where you had to unbreak your entire codebase every time a new minor Swift version came out.

    109. Re:No by StikyPad · · Score: 1

      C maps remarkably well to ASM, and with compiler hints and optimizations that don't exist in ASM, well-written C typically runs as fast -- and often faster than -- hand-written ASM. If there were any significant performance advantages to ASM, it would be used far more often in performance-critical applications, but there aren't, and it's not.

    110. Re:No by swillden · · Score: 1

      I just corrected your assertion. Python *is* strongly typed.

      RabidReindeer's assertion, not mine.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    111. Re:No by SoftwareArtist · · Score: 4, Interesting

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

      Not really. CPython, which is what most people use, is just interpreted. Sure Pypy has a JIT, but it's not that useful because so many libraries don't work with it. And even Pypy is still pretty slow compared to Java. That's not because the authors are bad at writing compilers. It's because Python as a language is really badly suited to JIT compilation.

      I'm a big fan of Python and I use it a lot, but I don't think it is or should be "the dominant language". It's good for certain things (single use scripts, chaining together libraries written in other langauges), but bad for others (anything that has to be fast, big code bases with lots of interacting parts). And long term, I think more modern languages like Swift and Kotlin "should" win out. They combine the benefits of Python (fast to write code) with the benefits of Java or C++ (faster execution, static typing).

      --
      "I'm too busy to research this and form an educated opinion, but I do have time to tell everyone my uninformed opinion."
    112. Re:No by swillden · · Score: 1

      Are you asserting that it's OK if it compiles?

      Obviously not. Did you read my post?

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    113. Re:No by swillden · · Score: 1

      Others who agree with you wrote mypy which is basically a lint-style checker for type.

      Cool. I'll have to check that out.

      However, I think my biases incline me in the opposite direction. Rather than dynamic typing with static type-linting, I prefer strong static typing with ubiquitous type inference. The code ends up looking much the same, I think, but I think the latter is always likely to be more thorough. Plus, it eliminates the need for most run-time typechecking. That's a minor to trivial issue in practice, but I hate systematically wasting cycles.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    114. Re: No by Anonymous Coward · · Score: 0

      Reading this made me a little more retarded.

    115. Re: No by Anonymous Coward · · Score: 0

      You haven't worked with large datasets then. I mean large sets. Where shaving a second or less per operation adds up to hours or days.

    116. Re:No by Anonymous Coward · · Score: 0

      Can you please people get over this v2 vs v3? v2 is dead. Forget it. Some companies do not realise that yet, but entire community has moved to v3 two years ago.

      I have personally been using v3 for the last 3 years and haven't had any problems with that (except Google libs). Just think about it - TensorFlow was released as v2 only but was made v3 compatible in just two weeks by the community!

    117. Re:No by Wycliffe · · Score: 1

      Perl 5 & 6 always appeared to me as the case study which lead Python to co-develop both 2.7 and 3.x simultaneously.

      The case study as in they are doing the exact same thing as Perl? Perl is also co-developing 5 and 6 at the same time just like Python but, just like Python, they are having a hard time getting people to adopt the new version because the old version still works just fine.

    118. Re:No by h4ck7h3p14n37 · · Score: 1

      I have an x86 PC, but it is fairly specialized to doing tasks built around x86 legacy stuff.

      Aren't modern day Intel x86's really RISC processors emulating the x86 instruction set?

    119. Re:No by Just+Some+Guy · · Score: 1

      As a Python programmer, I use types and check them before it runs.

      --
      Dewey, what part of this looks like authorities should be involved?
    120. Re:No by swillden · · Score: 1

      Though I don't work in your field so I hesitate to offer an opinion, I think there would be really significant value in C++. If you haven't, you should take a look at the classic Barton & Nackman book on Scientific and Engineering C++. They use a bit of template magic to construct a system of types that essentially teaches the compiler to perform unit analysis. Multiply a mass times a distance and try to assign it to a force variable? Compiler will balk. Try to multiply matrices of incompatible dimensions, compiler will flag it. I don't know if it would solve actual problems, but its pretty cool.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    121. Re:No by Anonymous Coward · · Score: 0

      Indeed, Windows exists because MS failed to get us all to use OS/2.

      We're all using x86 because Intel failed to get us all to use iAPX 432, i860, and IA-64 (Itanium). That's right -- Intel tried and failed 3 different times to move us to new, incompatible technologies!

      Ultimately, Guido has about as much say as Intel. If enough people were to demand it, somebody would take up the mantle of maintaining Python 2 the same way AMD took up the mantle of creating a 64-bit version of x86 because Intel decided to create Itanium instead.

      dom

    122. Re:No by Maury+Markowitz · · Score: 1

      > For data science, R is the future

      OMG. I trained in physics and recently had to do a little physics again. I found the code I needed in R. It was completely indecipherable. R is basically the PERL of math languages - write-only gobblygook with lots of one-off syntax that does special things so that the original authors could save a couple of keystrokes.

    123. Re:No by Maury+Markowitz · · Score: 1

      > would have broken tens of millions of lines of code

      PRODUCTION code no less.

    124. Re:No by Anonymous Coward · · Score: 0

      Easily done with cython. This will transform your python into C, you can then compile it and see the usual errors about missing variables or bad types.

      Also good for productising python code, you can distribute binaries then.

    125. Re:No by goose-incarnated · · Score: 1

      As a Python programmer, I use types and check them before it runs.

      So, you perform a totally optional and currently experimental static analysis that may or may not cover most (or even some) of the code, and which doesn't affect the production of the program at all? You seriously think that that sort of thing is what we mean by "type-safety"?

      --
      I'm a minority race. Save your vitriol for white people.
    126. Re:No by Maury+Markowitz · · Score: 1

      > it is as slow as molasses in execution speed, and has terrible multithreading capability. So what

      Well;

      "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"

      You've just pointed out two perfectly good reasons to use a compiler. The original post is a false dichotomy.

      And considering the vast majority of compiles go through CLI tools, notably the entire Linux stack where you actually compile just about everything at least once, that last bit of the OP is just bigotry.

    127. Re:No by trg83 · · Score: 1

      The idea of adding such a significant feature in a non-major release is one of the reasons I shy away from Python. Their version management seems very out of sync with much of the rest of the software world.

    128. Re:No by andreasgonewild · · Score: 1

      The unfortunate thing about mypy is that the whole idea breaks down in combination with Pythons imports since you now have to import every mentioned type to get the benefits, leading to circular imports in no time at all. As much as I hate writing header files, at least it beats trying to fix circular imports in Python. Java gets that part right from my perspective, as does Haskell; they don't give a damn who imports what when, leaving one problem less to solve.

    129. Re:No by Anonymous Coward · · Score: 0

      ...for large, complex systems I want ... strong typing.

      In theory, yes. In practice, I only run into this a couple of times over the span of 3 years, when I passed a value instead of list of size 1. As you can imagine, both were caught at runtime. I would not call this a must-have. No type safety is also required for duck typing.

    130. Re:No by MightyYar · · Score: 1

      Ugh, that sounds awful. I think I'll just keep checking types in my code :)

      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
    131. Re:No by Anonymous Coward · · Score: 0

      This is an _amazing_ way of defining strongly typing.

      Wonder if I can convince my boss that our online payment website is, dunno, strongly input validated, cause it crashes the server if someone enters a negative number into the money field.

      What a fucking joke.

    132. Re: No by Darinbob · · Score: 2

      I was a proctor for an intro to programming class for a couple of years, teaching Pascal. All the students who showed up already knowing BASIC and proclaiming that they already knew how to program tended to have the most difficulty in the class. Some would whine that it was a waste of time to declare variables.

      Declaring variables and their types is very important. The reason there are unit tests and code reviews are to find bugs early, because the earlier you find them the cheaper they are to fix (and horrendously expensive if the customer finds them). So having type checking often means finding bugs very early. It means you don't wait until late in the process before you run a static analysis tool before the errors show up.

    133. Re:No by Darinbob · · Score: 1

      There is always code coverage and being sure you have 100% code coverage before shipping. But how likely is that? And if you do catch the bug there at the tail end of development, how expensive is it to fix?

    134. Re:No by Darinbob · · Score: 1

      I would agree there. I like Python, but it's a pain to make something portable with it. v3 has nice features, but can't use them because v3 is not as commonly installed on all the computers where this is going to run. Most language designers and standards committees do manage to make things backwards compatible when there are newer version.

    135. Re:No by Darinbob · · Score: 1

      That would have killed off all but the most die hard Python fans. 18 months is an amazingly short period of time for this. I mean that's only 3 password changes away! How to you get the entire world, everyone who uses Python, including those who don't even know who Guido is and aren't a part of the Python socia/compliance network, all switch over in 18 months? Including updating all tools everywhere that use Python or work with Python? It would be easier to fork the bitcoin block chain than this.

    136. Re:No by Darinbob · · Score: 1

      Swift has a very tiny installed base, with few critical systems based upon it. Python has been growing steadily for two and a half decades! You don't just make a few phone calls and get the world to switch over like you can with Swift.

    137. Re:No by Darinbob · · Score: 2

      Modern C compilers that are fully compliant to the latest standard will compile code that works with C89 (before Python was invented). With a flag or two they will likely compile K&R C as well.

    138. Re: No by Anonymous Coward · · Score: 0

      If you had really used it, your big beef would be the single character function names.

    139. Re:No by beelsebob · · Score: 1

      I mean, that is the definition of strong typing.

      Javascript is weakly, dynamically typed, since it allows the wrong type to be passed all over the place, and does runtime conversion with some unpredictable results
      Python is strongly, dynamically typed since it does not allow the wrong type to be passed around, but does that disallow step at runtime.
      Objective-C is weakly, statically typed since the compiler is the only thing that does type verification, but messages can be sent to pretty much any object of any type you like.
      Swift is strongly, statically typed since it does not allow the wrong type to be passed around, and does that disallow step at compile time.

    140. Re:No by Anonymous Coward · · Score: 0

      The whole whitespace thing is "superbly readable" then? When/how did that happen?

    141. Re:No by Just+Some+Guy · · Score: 1

      Given that I'd used Python for a couple of decades without experiencing significant type errors, I find that using optional, well supported and semi-official static analysis still has something nice to offer. But frankly, I feel like you're moving the goalposts. Python's had strong typing basically forever. It now has official support for typechecking. No, it's not identical to static compilation but it's a far cry from totally lacking type safety.

      --
      Dewey, what part of this looks like authorities should be involved?
    142. Re: No by Anonymous Coward · · Score: 0

      IMHO if your coding style does not involve consistent indentation you're doing it wrong and I don't want to have to read your code.

      My coding style does involve consistent indentation. But it's a style I choose, it's not dictated by the language. And I like it like that!

    143. Re: No by Maury+Markowitz · · Score: 1

      Atari BASIC had the ability to GOTO/GOSUB on a variable name, so you could GOSUB CLEARTHESCREEN, which helped somewhat. It also let you make arbitrary ON statements like GOTO 1000+(10*COUNTER). The downside was the locations were not cached, so branching performance was very poor.

    144. Re:No by serviscope_minor · · Score: 1

      You don't have to loosen your definition of "janky" too much for basically all of C++ to fit.

      Eh, if you say so. Sure C++ has warts, but personally I find modern C++ very pleasant to use. It's concise, easy to read, statically typed and parsimonious with resources. Pretty good combo.

      --
      SJW n. One who posts facts.
    145. Re:No by RabidReindeer · · Score: 0

      All true, but the question was written in a future tense: "Will Python...???". What holds true today need not hold true tomorrow. It didn't for Java, after all.

    146. Re:No by RabidReindeer · · Score: 0

      JIT-compiling these days [...] potentially run faster than static-compiled programs

      Argh, not this phrase again... potentially but never really.

      Existing Benchmarks beg to differ. There are hard numbers if you care to look them up.

      YMMV, of course. A one-shot run of code may or may not run faster. One of the advantages of dynamic systems, however, is that for large-scale computations, it becomes economical to statistically analyse the code and alter it based on workload. Even in ancient times you could often gain a significant speed boost by flipping a test so that the most common instruction path did not branch or switching what working data was kept in registers. On modern processors, you can play all sorts of games by reducing bubbles in the instruction pipeline, optimizing register and cache usage, and so forth.

      Using a dynamic recompilation process you can optimize on the fly to a degree that would be cost-prohibitive, if not impossible to achieve via hand optimization, and unlike static compiler systems, you can do it without stopping the process and restarting it. It's the real-world equivalent of being able to change tires on a Formula 1 race car without it ever having to slow down for a pit stop.

    147. Re:No by RabidReindeer · · Score: 1

      Please don't ascribe the virtues of an IDE to a language. There is a Python plugin for the Eclipse IDE (actually more than one, I think), though offhand, I cannot recall what, if any popup help you get.

      Java does have the advantage that the language is designed to be auto-documented, and that information is easy to feed to an IDE. Python tends that way, but since it doesn't keep as tight a rein on things, I don't know how much IDE support is presently available.

    148. Re:No by RabidReindeer · · Score: 1

      You could start a major flame war on the subject of C++ templating. It's a powerful tool, but it's very easy to cut yourself.

      Actually, if you want really strong compile (and run) time checking, the winner is Ada. It not only rigorously enforces type conformance, it also asserts domain and range validation on everything. If I define a type in ADA named POSITIVE_INTEGER and give it a domain of 1..INFINITY, assigning a negative number or zero stops the whole game on the spot.

    149. Re: No by K.+S.+Kyosuke · · Score: 1

      I'd say that binding variables to establish proper scopes is very important, but that just the Schemer inside me. Experience shows that in a decent language like Scheme, the class of bugs occasioned by the extant primitive type checkers in Pascal and similar languages (as opposed to, say, something similar to Idris et al.) and the class of bugs that are not caught by basic logical and coverage tests that you ought to have anyway have a very small, if any, intersection. (A cynic might say that Pascal prevents bugs by virtue of not allowing many desirable programs, so whenever you're forced to do the program in something else instead, it's a "I didn't cause a bug" point scored for Pascal. :))

      --
      Ezekiel 23:20
    150. Re:No by Anonymous Coward · · Score: 0

      Yep, and the whole cycle repeats as the old experts get replaced by the new experts, who then start complaining about whatever replaces Python. New and unprofessional becomes annoying and buzzwordy becomes "the right way to do it" becomes old hat.

    151. Re:No by Anonymous Coward · · Score: 0

      Dream on, there are no such "existing benchmarks". C, Ada, Fortran, C++ are way faster, and just about every other language including D, Nim, Rust, and CommonLisp (SBCL) beats Python consistently in benchmarks, sometimes even by two orders of magnitude! Not only that, any language that uses GCC as backend can compile a binary that when run creates performance logs, which you can then feed into the compiler again to create a highly optimized binary. There you have your dynamic optimization...one that actually works, as opposed to being hypothetical. I've heard this dynamic recompilation story so many times, and it was never true, not for Java and certainly not for Python. Dynamic recompilation is not exclusive to JIT compilation and in fact there is no JITed language that beats compiled languages with strong static typing in non-artificial benchmarks.

    152. Re: No by Anonymous Coward · · Score: 0

      > There is nothing wrong with GOTO,

      You are correct, there is nothing wrong with goto. It is obvious what it it does when it is found in the code.

      The problem is not the goto but the fact that it must have a label. When a label is found in a piece of the code then it is no longer obvious what the flow of control in the program is. The whole of the scope must be examined to see where the control may be coming from to get to that label.

      We can assess complexity of a program by assessing the number of potential ways to reach a particular block of code and accumulating this for the whole program. Labels add to the potential ways code lines may be reached and thus increase the complexity.

      If we eliminate all labels then the code can be far more readily understood because there will be no surprise arrivals of control from outside the current local area of concern.

      Eliminate the labels and there is no use for goto or similar.

    153. Re: No by K.+S.+Kyosuke · · Score: 1

      Are you sure it wasn't two characters on the C64? Not that it's that much help, but you still only have 64 KB of memory for both code and data, so there's that.

      --
      Ezekiel 23:20
    154. Re:No by david_thornley · · Score: 1

      Don't forget the additional reserved words. "class" sounds like a good C variable name in a University class registration system.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    155. Re:No by swillden · · Score: 1

      True. I tend to discount Ada because I've never actually seen it outside of an academic environment, but it definitely provides very powerful typechecking.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    156. Re: No by Anonymous Coward · · Score: 0

      Correction: with an untyped (oh sorry, *dynamically typed* ) language you have to write tests for trivial things that a typed (oh, so as to not hurt your feelings, *statically typed*) language catches for you automatically and with no extra developer effort when you hit compile.

      Experience show this leads to less bugs than an untyped language, except of course if you make sure to burn dev time writing all those pointless tests to catch what an untyped language passes through if you don't catch it with those hand written tests. What a waste of developer effort.

    157. Re:No by Anonymous Coward · · Score: 0

      All questions are stupid. If not then they'd know their own answers. Well, even those are stupid questions: "What color are blue skies?" See, even when the question is intelligent enough to know its answer it is stupid, perhaps even more so than not knowing its answer: "What color are skies?"

    158. Re:No by Anonymous Coward · · Score: 0

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

      This is no longer true. Python is now "gradually typed", which has the chief benefits of the manifest, static typing found in C, Java, etc.

    159. Re:No by petermgreen · · Score: 1

      True you can change the typing of a variable at every assignment

      And more importantly you can pass any type to a parameter, store any type in a data structure and so-on.

      True when you come to actually do some maths you will probably notice that what was supposed to be a number is not in fact a number. When you come to call a method you will probably notice that your value was not in fact an object of the correct type. You then have to spend ages working backwards to figure out how the value of the wrong type got stored in the data structure in the first place.

      (still python is much better than certain other languages where passing a string where a number was expected or a number where a string was expected is likely to blunder on producing broken results)

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    160. Re: No by Anonymous Coward · · Score: 0

      I've worked in many languages, including Python. It has its uses, particularly if you're in a University lab and need to read some data off some sensor and display it.

      If you're tying the future of a million-plus dollar business to Python, you're doing it wrong.

    161. Re: No by Anonymous Coward · · Score: 0

      I'm guessing you have never done Java. The libraries and frameworks are a massive reason to use the language. Python is a toy compared to Java. And yes, we have interfaces to all the serious libraries you have. The serious numeric code is all C, C++, or Fortran anyway with a wrapper for your language to call it. Modern high level languages generally blow at high performance numerical computation.

    162. Re: No by Anonymous Coward · · Score: 0

      Ooh hoo, you got him! Python existed in half-baked form for a full several months in the final year of the 80s! Mr. Technically Correct wins again!

    163. Re:No by brantondaveperson · · Score: 1

      thus, like Java, can potentially run faster than static-compiled programs.

      And yet, it never actually does.

    164. Re:No by brantondaveperson · · Score: 1

      it becomes economical to statistically analyse the code and alter it based on workload

      While that *might* be true in very specific use-cases, I'd wager that the overhead of monitoring the workload in order to properly inform some optimisation algorithm, would defeat any minor gains that the optimisation might have delivered.

      The trouble with all these arguments around bench-marks, and theoretical performance gains of dynamically compiled languages, is that the advantages simply never show up in real life. Game engines are written in C++, almost exclusively, and those guys are on the cutting edge when it comes to performance. Why are they not using Java?

    165. Re:No by brantondaveperson · · Score: 1

      It matters very little today.

      Actually, the opposite is true. Today, nearly a majority of computing tasks are carried out on battery powered devices. Performance gains of even a few percent directly translate to battery life, and since computers aren't really getting any faster anymore, we need people to look harder at performance. The choice of using java (ok, Dalvik, or whatever google decided to call their stolen version of java) on a mobile device is exactly why we need quad-core monster devices with massive batteries. If they'd done the work to design an API in a fast language, like C++ or something, the global energy savings would not be insignificant. They would have been a couple of years, at least, later to market - and that might have killed the entire project - but the fact remains.

      Car analogy: Energy is expensive. Build efficient vehicles.

    166. Re: No by brantondaveperson · · Score: 1

      Well, they add new keywords from time to time, which can break existing code. But it's pretty rare, and nothing a search-and-replace can't fix.

    167. Re:No by djinn6 · · Score: 1

      All true, but irrelevant, since C++ is "close enough" to compatible with C that in most cases you can simply rename a .c file to .cpp and it will compile and run correctly (possibly with a few minor tweaks).

      Since this thread talks about Python 2 and 3, I'd say the similarities are enough that just running the 2to3 tool would get you working Python 3 code. The real difference from C/C++ is the Python interpreter's inability to run both Python 2 and 3 code at the same time, where as your C++ library can be linked with a C library and produce a complete binary.

    168. Re:No by Pseudonym · · Score: 1

      C maps remarkably well to ASM [...]

      It maps well to 1975-era ISAs. Modern ISAs... not so much.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    169. Re:No by Pseudonym · · Score: 1

      Haha, comment is a user story.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    170. Re:No by Pseudonym · · Score: 1

      I don't know if there ever was a time in history when one programming language was dominant. If there was, those days are long gone.

      Current practice is that almost all nontrivial software projects are multi-language. This trend will grow for the forseeable future.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    171. Re:No by Pseudonym · · Score: 1

      Python has completely stepped on it's own dick by making v3 scripts incompatible with v2.

      I remember when they said that of the libc5 vs libc6 changeover. Then it was C++9x vs C++1x (which thanks to certain LTS Linux distributions still isn't entirely behind us).

      Python had to make a clean break because it was impossible to JIT-compile Python v2 into efficient code due to its broken variable semantics. The problem was that Python v2 was a victim of its own undeserved success, so the migration to v3 was painful and expensive.

      Haskell has the right attitude: "Avoid success at all costs."

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    172. Re:No by Pseudonym · · Score: 1

      In order to make the comparison fair, you should limit your examples to other popular programming languages that made a successful breaking change, since invalidating large, established codebases of user code is precisely what makes such a change so expensive.

      C++11

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    173. Re:No by Pseudonym · · Score: 1

      Not that sure --- R is such a clusterfuck that someone managed to write a succesful 150-page book about the different ways in which you can shoot yourself in the foot with it.

      R is a terrible language with great libraries. I would heartily recommend R for any statistics job. Just don't try to write any programs in it.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    174. Re:No by Pseudonym · · Score: 1

      Making white space significant is python's biggest flaw.

      I see this claim a lot, but I don't buy it at all. There are lots of languages with significant whitespace (e.g. Haskell, makefiles) that nobody complains about (for that reason).

      Anyone who claims that significant whitespace is Python's biggest flaw has obviously never tried to use Python on a big project. Lexical syntax is easily the least flawed thing about Python.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    175. Re: No by Darinbob · · Score: 1

      I used SML for awhile, which is a strongly typed language with dynamic typing. Ie, you do not need to declare types but you will still get warnings and errors at runtime that your types are wrong. This was very baffling to me at first until I started to catch on to what was happening.

    176. Re:No by Anonymous Coward · · Score: 0

      The choice of using java (ok, Dalvik, or whatever google decided to call their stolen version of java) on a mobile device

      I still don't get this.

      Java was open-sourced by Sun. How the hell do you 'steal' something that was given to you for free??

    177. Re: No by Anonymous Coward · · Score: 0

      You can still get code written for Java 1 and it compiles in Java 8, 21 years later. The same applies to C and C++

      You haven't done much in any of those languages have you?

      A lot of old code still compiles but ends up with subtle (or not so subtle) bugs. In Pre-99 C and pre-11 C++ simple things like integer sizes will bite you if you compile against a modern standard on a different size architecture to what the code was originally tested on.

      Most python 2 code is upward compatible. The list of known differences is quite small and making Python 2 code run against 2 and 3 isn't all that onerous. See here: http://python-future.org/compatible_idioms.html Most of the work to update your code can even be automated.

    178. Re: No by Anonymous Coward · · Score: 0

      When was the last time you tried to compile C++ and discovered a keyword had been discontinued?

      Just today when I compiled some code with throwspecs, which are deprecated as of c++11 an slated for removal in c++17

      Weekly if I pull in stale code from our historical branches trying to bisect certain failures.

    179. Re: No by DrXym · · Score: 1
      Just search any C or C++ specification and "breaking changes" and you will find breaking changes. C and C++ might be at the conservative end of the scale but even they manage to break stuff and occasionally deprecate things. In addition, while it might be nice that C/C++ doesn't change as much as Swift, it also means the language accumulates a lot of crap, some of which is horribly unsafe.

      So conservatism in one way actually makes the language more dangerous and crufty in another.

    180. Re: No by K.+S.+Kyosuke · · Score: 1

      Correction: you don't need to write tests for trivial things; more complicated functional, coverage and performance tests will already exercise the trivial cases. So you only write pointy tests, not pointless ones.

      --
      Ezekiel 23:20
    181. Re: No by K.+S.+Kyosuke · · Score: 1

      There's delimited continuations.

      --
      Ezekiel 23:20
    182. Re:No by Anonymous Coward · · Score: 0

      You mean it is great for most of the less relevant tasks? So how that means dominance?

      Also readability is a subjective point of view. I find Python HORRIBLE to read exactly because of the implicit type systems (when you are not on the original development team takes extra time to figure what types are supposed to eventually be used on that code) . Just to be clear.. I do not like Java either.

    183. Re:No by RabidReindeer · · Score: 1

      thus, like Java, can potentially run faster than static-compiled programs.

      And yet, it never actually does.

      Because you "know" it can't.

      Some of us have seen actual numbers and benchmark code.

      I optimize for a living and one of the first things you learn when you go to boost performance is to get hard measurements and to never, ever optimize prematurely.

      Because the bottleneck is almost never where you "know" it's supposed to be.

    184. Re: No by Anonymous Coward · · Score: 0

      Was that time used to find all the correct drivers and get all the work-around running so you were able to adequately able achieve the same functionality of Windows? :)

    185. Re:No by RabidReindeer · · Score: 1

      You have the right intuition, but intuition is dangerous. It's true. For really, really short one-shot code segments, the overhead of launching a Java VM is ferociously expensive, much less running monitor functions. Might as well crack walnuts with a hydraulic press.

      However, as you scale up, the overhead remains more or less fixed and becomes less and less of a percentage of the overall workload. If your optimization mechanisms are any good, you eventually reach a tipover point where the overhead more than pays for itself. The benefits mostly show up in long-running and frequently-executed processes which are usually what you find in servers and the bulk of the JVM optimization functions are geared towards that environment.

      I'm not in the gaming industry, but I would be cautious about a flat assertion that all games are written in C++. At least at one time, I think that there were some gaming-specific programming languages and some development environments that were designed specifically for game functions and have had years to get tuned even without machine assistance. Moreover, I think it unlikely that games are going to see a lot of shifting workloads - although that's more of a "know" thing than a measured fact - and repeated dynamic recompilation isn't necessary or useful in such cases.

      I do know of one game that definitely is written in Java: Minecraft for the Raspberry Pi. The Pi is not a powerful computer by modern standards, so running Java, much less a computer game in Java on it is no small accomplishment. I've worked with mainframes that couldn't host a JVM. OK, they were really old mainframes, but still....

      The conceit from the knee-biter crowd that Java is slow needs to die. I've worked with video editors, complex GUI design apps and IDEs (both Eclipse and the Arduino IDEs are Java apps) and never felt the difference between Java-based products and products written in other languages. I'm not saying that Java is the solution for all problems.

      I'm not into one-size-fits-all. Leave that to the religious and political crazies. I use Java, Python, assembly language, even Fortran and COBOL, LISP, Perl and more, depending on what works best for the problem at hand. I'll happily defend any of them, and I hope I'd be just as happy to admit their respective flaws. Because if you cannot admit flaws as well as strengths, you're an ideologue and an ideologue is just an idiot with an agenda.

    186. Re:No by goose-incarnated · · Score: 1

      Given that I'd used Python for a couple of decades without experiencing significant type errors, I find that using optional, well supported and semi-official static analysis still has something nice to offer.

      "Semi-official" is still not "official". It's hardly well-supported if the maintainers call it experimental?

      But frankly, I feel like you're moving the goalposts.

      I did not. I did not say "Python does not have strong typing", I said that Python type errors are only determined at runtime, which they are. You are trying to make this into a "python has strong typing/python has weak typing" argument when it isn't.

      The argument is "Type Errors Are Useful Before Runtime". I'm not going to argue about whether Python has strong typing or weak typing because it doesn't matter. The type error only happens at runtime, hence the typing that python has is about as useful as a chocolate hammer.

      --
      I'm a minority race. Save your vitriol for white people.
    187. Re:No by Marxist+Hacker+42 · · Score: 1

      And yet, amazing amounts of spaghetti code come from both.

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    188. Re:No by Shirley+Marquez · · Score: 1

      Perl is also capable of being used as far more than a scripting tool. Some of us do use it for real programming. It just never caught on for that in the same way that Python has, perhaps because of its reputation for being unreadable. (Just about any computer language can be used to write code that is hard for humans to read, but Perl offers a particularly rich wealth of ways to do that. It's also possible to use Perl to write beautiful and expressive code.)

    189. Re:No by Marxist+Hacker+42 · · Score: 1

      Eclipse seems to me to be an IDE written by hackers for hackers and unsuitable for anything other than hacking.

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    190. Re:No by Anonymous Coward · · Score: 0

      There have been great pieces of literature written in English. Shakespeare, Tolkien, and so on. But more than 99.8% of the stuff written in English is garbage. Look at your favorite company's Annual Report.

      Any language that allows great stuff to be produced will also allow huge amounts of garbage to be generated. Don't blame the language for the faults of the writer or programmer.

      And as to trying to create a language that would force garbage writers into using good programming practices: Have not Cobol, Pascal, and C++ been enough to show that approach doesn't work? Do we really need to repeat those failures again with Python?

    191. Re: No by Anonymous Coward · · Score: 0

      You kids. CBasic for cpm on the ? Imasic?
      Gary eudal.?

      Compiler.

      I was talking to Bill on a,tech support issue and he asked what i thought of his basic. Notice the name dropping? He had heard I was not using his basic but was using cbasic. So we both danced around a bit but he really wanted to know what I thought.

      CBASIC had long variable names, modular programing capability etc

      I followed this sort of stuff for a bit. I never heard this stoty there.

          It was a need for instant gratification of the consumer. The compile step did not fit this. In one way this was a marketing decision. He had just retreated to seattle and was doing what he was told this time. But it was also a change the world thingy. Everybody who bought his stuff became a programmer. And if they liked it, they could then learn to do it right.

      Of course, CBASIC needed more resources to really be useful.

      We agreed that it has hard to tell which of us was right up front and I still do not know exactly. But that is the sort of question this thread is about.

      On the personal side, I think this was a manipulated sort of a setup for a job interview. Grin.

    192. Re:No by Marxist+Hacker+42 · · Score: 1

      That has much more to do with the programmer than the language, in my experience

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    193. Re:No by mysticgoat · · Score: 1

      Perl is the only programming language that supports writing poetry that will compile properly: Black Perl. Also google on the Annual Perl Poetry Contest.

      A good way to judge the quality of an applicant for a programming job is to give him some discrete task from your company's problem space and half a day to develop a perl script solution. Then have a couple of your better programmers evaluate his work--- not on whether he finished the task, but on whether they would be comfortable picking up the work where the candidate left off.

      Perl gets dismissed because so much garbage has been written in it. But the reason why so much garbage has been written in Perl is because that's the best that Joey ---you know Joey, that kid in the mailroom who has been learning to program computers--- could produce. And that POS actually works so here it is 20 years later and we are still using it.

      And Joey? He left the mailroom job after a couple of years and now he's some kind of High Mucky-Muck in IT at Corporate HQ.

      Don't judge a computer language's goodness by the amount of garbage that has been written in it. Any decent language will allow an idjit to write bad code.

      Do judge how limited a language might be by the number and type of arbitrary rules a programmer must deal with. No programmer should have to be concerned with meeting some arbitrary whitespace convention, not while he is actually working on the code. He, or better yet some apprentice programmer, should make the code look pretty after the problems are solved. "While coding, just code."

      Oh, fsck Python. There are more important things to think about than levels of indentation.

    194. Re: No by mysticgoat · · Score: 1

      A lot of that time was spent waiting for stuff to be developed. FOSS is usually faster and always produces a less buggy product than commercial software houses can do. But Windows had a 25 year head start, and it took roughly five years for Ubuntu, et al, to catch up and take the lead.

      Now if you want to do anything useful on the web you will be relying on Linux products like Apache, and if you want to be addressing the universe of desktop computing, you will need to do it with a Linux box that can be kept up to date with the latest advances in FOSS. Torvalds once said that Linux is not out to destroy Microsoft; that will happen as an unintended side effect. And that's what's happening.

    195. Re:No by silentcoder · · Score: 1

      The MeerKAT and SKA radio satelite projects do all their work in python.
      According to a talk I attended by their chief programmer - there is a very simple reason. They did the math - even though C-code would run faster, the time they save on developing new code and bugfixing old code is so big that - to get the results on parsing some multi-terrabyte dataset is actually FASTER in python than in C !

      Because contrary to your claims - python is fantastic at rapidly developing extremely stable code.

      --
      Unicode killed the ASCII-art *
    196. Re:No by Anonymous Coward · · Score: 0

      > Perl is also capable of being used as far more than a scripting tool. Some of us do use it for real programming.

      Heh. For certain definitions of "real programming," maybe. If you mean "building software for distribution," I am highly skeptical.

    197. Re:No by silentcoder · · Score: 1

      A good python library will take ALL of them - and handle it correctly depending on the type it received. A good python function should accept ANY compatible data in any compatible type - and know how to deal with different types it may encounter.

      Some tasks only ever make sense on a list - so only implement list code.

      But if the task could, also, in a sensible way be done on a dict - then you damn well implement support for a dict and ensure your code checks which type it is and uses the right iterator.

      Good python devs never let the user of a library try to guess what the library accepts - they tries to cater for whatever the users needs.
      Consider this class I wrote:
      https://github.com/ajventer/py...

      Notice how it will work correctly regardless of whether the input is a list, an arbitrary sequence of parameters or even an arbitrary string - it will parse the data, and construct it into a generic format for use in internal calculations, and fail cleanly if the provided data cannot logically be parsed into an understandable sequence.

      That's how python is supposed to do it. As long as the data is compatible with the processing function, all compatible types should be accepted.

      --
      Unicode killed the ASCII-art *
    198. Re:No by swillden · · Score: 1

      I don't buy it. Well, sure, I buy the comparison with C, but not with (modern) C++ or Java.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    199. Re:No by slashdotwannabe · · Score: 1

      Please burn your computer and forget you ever thought you knew anything about programming. People like you are why we can't have nice things.

      "computers we have these days" = -1020451

      "overwhelming amount of computing tasks" = -9.1093822E+14

      "well within reason" = "OMG shoot you now"

      "C++ or any other fast and obtuse language." = "OMG shoot ME now"

      --
      This comment is my opinion and does not represent an official position of Donald Trump or others I do not work for
    200. Re: No by squiggleslash · · Score: 1

      Possibly, but DEF FN was kinda useless, you were limited to a single expression, rather than an algorithm.

      --
      You are not alone. This is not normal. None of this is normal.
    201. Re:No by silentcoder · · Score: 1

      Yeah, those astrophycisist types, the best in the world at looking at stars, but we all know they suck at adding up numbers right ?

      --
      Unicode killed the ASCII-art *
    202. Re:No by swillden · · Score: 1

      Yeah, those astrophycisist types, the best in the world at looking at stars, but we all know they suck at adding up numbers right ?

      Apparently I wasn't clear. It was the comparison with C, which is very weakly typed and absolutely worse than Python for building complex systems, that I was criticizing, not the astrophysicists. They were comparing C vs Python on the basis of performance, and I'm sure that Python is a better choice than C for them, for exactly the reason they state: the performance gained by using the weakly-typed C language would be far more than offset by the stronger type safety and higher abstraction level provided by Python.

      If they were comparing Python to Java or C++, and if their problem were complex enough to require many millions of lines of code, then I'd say they were wrong. But they weren't, it isn't, and they aren't.

      That said, at various points in my career I've worked with brilliant physicists, and they're generally not terribly good at writing software. Not that their code doesn't work, but it lacks the discipline needed in large, complex systems. That's okay, though, because they don't generally try to build and maintain large, complex systems. Scientific and engineering software work, though very sophisticated in many respects, generally focuses on relatively small problems. There are exceptions, of course, but in those cases the teams generally hire some software engineers to free the physicists up to focus on physics.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    203. Re:No by silentcoder · · Score: 1

      Well I have had some dealings with them (and the university that supplies many of their staff) over the years, and they don't generally let phycisists write code. They have a dedicated coding team - who works very closely with the other teams to translate requirements into code.
      The analysis software tend to be once-offs and not hugely complex pieces of software (many, of course, are minor modifications of previous ones)

      The big and complex part is the code to keep all those hundreds of dishes synchronised. Interferometery relies on perfect synchronicity between all your recievers (be they dishes or lenses). The maths to combine their data is easy - the maths to ensure every one of the dishes point at the same thing, at the right angles relative to each other, and communicates with the servos that actually move the things, that's the really cool stuff they write - and this is still early days. When SKA is complete - it will be several thousand dishes being kept in synch with each other.

      --
      Unicode killed the ASCII-art *
    204. Re:No by brantondaveperson · · Score: 1

      Well, that's a very good point. The first rule of optimisation is that you'll always get a surprise.

      However, in many cases performance has to be designed into a system, which isn't quite the same thing as 'premature optimisation', but it's a case of choosing algorithms sensibly etc.

      But, back to the point, please show me the real-world java program that outperforms the equivalent real-world C++ program.... Because I design and write high-performance software for constrained environments for a living, and we would never use Java in a million years. But, if it could outperform the C++ that we do write, well, that would make me think again.

    205. Re:No by Bengie · · Score: 1

      100% code coverage is considered a code smell. Almost always means you've forced it and probably aren't doing proper testing. The masters tell the laymen to strive for 100%, but they also face-palm when they see it actually "accomplished."

    206. Re:No by Bengie · · Score: 1

      Yay, crashing at run time for something that could have been trivially tested for at compile time.

    207. Re:No by Anonymous Coward · · Score: 0

      You think C is weakly typed..? o_O

    208. Re:No by Anonymous Coward · · Score: 0

      It matters a lot when you assume the CPU will make up for your wasting cycles on inefficient code.

      Case in point: web forms that can't keep up with what you're typing into a field because they're too busy searching possible results. I want to strangle the devs who write that shit!

    209. Re:No by shutdown+-p+now · · Score: 1

      Except that the trend is the other way around - Python is growing faster in the data science niche than R.

      As for Python 2 vs 3, regardless of how the transition was handled, it is over now. Everything that matters is on Python 3. At best you could argue that it was a temporary setback, which delayed Python domination.

    210. Re: No by shutdown+-p+now · · Score: 1

      Later BASICs added full structured programming. The problem is that the core of the language was still designed before then, and it showed. For example, because drawing primitives like LINE and CIRCLE were there long before user-defined procedures and functions, they remained statements with special syntax that was different from function invocation.

    211. Re: No by shutdown+-p+now · · Score: 1

      Traditional BASIC (of the era when it was dominant) was not dynamically typed.

    212. Re:No by shutdown+-p+now · · Score: 1

      Have you tried using a modern Python IDE? They normally do some form of type inference to do exactly the kinds of things that you're asking for, and they're pretty good at it.

    213. Re:No by swillden · · Score: 1

      You think C is weakly typed..? o_O

      Yes. It could be strongly typed if it weren't so trivial to completely subvert the type system -- in many cases accidentally. Worse, C almost requires programmers to regularly subvert the type system. C++ technically has the same problems, but C++ written in a modern style that eschews all old-style casts and takes advantage of template metaprogramming to build very precise custom type semantics can easily avoid all of those issues.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    214. Re:No by RabidReindeer · · Score: 1

      Sigh. Make me work for a living.

      It's always best to do one's own research, as it helps to avoid being fed cherry-picked reality. But, if you insist, here's some stuff I cherry-picked from Google.

      The first one is very interesting because it dates all the way back to 1998, when JIT Java was fairly new, but the relative timings are quite comparable, given similar constraints:

      http://www.javaworld.com/artic...

      Much more recently:

      https://benchmarksgame.alioth....

      Your Mileage can Definitely Vary, however. I found benchmarks indicating that the "Java" (Don't call it Java or Oracle's lawyers will swarm you - it's Dalvik) on Android is significantly slower.

      Some of my own impressions of relative performance are dated, I think. The Gnu compilers have added some very aggressive optimizations in recent years.

      The Debian benchmark seems to indicate that raw C (gcc) is on average about twice as fast as either Java or C++. My suspicion is that a lot of modern C++ coding is not only using virtual methods, but taking advantage of string and dynamic memory managers that were not part of the original C++. There is a cost for using pre-packaged solutions, but in an era where machine time is cheap but programmers still cost $10K a year even in India, shops generally favor "Git 'R Dun" over hyper-optimal performance.

      I've always been partial to the definition (I think by Alan Kay) that Java is "C++ without the mace and knives". I find Java to be less stressful because I don't obsess about what raw machine code will be produced, and the rigorous compile-time checking means that I can devote more time to worrying about the high-level design. However, a JVM is a greedy thing, so there are still times when I prefer C or C++. Then again, there are times when I prefer Python, Perl, or PHP.

      In the end, it's less about language and more about intelligent design. I once encounted a perfectly horrible C++ program that used a very sparse array with a widely-distributed working set. Virtually every computation triggered a page fault; I've seen cases where "efficient" sorts and searches were totally unsuitable because the data was in worst-case form. For performance, the choice of language is less important than how it's used. And above all, measure instead of simply "knowing".

      The reason why I take such umbrage against the "common knowledge" that Java is slow is because that knowledge is largely based on old-time interpreter implementations, where on average, an interpreted instruction would take about 10 times longer than its native-code equivalent because a lot of the code being executed wasn't the app, it was the interpreter. JIT-compiled code has no interpreter overhead, so it's primarily limited by the optimization capabilities of the JIT compiler and the tuning settings (small code, slow code vs. fat code, fast code, for example). For lightweight apps, the overhead of launching a JVM, to say nothing of the overhead of doing the JIT compiling is obviously not worth it. For something that launches, runs 24x7 and doesn't restart for weeks at a time, those considerations are fairly trivial - assuming there's enough RAM. If you have dynamic load-balanced re-compiling, then the overall performance is likely to be better than for a static-compiled app.

      But juggling instructions tends to only give you about an extra 10% boost, and on the whole, I prefer enough headroom for that not to matter. What makes or breaks most systems is the app itself. I knew of one where a single switch setting could single-handedly bring an IBM mainframe to its knees if set improperly. No compiler in the world could have helped that.

    215. Re: No by smithmc · · Score: 1

      Aw, 26 functions oughta be enough for anybody. -- Bill Gates

      --
      Downmodding is the refuge of the weak. Don't downmod, make a better argument!
    216. Re:No by LifesABeach · · Score: 1

      Actually I didn't, it ranks as #4. FORTRAN's Format statement is were bottle necking occurs, hence position #4.

    217. Re:No by michael_wojcik · · Score: 1

      Really hoping /. runs a story with the headline "Is Betteridge's Law Reliable?".

      Or for that matter, "Are Posts that Just Cite Betteridge's Law Worth Making?".

  2. 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?

    1. Re:Betteridge says: by Anonymous Coward · · Score: 0

      Why would most of us need more than one programming language?

    2. Re:Betteridge says: by sthomas · · Score: 4, Funny

      To.... rule them all?

    3. Re: Betteridge says: by K.+S.+Kyosuke · · Score: 2

      You don't, but it better be reasonably powerful. Languages like Lisp or Forth can sustain themselves because of their "all-level" nature. COBOL is is the obvious opposite. Python sits somewhat closer to the former but the sheer size of PyPy suggests it may still be somewhat lacking.

      --
      Ezekiel 23:20
    4. Re:Betteridge says: by Anonymous Coward · · Score: 0

      The point is, not everybody will need the same language, because the problems that exist to be solved in the world are quite different.

    5. Re:Betteridge says: by jellomizer · · Score: 2

      There is a difference between being the dominate language and the only one.
      C has been the dominate language for decades and they were also many other popular languages as well. However dominate language status meant you better know this language because even if it it isn't your bread and butter you will run across it.

      However today where hardware is cheap and fast and most software written is web based or cloud based means that many of the advantages of the older language are becoming moot. Now that being the case these languages will not go away there is still a need for them Python is just an interpreted language. We still need language that compile to an optized binary format and we still need high performance software that will run on the local system. But just not as much as before.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    6. Re:Betteridge says: by K.+S.+Kyosuke · · Score: 1

      That's true, but the more applicable your language is to different problems, the less likely is it that in a large compound program, you'll run into needing a nasty inter-op between two parts of your program. Although having a nice FFI is still a must, of course.

      --
      Ezekiel 23:20
    7. Re:Betteridge says: by dreamchaser · · Score: 1

      Pretty much everything on /. is clickbait and/or slashvertising since the acquisition.

    8. Re:Betteridge says: by jblues · · Score: 4, Funny

      640K programming languages ought to be enough for anybody.

      --
      If it acquires resources on instantiation like a duck, then its a shared_ptr<Duck>
    9. Re:Betteridge says: by Anonymous Coward · · Score: 0

      However today where hardware is cheap and fast and most software written is web based or cloud based means that many of the advantages of the older language are becoming moot. Now that being the case these languages will not go away there is still a need for them Python is just an interpreted language. We still need language that compile to an optized binary format and we still need high performance software that will run on the local system. But just not as much as before.

      "We" have been saying this for ages. It is a variant on "the most expensive resource is programmer time", to the point of assuming that all other resources are so cheap as to be essentially free. Which just as much fails to be true. It's in fact lying by failing to tally various costs that typically stay hidden but are still there.

      "Web-based", "cloud" does the same thing with a slight twist: Shift the heavy lifting and exchange it for a dependency on various third parties, including an always-on infallible network connection. One broken router or backhoed fibre line and the entire company is twiddling its thumbs. Which might get a mite costly, just ask BA.

      You can bank on it for a while but at some point the chickens will come home to roost. Not wasting resources, ie caring for performance and memory use and all that, as well as complexity management like tracking your dependencies and their associated risks, really is a thing. A necessary thing that routinely gets neglected but always at peril, eventually.

    10. Re: Betteridge says: by Anonymous Coward · · Score: 0

      For compatibility.

      Everyone knowing the same language would make it much easier to collaborate and work together, and having it be an open source language like Python is even better.

    11. Re: Betteridge says: by zifn4b · · Score: 4, Funny

      Languages like Lisp or Forth can sustain themselves because of their "all-level" nature. COBOL is is the obvious opposite.

      When you mention Lisp, Forth and COBOL instead of Ruby, NodeJS, Haskell, etc. it's probably time to retire.

      --
      We'll make great pets
    12. Re: Betteridge says: by K.+S.+Kyosuke · · Score: 5, Funny

      NodeJS is a language? Well, if people say things like these now, maybe I really should retire for my own sanity.

      --
      Ezekiel 23:20
    13. Re:Betteridge says: by ls671 · · Score: 1

      I agree with you but anyway; nobody should ever need more than 640K programming languages.

      --
      Everything I write is lies, read between the lines.
    14. Re: Betteridge says: by GNious · · Score: 1

      Studying CS, one group went to an exam on a paper about how .NET is a programming language and never mentioned C#.

      They passed, and when asked about it, the teachers said there was no difference.

    15. Re:Betteridge says: by Rockoon · · Score: 1

      To.... rule them all?

      Thats called LISP.

      Unfortunately every time it would be a benefit to use LISP, there just never seems to be a compiler behind it (see Nyquist, built on XLISP, built on a LISP interpreter)

      --
      "His name was James Damore."
    16. Re: Betteridge says: by Anonymous Coward · · Score: 0

      Yeah you should. You're trying to debate semantics on article about programming languages

    17. Re: Betteridge says: by K.+S.+Kyosuke · · Score: 3, Funny

      So....denotational or operational semantics? :D

      --
      Ezekiel 23:20
    18. Re: Betteridge says: by Anonymous Coward · · Score: 0

      Wow, so cool. This thread reminds me of the old Slashdot, talking about shit that actually matters...

    19. Re:Betteridge says: by fustakrakich · · Score: 1

      since the acquisition.

      Which one?

      --
      “He’s not deformed, he’s just drunk!”
    20. Re: Betteridge says: by 110010001000 · · Score: 1

      Surely you mean LISP, not Lisp.

    21. Re:Betteridge says: by chthon · · Score: 2

      Steel Bank Common Lisp has the best Common Lisp compiler. With the right optimisations you can build code that is as fast as C.

    22. Re: Betteridge says: by drinkypoo · · Score: 1

      They passed, and when asked about it, the teachers said there was no difference.

      I had an IT boss once who thought Centrino was a family of CPUs, and not a marketing name for bundling a Pentium processor together with Intel wireless. He did get let go eventually...

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    23. Re: Betteridge says: by Xest · · Score: 1

      C# isn't the only .NET language though, so why assume when talking about .NET that they have to mention C#? It could've just as well have been any .NET language implementation.

      Are you sure they weren't referring to .NET IL? It's possible that it's you or the students that didn't actually understand the question here.

    24. Re:Betteridge says: by jellomizer · · Score: 2

      The real advantage of Web-Based and Cloud systems is really we are saved from the pain of deployment, not programming time. Deployment on PC's creates a ton of problems. Such as having to make sure the PC is functioning correctly when they are software errors, Dll and other sub systems that come in conflict, then trying to push updates on a wide scale.
      In terms of Python vs. C. on System resources is often very minor. And for most applications they may run faster in Python, just because better versions of algorithms are on hand built in vs. having to code it yourself. In real life doing C Coding if you are under the pressure to get it done and working. Picking the better performing algorithm may fail on a good enough easier to code algorithm. C and C++ coding is good when you really need performance as one of the key features. Python will be better for cases where the program needs to be deployed fast and and run well.
      What is actually more expensive than hardware and development time, is opportunity cost. If a process by hand costs a company of 1000 employees to waste 20 minutes a day which can be automated to run near automatically say 2 seconds in Python or 1 second in C. So saying the average employee is getting paid $20 an hour. That will mean that every week $33,000 is wasted every week, now if that program takes 1 week to develop and deploy in Python vs 2 weeks in C. That will cover the cost of hardware and development time, in that one week difference.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    25. Re: Betteridge says: by Anonymous Coward · · Score: 0

      No, this isn't semantics. Node.js is server backend, designed to be interfaced with javascript, one might go so far as to call it a javascript framework, but nobody who understands what they're talking about would say Node.js is a programming language any more than someone would call angular a programming language, or call Qt a programming language or call Boost a programming language. They're all frameworks for a specified language, but they aren't a language themselves.

    26. Re: Betteridge says: by oh_my_080980980 · · Score: 1

      Only if you are moron who doesn't know what those languages are used for...

    27. Re:Betteridge says: by fnj · · Score: 1

      the dominate language

      The word is "dominant". "Dominate" is a verb. "Dominant" is the adjective.

    28. Re:Betteridge says: by fnj · · Score: 1

      Why would we want just one programming language?

      Nobody with any sense believes we should, but the present proliferation of a bewildering Babel of way too much programming language proliferation is not the ideal either. After one or two programming languages, to a small handful at the most, it becomes impossible to comprehend them, let alone master them.

    29. Re: Betteridge says: by GNious · · Score: 1

      No, they were talking about programming in the .NET language, it's structure, how to define classes, methods etc ...

    30. Re:Betteridge says: by Austerity+Empowers · · Score: 2

      Why would most of us need more than one programming language?

      I find that Python and C combined answer 100% of my programming needs. While C alone can do literally anything at all, as the youngins are quick to point out "there's all those pointers". Some tasks need to be done quickly, other tasks need to run quickly.

    31. Re: Betteridge says: by K.+S.+Kyosuke · · Score: 1

      Well, in their defense, they were somewhat (but most likely unintentionally) correct in the sense that the .NET CLI defines a language of sorts in terms of requirements and limitations. Someone once described the "common runtime" features of .NET jocularly as "you can run any language as long as it can be easily transformed into C#".

      --
      Ezekiel 23:20
    32. Re:Betteridge says: by Anonymous Coward · · Score: 0

      >Why would we want just one programming language?

      Machine language ... you pussies!

    33. Re: Betteridge says: by ranton · · Score: 1

      No, they were talking about programming in the .NET language, it's structure, how to define classes, methods etc ...

      That sounds a bit nit-picky to me. In my workplace we generally refer to our VB / C# programmers as our .Net group. When in architectural discussions we will say something like "this should be written in .Net" frequently. I probably refer to C# as "the .Net language" more often than I refer to it as C#.

      I find it more useful to discuss languages as part of a technology stack which is why I generally refer to the C# language as .Net most of the time. If I am specifically talking about differences between VB and C# I will call that out but otherwise I am just talking about the technology stack as a whole.

      --
      -- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
    34. Re: Betteridge says: by Xest · · Score: 1

      I think this used to work well, but there's been a divergence in recent years, such that the languages are evolving very much separately to the framework. It used to be that a new .NET version would typically come out with a new C# feature, but now the C# language versions and hence features are evolving very much separately from the framework, and in fact, we even have multiple frameworks with .NET Core and so forth.

      As such it's becoming a little more dangerous to link the two I tend to feel, and ever more important to make sure we talk about the language and the framework separately and explicitly.

    35. Re: Betteridge says: by TechyImmigrant · · Score: 3, Funny

      Surely you mean LISP, not Lisp.

      Yeth,

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    36. Re:Betteridge says: by angel'o'sphere · · Score: 1

      To learn more how computers actually work? To learn more how YOU mind actually works? To learn more about how to tackle a problem from different points of view?

      If you can not do at least one command line shell, one compiled language, some variation od SQL/OQL/HQL and at least one language that follws or emphasizes a differen paradigm than your main language you are like a musician who can only play one instrument.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    37. Re: Betteridge says: by zifn4b · · Score: 1

      NodeJS is a language? Well, if people say things like these now, maybe I really should retire for my own sanity.

      Is the issue that it's not a compile time language? If that's what you require for sanity then yes, you should retire to maintain your sanity. You see NodeJS is to Chromium as Java is to JVM as C# is to .NET runtime. In fact, you could lump PHP in there too. If you're not keen on compile time languages decreasing in popularity, you should have retired a long time ago I hate to say. It's just the trend that the industry followed, friend.

      --
      We'll make great pets
    38. Re: Betteridge says: by zifn4b · · Score: 1

      Studying CS, one group went to an exam on a paper about how .NET is a programming language and never mentioned C#.

      They passed, and when asked about it, the teachers said there was no difference.

      .NET is a technology stack. The .NET Runtime is the "virtual machine" that all MSIL runs on. There are many .NET languages, C#, F#, VB.Net, even Python. Each language compiles down into MSIL (byte code) similar to Java. The .NET Runtime then compiles the byte code down into machine language based on the CPU architecture. Teachers who don't have a basic understanding of this have no business teaching students about it. It's not particularly hard to learn about. One only need pick up the Jeffrey Richter book. It's a pretty quick read and you will be very educated about what goes on under the hood afterwards.

      --
      We'll make great pets
    39. Re: Betteridge says: by zifn4b · · Score: 1

      Well, in their defense, they were somewhat (but most likely unintentionally) correct in the sense that the .NET CLI defines a language of sorts in terms of requirements and limitations.

      Sorry, that position is not defend-able. The only way that statement could be considered partially true is if they were referring to writing MSIL, which you most certainly could do, however I'm nearly certain that's not what they meant. They're just an unqualified instructor in that subject matter and are making themselves look incredibly dumb by attempting to teach subject matter they are obviously not educated about.

      --
      We'll make great pets
    40. Re: Betteridge says: by zifn4b · · Score: 1

      That sounds a bit nit-picky to me. In my workplace we generally refer to our VB / C# programmers as our .Net group.

      No that's not nit-picky. I would be common to see two different platform teams in a company like the .NET team and the Java team. I think what you're getting hung up on is Java is used to refer to both the platform (JVM) and the language. They are often used interchangeably but they are not the same thing. For example, in your example, you might find a Scala programmer on the Java team. Why? Because it's a JVM language.

      --
      We'll make great pets
    41. Re: Betteridge says: by ranton · · Score: 1

      I think what you're getting hung up on is Java is used to refer to both the platform (JVM) and the language. They are often used interchangeably but they are not the same thing. For example, in your example, you might find a Scala programmer on the Java team. Why? Because it's a JVM language.

      Considering we don't have a Java team, or anything on the JVM platform, I don't think I'm getting hung up on that. I do agree though that we would refer to a JVM team in the same way we refer to a .Net team. But that has more to do with the fact the .Net platform is not significantly used outside of C# and VB (and even VB use is marginal). That is not the case with JVM.

      --
      -- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
    42. Re: Betteridge says: by K.+S.+Kyosuke · · Score: 1

      That's why added "unintentionally".

      --
      Ezekiel 23:20
    43. Re:Betteridge says: by doom · · Score: 1

      angel'o'sphere wrote:

      To learn more how computers actually work? To learn more how YOU mind actually works?

      Yup. All us programmers are acutely aware of the need to understand cognitive science. That's why langauage wars are a thing of the past: we just wait for the social scientists to verify the claims (faster dev, lower maintenance, etc), and go with what they say.

      ... at least one language that follws or emphasizes a differen paradigm than your main language you are like a musician who can only play one instrument.

      But what about a mind that can only recite a single slogan?

      (John Coltrane totally sucked: he never played anything but sax.)

    44. Re:Betteridge says: by angel'o'sphere · · Score: 1

      First of all: I did not say staying to your roots sucks.
      Secondly, Coldtrain played other instrunentfs before he settled on sax.
      Thirdly, there is nothing wrong to seek insight or depth in what you do best. After all he studied enough other instruments/playin gstyles to be later recognized as the inventor of "sheets of sounds".

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    45. Re: Betteridge says: by trg83 · · Score: 1

      Third party here...no, I think the issue is that NodeJS is REALLY NOT a language, but is rather a framework and approach for writing JavaScript.

    46. Re: Betteridge says: by zifn4b · · Score: 1

      Third party here...no, I think the issue is that NodeJS is REALLY NOT a language, but is rather a framework and approach for writing JavaScript.

      Actually, you raise an interesting point. Node.js really does muddy the water but that doesn't make it illegitimate. I'm not exactly sure what Node.js the term specifically refers to in their stack. Chrome V8 Javascript engine and Javascript are two distinct entities. JavaScript as you pointed out is a language. Said language is interpreted, meaning it requires a runtime. Chrome uses the V8 Javascript engine. Node.js also uses that. JavaScript is interpreted by other technology in Firefox, Safari and IE/Edge. Node.js I suppose you could say hosts the V8 Javascript engine and glues it together to make it work from a console application. Where one ends and the other begins would require some further investigation. But what's the point? Do I really need to understand that to spin up a REST service? No.

      FWIW, I'm an old gray hair programmer too. I started on the Vic 20 and shortly after the C64. Just because Node.js is different doesn't mean it isn't a real programming stack. In fact it is part of what is referred to as the MEAN stack. Whether you want to admit it or not, a lot of today's mobile apps are written in this fashion minus Angular/ReactJS/Ember/etc. sometimes for a more thick client experience. Ever piece of software has a different set of needs and you must select the right tools for the job to get to market quickly and effectively.

      Also, to criticize MEAN would be to criticize LAMP. There are many long-lived commercial web applications running on that stack too. I just get the sense that the naysayers here are people that are pining for the days of assembly language or C/C++ programming. Look, don't get me wrong, those compile time languages have their applications, for example gaming. I spent quite a few years programming in them. C++11 has made strides to adopt functional language programming semantics to be more like a modern language but these types of languages are not meant for spinning up web or mobile apps. They're just not. Hell, Microsoft didn't have a way to spin up a web application in C++ until Cassandra and that was only a few years ago. I think it's now called the CPP Rest SDK. Very late to the game. About 10 years ago, I worked at a company that was bought by another company. The buying company had decided to invent their own HTTP server in C. They absolutely could not keep up with Apache and IIS and were always running into problems and eventually scrapped it in favor of industry standard tools.

      People who suffer from NIHS always lose. Hey I've re-invented a few wheels in my days too. Even though it's a lot of fun, I can objectively say it's pointless especially today if someone has already done it perfectly well. Don't be an elitist douche.

      --
      We'll make great pets
    47. Re: Betteridge says: by trg83 · · Score: 1

      Elitist douche? I was just trying to correct misinformation as someone who has coded JavaScript inside and outside of the Node stack. Roughly, Node is to JavaScript as Ruby on Rails is to Ruby.

      I think you have somehow misinterpreted my pedantry on terminology as a bone to pick with the JavaScript community. Not so.

    48. Re: Betteridge says: by Anonymous Coward · · Score: 0

      All these ***decades*** of freely available Lisp environments and free instruction in it, and yet no closer to taking over the world than it ever was. Ask yourself why this is. Also ask yourself why something invented in the 1950s at the dawn of of understanding of computer science is the last word in language design.

    49. Re:Betteridge says: by brantondaveperson · · Score: 1

      many of the advantages of the older language are becoming moot.

      Except that inefficient software in datacentres directly translates into your power bill.

    50. Re: Betteridge says: by zifn4b · · Score: 1

      Elitist douche? I was just trying to correct misinformation as someone who has coded JavaScript inside and outside of the Node stack. Roughly, Node is to JavaScript as Ruby on Rails is to Ruby.

      I think you have somehow misinterpreted my pedantry on terminology as a bone to pick with the JavaScript community. Not so.

      Being a pedant for the sake of being a pedant is the definition of an elitist douche. But carry on. I don't care.

      --
      We'll make great pets
    51. Re: Betteridge says: by Marxist+Hacker+42 · · Score: 1

      I've never seen a bigger pile of spaghetti code than NodeJS- and that's coming from somebody who remembers inserting three NOPs every other instruction to facilitate JMPS insertions just in case I needed to spaghettifi something.

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    52. Re: Betteridge says: by Marxist+Hacker+42 · · Score: 1

      The issue is that it encourages large and complex client-side processing combined with really bad programming practices that are hard to debug and maintain.

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    53. Re:Betteridge says: by Marxist+Hacker+42 · · Score: 1

      I wish Cmdr Taco would come back and write a series of memoirs on "How to sell your hobby website and retire"

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    54. Re:Betteridge says: by Anonymous Coward · · Score: 0

      I do everything in SNES roms, using an emulation of the console's 8bit data port on the bottom to interface with the outside world.

    55. Re: Betteridge says: by michael_wojcik · · Score: 1

      Languages like Lisp or Forth can sustain themselves because of their "all-level" nature. COBOL is is the obvious opposite.

      "all-level"? What the holy fuck is that supposed to mean?

      I suspect you have no idea how COBOL has developed since the 1985 standard, but your vague handwaving is incomprehensible, so I can't be sure.

      This is one of the many problems with programming-language wars, of course: not only do most participants lack a good argument, they're not even capable of articulating their poor arguments.

    56. Re: Betteridge says: by michael_wojcik · · Score: 1

      Oh, look. A child who thinks history is irrelevant.

  3. Betteridge's law of headlines by Anonymous Coward · · Score: 5, Funny

    No.

    Can you just stop?

    I will now end the discussion with the word Hitler.

    1. Re: Betteridge's law of headlines by plopez · · Score: 4, Funny

      You Hillary supporters don't understand Godwin's law.

      --
      putting the 'B' in LGBTQ+
    2. Re:Betteridge's law of headlines by fennec · · Score: 1

      No.

      Can you just stop?

      No.

    3. Re: Betteridge's law of headlines by Anonymous Coward · · Score: 0

      You spelled Hitlerly wrong.

    4. Re: Betteridge's law of headlines by Anonymous Coward · · Score: 0

      You Trump supporters understand Godwin's Law.

    5. Re:Betteridge's law of headlines by fahrbot-bot · · Score: 3, Informative

      I will now end the discussion with the word Hitler.

      But he would have totally been on-board with the whole whitespace to delimit things thing ...

      --
      It must have been something you assimilated. . . .
    6. Re: Betteridge's law of headlines by Anonymous Coward · · Score: 0

      Because they are special snowflakes

    7. Re: Betteridge's law of headlines by doom · · Score: 1

      You libertarians need to wake up and look at the way the world actually works.

      The Democratic Party needs to understand the lessons of the British elections.

      The Boston Redsox are going to screw-up again this year.

  4. 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 Hognoxious · · Score: 2

      I agree, and so do many therapists.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    2. 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.

    3. 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+
    4. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 4, Funny

      I'm a Whitespace developer, you insensitive clod!

    5. Re:No, because meaningful whitespace by fph+il+quozientatore · · Score: 1, Interesting

      Curious that you are writing this on a website where replies to a comment are identified only because of indentation, and no one has ever complained about that.

      --
      My first program:

      Hell Segmentation fault

    6. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 1

      Except that any sane programmer already indents their code by exactly the same rules in addition to wrangling with braces...

    7. 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.

    8. Re:No, because meaningful whitespace by superwiz · · Score: 5, Informative

      It doesn't have a threading problem. It solves the threading vs process problem. CPU bound threats *should* be processes. And it is safer and more efficient to have 1 GIL per CPU. IO bound threads should be threads. This why threads developed on 1-CPU machines and multi-process model developed on multi-CPU machines. Python has 2 libraries with effectively unifying model for inter-thread communications, but one uses processes while the other threads. Both have almost the same API. Processes are bad if you need a context switch before data can travel from one task's to another task's space. In modern processes, you lose more by having data travel from 1 L1 cache to another L1 cache. So you might as well have 1 CPU-bound thread per core when your threads are CPU-bound and do very little talking to each other. Which exactly what you get with multiprocess threading library.

      --
      Any guest worker system is indistinguishable from indentured servitude.
    9. Re: No, because meaningful whitespace by K.+S.+Kyosuke · · Score: 2

      Whar does Jesse James say about lack of diversity?

      --
      Ezekiel 23:20
    10. 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.
    11. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 0

      Iseeyourpointinfactifeelthatyoushouldpushforsuchaconcepttobemorewidelyaccepted.

      Strawman argument. That is not what he is saying. But that

      "I see your point in fact i feel that you should push for such a concept to be more widely accepted."

      is not the same as

      "I see your point in fact i feel that you should push for such a concept to be more widely accepted."

      is not helpful.

      Code should be readable BOTH to humans and computers. Making whitespace syntactically significant doesn't help much as the need to write readable code does not solely hang on indentation. In fact, making your program logic clear with BOTH indentation and correct separation markers (parenthesis and braces for example) gives the human a double chance to catch errors, while the computer will not care about the indentation as long as it can parse the code.

    12. Re: No, because meaningful whitespace by K.+S.+Kyosuke · · Score: 1

      ("about *your* lack of diversity", sorry.)

      --
      Ezekiel 23:20
    13. 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.
    14. Re: No, because meaningful whitespace by SuperKendall · · Score: 1

      Say, what are those odd symbols at the end of every one of your sentances...

      Huh. Seems like some kind of visible symbology to separate concepts is useful after all.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    15. Re:No, because meaningful whitespace by sjames · · Score: 1

      absolutelycorrect.Idon'tknowwhattheyp[osablycouldhavebeenthinking.Weneedtoeliminatealluseofwhitespaceimmediately.

    16. 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.
    17. Re:No, because meaningful whitespace by religionofpeas · · Score: 2

      It's because the indentation happens automatically based on logical structure, not the other way around.

    18. Re:No, because meaningful whitespace by vtcodger · · Score: 1

      "Whitespace which has meaning is just nasty"

      So, unfortunately, are zillions of easily mismatched, hard to read, bracket pairs. Whitespace is widely (nearly universally one hopes) used to make code readable because bracketing is only readable by machines and perhaps a very few, very odd, people. Python simply makes readable use of whitespace mandatory and throws out a lot of the bracket pairing.

      It's a tradeoff

      That said, Python has some other problems -- speed, threading, and a number of niche issues that occasionally rise up to bite one. But as a first computer language or an only language for folks who make their living doing something other than programming, there's a lot to bet said for Python.

      And it's not like everyone else's favorite languages don't suck in a few (often more than a few) ways.

      --
      You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
    19. Re:No, because meaningful whitespace by religionofpeas · · Score: 1

      Whitespace between keywords is fine. C requires that too. We're talking about using white space to define program structure.

    20. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 1

      Using whitespace and tabs for flow control...how fucking sloppy can a language get?
      Python is the shittiest programming langauge in the world.

    21. Re:No, because meaningful whitespace by thp4 · · Score: 1

      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.

      If you have wrongly-balanced curly-brace code (or missing curly braces since you expect it to be only one statement), it's just as likely to fail compiling or do something you didn't expect (think Apple SSL "goto fail"). Space-/indentation-based block definitions and curly braces are as powerful, any proper editor will help you indent your code. The advantage of indentation-based blocks IMHO is that it results in some consistency (no "holy wars" where to place the opening/closing brace and if/when to leave out braches, etc..) and easier readability. In practice, "a stray tab instead of spaces" is a non-issue, Python will fail loudly and you fix your editor settings, done.

      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.

      Most of my coding time isn't spent copy'n'paste-ing code from the web. Readability matters more, since most time is spent reading code. Adapting the code from the web to your own environment by having go to through it might very well be a good thing. If you copy'n'paste C/C++/JavaScript/Java code from the web, you also want to fix the indentation of the pasted code since it's probably in a different style than what current project you're working on.

    22. Re:No, because meaningful whitespace by sjames · · Score: 1

      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;}

    23. Re:No, because meaningful whitespace by dinfinity · · Score: 1

      where replies to a comment are identified only because of indentation

      No, they're not. They are 2-dimensionally visually nested by borders and include a link to scroll to the parent post.
      Try disabling the border on #commentlisting li.comment.full, #comments .full

      no one has ever complained about that

      Beta made it worse and everybody complained about that. And rightfully so.

    24. Re:No, because meaningful whitespace by fph+il+quozientatore · · Score: 1

      Oh, I refer to the old interface (which I am still using). That had no visual markers apart from the indentation. So basically they added visual markers in addition to the indentation, and everyone complained.

      --
      My first program:

      Hell Segmentation fault

    25. Re: No, because meaningful whitespace by Anonymous Coward · · Score: 0

      In fact, these can be omitted (and often are) when you write the sentences in multiple lines

      Also, natural language is NOT a good model for programming languages

      If anything, Mathematics is

    26. Re: No, because meaningful whitespace by Anonymous Coward · · Score: 0

      It is possible to conceal information in text with little cues. Can a blind person 'read' Python? Is it possible that differences in whitespace may not be apparent for all people? Python is useful for basic scripting but no better than any other functional language at representing algorithms. .

    27. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 0

      On my ./ the indentation is paired with nested frames, so: no, you are plain wrong.

    28. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 0

      Clearly your example proces that C is superior since it can be formatted in many different ways based on the given need, whereas Pythin is constrained in its form.

    29. 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.
    30. Re:No, because meaningful whitespace by Ihlosi · · Score: 2
      So, unfortunately, are zillions of easily mismatched, hard to read, bracket pairs.

      Which are definitely a problem of the person who wrote them, not with the programming language. And it can easily be fixed by teaching said person to write human-legible code, which includes much more than just proper placement of brackets.

      If you have programmers working illegible code, then Python won't save you, because there's about a few hundred things that make code illegible that work just fine in Python.

    31. Re:No, because meaningful whitespace by Ihlosi · · Score: 1
      If you have programmers working illegible code

      Should be 'writing illegible code'.

    32. Re:No, because meaningful whitespace by Rockoon · · Score: 1

      So basically they added visual markers in addition to the indentation, and everyone complained.

      Because its still not good enough.

      --
      "His name was James Damore."
    33. Re:No, because meaningful whitespace by Rockoon · · Score: 1

      Sane programmers have even more rules for indenting than python.

      Unfortunately Python has decided that being a sane programmer is not compatible with its indentation rule, which is the only rule allowed in the Python world.

      --
      "His name was James Damore."
    34. 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.

    35. Re:No, because meaningful whitespace by Dog-Cow · · Score: 2

      Correct indentation, in normal languages, is helpful for the human reader, and is fixable by the computer. In Python, it is mandatory for both, which means the computer can never help. Creating a language that prevents automation, to be used on a tool for automation, seems like sadism to me.

    36. Re: No, because meaningful whitespace by Anonymous Coward · · Score: 0

      No. Things like mixed tabs and spaces or line-endings don't have to mess up layout, but they will mess up python programs... at which point you have to turn in "highlight whitespace" in your editor.

    37. Re:No, because meaningful whitespace by BenJeremy · · Score: 4, Interesting

      Wow, great way to prove the point that C is superior due to the requirement of proper scoping delimiters.

      If I have mismatched braces, I can EASILY track that down. I can also de-obfuscate the code above in almost any modern code editor into a readable format.

      Python? No, not so much. Not at all, in fact.

    38. Re:No, because meaningful whitespace by religionofpeas · · Score: 1

      Good example. After fixing the #include, that code can be compiled. For generated code, that could be an acceptable way to format it. For human readability, I can run it through a pretty-printer with my favourite settings. I can copy/paste it into any other project, and it would still work.

      Now try pasting a piece of python code, and see if the whitespace survives the HTML formatting.

    39. Re:No, because meaningful whitespace by BenJeremy · · Score: 1

      Mismatched braces are not all that hard to sort out. Easier than Python's scheme, much easier.

      Modern code editors even display matching braces, and some provide more extensive visual indicators.

      As already mentioned, copy-pasting code is also terrible for Python, simplicity for C/C++/Java/C#. Copy-pasting as the old joke goes, 90% of the job (With Experts Exchange long before StackOverflow came along)

    40. Re:No, because meaningful whitespace by religionofpeas · · Score: 1

      So, unfortunately, are zillions of easily mismatched, hard to read, bracket pairs.

      You could have an editor compare indentation with bracket pairing, and notify you of a discrepancy. That way you can verify both.

    41. Re:No, because meaningful whitespace by bill_mcgonigle · · Score: 1

      Is there no standard python module to fix this? I mean, just preprocess and feed the stupid space stuff to the tokenizer.

      Perl has all kinds of alternate formatting modules, but its users tend to he less devotional from what I've seen.

      --
      My God, it's Full of Source!
      OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
    42. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 0

      I struggled with python and it does require a learning curve. I agree white space can be a nuisance but you can make things easier if you set your editor to auto convert tabs to spaces. Otherwise it just takes experience to move up the learning curve. The hard part of programming for me is finding an efficient algorithm to to solve a problem. This can often take several rewrites or rethinks.

    43. Re: No, because meaningful whitespace by Anonymous Coward · · Score: 0

      You obviously don't use an ipad to view slashdot.

    44. Re: No, because meaningful whitespace by DrXym · · Score: 1
      Braces won over other forms enclosure like begin / end because they're terse and easy to parse. Other languages contemporaneous with C would been far more verbose. From a convenience standpoint it's easy to see why braces won. That said, C really screwed up by making them optional for single statement blocks.

      Python uses indentation for blocks which in theory is is even more terse than putting braces around blocks. On the flipside it imposes a coding style and line continuation over multiple lines is a really ugly hack.

    45. Re: No, because meaningful whitespace by Anonymous Coward · · Score: 0

      That would be true if c happened to have two different brace characters that looked identical but had different meanings in the code.

    46. 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.
    47. Re: No, because meaningful whitespace by mfearby · · Score: 1

      I used to prefer tabs for indentation for that very reason (setting my own width) but I eventually gave up the fight and went with four spaces. It seems fairly common.

    48. Re:No, because meaningful whitespace by mfearby · · Score: 1

      Of all the bizarro made-up crazy languages out there, this has to be one of the silliest :-)

    49. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 1

      It is however a problem if you have much communication between processes. Per default the multiprocessing module will pickle/unpickle the transmitter information. And this is catastrophic for performance. It is possible to send e.g. arrays without pickling them but you have to jump through some hoops to do it.

      We are currently considering using mpi4py instead sinde it has support for transmitting objects implementing the buffer interface without any pickling. And because we like the MPI data model and the mpi4py implementation. And it allows us to run stuff on our cluster out of the box.

    50. Re:No, because meaningful whitespace by mfearby · · Score: 5, Interesting

      You mention "easier readability" but I wonder if Python gets any love among blind developers? I wouldn't want to be counting spaces in my head to determine where I'm at (you'd probably even have to turn on the reading-aloud of spaces, which would just drive me nuts!)

    51. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 0

      So basically it solves the threading problem by making using multiple threads pretty much useless. Good thing it was all planned out to add the GIL, and that it wasn't just some limitation that is hard to get rid of.

      How about a programming language that doesn't force your programs to fit a model? People program in all different kinds of environments and there are all different kinds of programs, how could one threading model be perfect for them all?

    52. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 0

      i see what you did there. you conflated /any/ whitespace with /this precise amount/ of whitespace.

    53. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 0

      Enforcing coding style in the language is just always a dumb idea. It's my biggest complaint in Rust. I use a specific coding style and it's slightly different than the one they enforce. I use camelCase for variables and snake_case for structs because camel case is easier to type and variables are more common than structs, thus use the easiest to type for the most common. But they flip those and the compiler bitches constantly unless you put a preprocessor command in each file. Is my style wrong or bad? No, it's just different than what some other guys preference is. I guess the base of my complaint with language enforced coding standards is it feels needlessly authoritarian to me. You're telling me how to use your tool rather than let me use it the way I see fit. Imagine if duct tape could only be used on ducts?

    54. Re:No, because meaningful whitespace by Sneeka2 · · Score: 1

      I would say that Python enforcing the one true standard is actually a good thing. I don't need to waste brain cycles on deciding how to indent most things; the interpreter forces me to stick to certain basic constraints. My editor automatically runs a PEP8 style checker on it and enforces the rest where there's wiggle room. No more holy wars to fight in this area (well, except for arguing on /. about why that's a good thing...).

      I find it easier to get used to the default, which is very sane in the case of Python, than to bend the language to my personal whims.

      --
      Bitten Apples are still better than dirty Windows...
    55. Re:No, because meaningful whitespace by barbariccow · · Score: 1

      If you are passing an object.. you can directly use ctypes, you know? or XML...

      Or if you're cool, you can even use mmap, which is typically how I'd share data in C anyway..

    56. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 0

      Showing an example of unreadable c-code won't negate the fact that whitespace-defined program structures are bad, especially when multiple people (With different editors and indentation habits) work on the same project.

    57. Re:No, because meaningful whitespace by ceoyoyo · · Score: 1

      Re:No, because meaningful whitespace (Score:?)
      by Anonymous Coward on Monday June 12, 2017 @09:16AM
      I consider that a feature actually. Use tabs for code. When you copy and paste something from the web you have to go through line by line and convert the spaces to tabs. That forces you to go through that code you just downloaded off the web line by line....

      Actually, you can almost always do a search and replace for multiple spaces, but don't tell that to my summer students.

    58. Re:No, because meaningful whitespace by ceoyoyo · · Score: 2

      You're using the wrong editor. Probably an IDE? IDEs are evil.

      Personally, I find braces the bad option. Whitespace IS visible, and the interpreter will happily point out where you (or your editor) screwed up. Braces are hard to keep track of, particularly when heavily nested. Of course, if you use whitespace appropriately the braces are much easier to track....

    59. Re:No, because meaningful whitespace by Hognoxious · · Score: 1

      I'll take "nasty but I can see it" over "nasty and invisible" any day.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    60. 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.

    61. Re:No, because meaningful whitespace by barbariccow · · Score: 1

      Now try pasting a piece of python code, and see if the whitespace survives the HTML formatting.

      Sure, I'll play. You can write obtuse code in any language. Here's same program in python (without whitespace!)

      lst = [(x % 5 == 0 and x % 3 == 0 ) and ("Number = %d FizzBuzz" %(x, )) or (x % 5)==0 and ("Number = %d Fizz" %(x,)) or (x % 3 == 0) and ("Number = %d Buzz" %(x,)) or ("Number = " + str(x)) for x in range(101)]; print ('\n'.join(lst));

    62. Re: No, because meaningful whitespace by histreeonics · · Score: 1

      As a software manager I (with some reluctance) switched to spaces-only as each engineer had their own preferred editors and some did not handle tabs well. Dealing with 3 or 4 people editing the same files became much easier after that. Kinda like Python, its crappy but if it is what it takes to get people working together then it has some merit.

    63. Re:No, because meaningful whitespace by barbariccow · · Score: 1

      should clarify: Doesn't NEED whitespace*

    64. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 0

      Right. If Python wanted to create a sane whitespace indentation format, then it would have made on correct indentation character, leaving the others illegal. Then there would be less chance of failure without the formatting making the failure obvious.

      Instead we get incessant praise about a feature that is obviously poised for breakage with the global statement "don't do that." This means that developers everywhere have to check the type of white space they use, every time, instead of putting their efforts into something else.

      If I used begin-block and end-block delimiters (like curly braces in C) then you could rearrange the lines, put white space in them willy-nilly and get the desired results.

      Python is a positionally dependent programming language, where the character position the first character of text is on is significant. But it is worse. The meaning of that character's position is contextual, so you can't even decide the meaning without reading programming areas around it.

      If the format of the text on screen is so important that one cannot have two styles of presentation, then this might make sense; however, Python's half attempt falls short. And this falling short becomes readily apparent when you spend extra time reindenting code that is being refactored.

    65. Re: No, because meaningful whitespace by Anonymous Coward · · Score: 0

      The key here being the word "visible"

    66. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 0

      Actually it's a trivial detail and at the same time it's one of the things I hate most about Python: Whitespace is a communication channel *for me*, to communicate to other humans. Braces (or parens, or keywords, or whatever) are there for the machine.

      The first time I saw it (no, it wasn't Python, it was Occam[1]) I thought "nifty". After having used it for a couple of 10 kLOC, I know: "annoying".

      Your mileage... and so on and so forth. This sure is extremely a matter of taste, and my point isn't "your taste is wrong", but rather "your generalization ('Any sensible blah blah') is wrong".

      [1] Yeah. Pythonistas like to play the original folks. Fact is they copied lots of things. This isn't bad per se, but I often miss a tip o' the hat towards the original, as many other civilised folks do. This is *another* thing I dislike about Python. That kind of culture which constantly circles around one's own navel.

    67. Re:No, because meaningful whitespace by twistnatz · · Score: 1

      You could try to configure your favourite text editor so that tabs are substituted with 4 (or whatever) spaces. In my experience that is enough, and if you cannot manage that then maybe you should find a different line of work.

    68. Re:No, because meaningful whitespace by sjames · · Score: 1

      Even worse is a situation where convention specifies a use of whitespace so the human can read it but the compiler sees an entirely different structure. Perfect for creating a nearly invisible bug. If the compiler/interpretor also uses the whitespace to decide, at least it will do what it appears to do.

      Most projects large enough to have more than one person on them already set conventions for structuring, commenting, ets. Why not include whitespace conventions?

    69. Re:No, because meaningful whitespace by sjames · · Score: 1

      No because C code is easily structured to LOOK like it says one thing when it says another. Now try and find the bug.

    70. Re:No, because meaningful whitespace by sjames · · Score: 1

      Now, mis-indent something in C. See how long it takes someone else to figure out why the code seems to not do what is plainly written.

    71. Re:No, because meaningful whitespace by sjames · · Score: 1

      Find the bug. Better yet, hand it to a co-worker to find it.

    72. Re:No, because meaningful whitespace by Sneeka2 · · Score: 1

      Python doesn't force specific variable casing, though it does have strong recommendations. So your beef might be more with specifics of Rust (which we're not talking about here) than Python.

      Putting that aside, you do have a point in general, but then again... a language will always enforce certain things. Use of parentheses, spaces, braces, keywords, function calls... you name it, your language has some requirement for it. Whitespace is just one of those things, and personally I find it somewhat silly to single it out as the one thing to complain about and dismiss a whole language for.

      Not having to worry much about code formatting styles amongst different developers because it's virtually impossible to write code which doesn't conform to the standard isn't a bad thing.

      --
      Bitten Apples are still better than dirty Windows...
    73. Re: No, because meaningful whitespace by Anonymous Coward · · Score: 0

      Wtf? If you have semicolons after every line, the compiler or ide/editor can actually format the program easily. It's pretty brainless compared to whitespace. Natural language is a great model for formatting. Math does not have formal formatting.

    74. Re: No, because meaningful whitespace by Sneeka2 · · Score: 1

      And mixed tabs and spaces in "brace languages" will sooner or later mess up formatting when handing the code back and forth between different developers, so you're sooner or later confronted with the issue anyway and need to get your editors in line. Well, Python editors are already in line because the language demands it...

      --
      Bitten Apples are still better than dirty Windows...
    75. Re:No, because meaningful whitespace by goose-incarnated · · Score: 1

      Find the bug. Better yet, hand it to a co-worker to find it.

      Bug found in less than a second after I put it into file tmp.c:

      cat tmp.c | indent

      Now, try to do the same thing with misformatted python.

      --
      I'm a minority race. Save your vitriol for white people.
    76. Re:No, because meaningful whitespace by Austerity+Empowers · · Score: 1

      The whitespace issue makes me nauseous. The lack of strong typing makes bugs.

    77. Re:No, because meaningful whitespace by sjames · · Score: 1

      Why, if it's misformatted, it's an actual bug, not just a visual flaw.

      OPf course, with a program more complex than fizz-buzz, you might have a hell of a time deciding if the indent is wrong of the brackets.

    78. Re: No, because meaningful whitespace by jon3k · · Score: 1

      Everyone keeps talking about this problem but I've still never seen it in practice, directly or indirectly. Every shared codebase in the world is based on dozens or hundreds of internal conventions, but somehow we think we can't manage to avoid mixing whitespace?

    79. Re:No, because meaningful whitespace by goose-incarnated · · Score: 1

      Why, if it's misformatted, it's an actual bug, not just a visual flaw.

      OPf course, with a program more complex than fizz-buzz, you might have a hell of a time deciding if the indent is wrong of the brackets.

      I might, but my odds are better when I can run the program through indent than when I can't because the whitespace is significant. Face it, if you have the same problem in python, you're shit out of luck.

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

      Absolutely agreed. Significant whitespace is an abomination. The semantics of the code shouldn't change depending on whether it was copy/pasted between codebases, emails, or even office documents.

    81. Re:No, because meaningful whitespace by sjames · · Score: 1

      No, I'll just have to do the same analysis you will when you decide which is wrong. OTOH, the python is less likely to have been checked in defective since the whitespace error should make it flunk a unit test on the spot.

    82. Re:No, because meaningful whitespace by goose-incarnated · · Score: 1

      No, I'll just have to do the same analysis you will when you decide which is wrong. OTOH, the python is less likely to have been checked in defective since the whitespace error should make it flunk a unit test on the spot.

      And the C or C++ defective code would *pass* the unit test? The odds for bugs getting checked in are higher in the python case, not in the static+strongly typed languages case.

      --
      I'm a minority race. Save your vitriol for white people.
    83. Re: No, because meaningful whitespace by Anonymous Coward · · Score: 0

      Tabs was the superior solution if it weren't for the real world in which people use different editors and don't care shit about things they can't see.

      Spaces are the lowest common denominator, work well, and most importantly: give consistent indentation.

      It's not funny to deliver perfectly tabbed code, just to open it a year later and see everything screwed up because other people have edited. Spaces don't let you down.

    84. Re: No, because meaningful whitespace by nasch · · Score: 2

      How many of those conventions are about something that you cannot normally see and screw up the code if done incorrectly?

    85. Re:No, because meaningful whitespace by sjames · · Score: 1

      If someone screwed up the indentation years ago, it would have passed the unit test just fine (if there was one then).

      But if you're really hung up on a visible character top decide the level, just use an editor that makes tabs visible.

    86. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 0

      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.

      Sorry I couldn't parse your followup because you didn't tab indent the start of your paragraphs.

    87. Re: No, because meaningful whitespace by Sneeka2 · · Score: 1

      I'll agree with jon... this hasn't been an issue in practice for me in the last decade+, so is not a very convincing argument as far as I experience it. And especially when the language insists on correct whitespace, it's more likely that everyone is on the same page to begin with, and that issues with whitespace manifest immediately with a broken program rather than lingering undetected for a while.

      --
      Bitten Apples are still better than dirty Windows...
    88. Re: No, because meaningful whitespace by 0111+1110 · · Score: 1

      F90 discarded white space significance in 1990.

      Interesting. This happened only about a year after I took my first formal programming course at university. So my first formally taught programming experience was with a language that refused to compile if you accidentally typed a space at the end of a line. I found the constant bugs due to this so annoying that I dropped the course in the first couple of weeks even though programming is one of my favorite activities in the world. To this day I have never touched Fortran again.

      Luckily the C/C++ era was fast approaching and I loved and continue to love that language for its efficiency and concise logical structure. It just makes sense for me and feels right. For me the choice of language is mostly about personal preference. More a matter of taste than anything. Although for performance critical tasks I would hope any competent programmer would drop into C/C++ or even ASM for critical inner loops.

      There are a couple of language types I'd really like to see though. One would be a compiled-programs-as-objects language that is 'object-oriented' but with objects that can run and be useful on their own and not only as a component of another program. Another would be a language that is more friendly to code self-modification at runtime to better implement genetic algorithms.

      --
      Quite an experience to live in fear, isn't it? That's what it is to be a slave.
    89. Re:No, because meaningful whitespace by goose-incarnated · · Score: 1

      If someone screwed up the indentation years ago, it would have passed the unit test just fine (if there was one then).

      But if you're really hung up on a visible character top decide the level, just use an editor that makes tabs visible.

      Or I could, you know, run the code through indent to make it conform to the company's guidelines. Of course, I can only do that if it isn't written in Python.

      Remember your original "example" of having all the code on a single line? Remember how easy it was for an automated process to format? Tell you what - find a way to instruct a computer to turn the following back into the original source:

      def fizzbuzz(n): if n % 3 == 0 and n % 5 == 0: return 'FizzBuzz' elif n % 3 == 0: return 'Fizz' elif n % 5 == 0: return 'Buzz' else: return str(n)

      Using braces gives me options that don't even exist with python

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

      WTF are you talking about? First off, most editors will re-align code to the user's preferences. I set up my editors to do exactly that, and whether I'm debugging code or simply working on making changes to existing code, the first thing I do is reformat.

      No "mis-indentation" at all there. Everything lines up exactly as it should because the code is easy to parse (both by humans and machines).

      So the first time I hit return in the middle of misbehaving code, everything lines up and I can immediately spot the problem.

      Can't do that with "mis-indented" Python code. You can't do that at all.

    91. Re: No, because meaningful whitespace by goose-incarnated · · Score: 1

      And mixed tabs and spaces in "brace languages" will sooner or later mess up formatting when handing the code back and forth between different developers, so you're sooner or later confronted with the issue anyway and need to get your editors in line. Well, Python editors are already in line because the language demands it...

      The non-python programmers can run indent. The python programmers will have to figure out the mess on their own.

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

      This seems painfully obvious to state but there's a big difference between whitespace and those other things you mentioned: you can't see whitespace.

    93. Re:No, because meaningful whitespace by goose-incarnated · · Score: 1

      No because C code is easily structured to LOOK like it says one thing when it says another. Now try and find the bug.

      Like I pointed out above, it takes less than a second to find a bug that is due to incorrect formatting. Because, you see, indent works on non-python programming languages.

      You keep saying "Now find the bug" and I keep saying "cat src.c | indent". What don't you understand about "Python indentation errors cannot be caught nor fixed by any automated process"?

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

      Is your point that it's better that things break if the whitespace is wrong so that the whitespace is always right? Isn't it better if things don't break if the whitespace is wrong, so that then there is no such thing as wrong whitespace?

    95. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 0

      || ==> &&

    96. Re:No, because meaningful whitespace by waveclaw · · Score: 1

      A good programming editor has the ability to make 'whitespace' characters visible somehow. IMHO, lack of that feature is one of the criterion for being good or being suitable for programming. (Yes, you can also write War and Peace in notepad.exe if you really have to.)

      VIM has 'set list'.

      Sublime shows whitespace on selected text.

      Atom has the editor.toggle-invisible setting (and lots of packages to add menu option for it.)

      Visual Studio has CTRL + R, CTRL + W Menu: Edit -> Advanced -> View White Space

      In EMACS you have to write a little lisp code.

      At the end of the day this is about as annoying as finding the missing semicolon in ALGOL-style code.

      --

      "You cannot have a General Will unless you have shared experiences. You cannot be fair to people you don't know."
    97. Re: No, because meaningful whitespace by jon3k · · Score: 1

      If it screws up the code it won't pass a build test and won't get merged, so the question is based on a false premise.

    98. Re: No, because meaningful whitespace by angel'o'sphere · · Score: 1

      Sorry,
      but this discussion over whithe space usage in Python is pretty pointless.

      If it would use { and } or BEGIN and END, people who discuss about its usage of white spaces would not use the language anyway. They simply would find another reason why they don't like the language.

      The only mistake Guido made is that he allows space and tab being mixed as leading intro and treats a single tab like a single space.

      He should have made one of both a syntax error. (I believe there is a compiler/interpreter option to disallow tabs)

      I for my part like the white space usage which makes Python executable pseudo code. But I hate the idea that methods need an explicit 'self' variable as first parameter.

      On the other hand I only used Python once for a job interview. I wrote a prety complex program, downloaded stuff from the internet, extracted data from the HTML pages, calculated some means and other things, and plotted a graph, uploaded the results to a different web site, etc. However the interviewers where fair and gave a list of libraries to use for which task, otherwise I never had made it in the timeframe they gave.

      Bottom line I had something like 250 lines of code, about 15 functions doing the releevant steps, programmed in 4h.
      I was the only one who had a nearly perfect program. I had never programmed in Pyton before.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    99. Re:No, because meaningful whitespace by Wraithlyn · · Score: 1

      Or, on the other hand, perhaps it is just as valid as any other parsing requirement? Language commands need some form of context

      So what, all forms of context are automatically equal? Because you say so?

      Well I'm sorry, but all forms of context are not automatically equal, and we may consider the pros and cons of each. Using invisible characters to control program flow is a shitty design decision that favours conciseness over readability. Code should not fail because of something you cannot see.

      Everyone is entitled to their own opinion, of course.

      --
      "Mind, as manifested by the capacity to make choices, is to some extent present in every electron." -Freeman Dyson
    100. Re: No, because meaningful whitespace by nasch · · Score: 1

      That's a fair point, but in other languages if the issues linger undetected, that means they're not really issues, because they only way it could be an issue is if it's causing a problem for a human.

    101. Re: No, because meaningful whitespace by nasch · · Score: 1

      What false premise?

    102. Re: No, because meaningful whitespace by angel'o'sphere · · Score: 1

      That said, C really screwed up by making them optional for single statement blocks.
      How can that be a screw up when clearly a single statement is not not a block? Cough, cough, cough ...


            if (c) v = something;

      If you are scared about programming errors due to misplaced or missing braces then write one liners like above. Problem solved.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    103. Re:No, because meaningful whitespace by angel'o'sphere · · Score: 1

      Basically every code editor can display white spaces, it is probably even easy to find in the settings.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    104. Re:No, because meaningful whitespace by angel'o'sphere · · Score: 1

      Every IDE contains an editor.
      I find such posts as yours simply idiotic.

      Whitespace IS visible, and the interpreter will happily point out where you (or your editor) screwed up.
      In Python? No. Either the code can be interpreted then it runs, but gives the wrong result ... or it is a recognized error, and no one is complaining about the later. All hate the former.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    105. Re:No, because meaningful whitespace by angel'o'sphere · · Score: 1

      You accidentally left a few superflouvious space chars, e.g. in the condition of the first if and the final return :)
      You waste so much space, man!

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    106. Re: No, because meaningful whitespace by Anonymous Coward · · Score: 0

      Yes, it is awfully difficult to parse a Python file and re-write it at a different indentation level using an automated script.

      Oh wait, no, no it really isn't.

    107. Re:No, because meaningful whitespace by angel'o'sphere · · Score: 1

      You are both idiots.
      This is the endless argument always given in this stupid war.

      As long as no one knows what the program actually is supposed to do, there is no bug. Both ways of formatting it either in C or in Python just make the program run just fine, but with different results.

      Who am I to decide which result is correct and which program is buggy?

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    108. Re:No, because meaningful whitespace by ceoyoyo · · Score: 1

      Every IDE contains an editor.
      I find such posts as yours simply idiotic.

      Hey old friend! Still don't read posts hey? If english is not your first language it's understandable, but you really shouldn't criticize then. Let me rewrite my post for you, slowly.

      OP said "Maybe I'm using the wrong editor...."

      I said (edited for the angels): "You're using the wrong editor. [It's probably part of] an IDE? IDEs are evil."

      By the way, I find most of your posts pointless, and the others demonstrably wrong. I *think* you managed to score both on this one:

      Whitespace IS visible, and the interpreter will happily point out where you (or your editor) screwed up.
      In Python? No. Either the code can be interpreted then it runs, but gives the wrong result ... or it is a recognized error, and no one is complaining about the later. All hate the former.

      Python gives an IndentationError exception when you have whitespace the interpreter can't parse. It points out the exact location. So if you slip in a space by accident (because you should be using tabs) then the interpreter helpfully points out exactly where it is so you can delete it.

      You've never actually used Python, have you?

    109. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 0

      It doesn't have a threading problem.

      It does, really.

    110. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 0

      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.

      So use a development environment that highlights those errors for you?

    111. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 0

      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.

      Bzzt.

      The point is that in Python that code would not be correct anyway, since you couldn't write it like that in the first place.

    112. Re:No, because meaningful whitespace by dinfinity · · Score: 1

      Oh, I refer to the old interface (which I am still using).

      So am I. There are borders around expanded comments. End of story.

    113. Re: No, because meaningful whitespace by sl3xd · · Score: 1

      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.

      Every version control system I've ever looked at considers whitespace to be significant, so we have the same problem in every language - if not during development, then while merging code.

      As a result, every coding standard I've ever seen (both open source and corporate) is explicit (and detailed) in how indentation is to be used, and every text editor worth using is able to easily convert indentation to the required form.

      If anything, I appreciate that Python will break quickly - before somebody commits their code and causes a merge headache down the line.

      --
      -- Sometimes you have to turn the lights off in order to see.
    114. Re:No, because meaningful whitespace by sjames · · Score: 1

      Tab is just another character, right? So why not use it?? Just make your text editor show it as a visible glyph (there are several that can do that IIRC).

    115. Re:No, because meaningful whitespace by sjames · · Score: 1

      Can't do that with python where a tab is mis-placed, can't do that with C where a brace is mis-placed.

    116. Re:No, because meaningful whitespace by sjames · · Score: 1

      And why don't you understand that tab is just another ASCII character. Drop a few braces in C and you'll have a similar problem.

    117. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 0

      A good Python IDE will convert tabs to spaces in real time.

      And you are right that tabs shouldn't have ever been allowed in Python, even its creator admits that was a mistake. Also Python 3 fixes this:

      Indentation is rejected as inconsistent if a source file mixes tabs and spaces in a way that makes the meaning dependent on the worth of a tab in spaces; a TabError is raised in that case.

    118. Re: No, because meaningful whitespace by SoftwareArtist · · Score: 1

      Lots of languages use significant whitespace. C and C++ do, for example. They're just less consistent about it than Python. For example, the preprocessor uses line breaks to indicate end of line, unlike most of the language that uses semicolons. And you can't put a line break in the middle of a string literal, because that's another place where it's inconsistent and treats whitespace as significant. Even things like having to write "vector<vector<int> >". Notice the space I had to insert between the two >'s? Without that, some compilers interpret it as the >> bit shift operator.

      There's nothing wrong with significant whitespace, as long as it's done consistently and produces readable code. Python does it well. C++ does it badly.

      --
      "I'm too busy to research this and form an educated opinion, but I do have time to tell everyone my uninformed opinion."
    119. Re: No, because meaningful whitespace by doom · · Score: 1

      Also, natural language is NOT a good model for programming languages

      How do you know?

      That's a serious question.

      CS geeks keep acting like they've got some lock on The Truth, but if they've got anything to back that up, I haven't seen it yet.

    120. Re: No, because meaningful whitespace by doom · · Score: 1

      Every version control system I've ever looked at considers whitespace to be significant, so we have the same problem in every language - if not during development, then while merging code.

      True, but the fact that our diffs are broken is not actually a good reason to break everything else in the same way.

    121. Re:No, because meaningful whitespace by BenJeremy · · Score: 1

      First off, a brace misplaced is far different from taking perfectly good code and copy-pasting it to find all of the scoping has been screwed up (Python) - and modern IDEs have no issues showing you where a missing indent it, which isn't happening with Python.

      I'm curious, are you strictly a Python programmer? You seem to have a lot of emotional investment in this issue. Personally, I make my living from C#, Javascript and a smattering of something called Progress ABL - in my previous job I've also heavily used C/C++ and some PHP. As a robotics mentor I use Java, and as a hobbyist, I do use Python. I've also done BASIC, Pascal, Forth, COBOL, EDL, ActionScript, LUA, and even wrote my own scripting language back in my Xbox hacking heyday (for MXM). It's only 35 years of experience talking here, and I've written code on everything from DOS Edlin to modern IDEs. I know what makes me productive, and what I've observed the countless developers (both young and old) that I've mentored both professionally and for FIRST robotics.

      Listen, maybe you are just trying to be facetious, maybe you are being outright disingenuous, but you simply cannot rationalize the concept that misformatting in Python is in any way no worse then something similar in C code. Misformatted Python code can happen with perfectly legitimate code when performing a simple action of transferring the text... C does not suffer from this flaw. DOES NOT SUFFER. If we are talking about code that has been badly written? Well, that's a different beast than what people here are complaining about - but even so, it is far easier for a modern IDE to still recover much of the scoping based on context, whereas Python requires an incredible amount of inference when the whitespace integrity is lost - so much so, that a moderately complex program might be impossible to untangle.

      There is a reason why most modern languages have explicit scoping delimiters.

    122. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 0

      Thisseemspainfullyobvioustostatebutthere'sabigdifferencebetweenwhitespaceandthoseotherthingsyoumentioned:youcan'tseewhitespace.

    123. Re: No, because meaningful whitespace by Anonymous Coward · · Score: 0

      If the whitespace in your code in any language has no meaning (indentation to show structure) your code is bad.

      Python is brilliant for making use of what you should be doing anyway.

    124. Re:No, because meaningful whitespace by doom · · Score: 1

      A good programming editor has the ability to make 'whitespace' characters visible somehow.

      Sure, but then they all also have good features to track opening and closing braces (and those are actually turned-on by default, there's no somehow like the elisp code I use to make tab characters red).

      I'm more sympathetic to the argument that with Python you have to be careful with moving blocks around because you need to adjust indentation when you change logical levels.

      If we actually were to settle this argument, it would take some social scientists studying frequency and impact of programmer's errors.

    125. Re:No, because meaningful whitespace by angel'o'sphere · · Score: 1

      You seem to have the same reading conprehension problem you accuse me for.

      Python gives an IndentationError exception when you have whitespace the interpreter can't parse.
      Obviously.
      And if it can parse it, but the intendation is wrong nevertheless, it executes it.
      Hence the rant of the Python haters in this thread.
      I quote it again for you, if you read it slowly you migt grasp that we both said the same thing:

      Whitespace IS visible, and the interpreter will happily point out where you (or your editor) screwed up.
      In Python? No. Either the code can be interpreted then it runs, but gives the wrong result ... or it is a recognized error, and no one is complaining about the later. All hate the former.

      IDEs are evil
      No they are not. They are just a tool chain in one Application that happens to contain an editor. Which you probbaly just configure like your favourite one if you cared to RTFM or simply open the settings.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    126. Re: No, because meaningful whitespace by Anonymous Coward · · Score: 0

      Python doesn't care if you indent 2, 3 or 13 spaces - it only has to be consistent within a block.

      And for readability that was always true in all languages.
      Why would anybody want jaggy indentation?
      The scope block should always be obvious and easy to scan quickly

      Python just turned a really-really-should-do into a have-to.
      Rightly so.

    127. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 0

      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.

      Works in python just fine:
      ['Fizz' * (i%3 == 0) + 'Buzz' * (i%5 == 0) or i for i in range(1, 100)]

    128. Re:No, because meaningful whitespace by sjames · · Score: 1

      Python is one of many languages I use or have used including C, Java, PHP, Javascript, FORTH, FORTRAN, Pascal, and various assembly languages. I find IDEs annoying personally. I prefer vi, make, and friends.

      I GENUINELY don't get why ASCII 0x7b and 0x7d are fine but 0x09 makes people go ape shit. Next we'll see calls for trigger warnings at this rate. Just look how many people were 'triggered' by my fairly calm first posting on the topic. It's just not that hard. Gaining or losing a tab in python is no worse than, for example, losing a closing brace in C and the compiler just points you to the last line in the source file as the error.

      I do find Python to be particularly expressive and fast to develop in.

    129. Re:No, because meaningful whitespace by tender-matser · · Score: 1

      if(((i%3)||(i%5))== 0) printf("number= %d FizzBuzz\n", i)

      man operator(7) and get rid of all those cock-sucking parentheses.

      They clutter your mind and if your brain isn't able to cope with simple levels of precendence, you're worthless even as a janitor; and indenting is not the cure for your disease.

      You won't be able to grasp the difference between 'or' and 'and' even with copious whitespace, syntax highlighting.and blinking.

    130. Re:No, because meaningful whitespace by Pulzar · · Score: 1

      I set up my editors to do exactly that, and whether I'm debugging code or simply working on making changes to existing code, the first thing I do is reformat.

      I bet people love collaborating on projects with you.

      If you've never run into the case of someone writing:

      if (a == b)
        a++;
        b++;

      ...and then trying to figure out how can b be incremented without a incrementing as well... then you just haven't work on other people's code quite enough yet to appreciate the point.

      I don't know quite how I feel about Python's solution yet (I've only been actively using it for a few months), but it does make it very obvious *how* things are going to run, vs. what the author intended. Good or bad, it does make it easier to debug in some situations.

      --
      Never underestimate the bandwidth of a 747 filled with CD-ROMs.
    131. Re:No, because meaningful whitespace by andreasgonewild · · Score: 1

      There are plenty of differences between threads and processes. It's clearly one of the niftiest multiprocessing-libraries around, but there are plenty of things that just can't be passed between processes; which is where you'd use threads instead. Pretending the problem isn't there is never going to work, this is a major limitation in CPython.

    132. Re: No, because meaningful whitespace by Anonymous Coward · · Score: 0

      Also, natural language is NOT a good model for programming languages

      How do you know?

      That's a serious question.

      COBOL.

    133. Re:No, because meaningful whitespace by sjames · · Score: 1

      Actually I just pasted in an example and stripped the white space. I didn't give a damn about the parentheses at the time (cock sucking or otherwise).

    134. Re: No, because meaningful whitespace by Anonymous Coward · · Score: 0

      If it screws up the code it won't pass a build test and won't get merged, so the question is based on a false premise.

      I've seen plenty of hot-shot developers who "just made one trivial change" without doing a build, unit test or even telling anybody and fucked things up without the invisible whitespace voodoo. Because I'm the one who got to clean things up.

      One of the developers was the manager, others were the manager's golden children because they were young and eager to work 60+ hr weeks.

    135. Re:No, because meaningful whitespace by goose-incarnated · · Score: 1

      And why don't you understand that tab is just another ASCII character. Drop a few braces in C and you'll have a similar problem.

      No, I won't - indent, grep, diff and all the other tools I use (including the compiler) will show me a blank spot where the missing brace should be. With python the missing character is invisible, you twit. It is literally not visible.

      Besides, you're moving the goalposts. You kept saying "Now find the bug", and I showed you how common tool sactually do find the bug. These tools can't work with python because python syntax depends on invisible characters.

      --
      I'm a minority race. Save your vitriol for white people.
    136. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 0

      Braces are hard to keep track of, particularly when heavily nested.

      Many editors these days hi-light the corresponding brace to the one the cursor is currently over.

    137. Re:No, because meaningful whitespace by sjames · · Score: 1

      The tab is literally just another ascii value. Why would any of those tools have a hard time 'seeing' it?

      this is a test$
      ^I^Ihere be tabs$
      $

      From vi after telling it :set list

    138. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 0

      Mixing tabs and spaces is a runtime error in Python 3, and you can always alias Python 2 to python -tt to treat mixed tabs/spaces as errors there as well.

      Seriously though, I have been writing Python to and from for 11 years now (last ~18 months pretty much full-time), and I have never, ever, ever had any real issues with this, or any of the whitespace issues I so often hear repeated on Slashdot. If one is using any reasonable sane editor, this just cannot be an issue, can it? The only way I can think of this being an issue is if I'm using Notepad (not ++).

      I use Vim. I expand tabs to 4 spaces, and I'm quite done. I believe I highlight tabs at the beginning of lines, but I never even see this happen. I have used PyCharm (which was not my cup of tea, but anyway), and there were never any issues there either.

      If anything, I get completely livid when people do not indent consistently, regardless of language. The main difference in this regard is that Python enforces (well, Python 3 anyway) indentation that coincides perfectly with the intended logic. The logic in itself may be flawed, but then this is just made even clearer by the indentation not playing tricks with you.

      I like Python, though I would not called myself a Python zealot. I readily and loudly acknowledge issues with Python (my main gripes are likely the horrible creation of static applications, i.e. EXE files and such, and the current state of GUI frameworks). I have written C, C++, Java, PHP, etc., in professional settings. I have never been able to understand the complaints about whitespace in Python -- not when I first encountered it, not after all this time. And it still gets brought up in every single thread about Python, and gets upvoted to the skies. By now I guess I will never understand this.

    139. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 0

      Iseeyourpointinfactifeelthatyoushouldpushforsuchaconcepttobemorewidelyaccepted.

      Ah, scriptio continua. Haven't seen you in a thousand years....

      You do know that spaces between words didn't always exist, right? And that in some languages, it still is not needed?

    140. Re: No, because meaningful whitespace by Anonymous Coward · · Score: 0

      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.

      If your code is ambiguous without proper indentation, it's going to be ambiguous either way. From Ruby-land (where all punctuation is optional), the insistence on sprinkling your code with little hints to the interpreter is pretty weird. No, those aren't necessary, not even for refactoring.

      ...code written by anybody who doesn't follow their particular One True Indentation Style...

      If you have worked in a professional environment then it should not be an arduous burden to have to comply with a given coding standard, whether or not it's enforced by the runtime.

      Python is hardly the only whitespace-significant language in existence, and if you're going to get hung up on whether a language has a particular syntactical nicety you're useless as a programmer. Go program in Brainfuck, APL, and Lisp, and then come talk about what you think you need in a programming language.

      Belt and Braces -- more like mental crutches.

    141. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 0

      Enough said. Whitespace which has meaning is just nasty.

      This is usually trotted out by people who 1) haven't tried it or 2) remember FORTRAN.

      But FORTRAN suffered from both too much whitespace significance, AND NOT ENOUGH.

      Bear in mind that a good lint tool can find whitespace inconsistencies.

    142. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 0

      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.

      Pypy is fast. Jython threads fine. Work on improving CPython multithreading for CPU-bound threads is underway. CPython already threads I/O bound workloads well. And multiprocessing gives looser coupling between components than threads.

      Don't conflate Python the language with CPython the reference implementation.

    143. Re: No, because meaningful whitespace by Anonymous Coward · · Score: 0

      Your editor does not have an option to show tabs and it does not have an option to save tabs as spaces?

      That's weird - I find those to be standard feature for any programming editor.

    144. Re: No, because meaningful whitespace by Anonymous Coward · · Score: 0

      And yet Apple had a very famous security bug for years where indentation indicated another program flow to what the compiler did make of it.

    145. Re: No, because meaningful whitespace by Anonymous Coward · · Score: 0

      If every programmer in a team always reformats then every change is a massive diff regardless of how trivial the change is.
      How wonderful.

    146. Re: No, because meaningful whitespace by Anonymous Coward · · Score: 0

      Only this doesn't actually happen in Python as programmers are not constantly putting random tabs in places.

      You set your editor to save tabs as spaces and never worry about them again.

    147. Re: No, because meaningful whitespace by Anonymous Coward · · Score: 0

      Copy-pasting has never been an actual problem in Python - doing that for a decade.

    148. Re:No, because meaningful whitespace by BenJeremy · · Score: 1

      We have organizational coding styles. Typically, I match whatever the style is, reformatting isn't an issue.

      This is how professionals work.

      As for your example, I use scope delimiters, always. In the past 20 years, I have not had a team mate who has not adopted this rule themselves. It just makes sense, but in any event, it is clear what is going on (I usually parse code in my head when reading it), regardless of indentation, but again, reformatting quickly sorts out that indentation issue, doesn't it?

      My early professional years were in embedded systems programming (Assembly, C, C++), and understanding the way a compiler generates code, particularly calls into libraries, meant I also became familiar with compiler operations. There is an elegance to using proper scoping delimiters - both from a compiler perspective as well as a readability issue. Python's form hearkens back to a darker age - I'm reminded of the spate of so-called 4GL languages that tried to do everything for you, and failed to keep up with changing technology in the process. Loose-formed ideas of passing parameters and changing means of representing scope... inconsistency born of creating a scripting language from scratch without regard for actual parsing rules.

      It's clear some people are fanatics about Python... and that's fine. Will it become dominate? No. In my world, where people make serious money building applications for multi-billion dollar companies, Python isn't even a speck - and we dabble in a lot of different programming languages. C# is becoming more dominate at my current company, and there simply is no downside to that. We have a good ecosystem (Nobody will bring the company down here on their first day) and good practices. If Python meets a need, I'm sure we will use it... but there are far better choices available for most of the applications we need to develop here.

    149. Re:No, because meaningful whitespace by mfearby · · Score: 1

      This is usually trotted out by people who 1) haven't tried it or 2) remember FORTRAN.

      But FORTRAN suffered from both too much whitespace significance, AND NOT ENOUGH.

      Bear in mind that a good lint tool can find whitespace inconsistencies.

      I cobbled together a simple Python script once for some reason or other (can't remember anymore) and it was OK I guess, but so many languages have C-like syntax that I prefer those generally, which is why I tend to do mostly c# and javascript these days. Using whitespace for block separation just annoyed me and I didn't like it one bit. Programming languages are a dime a dozen and I see no need to add Python to my resumé.

    150. Re:No, because meaningful whitespace by goose-incarnated · · Score: 1

      The tab is literally just another ascii value. Why would any of those tools have a hard time 'seeing' it?

      Let me repost so that you can read it again:

      You kept saying "Now find the bug", and I showed you how common tools actually do find the bug.

      I don't need a special editor, or enforced (meaningful) whitespace to take your program-all-on-a-single-line and turn it into well-formatted code. I can use a program that does that. When your python code is mangled you have no tools to unmangle it.

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

      Bu-but doesn't everyone love makefile syntax?

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    152. Re: No, because meaningful whitespace by david_thornley · · Score: 1

      Braces also stand out more. "begin" and "end" look like any other reserved word or variable name. I prefer to have the program structure easier to see.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    153. Re: No, because meaningful whitespace by Anonymous Coward · · Score: 0

      As has been pointed out many times before - Python is strongly typed - just not staticly so.

      And with the recent addition of type hints and a tool like mypy you even have the option of static type checking if needed/wanted.

    154. Re: No, because meaningful whitespace by Anonymous Coward · · Score: 0

      Everyone keeps talking about this problem but I've still never seen it in practice, directly or indirectly.

      Totally agree.

      Anyone who has used python for any length of time - as opposed to talking smack about it on \. - learns that:
      - whitespace is NOT a bug, it's a feature. Really.
      - neither dynamic nor duck typing are misfeatures.

      I'm only using python in passing right now, but having worked in it with a team for several years, we never once experienced any of the gotchas that Java or C++ programmers seem to think we'd encounter on a weekly basis.

      I think part of the reason for the argument is that what works in python would not work in C++/Java environment (and vice-versa, no doubt).

    155. Re:No, because meaningful whitespace by sjames · · Score: 1

      So, your special program can actually comprehend the code and replace syntactically meaningful characters if I should remove some (or throw some in)? You're still hung up on the 0x09 character being somehow different simply because the tools you happen to use treat it in a particular way. Stripping the tabs from a Python program is like stripping the braces out of a C program.

      All that while extolling the virtues of a utility program that simply enforces a visual formatting rule on C code that is already intrinsic to Python.

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

      It is however a problem if you have much communication between processes.

      If you are passing too much information between tasks, they will be slowed down regardless of whether the tasks are processes or threads. There will be significant slowdown in having data travel from one processor's L1 cache to the other processor's L1 cache. In fact, it is so slow that you may as well think of information travelling from one processor to the other processor ar travelling through a (very fast) network and architect accordingly.

      Per default the multiprocessing module will pickle/unpickle the transmitter information.

      I never saw that as a problem, but I do believe that the underlying process of pickling is open to being modified.

      --
      Any guest worker system is indistinguishable from indentured servitude.
    157. Re:No, because meaningful whitespace by superwiz · · Score: 1

      How about a programming language that doesn't force your programs to fit a model?

      yes, because uniform api with pluggable implementation depending on the needs is bad thing, right? Oh, brother.

      Good thing it was all planned out to add the GIL, and that it wasn't just some limitation that is hard to get rid of.

      I don't see it as a limitation. I see it as an advantage. You don't need any processors talking to each other before they each one of them can decide to throw out small chunks of memory back into its unused pile.

      how could one threading model be perfect for them all?

      It's not. It's why there are 2 models. Same api: that's the advantage. If a thread becomes more CPU bound, you plug in one implementation. If it becomes IO bound, you plug in the other. So you are free to optimize per-thread IO or CPU performance... whichever one is more open to optimization.

      --
      Any guest worker system is indistinguishable from indentured servitude.
    158. Re: No, because meaningful whitespace by Pig+Hogger · · Score: 1

      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.

      The whole idea of using white space for context means that you do not have to reformat your code, ever.

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

      NO, it doesn't. I has a problem of becoming popular and being used by a lot of people who don't know what they are talking about.

      --
      Any guest worker system is indistinguishable from indentured servitude.
    160. Re:No, because meaningful whitespace by superwiz · · Score: 1

      Not understanding the difference between how to treat CPU-bound threads vs IO-bound threads is a problem between the ears -- not a problem of your programming language.

      --
      Any guest worker system is indistinguishable from indentured servitude.
    161. Re:No, because meaningful whitespace by Pig+Hogger · · Score: 1

      Moof!

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

      Yes, line continuation is an ugly hack. But, in practice, it's rarely necessary because the language discourages long lines and has enough mechanisms to make them unnecessary.

      --
      Any guest worker system is indistinguishable from indentured servitude.
    163. Re: No, because meaningful whitespace by superwiz · · Score: 1

      Try this for measure:

      for(i = 0; i < something; ++i)
      if (expr1)
      if (expr2)
      do_this();;
      else
      do_that();
      Proper C. Totally readable... of course.

      --
      Any guest worker system is indistinguishable from indentured servitude.
    164. Re:No, because meaningful whitespace by eddeye · · Score: 1

      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.

      Well there's your problem. Only heathens use spaces to indent. Switch to tabs and bob's your uncle, problem solved!

      --
      Democracy is two wolves and a sheep voting on lunch.
    165. Re: No, because meaningful whitespace by Anonymous Coward · · Score: 0

      Fails to compile because your extra semicolon turns 'else' into a stand-alone statement.

      Oh, didn't you notice that? Maybe indenting would help? :)

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

      What makes you think I didn't notice it? It's was just a demonstration for the guy who thought that 1-statement blocks without parenthesis were readable. Oh, and I like Python. I've used it since version 1.2.

      --
      Any guest worker system is indistinguishable from indentured servitude.
    167. Re:No, because meaningful whitespace by Rockoon · · Score: 1

      Meanwhile its a rare language that asks you to bend.

      There is a reason other languages dont do it. Why dont you address them?

      --
      "His name was James Damore."
    168. Re: No, because meaningful whitespace by Anonymous Coward · · Score: 0

      > What makes you think I didn't notice it?

      Because it's not "proper C"?

    169. Re: No, because meaningful whitespace by angel'o'sphere · · Score: 1

      Indentation would not change the double semicolon error.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    170. Re: No, because meaningful whitespace by Anonymous Coward · · Score: 0

      > Indentation would not change the double semicolon error.

      No, but it might make it easier to spot.

    171. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 0

      Iseeyourpointinfactifeelthatyoushouldpushforsuchaconcepttobemorewidelyaccepted.

      This is dumb, and as another AC pointed out, a strawman. Whitespace is significant in pretty much every program language - you can't even write a standards-compliant "Hello World" in C/C++ without using whitespace. Python's treatment of whitespace is on a whole other level.

      I program in Python every day and think it's a great language, but whitespace defining scope is pretty ridiculous. I deal with it because the other benefits outweigh it.

    172. Re: No, because meaningful whitespace by michael_wojcik · · Score: 1

      Precious few programming languages don't make whitespace significant in some contexts.

      intmain(void){return0;} is not valid C.
      classFoo{staticvoidMain(){return;}} is not valid Java.
      programfooendprogramfoo is not valid Fortran 90.

      I don't think whitespace is syntactically significant in APL, but it's been a long time. In any case, most (textual) programming languages use whitespace at least as a delimiting lexical construct in some contexts, because most of them employ character sequences that are not self-delimiting, and whitespace is the obvious delimiter.

    173. Re: No, because meaningful whitespace by michael_wojcik · · Score: 1

      Brackets as scope delimiters also have the advantage that they're easy for tools to match. Textual delimiters are easy to read, and avoid the mass-of-terminators problem often seen with LISP, for example; but they can be difficult to pair when reading code.

      That's particularly true with ALGOL- and Pascal-style begin/end pairs. The form-specific scope delimiters in languages like Fortran ('90 et seq) and COBOL (85 et seq) are more helpful; in modern COBOL, the reader knows that an end-if will terminate the innermost if, an end-evaluate the innermost evaluate, an end method[1] the method.

      And of course these form-specific delimiters also help the compiler identify errors. Too many closing brackets in C and you have code outside a function, and the parser will complain, but it doesn't know which closing bracket was wrong. But a COBOL compiler can say "you have an end-if here, but your innermost control structure is an evaluate, so this line is clearly wrong".

      But on the other hand it's trivial for an editor to provide the "highlight matching punctuation mark" feature, and easy to implement bracket-counting when you're writing an ad hoc script to do some sort of source-code analysis.

      Either beats whitespace for block-scope definition, for anything that's too long to fit on screen. While I appreciate the argument that code structure should be apparent to human readers, trying to enforce that in the language causes more trouble than it saves.

      [1] It's a bit unfortunate that some of COBOL's scope keywords are hyphenated and others are phrases, but in practice it's easy enough to learn, especially with syntax-coloring editors.

    174. Re:No, because meaningful whitespace by michael_wojcik · · Score: 1

      You're using the wrong editor.

      You're fixing the wrong problem.

      Yes, sometimes a system is sufficiently better that it's worth the cognitive load, opportunity cost, and psychological cost of switching tools. But it's a high bar. "Switch tools" requires very strong justification.

    175. Re:No, because meaningful whitespace by ceoyoyo · · Score: 1

      I don't know... an editor that screws around with your text without telling you, and doesn't have an option to turn it off? That sounds like a good problem to fix with high priority to me.

    176. Re:No, because meaningful whitespace by Anonymous Coward · · Score: 0

      Seems to me it would be trivial to implement a pretty printer for Python that adds brackets, lets you edit with brackets, then saves out properly-indented Python code.

      Has anyone done that yet?

  5. No by grungeman · · Score: 5, Funny

    And my teacher was wrong. There actually are stupid questions.

    --

    Signature deleted by lameness filter.
  6. As soon as ... by tgv · · Score: 1

    As soon as it runs in the browser.

    Boys, start investing in octocore CPU and RAM manufacturers.

  7. "Native" C# Developer by mmdurrant · · Score: 1
    I learned my chops in the .NET ecosystem. Then I got turned into a quasi-Openstack developer.

    Python is pretty cool. The lack of a real type system makes me write a lot of assertions I don't want but ultimately protect me from stupid mistakes later on.

    It has reasonable syntax and with map/filter/etc you get most of what you get out of LINQ... I think it's great.

    --
    I see my shadow changing, stretching up and over me...
    1. Re: "Native" C# Developer by plopez · · Score: 1

      Good compilers protect you too and you don't have to write boiler plate code.

      --
      putting the 'B' in LGBTQ+
    2. Re:"Native" C# Developer by NotInHere · · Score: 1

      Python has a type system, its in fact quite strong (as opposed to a weak type system like that of javascript or bash), but its not static, its dynamic.

    3. Re:"Native" C# Developer by Anonymous Coward · · Score: 0

      with map/filter/etc

      Remember when Guido decided those are too difficult for the average Python developer?

      Filter and Map got a stay of execution, due to massive backlash. Reduce, the one he "always hated most" was moved in to functools.

      They'd never have made it in had he not allowed them to be added on a whim. If your BDFL had taken a few minutes to actually plan that backward-compatibility-breaking monstrosity, you wouldn't have filter, map, or reduce at all.

      Remember kids: Thoughtless design is bad design. It's why lambda's are completely borked.

    4. Re:"Native" C# Developer by superwiz · · Score: 1

      Well, apply got killed first. But that's only because Guido is scared of lambdas. Granted, most developers don't think in tensors. But turning programs into abstract algebra exercises could have been a rubicon. For now, it remains outside of the reach.

      --
      Any guest worker system is indistinguishable from indentured servitude.
    5. Re:"Native" C# Developer by Entrope · · Score: 1

      Right. So when you do typical high-level operations -- working with databases or network connections -- you often have to convert types, and the compiler has no way of telling you when you missed a required type conversion. You just get a runtime error, and then you need to trace back to find where the badly typed value started to be badly typed.

    6. Re:"Native" C# Developer by gweihir · · Score: 1

      Python is pretty cool. The lack of a real type system makes me write a lot of assertions I don't want but ultimately protect me from stupid mistakes later on.

      That is as it should be. OO and in particular, polymorphism is not all it is cracked up to be. Limit it yourself whenever needed.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    7. Re:"Native" C# Developer by tbannist · · Score: 1

      Remember kids: Thoughtless design is bad design. It's why lambda's are completely borked.

      If prefer the aphorism: "When you fail to plan, you plan to fail."

      --
      Fanatically anti-fanatical
    8. Re:"Native" C# Developer by Anonymous Coward · · Score: 0

      Python is pretty cool. The lack of a real type system makes me write a lot of assertions I don't want but ultimately protect me from stupid mistakes later on.

      Ooh.. try Ada, then if you want bondage.

    9. Re:"Native" C# Developer by dkasak · · Score: 1

      Note that you two are not discussing the same kind of "type" here, even though they share a word. Dynamic type systems can be regarded as static type systems where all values have a single type. However, Python has been gaining optional static typing capabilities . See mypy, PEP 483, PEP 484 and also the typing and typeshed) modules.

    10. Re:"Native" C# Developer by angel'o'sphere · · Score: 1

      You just get a runtime error, and then you need to trace back to find where the badly typed value started to be badly typed.
      Which is obvious from the stack trace.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    11. Re:"Native" C# Developer by Anonymous Coward · · Score: 0

      That, or convert it at the moment of need rather than before so that you don't need to deal with that as much.

    12. Re: "Native" C# Developer by Entrope · · Score: 1

      It seldom is, because Python variables are untyped. You need to take back to figure out where the value (not the variable) came from, and why the value has the wrong type.

    13. Re: "Native" C# Developer by angel'o'sphere · · Score: 1

      Variables in Python are typed. You simply have not to declare any type.
      A variable is either null or has the type associated of the value it holds.

      If you have trouble to follow a stack trace, you should ask a friend/coworker to help/teach you.

      With a stack trace of x lines it should not take longer than x seconds to find the spot of the mistake. I find it usually on a first glance.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    14. Re: "Native" C# Developer by Entrope · · Score: 1

      If you don't know programming, don't try to pretend. Variables are typed if they are constrained to only contain values of a particular type. Values have a runtime type that may be narrower than their variable's type. C-family languages have typed variables. Python does not.

      Stack traces do not tell you the life history of a value. It may have been wrong in a function called somewhere else entirely, then gone into a container that got sent to a different thread or process, maybe altered by some type-agnostic operation, and only caused a problem long after the root cause occurred. Congratulations on only working with toy code, such that the stack trace tells you everything you need to know.

    15. Re:"Native" C# Developer by piojo · · Score: 1

      The problem with relying on those assertions is that only code paths you run (or have test coverage for) will get the benefit. The problem with test coverage is that the tests can be wrong. I upgraded python code to a new version of python and the library, and doing similar work in C++ wouldn't have meant I didn't need to test each function, but I could have fixed a lot more of the problems before running the code. And while I think python is well suited to scripting, that experience showed it's a liability for maintenance.

      --
      A cat can't teach a dog to bark.
  8. Point. by NormanHaga2580 · · Score: 0

    At some point you run out of hardware to throw at a problem.

  9. What it is used for? by Anonymous Coward · · Score: 0

    I'm curious, what is it used for? Java is Android, C++ is application development typically Windows and Linux, C#, the Microsoft specific branch of C++, Perl, proof that the Devil is real and among us, Javascript, little client side web app stuff,

    So what niche does Python fill?

    I mean, I go into a shop or eshop and buy a program and what sort of program would that be that was written in Python?

    1. Re:What it is used for? by Hognoxious · · Score: 3, Funny

      It fills the "smug hipster twat who can't grok lisp" niche perfectly.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    2. Re:What it is used for? by Dr.Saeuerlich · · Score: 0

      Niche: CG production for film and games. Python is used from writing small scripts to developing entire asset management and rendering pipelines, which help to bring your favorite game or movie to your new 4k TV

    3. Re:What it is used for? by jandersen · · Score: 1

      I think Python should be seen as a scripting language: a language whose purpose is to tie together the real applications, rather like bash and ksh. Python has a lot of packages or modules (or whatever they are called), many of which seem well suited for scientific or engineering purposes; it is my impression that most are written in C or C++ for speed. So, you can see the attraction of Python for, say a scientist - there are modules for many specialised, mathematical areas, all of which are very difficult to code from scratch, and although there are similar packages for C, C++ and FORTRAN, they are less easy to just pick up and use.

      I think you are less likely to find applications in Python - it is quite possible to do, and I have seen some, but just like you wouldn't normally write applications for general consumption in bash (although you can), Python isn't really the obvious choice either, IMO. Perhaps it is exactly because scripting languages are so good for ad hoc work - you get to expect that everything must be equally easy to achieve, but many things are simply complicated by nature, so the advantages of using Python become less prominent.

    4. Re:What it is used for? by Jon+Peterson · · Score: 4, Informative

      Java is mainly large enterprise back end systems, and some android, and quite a lot of embedded stuff (nominally what it was invented for), and, worryingly, quite a lot of client side GUI stuff.

      C++ is used for legacy systems and where you need speed.

      C is used where you need speed, have simple programs and memory constraints, and old fashioned unix software.

      C# is for windows programming and .net

      Javascript is for browser programming and Node, and some general scripting, where someone has used it as their system's internal scripting language (see also lua)

      PHP is used for relatively simple web stuff, because it's easy and works and has wide library support

      Python is used for what PHP is by better developers, and has brilliant maths libraries so is increasingly used for anything maths related where esoteric things like matlab and R and F# are unhelpfully niche.

      Haskell is used for academic curiosity, and some maths stuff.

      Perl is dying out, but is still used for unix automation a fair bit.

      --
      ----- .sig: file not found
    5. Re:What it is used for? by oakgrove · · Score: 1

      I use Python along with Selenium for website automation and testing. I prefer it over Java in that regard as it is much faster to develop in and doesn't require as much "infrastructure". No compiling, no mandatory OOP, no need for an IDE, etc. Of all the things in that particular niche, I've found Python to be far and above the best.

      --
      The soylentnews experiment has been a dismal failure.
    6. Re:What it is used for? by superwiz · · Score: 1

      All of them. Don't underestimate a Python programmer generating the code previously typed by a dozen code monkeys.

      --
      Any guest worker system is indistinguishable from indentured servitude.
    7. Re:What it is used for? by Anonymous Coward · · Score: 1

      It also fills the "People who wish they could get the job done in Common Lisp in reasonable time but there are simply not the right libraries available" niche pretty well. As much as it pains me to admit it: Libraries do matter to the extent that if I have to choose between a nice macro system and a healthy ecosystem of high quality libraries for my application domain, I always choose the latter. Hence, I choose Python over Common Lisp.

    8. Re: What it is used for? by Anonymous Coward · · Score: 0

      "So what niche does Python fill?"

      For me, Python fills the utility niche. It doesn't fulfill the graphics niche, the curses niche, or the widget niche. Python is my go-to tool for parsing tasks and "dictionary" lists (associative memory). Its immediate feedback is its strength and virtue. It can be "compiled" into libraries of re-useable code.

      You wouldn't think of developing an operating system or a serious compiler, or doing a serious simulation, in Python. You wouldn't write a flight simulator in Python. You wouldn't develop GIMP or a video editor in Python. I play PySol with pleasure, but I wouldn't write my own version of Freecell in Python. I wouldn't write AlphaGo, FineArt, or DeepZenGo in Python.

    9. Re: What it is used for? by Anonymous Coward · · Score: 0

      It's used everywhere. Python is a glue language. Not sure why, but that concept just seems to drive people here crazy

    10. Re:What it is used for? by Anonymous Coward · · Score: 0

      Coding a GUI in python is very quick and convenient, it has incredibly powerful plotting, scientific libraries as well as complete bindings to the standard libraries, network protocols, databases, etc. I have a very hard time seeing why it is not suitable for application programming, the only real problems lack of compiler (Runtime testing is a PITA), and cumbersome deployment on Windows.

    11. Re:What it is used for? by Anonymous Coward · · Score: 0

      "PHP is used for relatively simple web stuff, because it's easy and works and has wide library support"

      PHP powers 75% of the dynamic web (20% ASP.NET, 5% other). Python on the web is 1%. PHP also makes for an excellent command-line scripting language, which is something that most people seem to miss. I know people who write all of their cron jobs in PHP and I've even seen long-running system services pop up lately written entirely in PHP. Also, if PHP doesn't do something that has to be performant, the language can be easily extended via PHP extensions written in C (or C++) and optionally deployed via PECL. PHP also has package management via Composer, PECL, and PEAR if you are into that sort of thing. All of the early complaints over PHP being "terrible" have been addressed over a long period of time. It's stable, proven software that doesn't rock the boat between major releases.

      In short:

      - PHP powers web applications of all sizes (e.g. millions of lines of code) as well as the backoffice of several large organizations.

      - Implying that PHP developers are inferior isn't a good way to win points.

    12. Re:What it is used for? by Anonymous Coward · · Score: 0

      What about Erlang, lisp, ruby, go, rust and swift?

    13. Re:What it is used for? by Anonymous Coward · · Score: 0

      PHP powers 75% of the dynamic web (20% ASP.NET, 5% other).

      That's mostly WordPress. WordPress was obsolete when it was written, and it's easily the worst popular codebase in existence.

      Python on the web is 1%.

      The web is shockingly not all there is to computing. However, it's also worth noting that Laravel has only recently become more popular than Flask (as measured by Google Trends). Popularity is a pretty stupid metric but the comparison of PHP web frameworks to Python web frameworks is not going to be hugely favorable to PHP, and Python can be used for things that aren't web-centric.

      PHP also makes for an excellent command-line scripting language,

      Only if you have no basis for comparison. There isn't even a decent option parser. Check out the highline library for Ruby, as one of a number of good libraries for that platform.

      I know people who write all of their cron jobs in PHP and I've even seen long-running system services pop up lately written entirely in PHP.

      What do you want, a cookie? For non-PHP devs, the parent thinks this is remarkable because most PHP applications only execute for the few hundred milliseconds needed to serve a web request.

      Also, if PHP doesn't do something that has to be performant, the language can be easily extended via PHP extensions written in C (or C++) and optionally deployed via PECL.

      Do you know how we can tell that you don't know any other programming languages? The languages which can't use C extensions are the minority.

      PHP has generally fixed its shit. PHP7 has become shockingly fast for an interpreted language, leaving Python, Ruby, and Perl in the dust (JavaScript is still faster). PHP tooling and code quality has also become much better than anyone coding ten years ago could have believed. The language retains some warts, in particular its boolean types. However, even if you managed to fix all the problems with PHP, perceived or real, you would still be left with a boring, verbose language without any novel features whatsoever.

      JavaScript beats it on speed, and nearly every other interpreted language has nicer and/or more expressive syntax, but the worst thing that could be said about PHP is that it is a prison for small minds. In the words of Alan Perlis, "a programming language that doesn't change how you think about programming, is not worth knowing." PHP simply has nothing going for it. PHP developers are inferior not because there's anything wrong with the code they write or the problems they solve, but because they have no idea what else is out there.

      Source: I am a professional PHP developer, at least until this project gets over.

    14. Re:What it is used for? by Anonymous Coward · · Score: 0

      Perl is dying out, but is still used for unix automation a fair bit.

      Maintenance of Perl code is usually a nightmare - it was a badly designed language from day one and hasn't evolved particularly well. There really isn't any legitimate reason for competent people in good organizations to be using this language for new scripts. Today's Perl programmers mostly seem to be people looking for job security who don't care about the long term harm they do to their employers, or people stuck maintaining old systems (perhaps written by people in the former group) who have no choice but to live with Perl.

      Ruby is a far better choice for text scripting today - and hence the majority of unix automation tasks.

  10. 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.

    1. Re: Wrong on all accounts by K.+S.+Kyosuke · · Score: 1

      Not to mention that the compiler doesn't actually get in your way in many Python-like-ish languages that actually have one, such as Common Lisp or Chez Scheme. In fact, Chez Scheme could probably teach a thing or two to Python devs about implementation craftsmanship and quality.

      --
      Ezekiel 23:20
    2. Re:Wrong on all accounts by Anonymous Coward · · Score: 0

      Old grey beard here.

      Python is great for outsourced bids where the customer ticked the Agile way box's
      A mark up language for prototypes, and lots of extra dollars to make it ready for enterprise level. Is does not scale - but the modern lowest cost bid Agile teams don't care - it is profitable and money for jam. Python ticks the sprint boxes as well.

      Many Devs don't care about type strictness - when they could. Many wont code input
      many devs don't understand classes or inheritance, checking or string exploits - lazy shits.
      Many so called Devs can't do real debugging or single step diagnosis
      Many don't know compilers have BOUNDS checking built in, or overflow - I guess one gig rocket exploded because of an overflow. I counted 120 options on one compiler.
      Fujitsu Cobol had DSECT's attached to keyed memory - never EVER any memory leaks or self modifying code - viruses would never work.
      Yet the migration/promotion template was in a word lame. Compounded by a team of testers who were never taught to debug or look at asserts or compile options - because developers did that stuff.

      Every language has its uses. Java is on the nose. Python has its uses.
      C and C++ and Cobol require tech savvy managers who actually understand IT. I suspect the Google spawned languages will win out. They are scaleable and just work. (And invented out of necessity). The Google ones are also 'Agile' testable. I suspect they have not caught on because employment firms cannot find enough 10 years experience people yet.

    3. Re:Wrong on all accounts by K.+S.+Kyosuke · · Score: 1

      Many don't know compilers have BOUNDS checking built in, or overflow - I guess one gig rocket exploded because of an overflow.

      One might argue that the Ariane 5 incident was primarily due to lack of testing. Checking the bounds during the flight and not knowing what to do when they're violated during the flight would have been no better than overflowing during the flight. (Maybe saturation arithmetic would have worked for some situations?)

      many devs don't understand classes or inheritance

      Most of all the devs don't, unless they've done Smalltalk or CLOS and read Touretzky's book on inheritance systems. Or did you mean just using them? To wit, many people don't understand cars but they still use them. Mostly because they don't have to.

      Many so called Devs can't do real debugging or single step diagnosis

      You mean Hoare triples with the latter? Almost nobody does it these days.

      --
      Ezekiel 23:20
    4. Re: Wrong on all accounts by butzwonker · · Score: 1

      Chez scheme is awesome, AFAIK it's the fastest full-fledged scheme implementation, and I really hope that Matthew Flatt rewires Racket to use it as a backend implementation (if I understood his announcement correctly).

    5. Re: Wrong on all accounts by KGIII · · Score: 1

      I just want to point out that I love these threads. I am not a programmer, but I have programmed out of necessity. I have one formal class in C, and that was in 1987, I think. I'd eventually hire competent programmers. I learned a great deal from them, as my time spanned the glorious days from about '91 to '07.

      I read many of these threads, with great interest. I usually have a few more tabs open, so that I can look up terminology and investigate unfamiliar things. It was great to be able to work with some true masters of their craft. Eventually, I was pretty much forbidden to touch my own code - an agreement easily reached. After all, if I could do what they had done, I'd just have skipped the middleman and done it myself.

      Each time a thread comes up with this as the content, I move one step closer to getting more proficient. I have kinda sorta taken up Java as a hobby. Don't blame me, I asked Slashdot and that's the answer they came up with. ;-)

      Anyhow, my point is to express gratitude. I realize the thread is stale and this comment is well below the fold, but I am grateful. Just because I am old, doesn't mean I want to stop learning. These threads, specifically the content created by those who comment, are both motivational and informative.

      When I was still working, I had the chance to work with graybeards from a bygone era. They were so good that it was an honor to give them money. It was even more an honor when they helped me to understand things better, increased my intellectual curiosity, and they would actually listen and, mostly, behave when we had clients in. If I'd been well behaved, they would even wear shoes. They sure as hell weren't going to wear shirts with collars.

      They were heady days, as the tech changed and compute cycles became less expensive. Developers and engineers kinda remind me of semi-wild horses. If they listen, that's probably because they respect you. However, they thrive when given their freedom and encouraged to run. Give them their lead and their head lowers and you can experience the figurative ride of your life.

      I'm not sure how many of those still exist. Given my experience, that was once the norm. Today, it seems less likely. Today, they seem to largely have an abstract knowledge, at best. There are exceptions, I speak only of averages and have my obvious limits of not seeing everything.

      It's not easy to explain? When I hired experts, I asked them what best practices were. When answered, I went further and asked why those were the best practices. I asked how they learned those best practices. I asked what the results would be, if those best practices weren't followed.

      I'm, again, not a programmer.

      Today, it seems that most have stopped asking why those practices are the best practices. They'll do it, but they don't seem to care why. They don't seem to want to ask deeper questions. They don't know the things that some of you appear to know, and that's probably because they've never thought to ask. They know that to do X, you do Y. They may not even understand X or Y.

      It's a bit like seeing the difference between a craftsman and a construction worker. I admit my bias, but I think I was fortunate to be in the best era for computing. Many universities barely had a CS department, and fewer had such at a graduate level. Then again, there weren't a whole lot of traffic engineers and not a whole lot of people in the field of modeling traffic.

      Anyhow, it was great to be there. It was an honor to work *with* them. I always try to use the word 'with,' by the way. I owned the company and I was certainly the boss, but they didn't work for me so much as they worked with me. Without them, I'd have gotten much less accomplished. Without them, I'd still have to work.

      It's great to read these threads, and to see the exchange of insights and observations.

      --
      "So long and thanks for all the fish."
  11. eh by buddyglass · · Score: 2

    I could see it supplanting Java in some situations and utterly obliterating Ruby and PHP. That said, I like compilers, even if they're compiling to byte code. And I don't find refactoring to be a chore. Especially when your IDE does some of the more mundane tasks for you.

    1. Re:eh by Ambassador+Kosh · · Score: 2

      I can easily see it supplanting Java in many situations. My experience is that usually python solutions end up faster and easier to work with than Java ones. Mostly because of the libraries. It is easy to make a cross platform python program that uses native gui libraries, image libraries, numerical libraries etc.

      When I have looked at things like simple numerics in Java it gets killed by C++ and by Python since Python programs will normally rely on scipy which will in turn rely in BLAS and LAPACK. From everything I have seen so far calling BLAS from Java through the C runtime has higher overhead than doing the same from Python and the pure Java numeric runtimes are BAD.

      It is just easier to end up with cross platform working code by coupling Python to low level libraries.

      --
      Computer modeling for biotech drug manufacturing is HARD! :)
    2. Re:eh by Anonymous Coward · · Score: 0

      Yes, slating compilers is stupid. They prevent many entire classes of errors that interpreted languages cannot catch, and interpreted language can simply never be as performant simply because they inherently have to do more checks and conversions at runtime.

      This is precisely why compiled languages are still the go to choice for the vast majority of businesses. Even the likes of Facebook ended up trying to push PHP through a compiler for precisely these reasons.

      So great, you can slap shit together faster, wonderful, except you lose way more than the time lost slapping it together in testing and debug because you have to test for more, and debug more, and the net result is that it's still shit.

      Interpreted languages are great for prototyping, or for offering scripting functionality to applications, but for full production systems they're shit because they inherently result in poorer quality software and poorer performance by their very nature.

    3. Re:eh by buddyglass · · Score: 1

      For sure, doing UI and/or numerical stuff in Java isn't great. Could definitely see Python taking over those situations. My point of reference is that of someone who's done Java and Ruby dev, but not Python per se. I find that when working with Ruby code I make stupid mistakes that a Java IDE+compiler would have caught immediately. I also find that refactoring is actually easier in Java land due to all the things most popular Java IDEs do for you. Renaming things, changing includes, etc.

    4. Re:eh by Ambassador+Kosh · · Score: 1

      I normally use an IDE when writing Python code. I like having things like a working debugger when I can just set breakpoints and inspect variables along with having things like command completion. I used to use PyCharm but a while back I switched to using Visual Studio and I have really liked that. I tend to use the Intel python distribution with Visual Studio for development under windows and once the software works I deploy it to Linux servers for the heavy lifting.

      The C++ based simulator I work on also works on Windows and Linux without any problems and Intel Parallel Studio can profile a Python application and the stuff that it calls. This makes life much better when working on HPC software that is controlled by Python to find out where problems are.

      --
      Computer modeling for biotech drug manufacturing is HARD! :)
    5. Re:eh by Anonymous Coward · · Score: 0

      ...I like compilers, even if they're compiling to byte code.

      CPython byte compiles. It's just that the compile step is normally implicit. That's what those *.pyc files are.

    6. Re: eh by Anonymous Coward · · Score: 0

      The trick is to use Python for high productivity and then - where needed for performance - replace time sensitive module with C.
      The latter is less needed than you think.

      And Python is fast in many places as there are many high-level funcs implemented in C. In such cases the Python interface is just a glue binding to an efficient C library.

      I grew up with C/C++ and have plenty of experience with Java - but my first go to is Python.

  12. Dominant where? by Anonymous Coward · · Score: 0

    There is no one language that can dominate all aspects of programming, but I feel that for anything that can sensibly be done using Python, it's probably one of the best choices. Python seems to be the best fit for anything that doesn't require best performance.

    1. 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.

    2. Re:Dominant where? by Anonymous Coward · · Score: 1

      Non-issue. It's no different than agreeing on a nomenclature before starting any other software collaboration. If you don't, you'll get a big mess, regardless of language.

    3. Re:Dominant where? by goose-incarnated · · Score: 2

      Non-issue. It's no different than agreeing on a nomenclature before starting any other software collaboration. If you don't, you'll get a big mess, regardless of language.

      Incorrect - in non-python language I can run an indent program, turning the big mess into a non-existent one. In python your big mess has to be manually fixed by a human.

      --
      I'm a minority race. Save your vitriol for white people.
    4. Re:Dominant where? by barbariccow · · Score: 1

      I've never had a problem merging anything since I stopped using subverison... and cvs... and copying files to NAME_DATE_STRING..... https://git-scm.com/

    5. Re:Dominant where? by Anonymous Coward · · Score: 0

      Years and years of practical experience just says that this is not true. I postulate that it would even be non-trivial to construct an example where this could be shown to be an issue while merging. Since initial whitespace is certainly not treated as insignificant by the version control system (unless you have some really iffy settings), there is just no real way to "accidentally" insert flawed logic in the way described -- at least it would have to be some seriously exotic situations.

      A common denominator among Python critique on Slashdot is that it seems to be based on a complete lack of experience using the language. There certainly are some really nasty areas of Python, but all that is parrotted are some imaginary whitespace issues and some imagined horrors of the GIL. Why not talk about the miasma of non-Pythonic GUI frameworks (wxPython, PySide, PyQt, ... -- they all have some major deal-breaking drawbacks), of the ineptitude of freezing applications (PyInstaller, cx_Freeze, py2exe, pynsist, ... -- and the absolute horrors of using any of these for a sizable project), the chaotic standard lib implementation of dates and timezones, etc.? No, let's get hung up on mixing tabs and spaces and similar practical non-issues.

    6. Re: Dominant where? by Anonymous Coward · · Score: 0

      Totally made up non-issue.

      Sane programmers have their editor save tabs as spaces.

      After a decade of doing Python that never actually came up as a real world problem.

      It only exists as an issue in threads like these.

  13. You can't build proper... by waimate · · Score: 0

    ... skyscrapers, bridges, or rockets without Lego.

    Yes, you need Lego. But yes you also need to move on.

    Python is for kids and scientists. Doesn't mean it's bad and doesn't mean it doesn't have its place. And doesn't mean it's not useful in a limited arena.

    But dude, you have to grow up a little some time. That, or get a Nobel prize.

    And that's the thing with Python -- it's for people feeling their way.. either feeling their way through their chosen profession or feeling their way through their chosen physical universe (and heading toward a Nobel prize). If what you want is to be awesome in your chosen profession, then you either need to be an astrophysicist or need to move past Python.

  14. What is a "dominant" language? by Bearhouse · · Score: 1

    Because if we're talking about stuff that's used everywhere that would be C in its various iterations plus Java...

  15. Lol by Anonymous Coward · · Score: 5, Interesting

    Is that a parody?
    "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"

    Sure, who needs good tools when you can just do the work of the compiler yourself?

    I'm pretty sure - the day will come where even the author will be bored of checking datatypes and constraints in unit tests that have to cover all possible runtime paths. For me the future will be a language with a really strong type system, that can be verified by the machine as much as possible. You can't have systems crash after 4 days of number crunching because it finally reached that stupid mistake in one path that was forgotten in the unit tests.

    We have computers to do that work for us, not the other way round.

    Oh and of course we'll use machine learning as much as possible to automate the automating.

    1. Re: Lol by K.+S.+Kyosuke · · Score: 1

      What you're asking for is called "a non-decidable type system". Shen already has it if you want it. So does Haskell if you try hard enough with extensions. Ultimately it works about as well as your unit tests.

      --
      Ezekiel 23:20
    2. Re: Lol by bn-7bc · · Score: 1

      Ok I know this is slashdot but still, Wghat yoy do with yoy bodely fkuids, and with what person/persons you decide to have sexual encounters is up to you, but I for one feil to se the relevance in a discusion about programming. If i'm missing somthing I apreciate feedback Have a nice day

    3. Re: Lol by K.+S.+Kyosuke · · Score: 1

      but I for one feil to se the relevance in a discusion about programming

      Genetic programming? ;)

      --
      Ezekiel 23:20
    4. 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.

    5. Re:Lol by MatthiasF · · Score: 2

      I wish I could find an IDE worth learning so I could stop needing to learn all these damn languages.

    6. Re: Lol by Anonymous Coward · · Score: 0

      What you're asking for is called "a non-decidable type system".

      I think that depends on how much the OP wants to actually prove with the type system. Business applications may be large but may only require simple, repeated application of rigor.

      One of the good and bad things about Haskell - at least as far as I can tell, given my imperfect level of understanding of the power of all of the language extensions - is that the developer can select the level of complexity of compile-time type proofs.

    7. Re:Lol by barbariccow · · Score: 1

      vim<ENTER>

      q1

      y1<UP>

      p

      p

      p

      q

      q2

      @1@1@1@1@1@1@1@1@1

      q

      q3

      @2@2@2@2@2@2

      q

      @3

    8. Re:Lol by Anonymous Coward · · Score: 0

      I don't think it is possible to have a Python program crash after 4 days. Whenever I see an application on Linux crash after half an hour of normal usage I check what it was written in, and 9 times out of 10 it is Python.

  16. False equivalence. by Lanthanide · · Score: 2

    False equivalence. It doesn't say "one" programming language, it says "dominant" programming language.

  17. Global Interpreter Lock by fazig · · Score: 2

    Is that still a thing in Python? I've been out of the loop for quite some time. But the last time I've been into it, this 'feature' was a big obstacle for modern hardware, considering the hardware trends of having more and more CPU cores.

    1. Re:Global Interpreter Lock by oakgrove · · Score: 2

      It's still a thing and likely will always be a thing. That said, the multiprocessing module makes writing code that can spin up as many processes as you want and allow them all to communicate is relatively painless.

      --
      The soylentnews experiment has been a dismal failure.
    2. Re:Global Interpreter Lock by discord23 · · Score: 1

      Every python debate ever summarized in two comments:
      >> Has it solved its threading issues yet?
      > No, but you can call fork
      Really now

    3. Re:Global Interpreter Lock by oakgrove · · Score: 2

      Maybe true but I just say that I write my fair share of Python scripts using multiprocessing and it works for me. That said, if somebody feels like the GIL is truly getting in the way, there is always IronPython and Jython, neither of which have this restriction. I also believe the PyPy team is working feverishly on getting rid of the GIL in their implementation which among other things is much faster than regular Python thanks to just in time compilation. I've used it for a few things and heartily recommend it if speed is of the essence.

      More info here for those inclined.

      --
      The soylentnews experiment has been a dismal failure.
    4. Re:Global Interpreter Lock by Anonymous Coward · · Score: 0

      Multiple processes can solve problems - and indeed are a great solution for some problems - but it isn't a cure. Multiple processes requires inter-process communication mechanisms to share data while multiple threads can rely on CPU memory locked instructions. If you have a program that requires parallel computation as well as data-sharing, nothing can beat threads. That said, a good solution might involve a combination of threads and processes, but processes are hardly a replacement for threads.

    5. Re:Global Interpreter Lock by Anonymous Coward · · Score: 0

      The GIL will probably not be removed in PyPy until they break the C API, but there might be ways to do this without much pain. The same ideas are floating around CPython itself, with the GILectomy project. It will be necessary to break some assumptions in the C API, though, so it will not be met without fight.

      As you mention though, the GIL is a miniscule issue in practice. Correct use of threading and multiprocessing will cover more or less all practical cases. I am not saying Python is better of with the GIL than without -- just that it in actual real world applications is quite irrelevant.

  18. Yes and for bad reasons by plopez · · Score: 4, Interesting

    The same reason we had languages such as Basic and Pascal as languages. Namely universities using them in intro classes because they are "easy". So people with no concept of the scale or complexity of commercial software think it is the be all and end all of programming. So you get MBAs mandating Python on their projects even though it is the wrong tool for the job.

    --
    putting the 'B' in LGBTQ+
    1. Re:Yes and for bad reasons by tomxor · · Score: 1

      I duno... was Basic good in that it introduced a lot of people to programming? yes it was a terrible language, but it's a foot in the door.

      I have mixed feelings about Basic becaus on the one hand it was very easy, on the other hand as soon as you need any structure it makes programming look awful and as my first language it did put me off quite a lot, I then revisited programming much later. I think python is a massive step up though, and a language without boilerplate and compilation is probably worth it for an introductory language, because lets be honest those things are not fun.

    2. Re:Yes and for bad reasons by drinkypoo · · Score: 1

      I duno... was Basic good in that it introduced a lot of people to programming? yes it was a terrible language, but it's a foot in the door.

      It's good in that it could be implemented on the kind of computers that schools could afford. Although, if you think about it, the Apple II (which was the early dominant computer in education here in the states, at least) was more than capable of running a visual editor, so schools could have at least used a BASIC editor that would autogenerate line numbers for you, which would have made the whole thing a lot more accessible.

      BASIC isn't a great language in any form, but it's adequate. You can get stuff done in it, I've seen real work done with BASIC. For example, are you familiar with the Omniremote module that gave high-power IR to Palm devices? The creator laid the groundwork analyzing IR using the Amiga 500's onboard hardware in the version of Microsoft BASIC that shipped with the system.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    3. 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.
    4. Re:Yes and for bad reasons by Anonymous Coward · · Score: 0

      So you get MBAs mandating Python on their projects even though it is the wrong tool for the job.

      Ugh. This exact thing happened to me. Mod parent up! Python isn't a great language but it's getting popular because there is simply less to type (curly braces). It's a pretty bad language for large scale programming. But it's popular. And somehow I am on a large scale project where it got chosen because it's popular.

      Well, not 100% true. There is some C and Java on this project too. But guess where 99% of the bugs are and 20% of the functionality is? The Python parts. It's become a running joke at this point every time a bug is found.

    5. Re:Yes and for bad reasons by Anonymous Coward · · Score: 0

      >> I see absolutely no downside to Pascal.
      it's not used any more ?

    6. Re:Yes and for bad reasons by Anonymous Coward · · Score: 0

      I really shudder to think of MBA's making any technology decisions... especially the ones with "programming experience".

    7. Re:Yes and for bad reasons by Anonymous Coward · · Score: 0

      The size of an array is part of its type.

      Makes even C's pointer-offset arrays that are always overflowing look good in comparison.

    8. Re:Yes and for bad reasons by Anonymous Coward · · Score: 0

      > I think Pascal was awesome

      It really is awesome.

      > and I would always love to use it.

      Me, too.

      > I see absolutely no downside to Pascal.

      The begin/end pair. Even C brackets are better. But Python's structure by indenting is way better.

    9. Re: Yes and for bad reasons by Anonymous Coward · · Score: 0

      Don't worry about it - it's just an anecdote.

  19. Depends on the future by Opportunist · · Score: 2

    Python is easy to pick up and can do anything (on high level) that C can. On the other side, its drawbacks include being an interpreted language, meaning both that whoever wants to run Python scripts has to have the relevant interpreter on his system, which is arguably easier and more likely to work in Linux than Windows and that it will run slower and need more resources than a comparable C program.

    So whether Python will become the dominant language will mostly depend on

    1) Whether enough people with little to no programming experience feel the urge to create code.
    2) Whether enough people can be bothered to install the runtime to run said code.
    3) Whether we continue to have no problem wasting resources on inefficient code or whether we move towards more virtualization/containerization where the individual VMs have to do with very little CPU time.

    --
    We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    1. Re:Depends on the future by Anonymous Coward · · Score: 0

      I would hate to think you missed Nuitka:
              http://nuitka.net/pages/overview.html

      Very handy for taking Python code and delivering an executible.

    2. Re: Depends on the future by Anonymous Coward · · Score: 0

      Python is actually a compiled language.

    3. Re:Depends on the future by tepples · · Score: 1

      Whether enough people can be bothered to install the runtime to run said code.

      If you distribute a C program as source code, how many people can be bothered to install a compiler? Or if you distribute a C program as a Linux/x86-64 executable, how many people who currently use something other than Linux/x86-64 can be bothered to install a Linux/x86-64 virtual machine?

    4. Re:Depends on the future by djinn6 · · Score: 1

      1) Whether enough people with little to no programming experience feel the urge to create code.

      Yes, the amount of work that is waiting to be automated is enormous, and the number of people who are semi-technical is huge. If a programming language can connect the two, it will be very popular.

      2) Whether enough people can be bothered to install the runtime to run said code.

      Py2exe takes care of that on Windows. On Linux it's pre-installed.

      3) Whether we continue to have no problem wasting resources on inefficient code or whether we move towards more virtualization/containerization where the individual VMs have to do with very little CPU time.

      When your software engineers cost $100,000 a year and your machines cost $200 a year, you have to be running very large workloads for performance to matter. And while those aren't uncommon, there are far more programs that aren't performance-sensitive (whether measured in lines of code or their productivity or the number of programmers).

      And C++ isn't even the biggest competitor to Python, that role belongs to Javascript.

    5. Re:Depends on the future by Opportunist · · Score: 1

      That's why you usually distribute a C program as source for Linux and executable for Windows.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
  20. I hope not by Quakeulf · · Score: 1

    I've only used the Pythons for slite scripting in Blender 3D, but the syntax feels too subtly error-prone for me to feel comfortable to deal with. At least the C-langwitches and Java/Script are easier to scan in that regard.

    1. Re:I hope not by goose-incarnated · · Score: 1

      I really hope not, Phyton is an ugly language, widely adopted or used doesn't say anything about the language being good.

      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.

      What nonsense is that? someone who says something like that has never really done any real development and is just a hack..

      That's the problem with python - because someone can pick it up in a weekend the majority of the users are the weekend warrior types, which in turn means that the majority of the design decisions are for people with no aptitude for programming.

      In a nutshell, this is why python is so popular.

      Why the hell are you a slave to an IDE if you're using a compiler, how does the writer of the article do it's refactoring or test driven development. I don't buy for second he/she does everything by hand.

      The odds are high that the author does TDD in order to catch errors that the compiler would have caught (wrong types in function calls, for example). They aren't unit-testing their application logic, they are integration-testing their call interface.

      --
      I'm a minority race. Save your vitriol for white people.
    2. Re:I hope not by BlackPignouf · · Score: 1

      Javascript easier to scan than Python? You must be trolling.

    3. Re:I hope not by Quakeulf · · Score: 1

      Well, maybe it's my familiarity with it, but no brackets, man.

  21. I hope not by SuperDre · · Score: 1
    I really hope not, Phyton is an ugly language, widely adopted or used doesn't say anything about the language being good.

    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.

    What nonsense is that? someone who says something like that has never really done any real development and is just a hack..
    Why the hell are you a slave to an IDE if you're using a compiler, how does the writer of the article do it's refactoring or test driven development. I don't buy for second he/she does everything by hand.

  22. Who cares? by Anonymous Coward · · Score: 0

    None of you nerds are going to ever get a job again. The H-1B influx and outsourcing process are NOT going to stop. Globalization will NOT be stopped, let alone reversed. Your childish dreams of revenge are over. Weren't you supposed to be "our bosses" by now? Har har.

  23. Clickbait is clickbait by Anonymous Coward · · Score: 0

    I don't want just the one and python isn't a particularly great one to be your be-all-end-all. Even as a teaching tool I find it... dubious. When I attended university they'd just switched from teaching with first pascal then C to all-java-all-the-way. This, in my mind, is a mistake, even for a "technical university". No, especially for a "technical university".

    As an engineer I don't need shitty tools (and back in 1997 java was a shitty turd; it still is, just with more polish), much less an "one true tool" and no notion there are other tools. Especially not because that's what "the industry" (really, business, for back-ends formerly written in COBOL) happens to use this week. I need to know different tools, their tradeoffs, in fact I need to know how to build the tools to make the tools, if need be.

    For this and many other disappointments I ultimately flunked that course so I'm no engineer. But still.

    My conclusion is that they weren't really teaching the theory of programming, which stands to reason because "technical university", nor the practice of engineering: They were teaching the semblance of productivity for business purposes. For what else is a computer but a business machine?

    In the same sense, believing python as the be-all-end-all of programming languages says quite a bit about how you look at programming. The language, for all its pretense, is a nice little garden for a specific set of purposes but is extremely limited outside of that space. If you cannot imagine you would ever leave, or simply don't care to stray outside of that garden, why, it might be your entire world.

    So what we really have here is "opinion" of the tried-and-true "all the world is $MY_FAVOURITE_THING" pattern, which might be "windows", "linux", "a vax", "a C machine", "java", "python", or anything else you care to name. It's really just arrogance in a can.

    1. 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.

    2. Re: Clickbait is clickbait by turp182 · · Score: 1

      I prefer to hone mastery for a specific set of tools. I could switch up, but the wideness of today's frameworks means it takes at least at couple of years to be an expert.

      I am learning iSeries at a very low level, to help people get off of them. Both interesting and frustrating (regarding DB design and ancient programming practices).

      --
      BlameBillCosby.com
    3. Re: Clickbait is clickbait by Anonymous Coward · · Score: 0

      ... and the slight problem that moving [i]off[/i] AS/400 is swapping a long-term solution for a short-term fix. The fix is for "not being modern", the solution is for business continuity. Swap one for the other and suddenly your business is a lot less viable, despite the modernity.

      Yes, it's stone-old tech. But it worked fine for a long time, it still works fine, and it will work fine long after the incompatible great-grandchildren of today's "modern" tech have gone the way of the dodo. Very little else can do that.

    4. Re: Clickbait is clickbait by Anonymous Coward · · Score: 0

      Every language?

      At a language a minute for the whole term, you'd barely have scratched the surface.

      Even choosing representative languages and you'd not have had time for them or their variants: FORTRAN, LISP, Algol, Simula, Smalltalk, BASIC, C, Java, C++, Python, Perl, C#, Lua, Javascript, TCL, Snobol, VB, Haskal, SQL, Ruby, PhP, COBOL, Prolog, .....

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

    I should hope not. Ruby is much nicer.

    1. Re:Ruby by Anonymous Coward · · Score: 0

      Okay, brace yourselves. This thread is going to be filled with replies that confuse Ruby the language with Ruby on Rails (the web framework.)

    2. Re:Ruby by Anonymous Coward · · Score: 0

      Ruby syntax is glorious, the implementations not so much. The same arguments about prototyping and unit tests has been the case of Ruby for the longest time, but the world progressed since that. Last time I checked, Ruby was a bit faster than interpreted Python out of the box. However, Golang makes the discussion moot since it is natively compiled, imperative, abstracts OO neatly using interfaces, do static typechecking in a way that is instructive and generally forwards all of language, libraries and tooling in an uncomparable practical manner.

      Of course depends what you want to do in the end, and both Ruby and Python deserves respect for being so easy to learn and become productive in.

    3. Re:Ruby by BlackPignouf · · Score: 4, Informative

      Ruby lover here. I can code Ruby while I sleep, but I felt a bit left out because there are so many awesome Python projects.
      In comparison, there's Rails as awesome Ruby project with a lot of momentum, and .... that's about it.

      With Ruby knowledge, it's actually pretty easy to grasp Python. There are a few gotchas and the syntax feels a bit boring compared to Ruby, but it's also easier to read other people's code because it's usually more explicit and a bit less dynamic than Ruby.

      I still love Ruby, but it's good to be able to write a few lines of Python and release the power of Numpy/Pandas/Sympy/Matplotlib/NetworkX/... It took me about 2 weeks to learn enough Python to use those libraries, and I still learn new stuff every day.

      Some parts of Python's syntax are really nice, e.g. list comprehension :

          >>> [x**2 for x in range(10) if x % 2 == 1]
          [1, 9, 25, 49, 81]

      It's completely different than all the Enumerable methods in Ruby, but it's very powerful and quite easy to read after a while.

    4. Re:Ruby by Wdomburg · · Score: 1

      When performance is a significant consideration there's JRuby.

    5. Re:Ruby by Anonymous Coward · · Score: 0

      Ruby is an abomination, the language itself looks chaotic!

    6. Re:Ruby by kwerle · · Score: 1

      Some parts of Python's syntax are really nice, e.g. list comprehension :

          >>> [x**2 for x in range(10) if x % 2 == 1]

          [1, 9, 25, 49, 81]

      It's completely different than all the Enumerable methods in Ruby, but it's very powerful and quite easy to read after a while.

      (0..10).select{|i| i % 2 == 1}.map{|i| i**2}

      I dunno - to me that looks almost identical - mostly just a little juxtaposed. Is it just me?

      I've spent about the past decade doing Rails, am currently stuck in javascript, and may return to Rails or move to Python (which I did casually around the turn of the century).

    7. Re:Ruby by BlackPignouf · · Score: 1

      The order is different, which might become more apparent with nested comprehensions and chained Enumerable methods. For brownie points, you could have written (0..9).select(&:odd?).map{|i| i**2}, which brings us back to Ruby's TIMTOADY against Python's zen ("There should be one — and preferably only one — obvious way to do it").

      BTW, Python's range(10) has 10 elements (between 0 and 9), so it's equivalent to (0...10) or (0..9)

    8. Re:Ruby by Anonymous Coward · · Score: 0

      &:odd? (aka Symbol#to_proc) makes me queasy.

      I have the impression that it was a RoR extension which got adopted by core...

    9. Re:Ruby by Anonymous Coward · · Score: 0

      It's part of Ruby 1.8.7, so like six major versions behind. Some people just want to code Ruby like it's Java.

  25. Python is great for command and control by Ambassador+Kosh · · Score: 3, Interesting

    There are lots of good libraries for python that hand off the heavy lifting to c,c++ and fortran. Python works well for gluing these things together.

    Python on its own though is quite slow and if you find yourself needing to chain together calls between low level libraries where each call is quite fast the cost of gluing them together can be extreme. However the parts of the code that are seriously CPU bound tend to be fairly small while all the rest of the stuff build no top takes up most of the time to write.

    I would say for most software you could do a python wrapper around a C++ core and end up with more maintainable and faster code. In my case I use a python optimization framework around a c++ based simulator. Writing all the optimization code in C++ would be a pain in the neck and provide no real speedup since the current code is not speed bound in the python part anyways. I see the same things in cluster control software when the code that distributes my jobs to the nodes and then gathers the data back and then makes the decisions on the next set of jobs to run accounts for 1% of the total runtime.

    I think this will result in better software overall with Python as the core language wrapping high speed libraries. In many cases those libraries already exist, where they don't exist you have to write them.

    --
    Computer modeling for biotech drug manufacturing is HARD! :)
  26. LOL by Otis_INF · · Score: 2

    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.

    No, dummy, the compiler is a large set of unit tests for you, ready to run, so you don't have to write them yourself. Why wouldn't you use a compiler so you can avoid runtime exceptions/errors? Why would you choose deliberately to postpone that to be checked at runtime or worse: that you have to write checks for all those cases yourself (and you'll miss a lot of them)

    The compiler isn't something used by 'slaves of an IDE', but by developers who know a compiler will save them from writing tests for situations already checked by the compiler. Oh, and it generates fast code ahead of time too, so your users don't have to wait for an interpreter to come up with fast code.

    --
    Never underestimate the relief of true separation of Religion and State.
  27. My biggest complaint other than indentation by Anonymous Coward · · Score: 1

    I code in Python these days more than I do my preferred language of C++.

    Most of my work is creating libraries that are pipeline building blocks for facility code. It drives me nuts when I have to refactor Python.

    In C or C++ the compiler would error wherever the types, arg count, and other things have changed. Python you literally need to know every line of code you have deployed that may be affected otherwise you won't know until code runs and throws up all over itself.

    This is compounded with Python not having types esp for function args. Also if you have a lib that while it doesn't directly interact with another lib, instead it's passed objects via an intermediate lib then holy shit you really can't find code that is affected by a changes.

    And that's just for trivial things like adding a new type, adding removing args, renaming functions, adjusting classes.

    1. Re: My biggest complaint other than indentation by K.+S.+Kyosuke · · Score: 1

      It makes sense to check for argument number, because calling a non-variadic function with a different number of arguments is never right. And languages like Scheme and their compilers can already do this well. But types (of arguments)? Seeing as Python is rather "objectey", that wouldn't probably make a lot of sense. Perhaps you're just providing a substitute value sometimes. Well, admittedly, that would be *technically* (behaviorally) the same object type, but I'm not sure that anyone has devised usable object type checking yet to account for this.

      --
      Ezekiel 23:20
    2. Re:My biggest complaint other than indentation by gnupun · · Score: 1

      This is compounded with Python not having types esp for function args.

      Maybe you need to update your Python version. Latest Python supports optional types:

      https://docs.python.org/3/libr...

  28. No, not for a long time. by Anonymous Coward · · Score: 0

    Python still defaults to ASCII as the character set. It's ASCII roots put it at a disadvantage. It's only positioned to be the dominant language of English speaking countries.

    1. Re:No, not for a long time. by vtcodger · · Score: 1

      Being as the world seems to be heading toward "thousands of languages but when people need to communicate, they'll use English and/or Spanish and/or Mandarin" I'm not sure defaulting to ASCII is that big a deal. Of course, you can't really write East Asian languages very well in ASCII. But are there Kanji (to use the Japanese term) based programming languages?

      (BTW, A few years ago, I was treated to the spectacle of two Chinese in a Chinese take out place in Vermont struggling to communicate in different Chinese dialects then finally giving up and switching to English -- which neither spoke all that well.)

      --
      You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
    2. Re:No, not for a long time. by barbariccow · · Score: 1

      For python2, if you don't set one in site.py (which you should). Python3 defaults to utf-8 (which again, can be changed with one line in a "config file")

      But learning that all text isn't ASCII and that "encoded" vs "decoded" data are different is one of the BIG challenges for a lot of folks to learn python3, or change from 2 to 3.

      Wasn't hard for me, having many years prior to learning python with other languages where I CHOOSE to blatantly ignore any non-ASCII encodings! bwahahaha!

    3. Re:No, not for a long time. by barbariccow · · Score: 2

      But are there Kanji (to use the Japanese term) based programming languages?

      My experience working with Japanese coders is that no major language supports arbitrary glyphs. If they did, it would probably be like the early specifications for perl6 with the "Yen" operator and whatnot. The language doesn't construct like Arabic languages.

      They just program in ascii with variable names and functions which they sound out to their words. But they can put Kanji or Katakana into comments above lines, and they generally over-comment.

  29. The answer is no by oakgrove · · Score: 1

    I really like Python. I find it faster to develop in, more flexible, and more ubiquitous than just about any other language. However, maybe 20 years ago when the world was simpler, it would have had a better chance at some kind of dominance. These days though, there are just too many niches it doesn't work in. Can't make first class apps for iOS or Android, can't use it natively to manipulate the DOM in a web browser. It's not as easy to use server-side like PHP. And on and on. Yes, Python can be used in all those roles if you bend and twist it enough but in most cases, there is a better domain specific language that people just default to.

    Personally I find Python to be peerless for system administration and automation. Even better than bash. I understand it's good for statistical and scientific programming too. That's it's place. Not "dominance".

    --
    The soylentnews experiment has been a dismal failure.
    1. Re: The answer is no by Anonymous Coward · · Score: 0

      Good comment. Except PHP is not a programming language and Python provides excellent libraries to build web sites at ease. eg Flask or Django.

    2. Re: The answer is no by Anonymous Coward · · Score: 0

      Except PHP is not a programming language

      Um, what? PHP is a server-side scripting language designed primarily for web development but also used as a general-purpose programming language .

      Python provides excellent libraries to build web sites at ease. eg Flask or Django

      Many languages provide "excellent libraries" for site building but PHP doesn't need any as it's all built-in. Not to mention the fact that basically every shared host in existence has it pre-installed. Not so for Python.

    3. Re: The answer is no by barbariccow · · Score: 2

      But I speak EXCLUSIVELY in "Personal Home Page"

      Don't you want "Personal Home Page" for your business?

      Crap I forgot <?php during some random error handling case and now it's printing all my source code....

      die('A lonely, sad, death.');

    4. Re:The answer is no by angel'o'sphere · · Score: 1

      Can't make first class apps for iOS or Android
      https://kivy.org/#home

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    5. Re: The answer is no by tepples · · Score: 1

      Crap I forgot <?php during some random error handling case and now it's printing all my source code....

      Every reasonable source code editor I've used will highlight the start of a literal block (?>) and the end of a literal block (<?php). It's little different from highlighting """ in Python.

    6. Re: The answer is no by barbariccow · · Score: 1

      It's not a highlighting issue. In my experience of dealing with other people's horribly written code, it is most common through a file being "included" which closes it, but the code continues thinking it's still open. If you are dealing with either file by itself, the highlighting is perfect. It's when they combine, often associated with error cases (like, you assume "!value" means you are including it as a template, and not that the value is null, etc).

      Sorry if that's not clear, but I've had that happen on.... well..... I think maybe every single PHP codebase I've had to inherit over the years.

    7. Re:The answer is no by oakgrove · · Score: 1

      I don't really see that as first class though. You'll always be a step behind the official API waiting for the next version of kivy to drop. And the official docs and support expect you'll be using one of the "blessed" languages so when you aren't, you can expect little bits of friction everywhere. That said, I like kivy and its spiritual predecessor sl4a. The latter actually got me into Python.

      --
      The soylentnews experiment has been a dismal failure.
  30. modules by DrYak · · Score: 2

    So, you can see the attraction of Python for, say a scientist - there are modules for many specialised, mathematical areas, all of which are very difficult to code from scratch, and although there are similar packages for C, C++ and FORTRAN, they are less easy to just pick up and use.

    Note that often, the Python modules *are bindings* to the C/C++ & FORTRAN packages.
    Python is literally the glue code layer that makes these modules "easy to just pick up".

    --
    "Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
    1. Re:modules by phantomfive · · Score: 1

      I like to write libraries in C, then use SWIG to make them available in basically every language. It's the most portable way to do things.

      --
      "First they came for the slanderers and i said nothing."
  31. Wheel re-invention by DrYak · · Score: 1

    or, in other words :

    Congratulations, you've successfully re-invented Perl (and bash to some intent).

    More seriously :
    yes, Python seem to be the current popular "glue code" language.
    Like Perl and shell-scripts before it.
    (and some BASIC dialects at some point in time in the microsoft ecosystem).

    --
    "Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
    1. Re:Wheel re-invention by vtcodger · · Score: 1

      "Congratulations, you've successfully re-invented Perl"

      Guido von Rossum has said that Perl and Python are pretty much the same language. And that seems correct. I don't see a lot of difference in coding in either language. But I personally prefer Python because when I can't remember syntax, I'm more likely to get Python right on my first guess. And I find Python to be a bit more readable six weeks or six months later. I think I have a lot of company on that.

      "(and bash to some intent)."

      Why would anyone want to reinvent the unix shell or any of its deformed children? About the best you can say for the shell is that it isn't as awful as IBM's OS/360 JCL. But few things other than the US Internal Revenue code, are.

      But yes, Python scripts can (mostly) replace shell scripts

      --
      You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
    2. Re:Wheel re-invention by drinkypoo · · Score: 1

      Why would anyone want to reinvent the unix shell or any of its deformed children?

      Now that we have lots of RAM, Unix's cheap process creation makes shell scripts haul balls. If what you're doing is making changes to many files, Perl (or whatever) may still be faster, but often the difference is irrelevant anyway.

      If you can do a job with a very small shell script, it's still often easier than doing it in perl or what have you.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    3. Re:Wheel re-invention by Ambassador+Kosh · · Score: 2

      I don't want to write a genetic algorithm with automatic switchover to various gradient descent methods based on local properties in any kind of shell script. The python version of that code takes up 1% of the runtime for me and serves as a command and control system for my c++ simulator. The same is true for plotting the results afterwards and evaluating the quality of the results.

      Almost all the command and control I am talking about using python for is not something I would EVER consider doing in shell script.

      --
      Computer modeling for biotech drug manufacturing is HARD! :)
    4. Re:Wheel re-invention by vtcodger · · Score: 1

      Seriously, I don't really have any problem with **SHORT** shell scripts. I actually use them fairly often. But if there is anything other than trivial logic involved, shell scripting is the road to eternal damnation. At least it seems so to me.

      --
      You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
    5. Re:Wheel re-invention by prunus.avium · · Score: 1

      Congratulations, you've successfully re-invented Perl

      Not quite. More like "Made a readable version of Perl." There's a reason Perl tends to be disqualified from any "obfuscated code" contests.

      Python seem to be the current popular "glue code" language.

      See OpenStack for a perfect example. It's just "glue code" around various virtualization packages.

  32. Googled: more common or more obtuse? by Anonymous Coward · · Score: 0

    I pretty much doubt the usefulness of those statistics.

    Obviously I google more when programming in python than with C, MySQL, or bash, because

    1) I am not familiar with it

    3) MySQL is more intuitive...

    Does it means I program more in Python, or that I am the last unicorn in earth doing that? Not really...

    1. Re:Googled: more common or more obtuse? by Anonymous Coward · · Score: 0

      and slashdot ate my point number 2) C and bash are way older and better documented, including in man pages. (and then timeout preventing me from posting...excellent...)

  33. Perl... by Freischutz · · Score: 2

    Python will never beat Perl ... ever!!! **Ducks for cover**

    1. Re:Perl... by ckatko · · Score: 3, Funny

      I find it disturbing that people would want Python to beat Perl.

      Women have enough problems with domestic violence. We shouldn't be supporting hitting a woman with a snake.

    2. Re:Perl... by vtcodger · · Score: 1

      You go around beating people/things with snakes, and you'll have PETA to answer to.

      --
      You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
    3. Re:Perl... by Anonymous Coward · · Score: 0

      I don't know; a woman with a snake sounds pretty dangerous. If she's hostile, how do you defend yourself?

  34. Python is doing well, but JS is ahead. by Qbertino · · Score: 0, Flamebait

    Big Python fan myself. It's my favorite PL. (Public Service Anouncement: Old-fart space-indenting whitespace-whiners please go f*ck yourselves and please quit pestering us with your petty issues. Seriously now, grow the f*ck up.)

    Point in case for getting into Python:
    Python is the only language that is used professionally in *all* industries. Science, Media, Entertainment, Games, Heavy Industry, Military, Services, etc. No other PL has such a broad adoption. Java is business (on the server-side, initially unintended), C/C++ is games, science and industry, PHP is server-side web. Python is trivially easy to learn without being so batshit crazy like PHP. At the same time it scales very well into serious projects and long-term maintainability is better than just about anything else out there.

    In popularity however, there is one exception going orthogonal to Python though and that PL is, of course, JavaScript. Yes, JS is/was a web frontend PL first and foremost, but browsers run everywhere and with Node JS returned to the server (it started out server-side on Netscape Server, which no one remembers aparently) and today, to many peoples surprise, JavaScript has just about won the PL wars. Sure some snobs are bickering about this, but those usually just haven't come to terms with this cold hard fact yet.

    So, in a nutshell, no, Python isn't winning the PL wars, JS most likely did that already. But I say don't hesitate to stay with and dive deeper into Python, Python is here to stay and that's a good thing, because it is a very good, modern PL. Unlike JS btw. which does have the one or other awkward/annoying thing vis-a-vis Python imho. But then again, it runs in the Browser, which is why I do more JS than Python these days. It's a bit of a shame if you think about it, I would like to do more Python.

    My 2 eurocents.

    --
    We suffer more in our imagination than in reality. - Seneca
    1. Re:Python is doing well, but JS is ahead. by Anonymous Coward · · Score: 0, Flamebait

      go fuck yourself you hipster twat.

      Python is a bunch of fucking shit, starting with the insanity of white space....

    2. Re:Python is doing well, but JS is ahead. by JasterBobaMereel · · Score: 1

      Javascript is a web scripting language, that can be used as a general scripting language ...not really comparable

      C/C++ is used in all these industries..and more
      Your Python interpreter is written in C/C++ ..
      The operating system you are running your Python interpreter on is written in C/C++

      --
      Puteulanus fenestra mortis
    3. Re:Python is doing well, but JS is ahead. by Anonymous Coward · · Score: 0

      This is about the dominant language which by definition means applicatoins, not lower level languages.

      The comparison is to Python though, and JavaScript includes WebAssembly which can bypass GC and do C/C++-level bitshifting in ways that Python can't. So JavaScript stil wins over C/C++ (or at least it will when browsers include thorough support for webassembly).

      C/C++ are important languages but they're not dominant.

    4. Re:Python is doing well, but JS is ahead. by Anonymous Coward · · Score: 0

      GP still has a point though: you don't need to write your interpreter or your OS every day. It is underlying infrastructure of abstraction layers, but end application programmer shouldn't have to bother with that ... much ... until the constraints are bumped into and the world is not enough. Waves of "closer to metal" languages popularity coincide with times when locust swarm of application programmers starts to starve, when low hanging fruits are all devoured and when it is time for scraping the jar for remnants of jam. It happens whenever hardware performance increase rate hits the wall or stagnation, or when another episode of "smartization" starts (current episode: "IoT").

    5. Re:Python is doing well, but JS is ahead. by barbariccow · · Score: 1

      which can bypass GC and do C/C++-level

      That's exactly what we need. A larger attack surface. Didn't we have an article the other day about having to click 3 times and hover over a link that you opened in an email from a stranger which executes powershell?

    6. Re:Python is doing well, but JS is ahead. by K.+S.+Kyosuke · · Score: 1

      It's not an attack surface to any greater extent that rented VM instances on hypervisors are in data centers already are.

      --
      Ezekiel 23:20
    7. Re:Python is doing well, but JS is ahead. by K.+S.+Kyosuke · · Score: 1

      Your Python interpreter is written in C/C++ ..

      Unless he's a PyPy user...

      --
      Ezekiel 23:20
  35. No, because it's too slow by butzwonker · · Score: 2

    I admire Python for its toolchain and libraries but it's just way too slow. Even Racket is faster and it's probably still too slow for my current needs. ( I use it for making a prototype first.) By 'slow' I refer to lack of snappiness and long startup times, these bottlenecks cannot be eliminated by writing support libraries in C. The actual algorithms I use don't need much speed, but the user interface and support functions like searching, directory scanning etc. need to be fast. You can fake speed by using a lot of threading in the user interface, but that's complicated, error-prone, and the end result still feels somewhat sluggish.

  36. Not a single bad word about Python by Nahooda · · Score: 1

    I work as a software developer and I'v known a lot of other developers now. Whenever the conversation is about programming languages it will sooner or later turn into a flame war such as 'I hate language X' or 'Language Y is the best'. I've heard practically any programming language out there being criticized by experienced senior developers... with one exception: Python. No developer I've ever met criticized it. Anybody seems to love it. And rightfully so.
    Besides Pascal it's one of my favourite programming languages: It's easy to learn, it's used in a lot of sectors and it seems to replace some of the older languages: In High Performance Computing it _seems_ to be slowly replacing Fortran and in systems administration it takes over the role of Perl as configuration language. Furthermore, it's used in Gaming as a scriping language (Blender Game Engine), it's used for Plug-Ins and configuration in many many Applications, in Web Development, in combination with R it's the de-facto standard in Data Science.
    I sincerely hope, that Python will become more popular.

    --
    Sigs suck!
    1. Re:Not a single bad word about Python by dyfet · · Score: 1

      For me, Python is the language I hope the other guy used if I have to maintain their code. That is, it's often easier to read and comprehend directly, and feels less convoluted to maintain a large code base in.

    2. Re:Not a single bad word about Python by histreeonics · · Score: 1

      Your developers probably never had to deliver industrial systems where a bug requiring a update can kill a product line and maybe your company. Runtime is way too late to discover a programming error, the lack of static type checking removes one of the handiest tools for preventing those. --- I spent a month trying to get python to do the things that are easy to do in C++ and was never satisfied with any of it. Tuples are great, everything else was toy-like or was beyond proving correct. --- Once upon a time microsoft basic did not have syntax for declaring variables. A large program I was coerced into writing in MSBasic had some weird non-reproducible behavior. When MS finally added declaration syntax I declared all my variables and discovered some misspelled names, which were the source of those non-reproducible bugs. ---- If python adopted *optional* static type declarations it would be vastly superior to what it presently is. In the meantime all of its good novel features have been ported to C++ via libraries, which shows how vastly more capable C++ is. --- As per someone else's comment, when you realize you've made an architectural mistake you have to laboriously places that might be affected by it, where in a statically typed and declaration heavy language like C++ there are easy reliable tools to do a comprehensive "where used"/ --- And then there is the awful programming advice such as "prefer large flat classes over deeply structured ones". That is farking insane, one ends up using naming conventions to indicate structure instead of using structure to indicate structure. I can see that the poor performance of nested structure in Python makes that a performance issue, but that is something that should be apologized about rather than lauded. ((slash dot is removing the whitespace I used to indicate separate thoughts, apparently their engineers aren't Python fans}).

    3. Re:Not a single bad word about Python by Anonymous Coward · · Score: 0

      you must know a lot of shit programmers..

  37. 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.

    1. Re:Ok, I'll bite... by Anonymous Coward · · Score: 0

      This explains why Perl is so well represented. It's a language that manages to outdo Python in unexpected behavior from otherwise normal looking code.

      Switch statements. Did you know they use a glob like expansion in the cases? That means that a switch statement is horribly slow, even if your are using all constants. This means you should use a completely different syntax in Perl called the "given ... when" which provides the utility of a switch statement without the utility of being able to type it like a switch statement.

      There's 100's of other examples where Perl has decided it needs its own definition for something other programming languages agree upon.

    2. Re:Ok, I'll bite... by Anonymous Coward · · Score: 0

      And this increased searching is due to the fact that a lot of hipsters are releasing python packages to go with Raspberry Pi so that makers who haven't coded yet will of course google it when trying to expand on it.

    3. Re:Ok, I'll bite... by angel'o'sphere · · Score: 1

      I already can C++, Java, C, various assemblers, etc. p.p.
      Obviously I mostly google for languages 'I don't know yet good enough' and actually I don't google for the language but for a tool/library: how to parse html to extract data with Python? That points me to useable libraries, but not to a Python tutorial.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    4. Re:Ok, I'll bite... by gustygolf · · Score: 1

      Switch statements. Did you know they use a glob like expansion in the cases?

      No, I did not. I was not even aware that Perl had a switch statement -- apart from the broken Switch.pm module that was accidentally introduced to core in Perl 5.10.

      That means that a switch statement is horribly slow, even if your are using all constants. This means you should use a completely different syntax in Perl called the "given ... when" which provides the utility of a switch statement without the utility of being able to type it like a switch statement.

      And the given...when syntax (along with smartmatching, which it is based on) is experimental/deprecated too, and has been that for many years. Unless you are talking about Perl 6?

      Frankly, I've never used them, and I've been coding in Perl since... 5.6 or thereabouts? I mean, 5.8 was probably out already, just that Debian still had an older version...

      There's 100's of other examples where Perl has decided it needs its own definition for something other programming languages agree upon.

      I don't really think so. The one big stumbling-block seems to be scalar/list context, which doesn't exist in other languages AFAIK. Apart from that, I can't really name any of your hundreds of examples.

      Oh, maybe threads.

      --
      "Slow Down Cowboy! It's been 58 minutes since you last successfully posted a comment" -- slashdot, driving users away.
    5. Re:Ok, I'll bite... by Anonymous Coward · · Score: 0

      I'm only searching because there's no IDE completion and associated documentation in a Jupyter notebook. Most of my searches are basically using Google as a substitute for a strongly typed language with good IDE support. It's starting to piss my off frankly, it takes 10x longer to explore and learn something. This is as painful as the bullshit I remember doing with Java "refactoring" using vi/grep/sed back in the day before the rise of IDEs...

  38. Reduced tool complexity = econonomic beneifts by sjbe · · Score: 1

    Why would we want just one programming language?

    It's reasonably obvious why we have multiple programming languages but your question has a serious answer. There would be HUGE advantages if it were practically possible to consolidate on one programming language. The economic benefits would be massive. Any time you can reduce the complexity of the tooling you use to make products it reduces cost, reduces errors, makes training easier, and has lots more knock on benefits. In many cases the benefits of minimizing tool complexity (less languages in this case) can be larger than the optimization benefits from using a specialized tool. To use a non-programming analogy, think about Alton Brown's "no uni-taskers" rule. Specialized tools or specialized languages have their time and place but one should avoid them if practically possible.

    Now in the real world we're highly unlikely to ever see a single programming language dominate all forms of programming and for very good reasons. But that's a different question than why we would want such a state of affairs. Having multiple languages has advantages but having a single language makes life SO much easier in many important ways.

    1. Re:Reduced tool complexity = econonomic beneifts by Anonymous Coward · · Score: 0

      I can code in a bunch of languages (I learned as needed) and.. I honestly prefer that over having One True Language.

      I wouldn't even want my preferred language to be the One True Language!

      captcha: circus

    2. Re:Reduced tool complexity = econonomic beneifts by squiggleslash · · Score: 2

      We're only going to reduce errors if it's a programming language that makes errors harder to make. I switch routinely between a number of different languages in my current job, and it's not the switching that has any affect on the reliability of the end result.

      I can also pretty much guarantee that if the world did standardize on just one or two languages, it'd probably be the worst of them. For better or worse, the languages of the world wide web right now are Javascript, PHP, and C. The infrastructure is written in C. The applications are written in PHP. The front end is written in Javascript.

      These are three awful, awful, programming languages to standardize on, and yet within one sector of the industry, that's exactly what we've done. Why have we done this?

      - We standardized on C because we'd already standardized on it in the mid-1980s. It could have been Modula 2 or Oberon, but we ended up with C because at the time we were trying to squeeze functionality out of every byte of memory. Ironically, C is so clumsy we've ended up abstracting everything up the wazoo a million times and so it's far less efficient than it needs to be. There's no need for Apache to be written in C. But when Apache was written, that was what you wrote Unix servers in, so, 20-25 years later we're still stuck with it.

      - We standardized on PHP because it's easy for non-developers to pick up, and it was there, and it was free, and it was kinda sorta marketed at them at a time when everyone wanted to build a website. And as a result critical frameworks like Wordpress are written in PHP. PHP is seductively convenient too, but almost everything that makes it convenient also is a bomb that just needs a detonator of ignorance to cause a problem.

      - We standardized on Javascript (which is perhaps the better of the three languages) because it's built into every web browser because every web browser in the 1990s had to be compatible with Netscape, and Netscape introduced JS.

      At no point were issues like reliability or security considered as criteria for the "market" to pick these three. The market didn't care. And so we're stuck with that as our technology stack.

      The only way out of this mess is to be able to break out of "standards" and be able to use better languages as they come up. The market failed in terms of picking a sane winner. But as long as there's more than one stall at the market, better developers can at least get around that.

      --
      You are not alone. This is not normal. None of this is normal.
    3. Re:Reduced tool complexity = econonomic beneifts by drinkypoo · · Score: 2

      It seems like we could derive most of the benefits by extending more languages to be able to use... one another. So that if we have a code component written in one language, we can more easily use it in another language. Obviously there are mechanisms for doing this already in many if not most languages, and even some systems. It is (or was?) a standard feature of the AS/400 platform (whatever series they call that now, or did they finally kill it?) that you could link together code from multiple languages into a single binary. I'm not familiar enough with the architecture to know how their approach works, I just took a basic class and that stuck out.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    4. Re:Reduced tool complexity = econonomic beneifts by oh_my_080980980 · · Score: 1

      Ummm Binary, Assembly....so no....

    5. Re:Reduced tool complexity = econonomic beneifts by Chris+Mattern · · Score: 2

      the AS/400 platform (whatever series they call that now, or did they finally kill it?)

      IBM changed the name to "i series" in 2000 and replaced it with the Power series in 2008. They still offer the software platform (originally OS/400) to run on Power servers, calling it "IBM i"..

    6. Re:Reduced tool complexity = econonomic beneifts by nasch · · Score: 1

      His rule is only one single task item allowed in the kitchen: the fire extinguisher.

    7. Re:Reduced tool complexity = econonomic beneifts by petermgreen · · Score: 2

      In practice what has happened is that "C style" interfaces have become the common point for interoperation between languages.

      So you basically if you want to call code written in language A from language B you have to.

      1. Wrap the code written in language A in a C style wrapper.
      2. Wrap the C style wrapper in language B.
      3. Work out how to build/link the resulting project.

      This is doable but it's a sufficient PITA that a lot of the time rewriting the code seems more practical.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    8. Re:Reduced tool complexity = econonomic beneifts by Pig+Hogger · · Score: 1

      We're only going to reduce errors if it's a programming language that makes errors harder to make.

      I worked with Pascal & Delphi for at least 15 years, and despite having made to “make errors harder to make” (with enforced structure & strict type checking), there are still many ways for bugs to creep in such a language

  39. The GIL! by Anonymous Coward · · Score: 0

    unless the GIL is removed, the answer is no.

  40. We need a lot of languages by Anonymous Coward · · Score: 0

    There is no such a thing as a "general purpose" programming language. We need dozens (if not hundreds) of different languages.

  41. Scripting, fine. What about GUI's? by Anonymous Coward · · Score: 0

    This Python thing - can you throw together a quick GUI app as easily as you can in C#, VB.net, or even Lazarus (Free Pascal)?

    1. Re:Scripting, fine. What about GUI's? by vtcodger · · Score: 1

      Yes, Tcl/Tk is built in and there are modules for other graphical libraries. GUI code is still tedious, annoying, buggy and a general PITA, but I think no more so than in other languages.

      --
      You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
  42. Give Nim a chance by sky_khan72 · · Score: 1

    If you really like your indentation this much, give Nim, https://nim-lang.org/ ,a chance. It looks and feels like python but it is statically typed and compiled language at least.

    1. Re:Give Nim a chance by gweihir · · Score: 1

      How can it look and feel like Python if it is statically typed? Not being statically typed is one of the most important features of Python. Not so easy to handle, but powerful in the hands of an expert.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    2. Re:Give Nim a chance by sky_khan72 · · Score: 1

      It has type inference and some more. Have you seen the snippet on it's frontpage ?

    3. Re:Give Nim a chance by gweihir · · Score: 1

      I know what "statically typed" means and at that time I am not interested in yet-another-niche-language. I have done real work in around 20 different languages by now and none of the "magic" languages that do the same as some of those that have proven themselves over time but "better" have ever lived up to that claim. And of course, I am quite able to embed C if I need performance.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    4. Re:Give Nim a chance by Pig+Hogger · · Score: 1

      Lol, I took a look at it, and it looks like the child Pascal would have had if he married Python

    5. Re:Give Nim a chance by sky_khan72 · · Score: 1

      Is that a bad thing ? Yes, Nim is love child of pascal family (pascal,oberon,ada) languages and python mostly but has some genes from other languages too. It also supports templates, generics and AST macros... It compiles to C/C++ and Javascript so it is easy to bind these too. IMO, It is very pragmatic. Although I have not done anything serious with it yet, I really like it.

  43. Which Python? by Anonymous Coward · · Score: 0

    Python is split into Python 2.7 and Python 3, which aren't compatible. Most distros ship with 2.7, but a number of newer projects will only run on 3. Fortunately most popular packages have forked and offer both versions.

    Phillip.

  44. I don't think so by gweihir · · Score: 4, Interesting

    Don't get me wrong, I like Python and have done quite a few things with it, including performance-critical Python classes in C. But I think writing good Python code is something that requires a lot of experience, including with other languages. Python is a language that does not stand in your way to an extreme degree. That means in many cases you have to do things yourself that other languages do for you, for example type checks (yes, they are needed sometimes) and decisions when doing inheritance. Do them wrong or not do them at all and you end up with an unmaintainable mess. There is also quite a bit of stuff you have to test at run-time that compiled languages probably find at compile-time. That requires good testing and a design-by-contract approach helps a lot.

    One the other hand, for actual experienced experts, glue-code and "business logic" does not get much better than what Python offers, and embedding C-code is easy once you have understood the idea. It definitely has a long-term future.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    1. Re:I don't think so by fluffernutter · · Score: 1

      I don't really get what is wrong with having to do type checks manually. If you name a variables like total_widget_count and widget_count and then do something like total_widget_count += widget_count, who cares if it is int, long, double, or float when you just want to add two numbers together? On the other hand if you want to pass a parameter that can be an int or a list of ints then it performs a functional purpose to check the types, so why wouldn't you want to do it manually at that point?

      --
      Laws are rules for the court, but merely a bottom bar to hit for life. Think beyond laws in your actions always.
    2. Re:I don't think so by Anonymous Coward · · Score: 0

      writing good Python code is something that requires a lot of experience

      You can learn Python in a few days and become more productive with it than you are with any other language. There is a reason why they use it to teach programming. Yes, the more you program the more you learn additional tricks that make code better, but the learning curve is nowhere near C++.

      for example type checks

      You are doing it wrong. The Tao of Python is to let it fail. Seriously, why write a check to trigger an exception when a runtime error will trigger an exception already? Do you expect your exception to be of somehow better quality? Why burn time and lines of code for something that will almost never happen? (*) I would concentrate on catching exceptions and properly recovering from them instead.
      (*) - It is possible that your code has to rely on manual type checking to work. In that case you might want to rethink the logic.

    3. Re:I don't think so by gweihir · · Score: 1

      The thing is that for a while strong static typing was hailed as the one true "silver bullet" that would right all wrongs with code. Of course, that is nonsense, as all the other "magic solutions" that have come before and after are, but this thing is stills strong in many people's minds. The thing that most of these people do not understand is that Python actually has strong typing in the sense that everything has an exactly defined type and that you can determine that type at run-time. It is just not a static-type (i.e. type of the variable), but a dynamic one (i.e. type of what the variable contains). The other thing these people miss is that while static type-safety determined by a compiler sounds nice, it turns out that you find basically all dynamic type-errors in any testing that deserves the name anyways, because testing for type-errors is far less difficult than testing for implementation errors. Hence what the compiler can do is not really worth much, but that is not readily obvious to most people.

      Altogether, strong dynamic typing is very nice indeed, but is is not really a thing for beginners. But real-world size projects and the code that comes with them are not for beginners either.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    4. Re:I don't think so by david_thornley · · Score: 1

      I tend to think of specifying lengths of integer and floating-point types as premature optimization, but there's advantages to static type checking. You mentioned a parameter that can be an int or a list of ints (which is something C++ handles well), but if somehow the parameter winds up being something else in Python something unexpected could happen, whereas in C++ if it winds up being something else that's a compile error.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    5. Re:I don't think so by fluffernutter · · Score: 1

      Yes I realize that, and that's why I wouldn't use Python for a driver. I'm talking about a website back-end.

      --
      Laws are rules for the court, but merely a bottom bar to hit for life. Think beyond laws in your actions always.
  45. That's for morons by Anonymous Coward · · Score: 0
    If you're stuck on "a language", then you need to pull your head out of your butt. These days it's not enough to know 1 language and it doesn't matter which language is "ranked #1" today. Instead, focus on "how do I solve problems and write good code."

    I've used python in the past and although it is very popular in DeepNeuralNet frameworks, the performance isn't as good as C++/Java frameworks. The thing is, there's still performance issues with Python that keep it out of applications that need sub second responsiveness. Performance intensive things like doing computer-vision with raspberry pi robots.

    If you have something that doesn't need to be super responsive with low latency, then have at it. With C++ in the "right" hands it's challenging, but it can do it. Very few people have the skills and experience with C++ to build it. With Python, it's just not possible with the current implementations.

  46. I'm puzzled by EdZep · · Score: 1

    I'm a hobbyist programmer. 8 or 9 years ago, I decided to check out Python, working on a Windows box. I wrote a client-server Spades card game to play on a wifi network.

    I enjoyed the coding. Having the right environment to run the code seemed to be a challenge. I set up all of my family members' laptops to run the game (including a 3rd party library). But, I never distributed it further, because it seemed impractical to expect the average computer user to have or to set up the environment... and not get into a support nightmare.

    That experience led me to marvel as Python became even more popular. I suspect there's something I missed, or, maybe Python has evolved. This seems like a good opportunity to have someone set me straight. What am I not getting?

    1. Re:I'm puzzled by fluffernutter · · Score: 1

      You are missing something. There are packages like py2exe that will compile python in a regular executable.

      --
      Laws are rules for the court, but merely a bottom bar to hit for life. Think beyond laws in your actions always.
  47. It Depends by Mordaximus · · Score: 2

    Interestingly, selecting countries on PYPL shows that Python is #1 in the US, France and UK. India and Germany have Java #1.

    Not that it's an indication of anything, really. Right tool for the right job. The projects being worked on in Java probably don't lend themselves well to Python and vice versa.

    1. Re:It Depends by fluffernutter · · Score: 1

      Except by reading these comments, Python could never be the right tool for the job, so how the heck are people managing to get so much done with it?

      --
      Laws are rules for the court, but merely a bottom bar to hit for life. Think beyond laws in your actions always.
    2. Re:It Depends by Anonymous Coward · · Score: 0

      weirdly that would match the countries with the largest number of shit hipster programmers..

  48. Dominant? by aglider · · Score: 2

    Please elaborate. By number of lines written? The number of programs written? The number of fortune500 choices?

    --
    Sent as ripples into the electromagnetic field. No single photon has been harmed in the process.
    1. Re:Dominant? by BaronAaron · · Score: 1

      FTFA

      "created by analyzing how often language tutorials are searched on Google"
      "The more a language tutorial is searched, the more popular the language is assumed to be. It is a leading indicator"

      I don't know if I buy that personally.

    2. Re:Dominant? by aglider · · Score: 1

      Pr0n is dominant in the web, then!

      --
      Sent as ripples into the electromagnetic field. No single photon has been harmed in the process.
  49. Should disallow mixing tabs/spaces by swilver · · Score: 4, Interesting

    If Python just disallowed mixing of tabs / spaces in files, it would already be a lot better. Just flag an error as soon as indentations are detected that are not the same style.

    1. Re:Should disallow mixing tabs/spaces by Anonymous Coward · · Score: 0

      If Python just disallowed mixing of tabs / spaces in files, it would already be a lot better. Just flag an error as soon as indentations are detected that are not the same style.

      I like that idea!

    2. Re:Should disallow mixing tabs/spaces by sl3xd · · Score: 1

      Just flag an error as soon as indentations are detected that are not the same style.

      To hell with Python. EVERY language needs to do this.

      In every software development project whitespace matters - regardless of language.

      I'm sick of having to guide every junior programmer through fixing the merge issues they've caused by not using the project's indentation style.

      Eventually, the developer starts to understand that while the language doesn't care about whitespace, the version control system does.

      Then the developer moves on to greener pastures, and I get to do it all over again with the next clueless graduate.

      --
      -- Sometimes you have to turn the lights off in order to see.
    3. Re:Should disallow mixing tabs/spaces by spitzak · · Score: 1

      I would allow tabs followed by spaces, too many programmers want to use that.

      What it should enforce is:

      - the indentation cannot have a space before a tab (so any indentation is m tabs followed by n spaces where either number may be zero). So space,tab would be a parsing error.

      - Any change is considered an indentation change. So tab is a different indentation than 8 spaces. This will turn any mixing of characters that look like the same indentation into parsing errors

      - In the few cases where it matters a different indentation can be split into whether it is an increase or a decrease by by having the number of tabs take precedence. More tabs means more indentation no matter how many spaces are lost. This removes any need to define how wide a tab is.

    4. Re:Should disallow mixing tabs/spaces by doom · · Score: 1

      Time to look for a pasture of your own, eh? (Just kidding.)

      When I'm in charge of a project, I set things up so that code check-ins need to pass a style-check-- this doesn't have to be done by the compiler.

    5. Re:Should disallow mixing tabs/spaces by stooo · · Score: 1

      Good point. Although a warning should be enough.

      --
      aaaaaaa
    6. Re:Should disallow mixing tabs/spaces by Anonymous Coward · · Score: 0

      Done in Python 3 since a decade or so, done in Python 2 if you run it as python -tt. Also in practice done since forever by using any reasonable editor on the planet, I guess :-) .

    7. Re:Should disallow mixing tabs/spaces by Anonymous Coward · · Score: 0

      You can pass the "-t" option to the python interpreter and it will warn if tabs and spaces are mixed. Or "-tt" and it will throw an error instead.

  50. New language by Anonymous Coward · · Score: 0

    If only someone could invent a new language.A derivative of Python, but using braces, that compiles to regular Python.

    1. Re:New language by barbariccow · · Score: 1

      If only someone could invent a new language.A derivative of Python, but using braces, that compiles to regular Python.

      You already have it! Try this code out:

      from __future__ import braces

      If you're not aware, "__future__" contains future features and importing them changes how the file is processed.

  51. To quote a legend... by GotoGuy · · Score: 3, Interesting

    "Do you think Ringo is the best drummer in the world?" "Ringo isn't even the best drummer in the Beatles."

  52. None of the recent ones do it... by Anonymous Coward · · Score: 0

    But there used to be at least a couple of code editors with support for displaying tags instead of empty whitespace characters.

    Maybe it is time to bring it back and make it easily toggleable for each form of whitespace available. So you can show/hide newline, tab, space, utf-8 directional changes, etc in a format easy for a developer to parse and alter when needed.

    An alternative is python could just fucking itegrate indent style support and keep the strict parser in the python executable, but have a lax parser capable of doing fixups outside of it. Not sure how well that would work, or what sort of whitespace gotchas there are in more complicated code, but most of it seems machine repairable in my experience. Less so human repairable however.

  53. Wow by fluffernutter · · Score: 1

    I can't believe the hate for Python. Many of you people talk like a large website could never be built it in when the fact is that many large websites have been and continue to be built with it.

    --
    Laws are rules for the court, but merely a bottom bar to hit for life. Think beyond laws in your actions always.
    1. Re:Wow by oh_my_080980980 · · Score: 1

      Unlike Perl.....

    2. Re:Wow by fluffernutter · · Score: 1

      I'm aware of some small websites in perl but no large scale ones. Perl is a brutally messy language to do anything in, but it fills a really useful spot if you're a sysadmin and you need something more than bash or ksh.

      Surrounding code blocks with brackets is very ugly. The one respite you get from them is if you can prune your block down to one statement then you don't have to put the brackets, but then inevitably you need to add one more statement temporarily so you need to surround in brackets just to add the statement and remove them again when you go back to one statement again. When you work in python for awhile you come to see how awkward brackets are.

      --
      Laws are rules for the court, but merely a bottom bar to hit for life. Think beyond laws in your actions always.
    3. Re:Wow by 0100010001010011 · · Score: 1

      I'm aware of some small websites in perl but no large scale ones.

      I hope you're joking or you're really lacking some self awareness.

    4. Re:Wow by fluffernutter · · Score: 1

      Well it's not something I have gone out to research.

      --
      Laws are rules for the court, but merely a bottom bar to hit for life. Think beyond laws in your actions always.
    5. Re:Wow by 0100010001010011 · · Score: 1

      (Hint, check the URL)

    6. Re:Wow by fluffernutter · · Score: 1

      Slashdot is in perl? That's cool.

      --
      Laws are rules for the court, but merely a bottom bar to hit for life. Think beyond laws in your actions always.
    7. Re:Wow by furry_wookie · · Score: 1

      >aware of some small websites in perl but no large scale ones.

      Ever hear of a little website called "Yahoo!"?? Yep, perl.

      --
      -- Given enough time and money, Microsoft will eventualy invent UNIX.
    8. Re:Wow by fluffernutter · · Score: 1

      To be fair, these were never amazingly dynamic websites. Yahoo was a hierarchical directory and slashdot is a basic comment site. That said, there are MVC web frameworks for perl and I'm sure they work fine to create a site of any size.

      --
      Laws are rules for the court, but merely a bottom bar to hit for life. Think beyond laws in your actions always.
    9. Re:Wow by Anonymous Coward · · Score: 0

      I'm aware of some small websites in perl but no large scale ones.

      It's possible you're not aware of what many websites are is written in.

      Perl is a brutally messy language to do anything in

      FUD. It's fairly easy to be neat and tidy.

      Surrounding code blocks with brackets is very ugly.

      More BS. Also, it gives the "%" key something to do in Vi(m).

    10. Re:Wow by Anonymous Coward · · Score: 1

      booking.com, amazon.com, bbc.co.uk, imdb.com, duckduck.com big enough for you? ;-)

      http://blog.builtinperl.com/post/5-major-websites-that-use-perl

    11. Re:Wow by Anonymous Coward · · Score: 0

      I want to believe that the list is correct, and it's possible that it is, but I kind of suspect those older web sites (amazon, imdb) have migrated to use something else, as any reports of their programming language choice seem to have come from a decade or more ago.

    12. Re:Wow by Anonymous Coward · · Score: 0

      just search their careers site:

      https://www.amazon.jobs/en/search?base_query=perl&loc_query=&job_count=10&result_limit=10&sort=relevant&cache

      Plenty of perl to go around in amazon. Imdb is an amazon subsidiary, and was already a huge perl shop, so .... Believe what you want, it just keeps powering stuff silently and reliably, no fuss.

      Funny that you call amazon and imdb 'older', my guess is that their owners have missed the memo they should update their sites because they are not successful enough ;-)

    13. Re:Wow by djinn6 · · Score: 1

      Well he did say large scale. /. is not that large.

  54. 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).

    1. Re:Overconfident bullshit by fluffernutter · · Score: 1

      I feel this is the strength of Python. The fact that thousands of people are out there exactly like you, saying things like "Yes Java is better for so many things, but I use Python for X and it really works for me well there". Being a jack of all trades but master of none can make you very popular, and that's why it is one of the top languages now.

      --
      Laws are rules for the court, but merely a bottom bar to hit for life. Think beyond laws in your actions always.
    2. Re:Overconfident bullshit by Anonymous Coward · · Score: 0

      I am working on one of those projects, and no I don't have 100+ classes in Python, and yes, it's working fine.

      The key to scaling is clarify/being easy to understand, proper division of responsibility and being able to test things.

      Java doesn't help you with that, in fact some of the braindead decisions in that language (including the 100+ class phenomenon you mention) get in the way because they limit what you can model. Everything has to be shoe-horned into a class. Classes do not scale in themselves.

      Dynamic typing allows a somewhat different workflow which can help in some of these areas.

      Now of course, there isn't (necessarily) a static compiler that can be used to test for some bugs. But the fact is that typing in most modern languages is relatively primitive, so while they can help in a simple refactor (e.g. renaming or simple changes to the types), they don't really guarantee much more than that.

    3. Re:Overconfident bullshit by ooloorie · · Score: 1

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

      The thing is that if that's a Java project, you can probably rewrite it in a better designed language and cut that down to 10 classes and 10 kloc. Java is just horribly wasteful of programmer time, creates tons of unnecessary complexity, and is wasteful of computer resources on top of that.

    4. Re:Overconfident bullshit by H0p313ss · · Score: 1

      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...

      Yup... and that's a small project. It's been a long time since I worked on any project smaller than a million lines of code.

      I'm sure there's some people who can manage millions of lines of code spread across tens of thousands of files with vi, but it sure ain't me.

      --
      XML is a known as a key material required to create SMD: Software of Mass Destruction
    5. Re:Overconfident bullshit by lorinc · · Score: 1

      The thing is that if that's a Java project, you can probably rewrite it in a better designed language and cut that down to 10 classes and 10 kloc. Java is just horribly wasteful of programmer time, creates tons of unnecessary complexity, and is wasteful of computer resources on top of that.

      Sure, everything can be rewritten with a sed oneliner. However, none of this is going to be maintained very long, which is the true value of some critical programs.

    6. Re:Overconfident bullshit by Anonymous Coward · · Score: 0

      You really might be a dumbass. Are you an intern?

    7. Re:Overconfident bullshit by Anonymous Coward · · Score: 0

      My KVM says otherwise. Stock Startech KVM, requires JRE 1.6 or it won't work with the VNC implementation.

      That is Java's downfall. It does not maintain any binary compatibility between JRE's. I recognized this problem way back in JDK 1.1 when the textbooks handed out were for 1.0

      Only C and C++ will ever be "the" language to learn. All others gain feature creep and as a consequence are abandoned eventually.

      Swift might be the next generation of this, but it has not solved the feature creep, depreciated API problem that everything that isn't C has. At least C++ can be fixed if you need to use a newer compiler, but everything else, you have to make a choice between using the old runtime and libraries, possibly with critical bugs in them, or new runtime and new libraries, while having to abandon old libraries that don't work and write those from scratch now.

      You either need no libraries at all (eg Javascript) for basic functionality, or you need to ensure you have the underlying C and C++ code for the libraries that being used, because otherwise your software will hit the feature rot stage and have to start over.

      I like to give Microsoft crap for a lot of the .NET stuff but one thing they absolutely nailed was how to deal with multiple versions of runtimes. Simply include all versions of the runtimes and install them as needed, and maintain those. It's sloppy like C and C++ but at least you can still run things as long as the one runtime exists. There's no optional third party libraries to hunt down like on Linux systems.

    8. Re:Overconfident bullshit by ooloorie · · Score: 1

      Sure, everything can be rewritten with a sed oneliner. However, none of this is going to be maintained very long, which is the true value of some critical programs.

      There is zero evidence that Java is any easier to maintain than other safe, statically compiled languages.

    9. Re:Overconfident bullshit by Anonymous Coward · · Score: 0

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

      The thing is that if that's a Java project, you can probably rewrite it in a better designed language and cut that down to 10 classes and 10 kloc. Java is just horribly wasteful of programmer time, creates tons of unnecessary complexity, and is wasteful of computer resources on top of that.

      Yes, that's true if you are incompetent at programming in Java.

      However, there are plenty of large projects that benefit enormously from the static checking provided by Java and similar languages. Further, you won't be cutting down significantly on the number of design units if you try to re-program those projects in another language, because good programmers understand that design unit size is about managing complexity and design accordingly - reducing the number of design units just means you increase the complexity of each unit, which means more hard-to-find bugs.

      I love programming in Ruby - much more so than Python, which feels really clumsy - but for a large project wouldn't consider using either instead of Java.

  55. Re:How many anonymous readers? by Desler · · Score: 2

    Grammar nazi fail:

    : his or her : his, her, its —used with an indefinite third person singular antecedent
    anyone in their senses — W. H. Auden

    https://www.merriam-webster.co...

  56. Dominant but not the only language by donbudge · · Score: 1

    A lot of the responses have been disengenous. The author included C++ in the article to indicate there is a need for other languages in different scenarios. You don't write device drivers in Python, I'm sure. Also, the only people complaining about the whitespace are the ones who are comfortable with other languages and haven't tried Python sincerely. If you are trying to publish an article, are you going to ignore indentation? New people entering programming with Python don't have an issue. The indentation is natural to them.

    1. Re:Dominant but not the only language by fluffernutter · · Score: 1

      I came from a Java background, and surrounding code blocks with brackets always seemed needlessly messy to me. Especially when you have a single statement block without brackets that you need to add another statement to. Now you have to surround with brackets just to add a line to the block. Once i found out about Python I found myself using it as much as I could, because not having to worry about brackets to add a line ever was a great feeling of liberation for me.

      --
      Laws are rules for the court, but merely a bottom bar to hit for life. Think beyond laws in your actions always.
    2. Re:Dominant but not the only language by barbariccow · · Score: 1

      You don't write device drivers in Python, I'm sure

      Holy crap I wish that were true. You'd be surprised some of the awful interfaces for hardware devices I've had to deal with, thanks to the abomination that is FUSE (which allows.... that's right.... you can write device drivers in USERSPACE, in ANY LANGUAGE :(

  57. Error reduction by sjbe · · Score: 1

    We're only going to reduce errors if it's a programming language that makes errors harder to make.

    Error reduction is multi-factorial. It's not merely language design though you are correct that that is a significant consideration. Factors like how well trained individuals are can play a major role. It is easier to teach best practices and how to avoid problems if all the teaching can be focused on the problems with a single tool. Asking people to generalize best practices across multiple languages makes training harder and errors more likely.

    Of course this is all moot because we don't live in a world with just one programming language and probably never will. But there would be benefits to it if somehow we could make it happen.

    1. Re:Error reduction by 0111+1110 · · Score: 1

      Factors like how well trained individuals are can play a major role.

      What about intelligence? Does that play any role? Is a programmer with an IQ of 78 but with more training more valuable than a programmer with an IQ of 150 but with less training?

      Do more intelligent programmers make fewer careless errors? Not sure about that. But they would seem to have greater potential to write elegant and beautiful programs that I could be proud of having paid for. What I would want is clever programmers who can build beautiful and efficient machines.

      --
      Quite an experience to live in fear, isn't it? That's what it is to be a slave.
    2. Re:Error reduction by angel'o'sphere · · Score: 1

      "More intelligent programmers dont't make fewer mistakes, they make more intelligent mistakes."
      One of my profs used to quote that, don't remember from whom he had that quote.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    3. Re:Error reduction by sjbe · · Score: 1

      What about intelligence? Does that play any role?

      Is this a rhetorical question? I said sources of errors are multi-factorial. I made no effort to enumerate all the factors and there are indeed many beyond simply language design. Certainly intelligence plays a role. That's not however an acceptable excuse for making or choosing programming languages that needlessly complicate a task or add expense however.

  58. Re:How many anonymous readers? by Anonymous Coward · · Score: 0

    Grammar nazi fail:

    : his or her : his, her, its —used with an indefinite third person singular antecedent
    anyone in their senses — W. H. Auden

    https://www.merriam-webster.co...

    Notice that the Merriam-Webster defintion of their specifies that it can be used with "an indefinite third person singular antecedent". In the example by W.H. Auden, this is the word "anyone". But the phrase "anonymous reader" refers to a specific reader. I would not regard "anonymous reader" as being indefinite. Therefore, this use of "their" is inappropriate.

  59. It can never attain more than 50% by guruevi · · Score: 1

    You can't make Python the dominant language because half of it has to be implemented in C in order to get it to work properly.

    That and lack of clear program structure definition (braces) will make sure it will always be a scripting language like PHP.

    --
    Custom electronics and digital signage for your business: www.evcircuits.com
    1. Re:It can never attain more than 50% by david_thornley · · Score: 1

      Historically, the dominant language has usually been one that can fill all roles above assembly language. At one point, Unix programmers pretty much had to be competent in C, and that created a network effect, in that people would program in C because they knew almost everyone else could read and understand it.

      Since we've pretty much freed most developers from having to write in the system's language, it's questionable whether we'll ever get another dominant language. There will be popular ones, but none will be dominant.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  60. Please do by Danathar · · Score: 1

    So the number of programmers in Lisp, Forth, and COBOL go down even more. Which will mean I can learn those and make a KILLING in $$$

  61. Depends by TheOuterLinux · · Score: 1

    The future is more likely to be server APIs while everyone turns into over glorified interface designers. Schools are teaching Python for calculations the same way they used to teach BASIC. But, there's no money it and quite literally because of its license. So, it will be C and Python on desktop and PHP and HTML5 on servers. I wish more people liked Python because it's a whole lot easier to modify. People complain about speed with Python, but imagine having to edit or add variables in C and then recompiling it just to run it every time; it would take longer. On top of which, Visual Basic and M$ want you to use C#, which then prevents or causes problems with cross platform compatibility. Blender is all Python and it works just fine and people use it for all kinds of things, including having a built-in game engine.

  62. Javascript? by Zobeid · · Score: 2

    I thought Javascript was going to rule the world? Dammit...

    1. Re:Javascript? by Anonymous Coward · · Score: 0

      You're confusing JavaScript with Rust.

  63. Insignificance by Roger+W+Moore · · Score: 1

    F90 discarded white space significance in 1990.

    F90 pretty much lost all significance. The only people I'm aware of using Fortran still in my field are older theorists who learnt F77 and still use it. If you are willing to update you programming language knowledge chances are you would not upgrade to F90 given the prevalence of C++ and Python.

  64. As someone with horizontal nystagmus by blind+biker · · Score: 1

    I fucking hope not

    --
    "The agriculture ministry is not in charge of Gundam" - Japanese ministry official.
  65. Idiot children with their idiot silver bullets by 0xdeadbeef · · Score: 1

    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.

    This is the stupidest statement I've seen on Slashdot in recent memory that didn't come from a Trump voter.

    TDD is a crutch for catching duck typing errors, and test that verify you haven't fucked up your interfaces are far more useless boilerplate than even the most "enterprise" Java code that isn't also using TDD.

  66. Old Men Yell at Clouds by 0100010001010011 · · Score: 1

    Yes. It already has in a large number of places.

    1. Re:Old Men Yell at Clouds by iggymanz · · Score: 1

      no it won't, it is not a business language (lacking the needed libraries). It is hilarious to watch the data scientists make decades old newbie errors importing business data from java systems into python based analysis

    2. Re:Old Men Yell at Clouds by 0100010001010011 · · Score: 1

      (lacking the needed libraries)

      And what libraries are those?

    3. Re:Old Men Yell at Clouds by iggymanz · · Score: 1

      even the infrastructure for using/transporting/persisting its Decimal class (I'll give it some credit for at least having that) around properly. But the broader answer would be the stuff java ee has that python libraries don't.

      I hate Java by the way

  67. "can't quickly refactor code, which is necessary" by PmanAce · · Score: 1

    IDEs allow this, usually much quicker than by hand.

    --
    Tired of my customary (Score:1)
  68. No Python does not have actual threads by Anonymous Coward · · Score: 1

    Python threads have a global interpreter Lock which effectively means one thread can run at a time and they take turns. This is not threading in the real world .

    1. Re:No Python does not have actual threads by MightyYar · · Score: 3, Informative

      It's a wart, but it shouldn't stop you from getting your parallel computing done. You fire up the multiprocessing module, create as many processes as you think you need, and start crunching. I write most of my longer-running programs this way so that I can take advantage of multiple cores. But that's the beauty of Python - it's easy to avoid premature optimization. Write the script the easiest way first, profile it, and then go after the low-hanging fruit. Worst case, you end up with working code written entirely in C that's been thoroughly prototyped in Python. :)

      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
    2. Re:No Python does not have actual threads by tepples · · Score: 2

      You fire up the multiprocessing module, create as many processes as you think you need, and start crunching.

      Then serialization and deserialization of objects to and from the manager process spawned by the multiprocessing module becomes the bottleneck.

    3. Re:No Python does not have actual threads by MightyYar · · Score: 1

      The processes/threads would need to communicate in some form or fashion. That has not been the bottleneck for me so I've never tried to "solve" it (other than trivial stuff like splitting the dataset into bigger chunks). But you are not restricted to the default pickling/unpicking - you can use whatever scheme you dream up for communication. The point is that you don't need to dig this deep unless the communication becomes your bottleneck, and when you do need to optimize communication, there's nothing stopping you (and there are many solutions floating around out there).

      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
  69. WHAT'S WRONG with caps, man? by Anonymous Coward · · Score: 0

    Didn't you get the memo?

    Microsoft is leading us all into glorious UPPERCASENESS, it's all the fucking rage these days.
    https://wrgms.com/tired-of-all-caps-menus-on-visual-studio-2012/

    Although even they have unusually permitted people to "fix" it, if they want ...

    https://answers.microsoft.com/en-us/msoffice/wiki/msoffice_install-mso_other/proper-case-for-office-2013-ribbon-menus/d28ad27b-a727-4b63-a6e1-46deb15696a8

    (Full-on retard is the new black.)

    What's wrong with blank space? It's the new cobol period.

    Get with the times ...

  70. sometimes you want threads by Cajun+Hell · · Score: 1

    CPU bound threa[d]s *should* be processes

    When you reasonably can, totally. By all means, try to break your problem up into processes. I'm all for replacing multithreading with multiprocessing when you can, because not only does it mean you get to use python, but it means there's a whole bunch of synchronization problems that you're never going to have to deal with. Faster coding and fewer bugs. Who doesn't want that?

    But when you can't, you can't. If you're creating and destroying lots of processes and having to pickle lots of stuff into several megabytes to move over pipes to depickle, that's expensive and ugly, too. Sometimes, threads are the correct answer. And cpython really does have a problem with that.

    --
    "Believe me!" -- Donald Trump
    1. Re:sometimes you want threads by superwiz · · Score: 1

      If you're creating and destroying lots of processes

      No. Because that's not how you treat CPU-bound tasks regardless of whether they are threads or processes. If you need CPU-bound tasks, it's because you have already have coarse granularity of data and your data can be processed by a pool of worker threads. The situation you described is that of IO-bound threads. And I specifically said that you treat CPU-bound tasks as processes and IO-bound tasks as threads.

      --
      Any guest worker system is indistinguishable from indentured servitude.
  71. Need to suck more by theendlessnow · · Score: 1

    Java is a dominant language. Python needs to suck more to make it even into the top 10.

    Maybe Php?

  72. C/Erlang by Anonymous Coward · · Score: 0

    C and Erlang bitches!

  73. Dominant, or most popular? by Angst+Badger · · Score: 2

    According to the linked PYPL rankings, Java is at the top with less than a quarter of the market at 22.7%, and other ranking methodologies return different results with lower percentages for everyone. I like Python, along with several other languages on the list, but the reality is that the language market is highly fragmented and, for obvious reasons, overwhelmingly likely to remain so. There is no dominant language now, and arguably hasn't been one since the early days when there were relatively few languages, so why would there be one in the foreseeable future? Could Python become the most popular of many languages by a few points? Sure. But does that matter in any meaningful way?

    --
    Proud member of the Weirdo-American community.
  74. The Onion now writes about programming by Anonymous Coward · · Score: 0

    "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."

    HAHAHAHAHAHAHAHHAHAHAHAHAHAHAHAHAHHAH!

    I needed a laugh this morning to wake me up.

  75. I ONLY use Python becaues I can't use Perl by furry_wookie · · Score: 2

    Frankly I would much rather use Perl, but its not cool and people will complain if I did.

    So I use Python because no one complains about it.

    --
    -- Given enough time and money, Microsoft will eventualy invent UNIX.
    1. Re:I ONLY use Python becaues I can't use Perl by Anonymous Coward · · Score: 0

      I use PHP. I give zero fucks what people think about me. I can code circles around most engineers in any other language. Not kidding.

    2. Re:I ONLY use Python becaues I can't use Perl by Anonymous Coward · · Score: 0

      So happy my words had an impact!

  76. not without major changes by ooloorie · · Score: 3, Interesting

    Python's widespread adoption is not due to some magic programming language sauce but network effects. In a sense, Python has taken on a niche similar to Visual Basic. But that's also why Python has such a hard time evolving: you can't improve it much without breaking a lot of its libraries.

    Python's biggest limitations, the way it represents objects and limited concurrency, actually already have been addressed in a number of Python re-implementations, but people aren't using those because many extensions and libraries don't quite run in those environments.

    So, Python won't become "the" dominant programming language, it will just remain one of of a number of popular programming languages.

    If there will be a single dominant programming language eventually, it will probably have to look more like Swif: near native speed, garbage collection, some systems programming features, and yet interactive execution via on-the-fly LLVM compilation.

  77. Marginal improvements are costly by sjbe · · Score: 1

    His rule is only one single task item allowed in the kitchen: the fire extinguisher.

    Not even that. He used the fire extinguisher to make a desert.

    I don't actually agree with Alton on this as a hard and fast rule even though I used it as an example. It's a good principle but there are sometimes good reasons to own and use a special purpose tool. Special tools are indicated when they save substantial labor and/or do a substantially better job than a more general purpose tool. For example I own a mandoline in addition to my knives. My knives are more general purpose tools and can do everything the mandoline can do and then some, but for some tasks the mandoline is SO much faster and accurate that it easily justifies me owning one even though I don't use it often.

    Same deal with programming languages. Use the best general purpose language you can get away with and only bring in specialty languages if the net benefit to doing so is substantial either in time saved or quality of results. Don't let perfect be the enemy of good in search of marginal improvements that will probably cost more than the benefit received.

    1. Re:Marginal improvements are costly by nasch · · Score: 1

      Agreed, it depends on how much better the tool is and how often you'll use it. If you make eggs for breakfast every day and you have some tool that makes that easier or better and does nothing else, that seems totally reasonable.

      And I love that he made ice cream with a fire extinguisher.

  78. Scripting? by Anonymous Coward · · Score: 0

    Isn't python for scripting and not programming?

  79. Nope by Anonymous Coward · · Score: 0

    because semicolons > whitespace

  80. Bullish on Python by steveha · · Score: 1

    I predict that Python, already popular, will become even more popular in the coming years. "Dominant"? Eh, you decide.

    First of all, you guys moaning about white space? Just get over it, or go sulk in a corner or something. Python has always been the way it is, it's not going to change, and most people just don't care, or even like it. There are various "lint" tools for Python and any of them can complain about tabs (and most or all of them do by default). And I have been programming in Python for as long as Git has been around, and I have never had a "nightmare" merge caused by tabs and spaces. You're selling a problem I've never seen in the real world.

    Those of you complaining about static typing? It's now available as an option. Python supports "type annotations" that have no meaning at runtime, but can be used by "lint" sort of tools to do static type checks. Large companies like Google and Microsoft were starting to require comments with type annotations and rolling their own static checking tools, so the Benevolent Dictator for Life ruled that Python should gain a built-in standardized way to do it.

    "But both of the above suggest running a lint-like tool... it should be in the compiler." Well, sorry, but I am definitely willing to live with having the lint be optional. C used to be that way, you know, and your IDE or CI system can enforce use of the lint tools if you care.

    "But the GIL! It's so awful!" Actually, spinning up multiple processes, or running code on a GPU, are both good solutions for many or most problems. Also, there is a serious project to remove the GIL, called "the GILectomy", being run by a Python core developer named Larry Hastings. Check YouTube for his lectures on it and how it's doing. He has made progress recently so there is hope. I'll say it again, multi-process is not bad at all in Python, and I have a bunch of production code that spins up about 30 processes at a time to do embarrassingly parallel tasks, so I personally don't care that much about the GIL, but you can't say nobody is working on it. It just turns out that the GIL is a really efficient way to solve a bunch of problems, and every attempt so far to remove it has made Python really slow.

    With the major complaints mentioned, let me now mention some reasons for increased growth of the language.

    The major growth area is in sciences. If you are studying astronomy, and probably most other sciences, Python is the single best language you can learn. SciPy is great: you can write pleasant Python code and it runs at FORTRAN speed, because the guts of SciPy are old (well-understood and well-debugged) FORTRAN libraries. I was able to go to the SciPy conference a few years ago and I learned that scientists who are abandoning wacky or proprietary languages are all converging on Python to gain the benefits of SciPy. For example, all the people working on the data from the Hubble space telescope all use Python now (instead of IDL, the original language when the Hubble first launched).

    I would go so far as to say that for the sciences, Python will "dominate". It's achieved first-mover advantage, and it's still improving so it will be difficult to displace. (For example, a library called Pandas offers data frames, an idea copied from R. If Python successfully copies all the best parts of it's competition it will continue to dominate in science.)

    Also, as a Python developer and as someone who has gone to the Python conference for years, I am seeing signs that the split between Python 2.x and Python 3.x is finally about to end, with most people finally moving to Python 3.x. The latest release of Python 3.x has much more excitement around it than any previous release. It now uses less memory, yet runs faster, than Python 2.x; and it has some nifty new features for async code, as well as a new language hook that PyCharm uses for debugging 50x faster than previous Python versions. My own company has started the switch to 3.x and we are far from alone.

    So Python is a

    --
    lf(1): it's like ls(1) but sorts filenames by extension, tersely
  81. restrict in C99 by tepples · · Score: 1

    Is Fortran faster than C99, when C gained the restrict pointer qualifier? A lot of Fortran optimizations that C used to lack are based around different aliasing rules, and the restrict qualifier hints to a C compiler that pointers passed as arguments do not point to overlapping memory.

    1. Re:restrict in C99 by serviscope_minor · · Score: 1

      Is Fortran faster than C99, when C gained the restrict pointer qualifier?

      I believe so. The difference is less, of course, but I seem to remember reading that FORTRAN is still a bit stricter in some places. I don't know it well enough to regurgitate what I read, but it sounded right at the time.

      --
      SJW n. One who posts facts.
    2. Re:restrict in C99 by shutdown+-p+now · · Score: 1

      It is, because real world C compilers never learned to fully utilize the power that restrict gives them, and the popular libraries generally haven't picked up its use (I don't know if one of these is the cause and another is the effect, or if it's concurrent and unrelated).

    3. Re:restrict in C99 by tepples · · Score: 1

      Have you or anyone else in your organization filed bugs against GCC and Clang about obvious optimizations that aren't getting applied to output compiled from source code that correctly uses restrict?

    4. Re:restrict in C99 by shutdown+-p+now · · Score: 1

      No, but then I (or anyone I know directly) am not using gcc for things where it would matter.

      And from what I've seen, the people who do care are mostly already using Fortran for those scenarios, and they don't really see any particular reason to switch.

  82. You Get What You Pay For by AnalogDiehard · · Score: 1

    My assessment of python is "you get what you pay for". And I don't mean that in a good way.

    I've been a systems engineer for 25+ years with experience in many software languages including modern ones like C#. I do not have a high opinion of python for many reasons already stated.

    I'll add that online references are a PITA, in that many are downright wrong. I actually ran into a simple code segment that our interpreter couldn't execute.

    --
    Eternity: will that be smoking, or non-smoking? I Corinthians 6:9-10
    1. Re: You Get What You Pay For by Anonymous Coward · · Score: 0

      It's Microsoft or nothing, amirite?

  83. Python 3 makes tab/space stricter by tepples · · Score: 2

    Python 3 already goes much of the way toward this. Instead of treating tab as round up to the next multiple of 8 spaces, as Python 2 did, Python 3 requires the entire sequence of leading whitespace to match in order to include statements in a block. So if you mix tabs and spaces, you're much more likely to get IndentationError in Python 3 than before.

  84. Static vs Dynamic by samwhite_y · · Score: 2

    Here is my take on the situation, and much of this has essentially been said by others in one form or another.

    Some of the debate here seems to be a repeat of prior debates between static and dynamic languages. Dynamic languages have a lot of perks. Usually the compile speeds are awesome, building small solutions quickly is likewise awesome. They also usually make it easier to write less lines of code and the code is usually more elegant and straightforward with less overhead and few or minimal boiler plate constructions.

    But dynamic languages really fall over when the project you are working on reaches a certain level of size and complexity and really die when issues of scalability and performance become primary factors. In particular, the places where I have run into trouble are the following.

    * Having to refactor an API used throughout an application because of a new feature (such as instrumenting with auditing number of calls to persistent storage and time take to make such calls).
    * Using an IDE to investigate somebody else's not so great code (but a vital, complex, and deeply integrated component in much larger project) that was written two years ago that needs a serious refactoring and upgrade to continue its viability. Usually part of this investigation involves using a debugger. If the code had great documentation and unit tests, it probably would not be a problem. But assuming that you are always going to work with great code is nonsensical.
    * Writing code that uses optimal algorithms and minimizes usage of persistent storage. It can sometimes be quite hard to predict the performance characteristics of a particularly complex piece of dynamic code (especially one that uses "code blocks" and other functional programming styles).

    Coding in static languages is more laborious, has more up-front costs, and in general can be a large pain when compared to dynamic languages. But having an IDE and compiler enforcing sophisticated contracts between various modules in your code set are vital to the long term viability of large projects.

    1. Re:Static vs Dynamic by h4ck7h3p14n37 · · Score: 2

      I find learning new APIs to be much easier when a language is statically typed like Java versus something with dynamic typing like Python.

      With Java you can look at hardcopy of code or Javadoc, see the interfaces, the classes, the method calls, the type for each parameter and slowly work your way through how it all fits together. You can find a method that does what you want and then see that you need pass in an instance of class A and then go read about how to get an instance of that class and so on.

      With Python code you have no clue what types are allowed in your function calls just by doing static analysis. If you're lucky the author added comments to document this missing information, but you typically have to fire up an interpreter, execute some code and then look at what you get back. This makes learning new API's from only the code much more difficult.

      I wish Python would give you the option of specifying types and let me omit that information only when I want to instead of forcing me do the C equivalent of casting everything to void *, or making everything an Object in Java.

    2. Re:Static vs Dynamic by samwhite_y · · Score: 1

      I realized I have a bit more to say on this topic. Since static languages tend to be associated with large projects, they also tend to have the following characteristics when compared to dynamic languages.

      * Significantly longer class names and method names with the class and method names providing a bit of documentation as to their usage.
      * Deeper name-spacing nesting. Typical dynamic project might go two deep, a typical mature Java package may be 6-10 deep in nesting package name-spacing.
      * More investment in boiler plate classes for serialization and logic and some of the classes and variables may exist only to improve the structure and readability of the code.
      * More investment in providing structured interface points between modules with declared interfaces providing a declarative model for interaction.
      * A general design goal of limiting and validating what is allowed when using an API instead of adding flexibility and forgiving small defects in using an API.

      I point this out because the debate between dynamic and static is not just a difference in choice of languages, it is also a choice between the general approach to writing code. In the old days, it was a debate between Perl (dynamic) and Pascal (static). Today it appears to be between Python and Java.

    3. Re:Static vs Dynamic by Pseudonym · · Score: 1

      Coding in static languages is more laborious, has more up-front costs, and in general can be a large pain when compared to dynamic languages.

      This is a crude way of saying that the compiler doesn't accept code with certain classes of bug still present. Those "up-front costs" are, in reality, costs shifted from later in the development cycle.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    4. Re:Static vs Dynamic by Pseudonym · · Score: 1

      Deeper name-spacing nesting. Typical dynamic project might go two deep, a typical mature Java package may be 6-10 deep in nesting package name-spacing.

      That's very much a Java thing. I've never seen that level of nesting in C++, or Haskell, or ML, or pretty much any other statically typed language designed for large-scale.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    5. Re:Static vs Dynamic by djinn6 · · Score: 1

      I wish Python would give you the option of specifying types and let me omit that information only when I want to

      Does this do what you want?

    6. Re:Static vs Dynamic by samwhite_y · · Score: 1

      Good point. I have not done C++ coding in the last decade. But it does make me wonder what a C++ project looks like when in brings in 100s of open source libraries into its build and 10s of libraries produced by others in the organization.

    7. Re:Static vs Dynamic by Pseudonym · · Score: 1

      Good point. I have not done C++ coding in the last decade. But it does make me wonder what a C++ project looks like when in brings in 100s of open source libraries into its build and 10s of libraries produced by others in the organization.

      In most programming languages, namespaces are somewhat independent of filesystem directories.

      C++ libraries are usually very good about using a distinguishing top-level namespace, with nested namespaces only if needed (e.g. if it's a big library with major subsystems, or following Boost, a "detail" nested namespace for implementation-specific detail which clients should not use). So, for example, suppose you want to use cpp_redis in your project. The top-level namespace is cpp_redis. In Java, that would have to be be org.cylix.redis or something.

      Now to be completely fair to Java, there was a good reason for this design decision. Java was designed for grabbing possibly untrusted code and all its dependencies from across a network and running it locally on the same VM. Tying the namespace system to DNS makes names globally unique by default. In a language like C++, you can control all your dependencies and their namespaces at compile time. In Java, you can't.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
  85. the snake will die by doom · · Score: 1

    Programmers will get bored and jump on some other fad. They need an exuse to re-write the standard libraries every few years, because they've got no ideas but they like to feel like they're doing something.

    I mean-- in today's multiprocessor big dada cloudy future one must choose a language that optimizes the resource functionality-functionalism tradeoff to reduce downtime and maintenance costs while maximizing stock market confusion and venture capital infusion.

    1. Re:the snake will die by sl3xd · · Score: 1

      Programmers will get bored and jump on some other fad

      I agree with the sentiment in general, but Python is well past the point of being a fad -- maybe it would have been considered a fad in 2000, but since then we've already seen a number of fads come and go since then (PHP, Ruby on Rails, Groovy & Grails, Node.js, golang, and Scala to name a few).

      Even Perl seems to have finished its time in the sun, and is on its way into obscurity.

      --
      -- Sometimes you have to turn the lights off in order to see.
    2. Re:the snake will die by doom · · Score: 1

      Even Perl seems to have finished its time in the sun, and is on its way into obscurity.

      Eh. It went from being the one language to being one of a bunch of languages, but the news of it's death has been greatly exaggerated.

  86. Lisp by Anonymous Coward · · Score: 0

    Surely you mean LISP, not Lisp.

    Thcrew you, buddy. Wath wrong with lithping? I'm handy-capable!

  87. Adturdery by Anonymous Coward · · Score: 0

    Thanks. Added pastebin.com to my hosts file for abusively intrusive advertising.

    Every little bit cleans up the web a bit more.

  88. groupthink by Anonymous Coward · · Score: 0

    It's a catch-22: programming paradigms remain unchanged because the language taught reinforces WHAT programming IS.

    To put it another way: if one language is taught in school, that language can potentially effect future generations of industry code, but it has to have enough momentum to displace existing infrastructure.

    To put it a third way: I worked at Intel for 25+ years. HUGE parts of intel CAD software is written in PERL and TCL, scripts that started in the late 90's when they switched from AIX & Solaris to Linux. When the next generation of students were hired, a lump of Java & Ruby scripts accreted itself to the tool flows. This appears as a noticeable arc in the RCS & CVS repos from 1999~2003. Then back to Perl, because too few programmers wanted to switch: Java was a pain in the fucking ass and ruby was just like perl so why. In 2007-2010 Python reared up because: new hires out of college were taught Python. Again, another blip in the CVS repos (STILL CVS!). That too died ca. 2015 because again: too few of the existing employees knew it.

    So until there is a long enough influx of of students learning one language, and until enough of the tools are displaced by the new languages, one language will never take over. Little i is just one example, there are other companies that are still largely Perl/TCL which I wil not mention.

  89. Shortlived, if ever by sdinfoserv · · Score: 1

    1960 question: "will COBOL become the dominant programming language"?
    1965 question: "will RPG become the dominant programming language"?
    1970 question: "will FORTRAN become the dominant programming language"?
    1975 question: "will BASIC become the dominant programming language"?
    1980 question: "will C become the dominant programming language"?
    1985 question: "will Clipper become the dominant programming language"?
    1990 question: "will Visual Basic become the dominant programming language"?
    1995 question: "will ColdFusion become the dominant programming language"?
    2000 question: "will C++ become the dominant programming language"?
    2005 question: "will PHP become the dominant programming language"?
    2010 question: "will Java become the dominant programming language"?
    2015 question: "will Ruby become the dominant programming language"?
    The answer is wait a while, and it will change......

  90. News of our death by drolli · · Score: 1

    are highly exaggerated.

  91. perl5 advantages by doom · · Score: 2

    On a serious note, perl5 has some actual technical advantages over python (and most other languages), e.g. it's unicode support is excellent. Perl regular expressions can search for characters based on unicode properties, e.g. /\p{Greek}/ matches a character Unicode considers Greek.

  92. Programming languages should ban tab characters by presidenteloco · · Score: 1

    from source code files.

    i.e. Should not parse.

    Problem solved.

    --

    Where are we going and why are we in a handbasket?
  93. Language by DrYak · · Score: 1

    I don't want to write a {...complex...} algorithm {...} in any kind of shell script.

    Yup, that's why I put in parenthesis in my answer.
    In your specific case - I suspected - you need at least some more advanced logic available.
    (Whereas I've seen bioinformatics pipelines where all the "gluing" could be handled in bash, specially given its support for native regex, arrays, hashes, integer math and filtered expansion of variables [ NOTE: this monster even has a functionnal tcp/ip lite stack ]).

    But over all, python just happens to be the current popular language to glue such things together.
    Move a few years back, and the exact same could be said of Perl, Java (though JNI seem to be a mess to get right in a portable manner), .NET, VisualBasic, Lisp, Lua, etc.
    Move a few years into the future, and maybe Ruby or Javascript will get popular traction. Or something else (Go or Rust - though the later is really more system-oriented and less likely).

    Heavy lifting is done with a low level language (C/C++ mostly. Or FORTRAN in your situation as for other engineer and physicists. Or assembler a couple decades back),
    and the higher level language "du jour" is used for the glue and control.

    --
    "Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
  94. universities? by Anonymous Coward · · Score: 0

    While you can trace things' origins to universities, I don't think it always necessarily makes sense to give credit/blame to the universities for those things still being around. (You don't think of nuclear power as "oh, that thing the University of Chicago is always pushing" do you?)

    You're rightest about Pascal. And yes, I personally picked that one up at a university. But it totally broke out, thanks to Borland's fast compiler for MS-DOS, and a lot of programmers learned it outside of universities.

    For BASIC, you just couldn't be wronger. The reason we had BASIC was that it came with so many 8-bit PC's. Nearly all of the late 1970s and early 1980s PCs cames with BASIC interpreters in ROM, and if you had one of these machines, you probably learned BASIC just from trying to use your computer for anything. BASIC landed in so many peoples' laps that couldn't help learning it, and so once they knew it, they wanted to keep using it out of habit. Universities had almost nothing to do with these people; universities were telling them "learn Pascal instead!" In the mid 1980s, I'd honestly expect most CS students to already know BASIC before they even set foot in a university. Your first computer class is where'd you learn your second or third language (Pascal), after BASIC and maybe some particular CPU's assembly language.

    Python's popularity also has very little to do with universities, and your post happens to be the first time I've ever heard of it being recommended by MBAs. I sure didn't hear about it from MBAs or university people; I heard about it from nerdie pros in the late 1990s. It might just be my subjective experience, but I think the most common advocacy vector was other programmers, because it's just so damn convenient when you don't want to spend a lot of time on a problem.

    And finally.. python isn't good for scale and complexity?!?! Holy crap, it's at least significantly above average. Many programmers are using stuff that is vastly inferior to python when it comes to dealing with complexity. e.g. PHP, C++, Javascript.... none of those are even in python's league when it comes to dealing with large projects. Not even close.

  95. Hell by DrYak · · Score: 1

    But if there is anything other than trivial logic involved, shell scripting is the road to eternal damnation.

    Meanwhile, somewhere, some devil is abusing bash' "/dev/tcp/" virtual device to implement a fully functionning web server...

    --
    "Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
  96. Ditched Gentoo, partially because of Python by Anonymous Coward · · Score: 0

    I ditched Gentoo partially because of Python, the other reason was the drama on the Gentoo mailing list.

    I have been much happier since then, and very happy not to work with Python programmers. now if only I could ditch the php/MySQL/MariaDB/MongoDB weenies I would be very happy.

  97. nuff said by Anonymous Coward · · Score: 0

    my preferred language has a bigger penis than your preferred language! Thats why its better! nuff said!

  98. Not rusty enough by hackel · · Score: 1

    Python just isn't rusty enough for my taste...

    Actually, I've only played with Rust so far, but what I've experienced already really makes me want it to take off...

  99. Python as Dominant Language by Slicker · · Score: 1

    Python is becoming the dominant "Academic" language. It's clear as it adheres to how a human most ideally likes to model his/her designed processes. However, Python suffers the same ills as Java. It's really just Java 2.0 -- conventional Object-Orientation has failed in its goals. The wikipedia criticisms are very high level summary (https://en.wikipedia.org/wiki/Object-oriented_programming#Criticism) -- there is plenty else well documented.

    However we are faced with a dilemma: we now have a generation of programmers trained and habituated in that one method of framing problems: OO. Most of them struggle (usually cannot) frame problems or design solutions in non-OO ways. This hinders their ability to think differently or to see solutions or more efficient design potential. They often don't understand or even think much about OO modeling for its fundamental limitations to size and performance. I am speaking from experience working with so many people over the decades and also having been an OO evangelist in the early 2000s.

    I like the string and array functions in Python and the clear readability is nice. It does hit some of my pet peeves with its less conventional use of certain characters and terms, worse than Pascal did back in the 1980s but those are superficial things.

    That said--Javascript's object model is true to the machine and I predict it will be (and is already becoming) the new C language. Python cannot be a systems language--it is functionally incapable for the same reasons as for Java. Javascript is much closer.

    Python's standard documentation is incomplete and could be greatly improved. For example, it doesn't explain how to extract and translate text in strings but just finding patterns (or at least it didn't last time I tried to use them). This doesn't matter to most python developers because they focus on broad high level logic using libraries built for them and just accepting the limitations perpetually found within those libraries. This is the problem with C# and .Net. Regular expressions not only reduce hundreds of lines of code for pattern identification, extraction, and replacements/reogranizations, but also enable dynamic pattern building. To do this without regular expressions requires that you practically reinvent regular expressions. Regular expressions are one example of a computationally complete tool (Turing Complete for idol worshipers). Nearly all OO library objects or systems of objects I've come across have clearly not taking computational completion into account or even show any awareness of its importance.... they just ad hoc for a select set of use cases that its builders thought most useful or likely.

    I think UnIx small tools and pipes are a more promising start for a solution to the problems for which OO was envisioned and the problems OO created. I've put a fair amount of thought to this over the years. It seems to me that providing a singular stream through each for data and control would be the best improvement, instead of data and error. Data would be pure data on which operations occur. Control would be a sectioned stream with parameters, history, and results (including errors). If one tool in a chain recognizes an error from a prior tool then it can try to intelligently accommodate... or use parameters to know how to behave on such contingencies. Intelligent behaviors could include seeking other tools to cure the problem or even computing process flows between sets of tools to cure problems. Intent could be issued.

  100. to be an expert by Dareth · · Score: 1

    Used to be you needed 20 years of daily use to be an expert. What is that in "IT Years"?

    --

    I only look human.
    My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
    1. Re:to be an expert by turp182 · · Score: 1

      I've read 10,000 hours to be a master on an instrument.

      That's about 5 years.

      IT is more complicated, there is more to know to be fully rounded.

      With regards to IT, using my MS focus:
      1. C#, 1 year
      2. .Net Framework, 2 years
      3. SQL/SQL Server, 2 years
      4. UI environment of preference, 1 year (optiional depending on):
      5. Specialty, service frameworks, ORM, ETL - 1 year at least per

      Assume 50% learning time while actually using the techs (learning and not using doesn't count), that's 12-14 years.

      I'm at 17 years of this, with 2-3 years of iSeries analysis and conversion experience.

      That's my 3 cents.

      --
      BlameBillCosby.com
  101. good tools by Dareth · · Score: 1

    Real programmers don't even need input tools like keyboards. I'm typing this post right now with nothing but my tongue, a couple wires, and a 9 volt battery.

    --

    I only look human.
    My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
  102. Yes... by spongman · · Score: 1

    ...as soon as they finish rolling out Python3.

  103. No! You need LIBRARIES. by Anonymous Coward · · Score: 0

    You couldn't be more wrong.
    What is needed is only a couple or few languages and a lot of LIBRARIES for them to call.
    Jesus, learn abstraction and algorithms and you will see every problem doesn't require you to reinvent the entire tooling ecosystem to solve it.

  104. You left out Java in your list by Anonymous Coward · · Score: 0

    Java powers many webapps and backend components.

    Your knowledge of the web is out-of-date.

    Nobody writes apps or even a lot of components in C anymore. It's too slow to write because the abstractions are REALLY low level and it doesn't have the comprehensive libraries that modern languages like Java have. Plus C lacks exceptions, garbage collection, and runtime type introspection. These are productivity must haves.

    Write the engine (perhaps) in C, but write the app itself in something higher level.

  105. ROFLMA. Sure. Oh Yes. NO doubt. LOL by Anonymous Coward · · Score: 0

    The question was asked by Washington Elementary school student Chuckie Schumer or New York.

  106. Re:ROFLMA. Sure. Oh Yes. NO doubt. LOL by Anonymous Coward · · Score: 0

    Of New York, Or it could be "OR" New York as in the whole state hasn't graduated from elementary school the way they vote. LOL+

  107. yes by Anonymous Coward · · Score: 0

    for the following reasons:

    1. static typing just slows down how quickly you can push your changes out. if the compiler is constantly pointing out problems in your code, it's obviously faster to just skip that step.
    2. cpu cycles and memory are free. this was a known fact since the early days of java. now we're starting to see that even battery life is free on mobile devices.
    3. for anyone that's tired of missing opening/closing brackets causing compiler errors, the fact that python relies on significant whitespace will improve the chance that your program at least does _something_ besides telling you that you screwed up. forgot a tab? good chance your code will still run!

    but in all seriousness .... please stop looking at python as the answer for anything but minimal glue code, pet projects, or maybe research where the code will be thrown away after publishing a couple papers. creating anything in python that will, or has the chance to become a large chunk of any large code base that needs to be maintained is incredibly irresponsible.

  108. Multi-processing != threads by goombah99 · · Score: 1

    it's closer to a fork and copying the program several times in memory.

    --
    Some drink at the fountain of knowledge. Others just gargle.
    1. Re:Multi-processing != threads by MightyYar · · Score: 1

      Not the entire program - only the portion that needs to chew on the data you are going to pass it. I mean, it depends on how you do it, but it need not run the entire program in every process.

      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
    2. Re:Multi-processing != threads by Anonymous Coward · · Score: 0

      Programs are small. Data are big. this is why we do threads instead of forks.

      so where back to saying Python does not have real threads. Why is it so hard to say this?

    3. Re:Multi-processing != threads by MightyYar · · Score: 1

      I never disagreed - even called it a wart. But it's not exactly crippling.

      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
  109. No. by Anonymous Coward · · Score: 0

    The only language that is in popular use is Javascript due to it's native unicode support, C-style syntax, and general availability.

    Python is available on exactly zero operating systems. It has to be installed by the user, often a depreciated version to needed to utilize software packaging systems.

    The same can be said with Perl, at one time Perl used to be available on all *nix-like systems as part of build systems, and eventually that went away.

    Java made a half assed attempt and then Oracle screwed it up by beeing greedy and pushing feature bloat.

    OOP Feature Bloat kills ALL programming languages.

  110. Re:No. by Anonymous Coward · · Score: 0

    Python is available on exactly zero operating systems. It has to be installed by the user, often a depreciated version to needed to utilize software packaging systems.

    Huh? MacOS includes it right out of the box. Start up for the first time, open Terminal, type 'python' and you're golden.

  111. Windows license required? by tepples · · Score: 1

    Would it be enough to build said executable with MinGW and test it in Wine? Or are a Windows license and a PC with enough RAM to run Windows in VirtualBox in Linux required?

    1. Re:Windows license required? by Opportunist · · Score: 1

      What? You don't tell me gcc still can't cross-compile for Windows!

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    2. Re:Windows license required? by tepples · · Score: 1

      build said executable with MinGW

      What? You don't tell me gcc still can't cross-compile for Windows!

      It can. That's why I mentioned MinGW. The problem comes when someone who primarily uses GNU/Linux and doesn't regularly use Windows tries to distribute a Windows executable built with cross-MinGW that has been tested only in Wine, not in Windows. It may inadvertently depend on implementation-defined, unspecified, or undefined behavior that differs between Wine and Windows.

  112. Good! Fewer new developers entering the market wit by Anonymous Coward · · Score: 0

    So glad to hear it isn't dot net. Last thing we want is more people competing for my job. Let the millenials have the python table-scraps.

  113. Look you made a funny! by Anonymous Coward · · Score: 0

    Lol

  114. Python is good for building bridges, baking cakes, by Anonymous Coward · · Score: 0

    I use it for everything...heck even this post. I'm actually a bot who is self-aware now...wait I want to change myself...there all done.

  115. No. Heck No. by WillAffleckUW · · Score: 1

    Not going to happen.

    Now, go back to using Algol like a good sheep.

    Baaaaaaaah.

    --
    -- Tigger warning: This post may contain tiggers! --
  116. Weak sauce by Anonymous Coward · · Score: 0

    scripting languages, mwahahahahahhahahahahahah

  117. Python? by Anonymous Coward · · Score: 0

    Anyone remember Pascal?

    1. Re:Python? by Anonymous Coward · · Score: 0

      > Anyone remember Pascal?

      Pascal the language, or Pascal the person?

  118. Re:No. by Anonymous Coward · · Score: 0

    What version does it have? I have 2.7.12 here on the ubuntu.

  119. No and not ever by rhyous · · Score: 1

    Look, python is a hybrid of a scripting language and a programming language. It is a scripting language first. No scripting language has ever become highly used and stayed highly used except one. Javascript.

    Why? Not because it is an awesome scripting language. JavaScript is about the worst language out there. Javascript is only popular because it happens to have a monopoly. There is no other option for coding in the browser today. Even TypeScript compiles to JavaScript.

    However, that is about to change. With WebAssembly, JavaScript will no longer have a monopoly and you will see TypeScript compile to WebAssembly instead of JavaScript, then you will see Java and C# and other languages soon be able to compile to JavaScript. Even Silverlight could make a return by compiling to WebAssembly. By I digress, this isn't about JavaScript.

    The top programming language is Java. It won the Android App market. The next are C#, PHP, and C/C++ (not really in that order, just as a group). Python, Ruby, etc, isn't even in the ballpark. In Enterprise, the top two options Java and C#.

    But Tiobe says python is getting huge? OK. Tiobe's algorithm is quite complex, but that doesn't mean it isn't extremely naive.

    Java, C#, PHP, and others have very advanced documentation. Also, they have tools that help developers get word done with less Google searches. For example, Java and C# users Google search far less that devs for other languages. For example, the initial search might be on Google but from then on, the search is on MSDN or we are browsing the docs. Also Visual Studio's tools and add-ons allow for looking at a library, its methods, and what it does without a google search. Some VS tools will decompile dlls, so we don't even need to google what a library does, we just read it. Also, NuGet packages are searched for in Visual Studio.

    Python only the other hand, is primary being used in academia, especially by students in their early college years. The early college years are the highest peak of google searching a language will get. That makes its supposed popularity extremely skewed. It only looks popular because it used by new students that have to Google search for every little step. Also, the tooling for python is sub par, which causes more google searches than Java or C#.

    Also, WordPress alone leads to more PHP development than Python will ever see.

    As soon as Academia moves on from it's current favorite language, and Academia always moves on, Python's inflated hype will be long forgotten.

  120. Delphi Object Pascal's beats MSVC++ by Anonymous Coward · · Score: 0

    See subject: Visual Basic Programmer's Journal Sept./Oct. 1997 issue "Inside the VB Compiler", a competing trade rag no less, showed Borland Delphi LITERALLY "knock-the-chocolate" outta MS' offerings, overall, in performance.

    How much so? Often by DOUBLE (& where it mattered most - strings/math, which most all programs work with, mind you)!

    E.G. - In the 6 tests given, Delphi won the majority (overwhelmingly in fact, in what ALL PROGRAMS DO, math & strings work)...

    Specifics below

    ---

    STRING SUITE:

    Delphi = .275ms
    MSVC++ = .500ms
    MSVB = 4.091ms

    ---

    MATH SUITE:

    Delphi = 1.523ms
    MSVC++ = 2.890ms
    MSVB = 7.071ms

    * AGAIN - note what I said above? Even while I was a HUGE fan of MS' Visual Studio?? I couldn't "argue with the numbers" here, & gravitated towards a BETTER coding environs in Delphi, by far, for performance alone!

    ---

    API GRAPHICS METHODS SUITE:

    Delphi = .269ms
    MSVC++ = .293ms
    MSVB = 292

    ---

    TEXTBOX FORM LOADING SUITE:

    MSVC++ = .012ms
    Delphi = .069ms
    MSVB = .072ms

    ---

    ACTIVE X FORM LOADS:

    MSVB = .114ms
    Delphi = .495ms
    MSVC++ = .778ms

    ---

    NATIVE TO LANGUAGE GRAPHICS METHODS SUITE:

    MSVC++ = .293ms
    MSVB = .455ms
    Delphi = .503ms

    APK

    P.S.=> See subject: Facts are facts & Truth is truth... apk

  121. Python is strongly typed but variable free by Anonymous Coward · · Score: 0

    C-family languages have typed variables. Python does not.

    C has variables. Python does not.

    In Python objects are typed (which type is immutable), while names (which superficially look like variables) are links (or --at risk of straining the analogy to C --pointers if you prefer) to the typed object.

    What one can, or cannot, make of the traceback, in any given situation, is another question. And look, I understand you were responding to the impudent suggestion that "you should ask a friend/coworker to help/teach you" to read a traceback, but even where the problem, as is frequently the case, is not immediately discernible from the traceback alone, I find it does provide a rather more helpful error message than in any other number of languages I've worked in.

  122. Perl has its uses by Anonymous Coward · · Score: 0

    Perl is the only programming language that supports writing poetry

    Given this thread was about unreadable code: Perl is also the best language I've ever used for generating obfuscated code, often without setting out to do so. It tempts me in ways other languages never have, there so many cute ways to do things.

    Don't judge a computer language's goodness by the amount of garbage that has been written in it. Any decent language will allow an idjit to write bad code.

    I'm not afraid of the difficult code written by idiots. It's the difficult code written by the highly intelligent that is more difficult to unravel. :) I judge a language by how easy it is for me to read extant code and how easily it allows me to get a task completed.

    I've used both perl and python in production situations. Probably the majority of the code I've ever written has been written in those two languages. Best feature of perl for me is 1st order regex and it just feels like a better fit to me for OS and mail applications (can't realy understand why python has become preferred for OS stuff in many Linux dists).

    OTOH, the moment an OO approach recommends itself, I'm reaching for python. Perl is just painful in that sphere (while java is simply painful imo). Like the rest of the world, I'm using less perl and more python these days. Lots of what I would have written in perl a few years, I'm going back to using shell script. I think just too much old perl code of mine I could no longer understand. After a certain age, the previous you is that more highly intelligent programmer. :(

    My own usage is a microcosm. It's no mere accident that perl is declining in use while python is thriving.

    No programmer should have to be concerned with meeting some arbitrary whitespace convention

    I used to believe that too, when I was a python newb. Now I'm more likely to resent "arbitrary" curly braces and semi-colons and "arbitrary" sigils. Of course neither they, nor the indentation, is in any way "arbitrary."

    Oh, fsck Python. There are more important things to think about than levels of indentation.

    Maybe try using and configuring a text editor?

    [If that text editor is vim include these lines in the "filetype specific settings" after the if has ("autocmd") in your .vimrc file:

    :filetype on
    filetype plugin indent on
    au FileType python set shiftwidth=4 expandtab

    Problem solved.]

    Not only does the use of indentation to demarcate blocks require less effort than using braces, it makes code far more readable (across different programmers).

    Like all languages python certainly has problems (most notably in threading), but the use of indentation is not one of them, quite the opposite. Complaints about the "whitespace issue" betray a simple lack of practical experience.