Slashdot Mirror


Is Python the Future of Programming? (economist.com)

The Economist argues that Guido Van Rossum resembled the reluctant Messiah in Monty Python's Life of Brian. An anonymous reader quotes their report: "I certainly didn't set out to create a language that was intended for mass consumption," he explains. But in the past 12 months Google users in America have searched for Python more often than for Kim Kardashian, a reality-TV star. The rate of queries has trebled since 2010, while inquiries after other programming languages have been flat or declining. The language's popularity has grown not merely among professional developers -- nearly 40% of whom use it, with a further 25% wishing to do so, according to Stack Overflow, a programming forum -- but also with ordinary folk. Codecademy, a website that has taught 45 million novices how to use various languages, says that by far the biggest increase in demand is from those wishing to learn Python. It is thus bringing coding to the fingertips of those once baffled by the subject. Pythonistas, as aficionados are known, have helped by adding more than 145,000 packages to the Cheese Shop, covering everything from astronomy to game development....

Python was already the most popular introductory language at American universities in 2014, but the teaching of it is generally limited to those studying science, technology, engineering and mathematics. A more radical proposal is to catch 'em young by offering computer science to all, and in primary schools. Hadi Partovi, the boss of Code.org, a charity, notes that 40% of American schools now offer such lessons, up from 10% in 2013. Around two-thirds of 10- to 12-year-olds have an account on Code.org's website. Perhaps unnerved by a future filled with automated jobs, 90% of American parents want their children to study computer science.

"The CIA has employed Python for hacking, Pixar for producing films, Google for crawling web pages and Spotify for recommending songs," notes the Economist.

Though Van Rossum was Python's Benevolent Dictator For Life, "I'm uncomfortable with that fame," he tells the magazine. "Sometimes I feel like everything I say or do is seen as a very powerful force."

179 of 300 comments (clear)

  1. It's great.... by Rei · · Score: 4, Insightful

    ... until you discover that your program is butting up against performance or memory limitations, since Python gobbles both, and then you have to go back and redesign the whole bloody thing.

    --
    "Lock and load, Brides of Christ!"
    1. Re:It's great.... by 0100010001010011 · · Score: 5, Insightful

      Rule of Optimization

      Developers should prototype software before polishing it. This rule aims to prevent developers from spending too much time for marginal gains.

      Not everything needs to be the best, most optimized way to do something.

      We're constantly automating away boring tasks at work with Python and they're all 'good enough' to finish and move on to the next problem. We *could* do them in C but it'd be marginally faster with longer development time.

    2. Re:It's great.... by Anonymous Coward · · Score: 2, Insightful

      > That was my criticism of Java 30 years ago... and yet...

      Wow. You have some amazing psychic powers if you were criticizing Java in 1988!

    3. Re:It's great.... by isj · · Score: 2

      And if you start out with, say, C++ then you may discover your developers is not developing fast enough.

      Both interpreted and compiled languages have their place.

      I frequently make prototypes/experiments in python, and then when it comes to making the actual program I may switch to C++ or Java if the performance wouldn't be good enough in Python, or if I need special libraries for dealing with something, or there are some unusual constraints.

    4. Re:It's great.... by Rei · · Score: 3, Insightful

      This has happened multiple times. Last one was species analysis, combining species lists, GBIF distribution data, geonames data, and IPCC climate data.

      The reality is that A) some tasks will always require significant performance or memory, and B) not all tasks' footprints are readily discernable when you begin the task.

      Python is a real monster with memory in particular. The amount of overhead on every variable and every member of a list or dict is absurd. There are packages like numpy to help with this, but they're not universally applicable and more limited in capabilities than stl structures in C++.

      --
      "Lock and load, Brides of Christ!"
    5. Re:It's great.... by jma05 · · Score: 4, Insightful

      ...which is when you are supposed to profile to identify your performance bottle necks and write those in a native extension. Python was meant to be used with occasional supplementation by a fast programming language, not replace those. That is how most use it. Python even chose to sacrifice true multi-threading to simplify writing native extensions. If you have a lot of number crunching, you use a GPU math library from Python, not code straight in it.

      That aside, the main reason I use Python today is the ecosystem. I started using Python almost 2 decades ago, when it wasn't that popular - back then, I had to explain that it was just a nicer Perl, to people who had never heard of Python. Back then, the high performance languages just weren't very productive to use. Today though, things have changed. There are several programming languages that are almost as performant as C/C++, and yet are very easy to use with several high-productivity features. My favorite is Nim. Rust and Scala are also quite nice. But it is the libraries, not the language that still keeps me in Python. They cover just about everything. Most of the time, performance is the least of my concerns. Time to produce is (research analytics - quick disposable programs).

    6. Re:It's great.... by Rei · · Score: 4, Informative

      >>> a=0
      >>> sys.getsizeof(a)
      24
      >>> a=""
      >>> sys.getsizeof(a)
      49
      >>> a=[]
      >>> sys.getsizeof(a)
      64
      >>> a=[0]
      >>> sys.getsizeof(a)
      72
      >>> a={}
      >>> sys.getsizeof(a)
      288

      --
      "Lock and load, Brides of Christ!"
    7. Re:It's great.... by DontBeAMoran · · Score: 4, Funny

      To be honest, it's not that great of a coffee.

      --
      #DeleteFacebook
    8. Re:It's great.... by DontBeAMoran · · Score: 5, Funny

      Go checkout your mirror, the problem will stare you in the eye.

      Everyone! This guy is trying to shame vampire python programmers! /typicalSJWmoron

      --
      #DeleteFacebook
    9. Re:It's great.... by jma05 · · Score: 2

      > The amount of overhead on every variable and every member of a list or dict is absurd. There are packages like numpy to help with this, but they're not universally applicable and more limited in capabilities than stl structures in C++.

      Then you Cython the heavily used data structures. But more likely, Python is perhaps not optimal for your use cases. In the end, it is still a glue language. But most of the programs typically written in Python never hit these performance road blocks.

    10. Re: It's great.... by SuperDre · · Score: 3, Insightful

      Yes, and that's a big problem. We get better/faster hardware every year, and yet every new version of new software feels slower and slower due to using these very unoptimized languages. 'developers' are getting more lazy by the minute and don't spend any time on optimizing anymore.

    11. Re:It's great.... by sjames · · Score: 1

      If you've done things sensibly, the python program IS your design. You now just have to IMPLEMENT (not re-design) all or part of it in a language that stores things in a more compact form.

    12. Re:It's great.... by Rei · · Score: 2

      Maybe I'm more prone to have my programming projects involve data crunching than the average person.

      Python is great for a "whip it together quickly" project. Even with data crunching, some slowdown, and gobbling up half your memory, is fine. But push it too far, and everything falls apart gloriously. And knowing in advance whether you'll hit that bound is not always obvious. If I know from the beginning something will be a big project, I start it in C++.

      --
      "Lock and load, Brides of Christ!"
    13. Re: It's great.... by dbialac · · Score: 1

      Management sees it as an unnecessary expense. I was actually speaking to somebody recently who backdated to an old version of Adobe CS2 because it was faster and he realized he never used the newer features. Just backdating ended up being an optimization.

    14. Re:It's great.... by DCFusor · · Score: 4, Insightful
      Burn mod points or point out that this is a fad, there are other glue languages that work fine, and even make it far easier to optimize just the part you want into some inline::C or inline:your_language_of_choice.
      .

      Due to some half decent grunt work done in python for the things it's fine for - say device drivers for slow stuff on a raspberry pi - and the difficulty refactoring one loosely typed language into another with slightly different rules, particularly where bit-fiddling is involved, I've recently written several programs using all of perl, python, and C. No sweat with "use Inline"....
      .

      The only issues I've had is poor python drivers where instead of checking a ready bit, the easy fractional sleep was used, making it utterly non portable even on the same machine (since perl's inline compiles python - while the sleeps are the same speed, the rest is now faster than native and oops, not ready....). Your basic "earnest beginner" mistake, tuning the sleep to go as fast as it would in testing, rather than actually doing the work to do it properly. Some languages attract beginners, and those are also the ones with the most google or stack overflow or whatever - searrches. The popularity, or how good a language is, might be better measured some other way. You could make the case that the more questions, the goofier the language, after all.
      .

      Yeah, I know, ,it's popular to diss perl for many of the same reasons - people too easily impressed with their own cleverness looking for job security by writing impossible to read code is blamed on the language, which would actually apply well to almost any of them. But you don't have to write bad or hard to read code. I've had people ask me what C(++) syntatic sugar templates I'm using to make my code so clear. I'm writing for myself and the poor maintainer who'll have to look after it later is me. I like me...so I make it easy. Freedom is always a doubled edged deal.

      --
      Why guess when you can know? Measure!
    15. Re: It's great.... by mSparks43 · · Score: 2

      hmm, not sure i agree with that. python can do many powerful and complex things you never could with a shell script. some heavy lifting AI and other data analytics spring to mind.

      The problem is more one of suitablity to team development and long term maintenance.

    16. Re: It's great.... by Joce640k · · Score: 1

      Both of these are true.

      If your code is less than screen screens long, Python is OK.

      Above that? Get a real language.

      PS: Headline ending with a question mark? Betteridge's Law.

      --
      No sig today...
    17. Re: It's great.... by LostMyBeaver · · Score: 2

      I honestly avoid Python as much as possible as I do with C even though I just pumped out a few thousand lines of a Linux kernel module in it.

      I think the real issue with Python is not whether it is suited for large projects or not, but instead is that the package repository is completely blasted with piss poor quality modules.

      Most of the Python modules I have attempted to use (thanks to Google and SE telling me I should), I find I spend a great deal of time fixing or rewriting modules and then feeling as if I have to take ownership of them as theyâ€(TM)re mostly abandoned.

      Python as a language is extremely versatile. It can do almost anything and generally can also do it well. I do develop a lot of computers and language tools including JITs, but I wouldnâ€(TM)t even know where to begin to write a JIT compiler for Python as there are far too many circumstances to consider. The language is simply far too rich and flexible to be able to write meaningful optimizers and code generators.

      The architecture to Python also sells memory consumption as a good thing. The nice part is that itâ€(TM)s a pointer-free language. This means that a defragmenter can be part of the garbage collector. The bad news is, Python probably more actively allocates memory than any other language Iâ€(TM)ve bothered with.

      I believe I could, with a great deal of effort write good, clean, and performant code in Python. Itâ€(TM)s probably better however to focus on programming languages which are too difficult for most scripters.

    18. Re:It's great.... by Joce640k · · Score: 1

      Yep.

      Simple rule: If the program is going to take more than a week to code, start in C++.

      --
      No sig today...
    19. Re:It's great.... by Waffle+Iron · · Score: 2

      Except for the integer, those sizes are comparable to most any language. Strings and arrays all involve at least one pointer and usually a capacity and size. On a 64-bit system, that can be 24 bytes right there. Hash tables are often allocated with some empty slots, so they are usually bigger still in any language. Python might be a little bigger in most cases to handle the overhead of dynamic typing, but it looks like it's within a factor of two.

      At any rate, if you're doing any serious number crunching in Python, it's probably best to figure out how to store the floats in numpy or "array" module structures, or even write a native library engine for your core crunching algorithms (it's not that hard). Alternatively, like you want, just use a different language without dynamic typing. But the tradeoff is usually less safety (C/C++), lack of a huge collection of comprehensive libraries (most other languages), or just being even slower and more bloated on most real-world tasks than Python for no good reason (Java).

      The other error that you made is that if you get first post on a Python article, you really are supposed to just say: "Derp! Whitespace! Derp!!"

    20. Re:It's great.... by Viol8 · · Score: 2

      "Except for the integer, those sizes are comparable to most any language"

      Really?

      int main()
      {
                      char a[1];
                      printf("%d\n",sizeof(a));
                      return 0;
      }

      $ ./a.out
      1

    21. Re: It's great.... by mSparks43 · · Score: 1

      I thnk you mean C is now written in C++

    22. Re:It's great.... by Anonymous Coward · · Score: 1

      "The objective (not always attained) in creating high-performance software is to make the software able to carry out its appointed tasks so rapidly that it responds instantaneously, as far as the user is concerned. [emphasis added]

      "In other words, high-performance code should ideally run so fast that any further improvement in the code would be pointless."
        – Michael Abrash, The Graphics Programming Black Book

    23. Re: It's great.... by Anonymous Coward · · Score: 1

      One of the reasons Python has become ridiculously popular is because TensorFlow is glued together with it. Right now AI positions are the hot new thing attracting some of the highest salaries in industry so a good chunk of people are running to Google to see what's up.

      Python is in no way doing AI. All the heavy lifting in AI is pushed through TPUs and GPUs which is being driven (probably) by highly optimized C++ via CUDA. Or OpenCL. Or AMP. A good chunk of the speed we can get is just cuBLAS doing a good job.

      If your software is mostly just prototype without architected structure then Python is a good choice. If your software contains large numbers of actors or interface contracts, go with a statically typed language. Duck typing is extremely brittle in large scale architectures since missing-methods cause runtime errors that can only reasonably be found at runtime or via aggressive unit testing. Same deal with mismatched argument types which can cause weirdness. Plus you don't know your operator types until you call so you can't just "pick a machine opcode and go", which is asking for slowness. Plus your objects are just unordered dictionaries which means every call is a hash lookup. Blah blah.

      I don't fancy my application stalling on dereferences or contention through the GIL but the influx of trendy new languages is depressing. We've given up on performance in favor of "What's another nuke in a nuclear winter?".

    24. Re: It's great.... by ath1901 · · Score: 2

      This. The popularity of CPython is not just because of the language features in my opinion. It is also the easy connection to C. I would even go further and claim the C connection is the most important feature. By writing "the application" in CPython and then rewriting the performance critical parts in C, you can get the best of both worlds.

      Excellent libraries like numpy are written in both C and Python. Not either or.

    25. Re:It's great.... by CODiNE · · Score: 1

      It's an interpreted language silly. His criticism of memory and CPU use was even more valid 30 years ago and everyone knew it. Just like JavaScript is making the web a pain like many knew it would since the day it showed up. It's a known trade off of the language.

      --
      Cwm, fjord-bank glyphs vext quiz
    26. Re:It's great.... by jma05 · · Score: 1

      Even with C++17, C++ is the other extreme. There are several other languages that fall nicely in between - almost as fast and efficient as C++, while being as productive as Python. If you memory consumption is an issue I would suggest Nim (like Python), Crystal (like Ruby) or Rust (like ML). They are all quite high level and use very tight data structures and consume little memory.

      https://github.com/kostya/benc...

    27. Re:It's great.... by Waffle+Iron · · Score: 3, Insightful

      That's apples and oranges.

      The Python integer can hold an unbounded sized value (eventually using even more storage if the value goes over 2^63).

      You allocated an array with a single character on the CPU stack (always reported as size "1", but you don't really know how big it is in octets; C doesn't specify). The tradeoff is that you now have several potential bugs/vulnerabilities:

      * You can overflow the number if it gets larger than 127 (or maybe it's 255, or even some other limit; who knows? C doesn't specify)
      * You need to manage the array size implicitly in your code and make sure you never index past zero.
      * The lifetime of your object abruptly and silently ends after you return. You must manually make sure to never store a reference to your array anywhere that could outlast your function.
      * You must mentally remember that a is not a null-terminated string, even though most C library functions dealing with characters only use that format.
      * If you use any recursion in your program, the stack allocation might fail, possibly without warning, resulting in serious security vulnerabilities. You'd need to manually avoid that possibility.

    28. Re: It's great.... by mSparks43 · · Score: 1

      I dont think anything beats the "undefined is not a function" error message. took me years to get past the "well duh, but stating the obvious doesnt help me" reaction and realise its actually quite sensible. (javascript)

    29. Re: It's great.... by mSparks43 · · Score: 2

      I take that back, the worst error message is and always will be "keyboard error, press F1 to continue"

    30. Re:It's great.... by djinn6 · · Score: 1

      You just don't recognize what the real trade off is. It's not about the execution time. It's the time from noticing you have a problem to having the solution.

      So you have 600 files. It takes you 30 minutes to write a C program and 4 seconds to run it.

      I can write the same program in 10 minutes in Python. The rule of thumb is Python is 100x slower on the CPU, but same speed as far as IO is concerned. So in the worse case it will take 400 seconds, most likely significantly less, since your 7 ms number includes IO and file processing is almost entirely IO-bound.

      Overall my work took 16 minutes, 40 seconds, while your's took a little over 30 minutes. Moreover, 6 minutes of my time is waiting, during which I can go start on my next task.

      It's even more obvious when you look at cost. Let's say my time costs my employer ~$100 per hour. Over the course of a week, I'll save somewhere between 18 and 33 hours of work, which translates to $1800 to $3300. For that money, my employer can buy 3 or 4 new computers to run these extremely inefficient programs. Of course, in reality they'll pay me for the 40 hours anyways and I'll just be 100-200% more productive.

    31. Re:It's great.... by djinn6 · · Score: 1

      I frequently make prototypes/experiments in python, and then when it comes to making the actual program I may switch to C++ or Java

      I like to think I'm doing the same thing, but in reality those performance problems rarely comes up, and when they do they're usually not CPU-bound. So most of them are still in Python.

      Eventually someone will implement a faster Python interpreter and the problem will be moot.

    32. Re:It's great.... by jgfenix · · Score: 1

      Yes, you can throw more hardware but it's easier to administrate 3 computers than 9.

    33. Re:It's great.... by anon+mouse-cow-aard · · Score: 1

      machines are big these days, and there is a lot of code that doesn't need performance, but say we take you at your word, it's still not python's fault: you designed it wrong. Python makes it as easy as possible to implement algorithms, and the result is readable, so they can be discussed and changed. If it doesn't go fast enough for your needs, then you did not figure out an appropriate solution. I have replaced C code with python, where the python ran 10x faster. This happens because people writing in more difficult languages spend a lot of time sweating the details, so they don't have as much time on the bigger picture. A nearly ideal way to approach a lot of problems is to figure out the algorithms in python, even while you keep C in the back of your head. Once you have something that works, you can replace the performance critical bits in C, but likely >90% of the code will still be OK in python.

    34. Re: It's great.... by optikos · · Score: 2

      the worst error message is and always will be "keyboard error, press F1 to continue"

      There is nothing wrong whatsoever with stating that the keyboard-detection failed, please plug in a keyboard, and then press F1 as a positive-verification test. I bet that I have done exactly that rectification at least 500 times since 1981 (although which keyboard connector I use has changed about once each decade).

    35. Re:It's great.... by djinn6 · · Score: 1

      If you add testing, Python development is even faster. Even Google's unit test library is leagues behind Python's unittest.

      Of course, it's very hard to compare development times. I'm good in Python, decent in C++, but very rusty with plain C. You're probably the opposite.

    36. Re: It's great.... by Rei · · Score: 1

      Love C++17.

      Python is great because you can write something and there's almost no startup overhead - you just start shoving whatever data into whatever variables you want without having to define classes / structures, pass whatever you want without having to define types, etc - and it's got a great set of packages to work with. You get "out of the gate" a lot faster. But then it nickels and dimes you after that point due to the memory/performance overhead. And trying to work around Python's internal limitations means a lot of programming overhead. Also, the non-typesafe nature of Python - again, while convenient in initial programming - also tends to hide bugs. Again, things are easier for you earlier on, harder later on.

      Often (particularly for simple programs), Python is the right choice and can save you a lot of time. But if you're unlucky, it can cost you a even more time.

      The new C++ standards help get rid of a lot of the old C++ annoyances and greatly increase the power of stl. You can have as tight memory and performance as you want. You still have to lay out all of your structures and types, so your "startup times" are longer. But it's so dang powerful after that point. There's still some things they need to tackle, mind you - IMHO strings are still a mess, they need a std::utf8_string, with std::string intended only for 1-byte characters, and IMHO std::wstring should be obsoleted because utf16 is inherently dangerous (it'll "usually" work, and so pass testing, but then someone will input a 4-byte character and everything explodes). But in general.... C++ has really matured. In particular, I love smart pointers, and I so love the combination of std::thread and lambdas in order to inline threaded statements (although they need to add threadsafe stl classes... I had to write a threadsafe std::map with threadsafe iterators for one project I was working on).

      --
      "Lock and load, Brides of Christ!"
    37. Re: It's great.... by Anne+Thwacks · · Score: 2
      Unlike "Syntax error at or near line 1, column 1" - which tells you everything you need to know!

      Personally, I prefer:
      User error: Strike user to continue!

      --
      Sent from my ASR33 using ASCII
    38. Re:It's great.... by gweihir · · Score: 1

      Not really. If you know what you are doing, just add some really optimized modules in C. Python is great for glue code and prototyping though and the interface to C is exactly the same as for Python classes. For the other way round (embedding the scripting in C), Python is not so great, but Lua is a somewhat Python-like replacement that is really easy to embed.

      That said, no language is "the future of programming". All languages that have stood the trial of time have something going for them and have their place. All languages require somebody really competent at the keyboard to produce good software. That somebody ideally has skills and experience with a number of different languages and a solid background in data structures, algorithms and, today, usually Ibternet tech and software security. This will not change anytime soon, and may possibly not change, ever.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    39. Re: It's great.... by chaboud · · Score: 1

      This is the most spectacular trolling I've seen in a long time. Someone ostensibly arguing for the efficiency of C++ misuses C++ in a way that demonstrates the too-much-rope error-prone nature of the language.

      I am, first and foremost, a C++ programmer, but I have spent the last year writing python (machine learning). I find this whole argument hilariously stupid and stupidly hilarious.

      Tool for the job.

    40. Re:It's great.... by Joviex · · Score: 1

      .....as a prototype. If you are making huge systems in Python, I question your ability in the first place. Its meant for quick scripts, quick code, and prototypes.

    41. Re:It's great.... by Waffle+Iron · · Score: 1

      Huh? Strcat() is a wheel that was invented a long, long time ago...and it rolls as well as it ever did.

      You should never use strcat(). But if you do, you need to reinvent wheels that check at least three things every time you use it: The current size of the source, the current size of the dest, and the total free space in dest. Then you need to do the math to check for buffer overflows. Using strncat() safely is almost as complicated. (If instead, you've figured out static assumptions to guarantee safety, now you have a massive documentation problem for future maintainability.)

      But all of that was just for static allocation. What if you have the audacity to support strings that don't have a fixed size limit? Well, now you have a vast new pile of wheel reinventing to do on top of that.

    42. Re:It's great.... by Anonymous Coward · · Score: 1

      YOU, an AC nobody wanna-be programmer Dunning-Krueger poster boy turd, are calling Michael fucking Abrash an "incompetent programmer"?

      Now I've seen everything.

    43. Re: It's great.... by mcswell · · Score: 1

      "Duck typing is extremely brittle..." As opposed to Duct Taping. Which is, if you will, what running TensorFlow from Python.

      And before you get too down on Duct Taping, remember that's (part of) what got the Apollo 13 astronauts back from the Moon.

    44. Re: It's great.... by mcswell · · Score: 1

      I don't think "screens" is a good measure for deciding whether Python is an appropriate language. I have a program with about ten thousand lines of Python code, and it runs just fine, thank you. (It imports an XML file describing the morphology of a language, and spits it back out as finite state transducer code, in under five seconds. The XML files in question tend to be a few thousand lines, generally with one open or close tag per line.) I'd hate to have coded that in any other language (*especially* XSLT, which has to be the world's most verbose language).

      I don't, however, have anything better to suggest as a metric, other than the obvious speed issue.

    45. Re:It's great.... by packrat0x · · Score: 1

      #include <stdio.h>
      int main()
      {
                      char a[1];
                      printf("%d\n",sizeof(a));
                      printf("%d\n",sizeof(&a));
                      return 0;
      }

      --
      227-3517
    46. Re: It's great.... by orlanz · · Score: 1

      Yup! I regularly do programming that is data analysis of files in the thousands and millions. The files are usually data condensed 500bytes or bulky 300megs (stupid xml) each. Proficient in Python and C.

      I don't see much of a difference in C vs Python. Maybe 4x (no, I am not doing it wrong). If I replace the running bottle necks with C, I can easily get 50-90% of that.

      BUT, when you consider how easy it is to transform a linear logic flow to work across local and distributed CPUs... Erlang, and C aren't worth the time wasted to even discuss the topic.

      The difference in adaptability, maintenance, and evolution of the logic flows saves me days in dev time. Do I really care if my daily program takes 4hrs vs 15hrs? Especially when I can spend 2hrs to make it a distributed system and bring it down to 2hrs by throwing 8 virtuals at it? No!

    47. Re:It's great.... by datavirtue · · Score: 1

      All of this is meaningless to an employer that takes three weeks to provision a server. Besides...once a problem domain is solved you can just reuse the code.

      --
      I object to power without constructive purpose. --Spock
    48. Re: It's great.... by datavirtue · · Score: 1

      They would try to optimize if they did load/performance testing....but they don't so they don't.

      --
      I object to power without constructive purpose. --Spock
    49. Re: It's great.... by datavirtue · · Score: 1

      You obviously have not been swimming in .NET developer infested waters.

      --
      I object to power without constructive purpose. --Spock
    50. Re:It's great.... by datavirtue · · Score: 1

      Can't you just encrypt and compress the memory tuples? I saw that in a movie once.

      --
      I object to power without constructive purpose. --Spock
    51. Re:It's great.... by xvan · · Score: 1

      Python is getting traction on machine learning because of TensorFlow, which is bound to but not written in python. Data analytics where there is no strict time constraint can be done in python. Run, wait, some minutes, get the result.
      Heavy data crunching with strict time constraints, automation, HFT, weather forecasting, and big numeric simulations are done with low level languages.

    52. Re:It's great.... by Z80a · · Score: 1

      If you need a program that runs fast, you use C/C++, but If you need to make a program fast, you use python.

    53. Re:It's great.... by Quantum+gravity · · Score: 1

      Modern browser have a JIT (Just In Time) compiler for JavaScript.

    54. Re:It's great.... by angel'o'sphere · · Score: 1

      For a competent admin it is no difference if he administers 1, 10 or 100 machines. Especially with modern provisioning tools.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    55. Re:It's great.... by angel'o'sphere · · Score: 1

      A "char" in C is not the same as an Integer in Python.
      No idea why you wasted your time to compare a 1 byte structure with a pointer to an object.
      Hint: you should at least have used: int64 ....

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    56. Re: It's great.... by angel'o'sphere · · Score: 1

      The main reason is using a database were we traditionally would simply use a file. Or wrong usage of XML ...

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    57. Re: It's great.... by ath1901 · · Score: 1

      The time to a first working version is especially important when the solution isn't obvious. It is not until I have a working program that I truly understand what the tradeoffs and bottlenecks are. Getting to that point quickly often makes economic sense since it is not until then you can make proper estimates of the actual cost or viability. Early optimisation is the root of all evil and all that...

    58. Re:It's great.... by tepples · · Score: 1

      which is when you are supposed to profile to identify your performance bottle necks and write those in a native extension.

      Good luck getting your users set up to compile said native extension from the C++ source code that you distribute. Just installing the Build Tools for the version of Microsoft Visual C++ with which a particular minor version of Python 3 for Windows was built was a multi-gigabyte download last I checked.

    59. Re: It's great.... by jma05 · · Score: 1

      I agree that C++ new features have improved it. But many features also feel bolted to me. For example, I prefer Rust's language level support for move semantics than C++'s library level support. Smart pointers are very nice. But Boehm GC integrated into Nim does not seem to add much overhead. And Rust's model integrates smart pointers into the language. But if C++ features feel natural to you, then more power to you. I would have sided with C++ since it has more libraries. But Rust has enough crates now that it does not lag behind too far, at least for my purposes. Nim's packages can't match C++, but it integrates with C/C++ well since transpiles to them. I avoid low-level use of threads and prefer parallel maps and parallel blocks. They suit my purposes, but are perhaps not adequate for you.

    60. Re: It's great.... by ath1901 · · Score: 1

      Sure, but if the project gets even bigger, write a Python wrapper around it for all the stuff that changes often like integration, reporting or small ad hoc spinoffs. Large C++ projects take an awful long time to compile and the code base is much more cumbersome to manage so a lightweight framework around it makes sense.

    61. Re:It's great.... by Rei · · Score: 1

      It depends entirely on what you want to do. In C/C++, you set your variables to the type you need. In python, they're always huge. E.g. I don't need an int64 to keep track of what's basically an enum, or whatnot.

      Python really becomes a memory monster once you do multidimensional data structures. And numpy just isn't that flexible with them, so you're often forced into using native python data structures.

      --
      "Lock and load, Brides of Christ!"
    62. Re: It's great.... by ath1901 · · Score: 1

      [citation needed]

      I've seen the claim that it is only for prototyping or scripting so many times. Please explain why.

      Python is multi paradigm with very good support for modules and unit testing, mocking etc. What more do you need for large scale projects?

      Sure, it is slow so don't bother if your project is very CPU bound. But, for anything else, why not?

    63. Re:It's great.... by jma05 · · Score: 1

      A.) I mentioned my use case - research analytics. I am the only user for most of the code I write. My results have users, not the code.

      B.) If your users are not tech-savvy, you distribute the binaries, not the code, just as with any other language. There are plenty of tools to do that.

    64. Re: It's great.... by Rei · · Score: 1

      As an example of why I used a threadsafe map... I was working on a ring network, and had a ring of nodes. It was built around a std::map so that you could seek to each individual node directly by their hex ID (std::map::find() or []); so that the closest node to a target hex could be found (with upper_bound()/lower_bound()); and so that you could iterate through a node's neighbors.

      Various threads could add or remove elements in the ring at any point in time, and there were many tasks that involved iterating through every element of the ring in order. Also, sometimes there would be tasks where a node would need to iterate through its neighbors in either direction. So you can imagine the disaster that happens when you've got an iterator pointing to something that just disappears on it (also there can be problems with begin()/end() nodes). But locking the entire network for the entire duration of a cross-network sweep (with significant per-node overhead) was also not an option, and there was meaningful overhead to seek operations, so it was really desirable to be able to iterate through neighbors.

      The threadsafe map class really did the trick for me (I was also able to give it a mode to allow for circular iteration, which std::map doesn't have... aka you go off one end and come back in on the other). I had to replace the std::map iterators with a wrapper class that acted as smart pointers to the nodes, and nodes (also wrapped) couldn't be physically deleted until there were no longer any iterator references to them. A deletion operation merely flagged a given node for deletion. And of course I had to put locks / lock guards around all of the std::map functions that weren't overridden.

      One piece of unexpected behavior was the realization that reverse iterators have gotchas. If you have a forward iterator to an element of a std::map and you insert an element elsewhere in the map, nothing happens, no matter where it was inserted; your iterator continues pointing to the exact same element it had been pointing to. But reverse iterators actually point to one beyond the element that they appear to point to, so insertions can cause what your iterator points to to change. I had to write my own reverse iterator implementation because that sort of behavior totally blows up in a threaded environment.

      --
      "Lock and load, Brides of Christ!"
    65. Re:It's great.... by h33t+l4x0r · · Score: 1

      Javascript made the web a pain when it first showed up. These days, it's not so bad.

    66. Re: It's great.... by pchasco · · Score: 1

      You are in luck because there is already a high performing JIT compiler for python: Pypy. It performs on par with node.

    67. Re:It's great.... by angel'o'sphere · · Score: 1

      E.g. I don't need an int64 to keep track of what's basically an enum, or whatnot.
      You don't *need*, true.
      But the compiler will usually make sure that a variable of your enum type fits into an 'int' ... and on a modern compiler/processor architecture an int is an int64 ... to change that you need to know a bit more about C/C++ :D
      On the stack stuff like this is completely irrelevant anyway, it only matters for members of structs when you allocate huge amounts of such structs.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    68. Re:It's great.... by Rei · · Score: 1

      If I care about memory, I'll just store it as a char or unsigned char. And that's the key difference: in C/C++, you have easy and full control over memory usage. In Python, you have to jump through hoops, where it's even possible at all.

      it only matters for members of structs when you allocate huge amounts of such structs

      And maybe you never do that, but many people, including myself, do.

      --
      "Lock and load, Brides of Christ!"
    69. Re:It's great.... by angel'o'sphere · · Score: 1

      And maybe you never do that, but many people, including myself, do.
      Yeah, but that means you have to declare a char and cast an enum into it and out of it ...

      I have only limited knowledge about Python, but memory problems never were an issue.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    70. Re:It's great.... by Rei · · Score: 1

      Enums are treated as ints under the covers. Depending on your compiler flags, enums / ints should automatically cast to char:

      enum e
      {
          FOO = 0,
          BAR = 1
      };

      int main(int argc, char** argv)
      {
          char c;
          c = FOO;
          return 0;
      }

      No warnings with default g++ compiler flags.

      I have only limited knowledge about Python, but memory problems never were an issue.

      And I've encountered python memory and performance roadblocks which are difficult or impossible to resolve frequently. Just because you don't do memory or CPU intensive tasks doesn't mean that nobody does.

      --
      "Lock and load, Brides of Christ!"
    71. Re:It's great.... by Darinbob · · Score: 1

      And yet, many times things DO need to be faster or smaller. Nothing that wrong with Python, but it should not be treated as the only language that exists.

    72. Re:It's great.... by Billly+Gates · · Score: 1

      Citation of modern CPU performance is listed here. My so called ancient i7 4770K from 2014 can do 137,000,000,000 instructions per second! Probably even more as it is overclocked to 4.2 ghz with ram OCed to 2400 mhz. This is not server hardware by a long shot.

      Come on this is 2018 not 1978 where peaking and poking with syntax sugar in assembly and using 2 digits instead of 4 to save space is not important anymore!

      Sure the old neckbears will say it is art and go one and on etc on how bad things are today and that it should be better. But in reality is our employers pay us to get shit done the quickest and get it out to market.

      Python can do wonders, it's fast to develop, it's well understand, and for heaven sake better for the math/finance people than VBA in Excel. We all have SuperComputers and if you need insane math you can use the GPU functions in some apis where it is another supercomputer of level of trillions of floats per second of data!

      No one wants to save bytes in C in 2018 nor cares becauses old timers running some benchmark. As stated previously geeks were shocked in 2000 when Java was a hit on servers citing how sloooowww it was. It turns out on server loads it is SQL & I/O bottlenecks anyway.

      If Python was so horrible and slow then why is it popular with IOT in embedded devices?

    73. Re:It's great.... by Billly+Gates · · Score: 1

      I want to see this mysterious Python program that gobbles up 4,000 megs of ram that is standard on low end Pcs today?

    74. Re: It's great.... by LifesABeach · · Score: 1

      I believe BDD Testing could help with the intrensic issues

    75. Re: It's great.... by LifesABeach · · Score: 1

      At what cost?

    76. Re: It's great.... by LifesABeach · · Score: 1

      The ones you work for care not about you but care for a perceived profit generated by your project

    77. Re: It's great.... by LifesABeach · · Score: 1

      What says the âgolden rule?â(TM)

    78. Re: It's great.... by LifesABeach · · Score: 1

      BDD Testing produces results your client can work with

    79. Re:It's great.... by djinn6 · · Score: 1

      You might be joking, but memory compression a legit strategy. Even with the compression overhead, memory is much faster than disk or network. You can achieve higher cache-hit rates with a compressed in-memory cache since it can store several times more entries.

    80. Re:It's great.... by loufoque · · Score: 1

      Do it once properly in C, or hack something together in Python and spend the rest of your life debugging the corner cases.

    81. Re: It's great.... by mSparks43 · · Score: 1

      in all recent compilers

      C is a subset of C++.

      C++ is not a subset of C

      So when you write your C programs you are only using a subset of the language available to you.

      At no point is C++ compiled by a compiler that can only compile C.

    82. Re:It's great.... by Shirley+Marquez · · Score: 1

      Say programmers who know how to balance development time against run time.

      Some programs are run ONCE and discarded. Or more accurately run a bunch of times during development and testing, and then there is one final run on the real data. That's typical for a program that is converting data from some old format to a newer one. Obviously, spending any time optimizing such a program would be utterly pointless, as the extra time spent on development would far outweigh any savings you would achieve during the program's single use. (Not to mention that 90% of the run time of such a program is probably spent on input and output, so improving the algorithms won't buy you much.)

      At the other end of the scale, there is code that does crucial inner loop calculations. That code gets run a lot, and shaving even a little bit of time off its run time adds up to a lot. Code like that is a prime target for optimization.

      All the other use cases lie somewhere in between. And each calls for a different amount of effort put into improvement. The mark of a good programmer and designer is knowing where to spend the effort and where not to.

    83. Re:It's great.... by Shirley+Marquez · · Score: 2

      I wish I hadn't already commented on this subject so I could mod this comment up.

      Michael Abrash is somebody who LITERALLY wrote the book on writing high performance code. More than one, actually. I also remember his posts on the subject on the late lamented BIX. He is the antithesis of an incompetent programmer.

    84. Re: It's great.... by Shirley+Marquez · · Score: 1

      In the first implementation of C++ it WAS compiled by a compile that could only compile C. That first implementation was a preprocessor that turned your C++ program into somewhat hard to read C code, which was then run through the C compiler.

      Nowadays you are far more likely to do the opposite: compile your C code with a compiler that is written in C++. That includes current versions of GCC and LLVM/Clang.

    85. Re: It's great.... by Viol8 · · Score: 1

      Wrong. Change the char to an int and see what result you get. This is basic C, never mind C++.

    86. Re:It's great.... by KingBenny · · Score: 1
      i'm still waiting for someone to explain why Python is something new ... i see it mentioned all the time with heavy words "a.i." and "machine learning" and all that hype still robots bump into walls and the answer to the question has not been found other than the number 42 ... i must be missing something here ? is it the syntax ? does it have things that normal programming logic wont allow ? or is it just fashionable ? is it about not needing to know what your're doing ?

      wget -qO- $CURLURL |gunzip >jsondata
      cat jsondata |../commands/pretty_please.sh0 >jsondataa
      varvar=$(cat jsondataa |grep -oP '(? varvar_in=$(cat jsondataa |grep -oP '(? varvar_out=$(cat jsondataa |grep -oP '(?

      #echo "vshares:"$varvar
      #echo "invshare:"$varvar_in
      #echo "outvshare:"$varvar_out
      ########
      varvar=$(echo "$varvar + $varvar_in - $varvar_out" |bc -l)
      varvar=$(echo "$varvar * 1000000 * 0.02" |bc)
      curl --silent --data '{"jsonrpc": "2.0", "method": "get_reward_fund", "params": ["post"], "id": 40 }' https://api.steemit.com/ |../commands/pretty_please.sh0>jsondataaa
      totvar=$(cat jsondataaa |grep -oP '(? morvar=$(echo "$varvar / $totvar" |bc -l)
      lastvar=$(cat jsondataaa |grep -oP '(? finalvar=$(echo "$morvar * $lastvar" |bc -l)
      curl --silent --data '{"jsonrpc": "2.0", "method": "get_state", "params": ["post"], "id": 40 }' https://api.steemit.com/ |"$COMMANDSDIR"pretty_please.sh0 >jsondataaa
      basevar=$(cat jsondataaa |grep -oP '(? quotevar=$(cat jsondataaa |grep -oP '(? ratiovar=$(echo "$basevar / $quotevar" |bc -l)
      sbdvar=$(echo "$finalvar * $ratiovar" |bc -l)

      or am i getting old ? and then someone goes like "but you have a command to do that json for you" and im like "but why would i want that ? all i need is right there without add-ons ?" im getting old right ? generation "i screw drived my pc myself" must be that, im getting old

      --
      Free speech was meant to be free for all... how can anyone grow up in a nanny state ?
    87. Re:It's great.... by lsatenstein · · Score: 1

      With the 8 core cpus and the forthcoming 16 core cpus's who cares what Python does.
      The constraint is going to not be compute power but memory availability and inter-cpu communications.

      Python is a great prototyping language, and great as an alternative to some shell scripts.
      Where launching applications, Python is great.
      Perhaps someone can provide a Python replacement for bash.
       

      --
      Leslie Satenstein Montreal Quebec Canada
    88. Re:It's great.... by angel'o'sphere · · Score: 1

      In C it is perfectly legal to assign an int to a char, and that means an enum to a char.
      Nevertheless:


            e value = FOO;
            sizeof(value) == sizeof(int) // this should be true

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  2. No by Anonymous Coward · · Score: 2, Insightful

    Next stupid question.

    1. Re:No by 14erCleaner · · Score: 1

      Betteridge's law strikes again!

      --
      Have you read my blog lately?
  3. No by Anonymous Coward · · Score: 1, Insightful

    No

  4. Popular != Good by DogDude · · Score: 5, Insightful

    If popularity was a determinant of goodness, McDonald's is the best restaurant in the US, and Wal-Mart is the best retailer in the US.

    Python is popular because it's relatively easy to use, not necessarily because it's "The Future of Programming".

    --
    I don't respond to AC's.
    1. Re:Popular != Good by freeze128 · · Score: 1

      It could be "The Future of easy to use Programming"...

    2. Re:Popular != Good by TeknoHog · · Score: 1

      Python is popular because it's relatively easy to use

      To me, Python is the default language for starting something if I don't have a good reason to do otherwise. It has a very nice set of libraries for everything and then some, and it's quick to test throwaway ideas. It's a bit like going into some weird foreign country, not knowing what's safe to eat, but then there's McD where you know what you'll get. For most specific tasks, there are better languages, but Python to me is the ultimate all-round language.

      I'm personally OK with the whitespace thing, but I've found that collaborations can be fragile with different people using different editors on different OSes. I much prefer the Julia style (derived from Fortran) where line breaks are significant, but no other whitespace is. You'll need an "end" to close a block, but no ugly punctuations like ; or {}.

      --
      Escher was the first MC and Giger invented the HR department.
    3. Re:Popular != Good by Spacelem · · Score: 1

      I primarily use Julia now, and I agree, "end" tags would make Python a lot more comfortable for me (plus it would match the Python koan "be explicit, not implicit", i.e. explicitly end your blocks with an end tag).

      That said, as a mathematical modeller, I just find Julia easier than Python it pretty much every way going (I even prefer the 1-based indexing, which is a feature in nearly every programming language used by mathematicians). I know Python sees quite a bit of use in science (along with R, which is the other big name), but I think Julia is definitely going to gain some ground on Python in the future, especially as it approaches the 1.0 release.

    4. Re:Popular != Good by TeknoHog · · Score: 1

      I primarily use Julia now, and I agree, "end" tags would make Python a lot more comfortable for me (plus it would match the Python koan "be explicit, not implicit", i.e. explicitly end your blocks with an end tag).

      That said, as a mathematical modeller, I just find Julia easier than Python it pretty much every way going (I even prefer the 1-based indexing, which is a feature in nearly every programming language used by mathematicians). I know Python sees quite a bit of use in science (along with R, which is the other big name), but I think Julia is definitely going to gain some ground on Python in the future, especially as it approaches the 1.0 release.

      Agreed, I also have a background in scientific computing, starting with Fortran 90. I like having native complex and matrix math, as well as the numerous builtin math functions. Doing the same with Python/Numpy gets really messy and verbose, so that's what Julia should aim to replace. The problem is the glue language aspect of Python -- many people who use Numpy also need some other features/libraries of Python. (I use Julia for my math art, but for live demos I need OpenGL and interactive controls, so I use Python for those.)

      --
      Escher was the first MC and Giger invented the HR department.
  5. A reality TV star by Patrick+May · · Score: 4, Funny

    I love that the Economist feels it necessary to explain who Kim Kardashian is to their readers.

    1. Re:A reality TV star by Chris+Mattern · · Score: 4, Funny

      She's one of those aliens from Star Trek, right?

    2. Re: A reality TV star by Anonymous Coward · · Score: 1

      There are two groups with similar names, the Cardassians and the Kardashians. One group is vaguely reptilian, have large misshapen heads and an over-blown and undeserved sense of superiority. The other group invaded Bajor.

    3. Re:A reality TV star by TeknoHog · · Score: 3

      I still struggle to understand why KK is somebody worthy of media attention, unlike people who actually make useful tools and products. From what I've seen, she is just making a huge ass of herself.

      --
      Escher was the first MC and Giger invented the HR department.
    4. Re:A reality TV star by gweihir · · Score: 1

      Clever ;-)

      She is making a lot of money though and some people mistake that for quality.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    5. Re:A reality TV star by ayesnymous · · Score: 1

      The author has balls to risk his credibility by admitting he knows who Kim Kardashian is.

    6. Re:A reality TV star by david-bo · · Score: 1

      They always do. If they mention Goldman-Sachs, the will add "an investment bank". I think most of their readers know what Goldman-Sachs is.

    7. Re:A reality TV star by TeknoHog · · Score: 1

      Why is she different than any other entertainer?

      Are you seriously asking why a "famous for being famous" person is different from professional performing artists such as musicians and actors?

      --
      Escher was the first MC and Giger invented the HR department.
    8. Re:A reality TV star by phantomfive · · Score: 1

      Don't discount the skill of being an entertainer.

      --
      "First they came for the slanderers and i said nothing."
  6. Briefly? No. by AlanObject · · Score: 5, Insightful

    It seems we will never get tired of "language X is the future of all computer science because Y it" tropes.

    In the past, X can be replaced with Ada, C, C++, Java, Javascript, Python, Erlang, or whatever. The list is endless.

    The term Y can be replace with "I like it," "I really like it," "I really really like it," or "I don't know what is going on but the StackOverflow numbers seem to mean something.

    Jeez. Can't we just all accept that some careers or individual software gigs involve programming in just one language. Most careers and gigs require multiple languages.

    Right now I am doing an Angular project that includes HTML, CSS, TypeScript, Javascript, and Java all at the same time. Is that the "future?" I have no reason to believe so. I am just trying to get a job done.

    There will always be another language to learn and there were always be another up-and-coming language on a hockey stick. That's not a bug that's a feature.

    1. Re: Briefly? No. by walllaby · · Score: 1

      Just curious, but where does the Java part come in?

  7. The future has yet to be invented... by ElitistWhiner · · Score: 1

    Unlike hardware, software programming has no future. Witness the demise of coding into skilled trade, software salary i.e. wage slavery and artificial intelligence creating self-correcting code, auto algorithms, ad infinitum

    1. Re:The future has yet to be invented... by gweihir · · Score: 1

      Bullshit. Sure, you need to do it a the top end, but with all the nil-whits churning out bad code these days, that is not so far out of reach. And there will not be any "artificial intelligence creating self-correcting code" or "auto algorithms" anytime soon, if ever. That is a myth.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  8. I hope not. by Anonymous Coward · · Score: 1

    I'd rather go back to Perl.

    1. Re:I hope not. by OYAHHH · · Score: 1

      I have to say, Perl does take a real man to code in.......

      --
      Caution: Contents under pressure
  9. Another "Language X is the Future" Story? by mykepredko · · Score: 3, Insightful

    This type of story is even less useful than "What is today's most popular programming language?" stories that pop up here every week or so.

    Python is an excellent language and well worth knowing and being competent in programming in. But, so is Javascript as all developers tend to need to do some intelligent web UIs. Then there's C/C++, in which most of the world's system programming is written in. VBA is important to have to be able to work with databases/spreadsheets. And, of course you can't do anything without Rust and Go and Perl is great for doing something quick and dirty.

    How about an article pointing out that to have a successful career as a software engineer (ie "coder") you must be willing to pick up skills in different programming languages (and environments) and avoid latching on to what the pundits tell you is "THE PROGRAMMING LANGUAGE OF THE FUTURE".

    1. Re:Another "Language X is the Future" Story? by DCFusor · · Score: 1

      Agree almost 100%, until you try and use VBA on a DB on linux - the most popular big production opsys. Then we use...it depends but perl is easier for me.

      --
      Why guess when you can know? Measure!
  10. Wow. The CIA offers some sweet services. by dmomo · · Score: 4, Funny

    "The CIA has employed Python for hacking, Pixar for producing films, Google for crawling web pages and Spotify for recommending songs," notes the Economist.

    I didn't know the CIA uses Pixar to produce their films. And, I'm glad that they're in the business of recommending songs!

    1. Re:Wow. The CIA offers some sweet services. by Entrope · · Score: 2

      The important thing is that they avoided using the passive voice. They could have written "Python has been used by ..." and had no problems with the parallel construction they used. I would guess that's what the original author really wrote. Then someone came along with a grudge about the passive voice and butchered the sentence.

  11. Re:Briefly? No. by dmomo · · Score: 2

    "It seems we will never get tired of "language X is the future of all computer science because Y it" tropes."

    "Language Klingon is the future of all computer science because fuck it"

  12. Line numbers? Beats indentation, you cucks! by Hognoxious · · Score: 1, Insightful

    10 More people use it.
    20 That means more jobs using it, which means more people learning it and teaching it, and more books & courses about it.
    30 Goto 10.

    GP's fallacy was irrelevant conclusion.

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  13. The future may not be good by raymorris · · Score: 2

    In 1965 someone asked "is McDonald's the future of American restaurants?" The answer was yes, regardless of whether most restaurants were better.

    Is Python the future? That's scary, but it may be so. Why do I say it's scary? I wouldn't have said so 30 years ago. When I started programming, Python would have cool. Something very important happened in the mid 1990s. Something that completely freaked out Microsoft's programming tools team.

    When I started programming, I started by writing very simple programs in languages such as BASIC, which ran first on my computer, then on a Casio calculator / handheld computer they sold in the 1980s. I'll never forget impressing my friends with a program that consisted of nothing but a loop and set of IF statements. It would prompt you to enter your name via the keyboard, then print in the screen "you're cool" or "you're weird" or whatever based on the name you entered. I think for one name in particular, Casey, it said "you're pretty". A very simple program, by a beginner programmer.

    Few new programs today take input via keyboard and print output to the screen. These days, they take input via the Internet, query other resources over the network, and return something over the internet. It's no longer my boyhood crush Casey entering something, it's hackers from all over the world. They attack each program hundreds or thousands of times. Very simple programs by beginning programmers are now vectors for multi-million dollar losses. It's very hard to learn safely these days, because it requires some expertise to design and code software that will be safe against constant attacks. I don't know that I could learn today, it's just too dangerous for beginners to run code exposed to the internet, and today most code is exposed to the internet. Even a super simple programming task like a thermostat -
    if (temp desired) {
      Hear = on
    }

    Is now an IoT, and a threat.

    This worries me because as we make it easier to create software, more possible for people who don't know what they are doing to expose your systems, we are now having so much exposed by people who haven't studied. You CAN write code without learning much at all. You can, that very much doesn't mean you SHOULD. Not in today's society, where everything is online.

    1. Re:The future may not be good by 50000BTU_barbecue · · Score: 1

      In 1965, McDonald's probably served actual food.

      https://www.youtube.com/watch?...

      In 1974 they were still cooking identifiable ingredients with basic kitchen tools.

      I'm hungry.

      --
      Mostly random stuff.
  14. From a Beginner Programmer by BeemanIT · · Score: 1

    I've recently started learning Python but I'll say this, Python maybe a good starting point for most. However, it needs to looked at like a type of language. Once you learn that language good enough it's time to move on to the next then figure out how to build relationships between the two languages. For example, having Python pull information from SQL. Either way I'm not calling any language the future of Programming unless it's AI programming for a better AI at which point the human is removed from the entire equation. AI then determines that in order for robots to perform better with less issues(like rust or less friction) oxygen must be removed from the planet..... let your imagination run from there...

  15. Cleaner, more powerful, more open VB. by EnsilZah · · Score: 1

    I've never been a professional coder.
    I did some pascal and VB6 in highschool, I took some programming classes in college, but my career is in art and design.

    It has always been useful to know a bit of programming, picked up Flash when I needed, wrote some tools to optimize my workflow in Photoshop with Javascript, and recently started helping out with the broader pipeline at the studio using Python and Qt.

    You may never write an OS, or a large higher-performance application in it, but it's great for a personal project, a mock up, or glue for transferring data between various disparate pieces of software.

    The industry I'm in (VFX, Animation) has basically standardized on Python as the scripting language most applications use internally and between themselves (Except for Adobe who have their own personal flavor of Javascript, because, fuck everyone else, build that garden wall)

    1. Re:Cleaner, more powerful, more open VB. by Billly+Gates · · Score: 1

      Not to mention Macs are what the cool kids in college use these days. Python is included by default with MacOSX and now included by default in Visual Studio as well.

  16. Go fork yourself! by fazig · · Score: 3, Interesting

    Hardware trends gravitate towards adding more and more CPU cores and threads in order to increase performance instead of increasing IPC and clocks. AMD will soon release their 64 thread monsters for HEDT and workstations and we're seriously discussing if Python will be the future?
    Maybe in very specific niches, but I don't see it utilizing future hardware very well compared to the many other options that are capable of running multiple threads.

    1. Re:Go fork yourself! by xvan · · Score: 1

      Python is capable of running multiple threads, and is still awesome for gluing together things.

    2. Re:Go fork yourself! by SurenEnfiajyan · · Score: 1

      Python is capable of running multiple threads

      Yeah, but not simultaneously (in CPython, the most popular interpreter). Actually the more threads are added the more the performance suffers.

  17. A Quick Way by Anonymous Coward · · Score: 1

    Not the future of programming, just a general purpose language future very easy to use, including non-programmers, from various fields of science, economy, sociology etc with an "affordable" as time/effort on a quick learning curve by anyone with some interest in programming. And also more than a toy, allowing development of complex projects, for free and [a language] with a huge user base which can help new users.

    Obviously *(no)SQL or Java, C++, C# etc do not fall in the same categories with Python and can't be compared directly. Shortly can successfully open the doors (and mind) to anyone wishing to enter in programming field. Not a replacement.

  18. Re:Briefly? No. by Anonymous Coward · · Score: 1

    If only Python were the future of programming...

    I had hoped that Prolog would be the future of programming. The horror is that JavaScript is the future of programming.

  19. Not a Modest proposal: Lose Tab its ASCII code by mykepredko · · Score: 4, Informative

    Tab should have a key-code, but not a ASCII code, like Shift. It has no place in a document, whether it be code or prose

    You do realize that tab characters are used in places other than "code or prose"? It's very useful for document/table formatting especially for non-proportional fonts. It's also very useful in UI processing (ie moving between controls in a dialog box).

    I don't think what you're asking for is all that modest.

  20. Single threaded toy language by zm · · Score: 4, Insightful

    cannot be THE future of programming.

    --
    Sig ?
    1. Re:Single threaded toy language by Anonymous Coward · · Score: 1

      I'm not a fan of any language that can give runtime errors for common uses, especially in regards to types. All runtime errors should be limited to system calls or the programmer explicitly doing something stupid.

    2. Re:Single threaded toy language by LinuxIsGarbage · · Score: 1

      If you wrote a whole OS in python the damn thing would probably need 16gigs just to boot, never mind actually do anything else useful.

      Sugar UI, the desktop environment for the OLPC project, is a Python environment running on Fedora. It's dreadfully slow, particularly on the OLPC-1's anemic AMD Geode processor.

  21. Re:Briefly? No. by fermion · · Score: 2, Interesting
    I consider Python like Pascal. Some of it's popularity is simply due to the fact that it is used as a teaching tool so a lot of people are familiar with it. It can do a lot, but ultimately what makes it good as a teaching tool makes it not so good for production code.

    Java and VB are the most popular languages right now. Java is taught to every high school AP computer science student. VB has the entire marketing of MS behind it.

    I use python for personal projects, which are simple and direct. I can imagine Pixar using it as they write code for each movie, and are not widely deploying it to end users.

    I suspect in a decade scripting is not longer going to be the status quo, and the kids will be learning programming by moving blocks. Don' scoff, it is already happening and all that is needed is to expand and refine the technology.

    --
    "She's a scientist and a lesbian. She's not going to let it slide." Orphan Black
  22. No, it isn't! by aglider · · Score: 1

    Maybe it could be for opensource stuff.
    But not for everything.
    And, did I already say "no"?

    --
    Sent as ripples into the electromagnetic field. No single photon has been harmed in the process.
  23. not independent by ooloorie · · Score: 1

    Kim Kardashian probably generates a lot of Python traffic herself with her python boots.

  24. what's the question about actually? by ooloorie · · Score: 1

    Most people worry about "future X" mostly to plan, so that part is easy: yes, if you work with computers and want to program, Python is one of the best and most useful first languages you can learn. Yet, at the same time, it has serious limitations. On the other hand, if you want to be a professional, you need to know other languages as well and you need to understand the limitations of Python.

    Furthermore, planning for the future, you need to be aware that Python is not a standardized language, that its success is due to one implementation, and that it keeps changing.

  25. People have trouble with it, therefore it's easy? by raymorris · · Score: 1

    Okay, so I said secure programming is hard, you need to know what you're doing.

      You disagree that it's hard, because people who call themselves professionals sometimes can't do it right. Professionals sometimes can't manage to do it, therefore it's easy. Is that right?

  26. Impact by ntropia · · Score: 1

    I usually don't care much about these discussions, but I feel there might be some room for clarification.
    I'm not sure if Python is really the future of programming language, but it definitely provided a glimpse of what a possible future might look like. Whether people like it or not, this programming language lowered significantly the access barrier required to start writing useful and powerful code, without sacrificing functionalities.
    It's not C/C++, it's not incredibly memory efficient, and performance is significantly lower than compiled languages, but...

    There are professional programmers using it for the most obvious thing (prototyping new code) as well as writing complex programs that were not worth the time investment of writing in C++. Although, the big difference is the democratization of programming for people like me that don't have the time and the resources to build serious programming skills. The lower access barrier allowed many people to implement their ideas, make them work, and spread them around... sure, in a high-level, slow, and memory inefficient language, but do we really care? There are many places where the idea is far more important than the implementation like often in the scientific world, notoriously famous for providing crappy code.
    Tons of people have benefited from countless programs doing very complex operations, or just simply scratching long standing itches (matrices operations, 3D operations, data sanitization, etc.).

    If your Python code is really useful and needs to be made faster, you can hire a programmer to re-write it in C++, but in the meantime it might have reached a significant critical mass of interest/users that make it possible (getting funding, etc...).
    Python is likely how an everyday programming language might look when most of the people will write a program at some time in their lives. On the other hand, if Python is the only reason to define yourself as a professional programmer, then it's obviously a problem.

  27. Re:Modest proposal: Tab should lose its ASCII code by heson · · Score: 1

    This might help
    (setq-default indent-tabs-mode nil)

  28. Re:No, no, no. by vtcodger · · Score: 1

    If you can't get Python indentations right, you may be in the wrong profession.

    Python has its moments. Long scripts can be hard to navigate. The occasional need to understand the difference between deep and shallow copy can be unintuitive. Some of the library routines don't do what one might expect. For example a = sort(my_data) won't do what one probably expects. You probably want sorted, not sort Some of the error messages can be a bit obtuse. UnboundLocalError -- Whaaaa? Why me, God?

    But white space? Not a problem for most folks.

    --
    You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
  29. Re:Script Language by vtcodger · · Score: 1

    I think that "Python is the future of programming" if it's true at all, is sort of like a century from now, almost everyone on the planet will be able to carry on a rudimentary conversation in one or more of English/Chinese/Arabic and/or Spanish as well as whatever their native language might be. It's not that all, or even most, programming will be done in Python. It's that most everyone who programs at all will be comfortable using Python if they need to.

    --
    You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
  30. Re:Line numbers? Beats indentation, you cucks! by obiwan2u · · Score: 1

    Extremely funny (and true. It's always funnier when it's true). I like the way you subtly brought Trump supporters into the argument. I would've "liked" or "voted" for you post, but Slashdot is too mind boggling primitive for that. I'm going back to Reddit now... Catch you later.

    --
    Ben in DC
    "It's the mark of an educated mind to be moved by statistics" Oscar Wilde
  31. Personally my current favorite is Julia by jgfenix · · Score: 1

    I like the design's philosophy a lot.

  32. Is Python the Future of Programming? by Mikkeles · · Score: 1

    At least; I hope not.

    --
    Great minds think alike; fools seldom differ.
  33. Answer = no by Khyber · · Score: 1

    Until the first three layers of OSI are perfected, ain't SHIT the future of programming.

    Which means Python is NOT the future of programming and will never be, because no company has any interest in doing the first three layers of OSI properly in the first place. Intel already made that loud and clear.

    --
    Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
    1. Re:Answer = no by JustNiz · · Score: 1

      What does the OSI have to do with it? You realise there's actually far more programming going on than just internet-based stuff right?

    2. Re:Answer = no by Billly+Gates · · Score: 1

      Network, Datalink, or physical are the bottom 3 layers. I guess there is erlang if you're nuts?

  34. Re: It has a bright future by Anonymous Coward · · Score: 2, Insightful

    Python is the Cobol of Lisps

  35. Re:No, no, no. by gweihir · · Score: 1

    If you can't get Python indentations right, you may be in the wrong profession.

    I second that. The style is a bit unusual, but anybody competent should not need more than a few days to get used to it.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  36. Every programming language has its place by SurenEnfiajyan · · Score: 1

    What does the question "is Python the Future of Programming" mean? So a bunch of noob brogrammers who are Python fanboys think that every other lower level language sucks? And what programming language is their favorite Python interpreter written in? Don't get me wrong, I'm not an anti-Python zealot, Python is awesome when you write web scrapers, glue other low-level components or prototyping something. Python overall has a huge number of useful libraries. But a person must be brain damaged to expect a complex program such as a heavy game, OS or a web browser to be written in Python. Every language has its place.

  37. No, the future has been here by Joviex · · Score: 1

    The future came here a decade ago. If you missed the python bus, think of it like the Fortran or Cobol bus.

  38. Re:You can skip ad in 5, 4, 3, 2 ... by MightyMartian · · Score: 1

    Mind you, you can do anything in Brainfuck too.

    --
    The world's burning. Moped Jesus spotted on I50. Details at 11.
  39. Only until... by VeryFluffyBunny · · Score: 1

    ...someone comes up with a new and improved programming language called something like Boa Constrictor or Anaconda. Programmers can be suckers for the latest fashions in languages.

    --
    Debate is a form of harassment. Do not question my truth.
  40. Of course not. by JustNiz · · Score: 1

    Ask me again when it makes more sense to write a device driver in Python than in C.

  41. Bad Metric: Rate of Queries by blavallee · · Score: 3, Insightful

    Having contributed a hundred searches in the last week, it's another BAD metric claiming how popular python is.
    Last time, it was that python had the most questions on Stack Overflow.

    When a search does not answer a question, when Stack Overflow does not have the answer, it does not mean python is popular.
    It indicates that python is the most frustrating!

    I spent hours trying to get python to use syslog. Any may other languages it's simply syslog().
    To do it with python, search for it yourself. You'll find a dozen ways to do it, but which will work for you?

  42. Provided hot-plugging is reliable by tepples · · Score: 1

    There is nothing wrong whatsoever with stating that the keyboard-detection failed, please plug in a keyboard, and then press F1 as a positive-verification test.

    If the hardware cannot handle keyboard hot-plugging, it's a very bad idea for an error message to encourage keyboard hot-plugging. A lot of implementations of the AT and PS/2 keyboard interface did not support hot-plugging; doing so would cause them to permanently stop working.

    Keyboard dependence also discourages use of a machine with input devices other than a keyboard, such as headless servers or joystick-driven video game players.

    1. Re:Provided hot-plugging is reliable by tepples · · Score: 1

      Sometimes it wasn't the keyboard that died after a hot-plug gone wrong but the keyboard controller on the (more expensive) motherboard.

  43. Re:Modest proposal: Tab should lose its ASCII code by angel'o'sphere · · Score: 1

    And how exactly would you then print a text document on a traditional line printer?

    The tab "character" as in ASCII code, moves the printer head to the next tabulator position, which can be completely arbitrary, usually it is encoded in the first line of the document as ESC sequences or you _manually_ set them at the printer by moving the hardware tab stops.

    You have no clue padawan ....

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  44. Hiring competence is expensive by tepples · · Score: 1

    Hiring a competent admin can prove more expensive than hiring who's available to you in your city, especially in low-cost-of-living parts of the country or world where time costs an employer far less than 100 USD per hour. The cost to license proprietary software for these 100 machines can also prove substantial.

    1. Re:Hiring competence is expensive by angel'o'sphere · · Score: 1

      Not nitpicking, but if you can afford 100 machines you most likely can afford a competent, especially remote, admin.
      Most tools relevant are open source and free to use commercially anyway.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    2. Re:Hiring competence is expensive by tepples · · Score: 1

      Not nitpicking, but if you can afford 100 machines you most likely can afford a competent, especially remote, admin.

      By "modern provisioning tools", I thought you meant VPS-on-demand services such as AWS EC2, which let a developer provision 100 virtual machines in minutes and then deprovision them an hour later when they're no longer needed. And the cost of hiring is not just what you pay an admin; it's also what you pay to find such an admin in the first place.

      Most tools relevant are open source and free to use commercially anyway.

      Unless you have a heavy investment in server-side applications that are exclusive to Windows Server, which is not "open source and free to use commercially". Nor are things like web fonts or API access, which are licensed per server more than negligibly often.

    3. Re:Hiring competence is expensive by angel'o'sphere · · Score: 1

      I was more thinking about Puppet, Ansible, Chef, Kypernetes ... and containers like Docker.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    4. Re: Hiring competence is expensive by LifesABeach · · Score: 1

      Hiring anyone competent is itâ(TM)s own reward

    5. Re: Hiring competence is expensive by LifesABeach · · Score: 1

      Poor A/C, and are all hirer's competent as well?

  45. Sure hope not... by Anonymous Coward · · Score: 1

    While the language itself may be nice, the ecosystem surrounding it is rickety at best.

    It takes basically zero effort to get the interpreter completely incapable of finding libs that by all accounts should be smack dab in the search path.

    On top of that is has contracted the ongoing pox of modern programming, the language specific package manager.

    End result is dependency sprawl, as rainbow haired devs just ram another lib into the dep file and pushes to prod when they encounter any "problems" with their "masterpiece"...

  46. Python for scripting (bash limitations) by Billly+Gates · · Score: 1

    I see Python used in the Linux camp for scripting things. I got into a tiny flamewar in another article on PowerShell for Linux on what MS is creating a snap for it and it has to due with half of your servers being hosted in Amazon E3 or Azure. Python also is an excellent scripting resource if you use AMazon E3 apis and want to integrate it to your bash scripting or PowerShell workflow.

    Python is object based so sometimes it is needed to do extra tasks and customization. Sure there is puppet but for simple things it is nice to an API to do things.

    Perl 18 years ago started to pick up some news as the new hottness outside of Java here on Slashdot but it never took off for a variety of reasons. Python is also easy to whip something together and is used by people in Finance who are tired of VBA as well.

    In addition Visual Studio 2015 and 2017 also include Python and for the 90% in the win32 world if it's not in VS it's not there :-) But that is part of the popularity as well.

  47. Channels that mangle whitespace by tepples · · Score: 3, Insightful

    Unless you're trying to collaborate with somebody over a channel that mangles leading whitespace. That's the biggest nontrivial criticism of indentation-as-syntax: you can't demangle it with an indenter.

    1. Re:Channels that mangle whitespace by gweihir · · Score: 1

      "Anybody competent" does of course include collaborators. Mangling leading whitespace is a pretty good indicator of incompetence.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    2. Re:Channels that mangle whitespace by tepples · · Score: 1

      It's not so easy to convince a bureaucracy to fix a broken channel, particularly when the broken channel is run by a sufficiently large business or a K-12 school district.

    3. Re:Channels that mangle whitespace by tepples · · Score: 1

      The collaborators don't always have a chance to choose the channel. If they did, they'd choose a competent channel. Often, the channel is chosen for them by someone far less competent (the Peter Principle).

  48. It IS the future of programming by devloop · · Score: 1

    Either Python or "Donald Trump", Google Trends says so. Either those 2 or "Anal Sex", right behind them.

  49. Betteridge by terjeber · · Score: 1

    Are you seriously telling me I am going to be the first to invoke: https://en.wikipedia.org/wiki/...

  50. Python as a String Holding âPERLsâ(TM) by LifesABeach · · Score: 1

    Consider an interface that combines ChatScript, NLTK, Blender3D, InMoov, and Cure. What could one do with a tool like that?

  51. Re: Briefly? No. by AlanObject · · Score: 1

    Not sure what you mean but I am sure there have been many people over the years who concluded -- wrongly -- that Java would be the ultimate language and you wouldn't ever need any other. I am not one of them.

  52. rockstar developer by sad_ · · Score: 1

    obviously, rockstar is the only programming lanuage that has a future.

    https://github.com/dylanbeatti...

    --
    On a long enough timeline, the survival rate for everyone drops to zero.
  53. Re: Briefly? No. by walllaby · · Score: 1

    The project that you said you were doing right now is mostly using web languages, except for Java, which is compiled. I'm just curious how that fits into your development workflow. Purely out of interest; I'm a web designer, but I like to ask my programming team members how they handle their projects. :)

  54. Get off my lawn Python kids. by kallisti5 · · Score: 1

    I'm frustrated that an entire generation of programmers seem to turn to Python for *EVERY* task. It drives me nuts. Python is a scripting language... stop trying to write applications in it that do *really* complex or large scale things. I'm starting to step over so much poorly written python code in my career in places it doesn't belong. We have so many great compiled languages now for big data or complex tasks such as golang and Rust... use the right tool for the job dammit. Get off my lawn.

  55. Re: Briefly? No. by AlanObject · · Score: 1

    Oh. Sorry I was being dense.

    I use Java on the server side -- a REST interface application implemented with the javax.ws.rs.* class library and running in a Glassfish 5 container.

    The kids are taught these days to use node.js on the server side but I like the facilities and frameworks you can get in the OSGI environment Glassfish 5 users. Also I have doubts about a node.js-based server being able to scale up for my application anyway. I might give it a try later and end up with an application Java-less from front to back.

  56. Re:Briefly? No. by Areyoukiddingme · · Score: 1

    "Language Klingon is the future of all computer science because fuck it"

    Luckily all the required glyphs are in Unicode now. No code snippets pasted to Slashdot though...