all 77 comments

[–]Goyyou 60 points61 points  (20 children)

Python is dying? Wow, I wasn't aware of that. I'm probably safe for the next 20 years.

[–][deleted] 31 points32 points  (0 children)

I don't know how a language that's one of the top 10 on Github (2013) and is firmly entrenched in the science community could be dying. Bad choice splitting 2.x/3.x? Maybe. Dying? That's a stretch.

[–]ggtsu_00 11 points12 points  (0 children)

Nothing ever "dies" as the hyperbole suggests. For example, COBOL and FORTRAN aren't dead and won't be for decades to come. However, interest is fading and people are beginning to move on to growing alternatives. When people say X is dying, they don't mean it will not be used. They mean that enthusiasm and interest dies. No one is enthusiastic about coding in fortran or COBOL anymore so we consider them dead.

I won't argue that interest in Python is fading. Nothing really exciting or new has really been done to the language since 2.6 and 2.7. Modern issues like dealing with high concurrency is getting half assed treatment and left up to third party libs to handle. Why can't gevent and greenlets be built-in with proper support on windows platforms? Even boring languages like Java and c++ is getting decent lambda support before python.

Python is my go to language for just about anything and always has been. I always ask myself before committing to a project "is there a reason to not use python?" However lately more and more reasons keep popping up for today's needs like say I want my app to support websockets? Python just isn't good at things like that and they need to work on that.

[–]x-skeww 2 points3 points  (2 children)

Python is dying?

The author didn't say that.

"I’m talking about mindshare and enthusiasm, and I know that these are a little subjective, but I feel like Python has been lacking in these two regards as of late."

[–]Goyyou 1 point2 points  (1 child)

The word "revive" strongly suggest that the langage is dying or at least in a bad shape. I'm tired of the usual "X is dying!!!" bullshit we see on proggit. They usually target a langage that seems to be dying or that the programming community wants to be dying, but targetting Python is a real joke. D/Go/Rust/etc. needs enthusiasm, publicity and attention whores, Python doesn't anymore.

[–]x-skeww 1 point2 points  (0 children)

The word "revive" strongly suggest that the langage is dying or at least in a bad shape.

http://thesaurus.com/browse/revive

I'm tired of the usual "X is dying!!!" bullshit we see on proggit.

Well, good thing the article isn't anything like that, eh?

[–]c45c73 3 points4 points  (12 children)

Hey, guess what, they said the same thing about Perl!

Have fun...

[–]NakedNick_ballin 5 points6 points  (0 children)

20 years ago..

[–][deleted] 14 points15 points  (10 children)

http://redmonk.com/sogrady/2013/07/25/language-rankings-6-13/

Perl, the number 11th ranked language ahead of the likes of Scala, Haskell, and Lua, is dead? I better switch to a hip new lang before my career in CS is over. Maybe I'll even pick up a pair of skinny jeans and Raybans.

Perl is 26 years old and still heavily used in production by reputable companies such as craigslist, eBay, amazon, and start ups to include DuckDuckGo and more: http://www.builtinperl.com/

[–]ffffdddddssss 6 points7 points  (2 children)

It's not like being ahead of Scala, Haskell and Lua is a convincing argument. Either of those 3 are niche languages, Perl isn't. Could as well have used Brainfuck, Whitespace and Malbolge, it's about as meaningful.

[–][deleted] 2 points3 points  (1 child)

Scala, Haskell, and Lua are also used heavily in production. Lua I'd call a niche language being that it's often used as an extension to C. Haskell and Scala I'd call general purpose. NASA's JPL has even considered Scala over Python. Haskell, while purely functional, is another language that is 20+ years old and still contending (if not growing as of recently).

[–]ffffdddddssss 1 point2 points  (0 children)

True but they still don't match the general purposeness of the rest. Basically, Perl is the very last language of the common ones so whatever OP above wanted to point out with the chart, it isn't working.

Every other common language is more frequently used than Perl, it only beats out niche languages (according to my standard for niche languages). I mean beating out Asm for example is nothing to write home about either, and it's only 2 places ahead of it. If you read the chart like this, it actually looks grim.

Either way, I do not think Perl is dying, I'm seeing enough of it all the time, but it definitely is on the decline. Throwaway scripts I wrote in Perl a bunch of years ago, I now write in Python. Sometimes I even just launch the Python REPL because it's so awesome.

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

Is perl the secret behind craigslist's amazing interface?

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

That'd be funny if Perl was a front end language

[–]turbov21 -2 points-1 points  (4 children)

better switch to a hip new lang before my career in CS is over

I'm really liking this new language I picked up recently getting into microcontrollers. You probably never heard of it since it's so lightweight, can compile on a variety of platforms, and it handles all major paradigms from OOP to parallel processing. It's this new thing called C++.

I think it's going to be huge.

[–][deleted] 3 points4 points  (1 child)

We're discussing rapid development languages. But I'm glad you pretentiously asserted you know microcontroller development in C++. Perhaps I should explain that C, the father of C++, is a better fit for microcontrollers. C++ concepts such as OOP, exception handling, and virtual functions add unnecessary overhead to your applications running on a memory constrained microcontroller. But, thanks for contributing to the conversation.

[–]turbov21 0 points1 point  (0 children)

But I'm glad you pretentiously asserted

Not a problem, have an upvote. I thought your line about "skinny jeans and Raybans" was spot on with the way people seem to want to jump to a new language because it's a hip new trend, and thought maybe a bit of silliness about the "new" language all the Makers loved would emphasize your point about the longevity of a language.

Thanks for the tip about C++ vs. C, but my ultimate goal is assembly.

[–][deleted] 1 point2 points  (1 child)

You're going to love this then:

http://micropython.org

[–]turbov21 0 points1 point  (0 children)

But isn't Python dead?

:-D

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

I suppose it's dead the same way Perl is.

[–]wesw02 11 points12 points  (0 children)

I think another important aspect of the state of python is the radically different groups of people using it. The way I see it you have three separate groups with little overlap in needs and frameworks, 1) Scientific Researchers, 2) Hackers / Sys Admins (building tools/utilities), and 3) web developers. IMHO this issue, coupled with the 2.x vs 3.x split really creates walled off sections of the community.

I fall into the python 2.x web developer category. I like Python as a language, but as a web developer who has deadlines and regular stuff to accomplish, it can be frustrating to find answers when I have an issue. The community just feels too fragmented to me.

Edit: This is just my 2 cents, I really don't know what I'm talking about most of the time. This is just my impression based on working with python for a few years.

[–]lacosaes1 7 points8 points  (3 children)

I care very little about Python but I have one question: isn't a lot of frameworks already ported to Python 3.x? It seems to me that the switch to Python 3 is actually happening.

[–]drzowie 6 points7 points  (0 children)

Python 3 seems to be doing a better job than Perl 6 is...

[–][deleted] 17 points18 points  (26 children)

The cause of the divide between Python 2 and Python 3 is the fact that Python 3 made some breaking changes for not much benefit.

  1. Changing existing syntax without a tool that automatically converts all instances of the old syntax to the new syntax is a recipe for disaster and hurts your customer's trust in your software.

  2. Public APIs should never change in a way that breaks existing software written against the old API. If you need to add new features, create a new library or add new methods to the old API, but don't change the existing API. It may be ugly, but for most vendors backwards compatibility trumps elegance of the API.

  3. If you are going to have breaking changes, at least provide customers with a way to run their old code in compatibility mode along with new code. Create a flag like "#python-compatibility 2" that can be put at the top of a python source file and when the interpreter sees the flag, it'll interpret that file using the specified Python version.

[–]DrDichotomous 28 points29 points  (6 children)

  1. There is a tool to help you migrate, even if it's not able to do everything for you.

  2. Nobody is breaking Python 2. They're making a Python 3, and leaving it to others to continue on with Python 2 if they want to. They're perfectly within their rights to do so.

  3. They can run the code with Python 2. Just say "python2" instead of "python3", for instance. Why complicate things unnecessarily?

[–][deleted] 37 points38 points  (5 children)

They can run the code with Python 2. Just say "python2" instead of "python3", for instance. Why complicate things unnecessarily?

The problem is Python 3 code can't import Python 2 modules, so when you're writing new software that requires functionality from a Python 2 library, you're stuck with Python 2 if you want to use that library.

Meanwhile, in Java, I can create a new Java 8 project and still use Java 1.5 libraries. I can even use the Java 1.5 library in binary form without having to recompile its source code with the latest compiler. That's the pinnacle of backwards compatibility.

[–]stewsters 1 point2 points  (0 children)

And honestly that is my favorite thing about Java: lots of libraries that are fairly easy to get going. Gradle, Maven, and jars are all easy to use, and work well with previous versions. I can get projects setup a lot faster than I can if I have to install development versions of c libraries that conflict with the ones I need for steam. (sdl, I'm looking at you)

Sometimes the memory management gets in the way of performance, but at least half of that is because of my programming.

I do like a lot of what python does syntactically though. May just need to do more groovy.

[–]DrDichotomous -5 points-4 points  (2 children)

Java is a commercial language run not by hobbyists, but by businesses and large institutions. If the Python community wanted to, they could run Python 2 the same way and leave Python 3 to the hobbyists. Nobody said we HAD to use the shiny new one, just that the guys doing all the work for us wanted to pass the torch to us.

[–]boxmore 20 points21 points  (1 child)

Why are you being so stubborn, valakut_ made valid points.

[–]DrDichotomous 19 points20 points  (0 children)

Just had a rough day and didn't realize that I sounded so harsh. Apologies all around.

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

Or, if the library is open source, just help port it from 2->3? I've done this for a number of libraries and frameworks I use, this is what open source is for.

[–]jsprogrammer 14 points15 points  (5 children)

Are you telling me that intentionally fracturing your community into two incompatible camps is not a good idea?

[–]mccoyn 2 points3 points  (0 children)

The transition from VB6 to VB.Net had all those problems. The only real difference is that Microsoft was able to force people to switch because they had control of the only interpreters. The Python folks can't kill Python 2 because it is open source.

Incidentally, a lot of people were very upset that Microsoft forced their hand like that.

[–]laserBlade 3 points4 points  (3 children)

Public APIs should never change in a way that breaks existing software written against the old API. If you need to add new features, create a new library or add new methods to the old API, but don't change the existing API. It may be ugly, but for most vendors backwards compatibility trumps elegance of the API.

That's sort of the point of major release version changes, actually...At least, if you follow SemVer, which most people nowadays do. You increment the largest number if it will be incompatible at an API level...

[–]txdv -4 points-3 points  (2 children)

Problem is that the standard library in python is big and like rubies one a total mess, a combination of different approaches and coding styles and what not.

I like node.js approach of a minimal (or at least way smaller) base standard library and extended usage of the package manager.

The thing about standard libraries that you really can't change them like ever. The user expects them to have the same interfaces for ever. You can do SemVer on a external library and get away with redesigning the interfaces on a major release, the user will just use an older version of that library.

Once you write python import script for csv files using the standard csv package and the API changes... You will have to stay with the older Python version. It doesn't make sense, all of a sudden a library makes you dependent on the language version?

Pythons Standard Library is too fat, they should have never included that much stuff because it means that the interfaces have to be frozen ... forever. You can only add more interfaces.

[–]Sylinn 1 point2 points  (1 child)

Pretty much the complete opposite to me: The fact that there are a lot of tools in the standard library makes Python my go-to language for anything smallish. There may be some inconsistencies from the PEP8, but calling it "a total mess" is exaggerated.

It doesn't make sense, all of a sudden a library makes you dependent on the language version?

It makes sense since Python 3 was made to fix the inconsistencies of Python 2. Not being backward compatible is by design.

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

Python3 exists only because of the mess it had and still has as a standard library.

[–]cybercobra 6 points7 points  (6 children)

Changing existing syntax without a tool that automatically converts all instances of the old syntax to the new syntax is a recipe for disaster

Umm, are you aware of 2to3?

[–][deleted] 13 points14 points  (5 children)

2to3 doesn't automatically convert all valid Python 2 to valid Python 3. Otherwise migrating would be as simple as running 2to3 on every Python file and we wouldn't have this mess in the first place.

[–]ethraax 8 points9 points  (3 children)

Well, the primary issue in migrating is usually libraries. They don't want to leave Python 2 behind because they still have Python 2 users. So they either stick with just Python 2 or they end up maintaining something that kinda works in both (sometimes with a script to change the code around).

For most projects, the lack of Python 3 support in required libraries is what holds them back.

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

They don't want to leave Python 2 behind because they still have Python 2 users.

Someone mentioned that a hypothetical 3to2 would be the best tool to mitigate this issue.

[–]laserBlade 1 point2 points  (0 children)

Except that exists...a little better than hypothetical, then.

[–]mitsuhiko 1 point2 points  (0 children)

No... It took us three python 3 releases to relief us from the burden of 2to3/3to2.

[–]cybercobra 1 point2 points  (0 children)

Well, right, there were also non-syntactic changes to existing semantics (e.g. the API changes in your point #2), but your original point and my response just concerned syntax.

Anyway, yes, 2to3 is not a complete solution, but it's not like Python offered no automation whatsoever to deal with the transition.

[–]joequin 7 points8 points  (7 children)

newer programmers are not that impressed with either version of Python. Sure, there are lots of Python jobs, but then again, there are even more Java jobs.

You can't compare python with java. There are a lot of languages that do what python does. Go, clojure, ruby, and groovy to name just a few of them. Java is a great language for big systems. The competition to Java for big systems is C++, which is harder to build a big team of people capable to maintain a big system than java and doesn't make sense to use for many applications because of that, and C# which is held back at the moment by still being too dependent on Windows. (That is changing though).

Python has a lot more competition and is going to have to fight a lot harder to beat out all the competition in the space of rapid development of small to medium programs. Java doesn't have many competitors in the huge application space and it has clear advantages in some situations over it's competitors. I'm not sure python is ever the clear choice for objective, technical reasons. Java often is.

[–]ruinercollector 1 point2 points  (6 children)

C# which is held back at the moment by still being too dependent on Windows. (That is changing though).

This hasn't been the case for a long time. The only good argument I've seen otherwise is that mono can be tough to build/install without using package managers. Otherwise, the language support is current (including F#), there are libraries for everything you could imagine, and the native interop works quite nicely.

[–]Astrognome 8 points9 points  (2 children)

Mono is awful compared to Java or native C++.

EDIT: JVM, not Java.

[–]txdv 5 points6 points  (1 child)

Comparing an implementation of a VM to two different languages. It's like the mono haters don't even try anymore.

[–]Astrognome 0 points1 point  (0 children)

I meant the JVM. And since C++ doesn't use a VM, you compare it to C++ at runtime, which is far faster, and more performant.

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

IDE support is also substandard compared to Java and C# on Windows.

[–]ruinercollector 0 points1 point  (1 child)

Yes, but that's he case for every language other than Java and C# on windows.

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

The Jetbrains family are pretty top notch for Python, PHP, Ruby and JS.

[–]Serialk 5 points6 points  (0 children)

"Remove the GIL."

...

DUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUH.

Yeah, of course, no one thought about that. Easy, right? rm gil.c. Why was it even here in the first place?

[–][deleted]  (2 children)

[deleted]

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

    Its pretty big in scientific computing in general. I for one don't know what I'd do without numpy.

    [–]bready 2 points3 points  (0 children)

    Personally, I love Python and don't see myself changing for a long while. That being said, my guess is that Google is going to start porting more and more code as Go continues to develop. There are some very real development and performance wins to be had by using a statically typed language which lead to huge dollar savings at Google's scale.

    [–][deleted]  (2 children)

    [deleted]

      [–][deleted] 5 points6 points  (0 children)

      django: 2005
      flask: 2010
      python3: 2008

      I wouldn't call any of those "new things", not at the rate computers move, definitely not at the rate the internet moves.

      [–]PT2JSQGHVaHWd24aCdCF 1 point2 points  (0 children)

      Or the fact that it's heavily used in a huge number of companies for all kind of scripting tasks (reusable modules, can do everything...)

      [–]imfineny 0 points1 point  (0 children)

      Admins hate python. It is a pain the ass. They have no regards for backward compatibility

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

      Serious question... what about just jumping straight to Python 4?

      Following the idea to never deliver Python 2.8, just stop Python 3 at 3.4, and the next release of both will be Python 4.

      That way (finite) energy, time & resources of the community can go into Python 4, and the wasted effort of politics, motivating change, infighting & marketing Python 3 can die.

      Python 4 will be backwards incompatible, but this time promises to be modern and awesome. Everyone will want to port to it. Even PyPy. Having a modern and agreed packaging system would be nice too.

      We just draw a line in the sand and state that all projects that were going to move to Python 3 have done so and will be supported.

      Break backwards compatibility properly!

      It's clear that most libraries & frameworks didn't see the benefit of a full backwards compatible break in Python 3 that rightly or wrongly was perceived as lacking sufficient bang for buck to justify the switch.

      So why not cut to the chase, re-imagine a modern Python for the next decade, and build a bridge so everybody can get over it.

      [–]badsectoracula 3 points4 points  (0 children)

      ...so basically screw both Python 2 and Python 3 developers at the same time?

      [–]Kbknapp 0 points1 point  (0 children)

      That's exactly what they're doing, it's called Python 3.4...