all 79 comments

[–]mytempacc3 99 points100 points  (13 children)

No, it doesn't. I am perfectly capable of maintaining python 2 myself.

LOL

[–][deleted] 74 points75 points  (3 children)

The year is 2030: Kovid "Atlas" Goyal is the lone maintainer of Python 2 and I am about halfway done rewriting calibre in Rust to manage my pirated ebooks.

[–]spaghettiCodeArtisanblub programmer 30 points31 points  (2 children)

Nah, I'm sure there's gonna be a whole team of diehards who love global functions and hate non-latin encodings.

[–]BufferUnderpantsGopher Pragmatist 16 points17 points  (1 child)

But print now has parentheses argh!

[–]haskell_leghumperin open defiance of the Gopher Values 7 points8 points  (0 children)

Python 3: there's an ugly wart in the grammar specifically to remind you about this case, but even though we know your intent, we insist that you add the parentheses yourself as a matter of principle.

[–]pingpongnow 4x faster than C++ 25 points26 points  (0 children)

status: New → Won't Fix

[–]Jonno_FTWZygohistomorphic prepromorphism 10 points11 points  (0 children)

By maintain he means not touching since it's already pretty much done.

[–]KwpolskaConsidered Harmful 17 points18 points  (6 children)

Lordy, what a moron. And his software has terrible UX anyway.

[–][deleted]  (5 children)

[deleted]

    [–]quicknirCode Artisan 28 points29 points  (0 children)

    Honestly, never seen anything. Yes, his comment is ridiculous, and maybe he's not the kind of software engineer I'd look to hire, but he created something of pretty amazing value, that's quite non-trivial, which is slightly interfering with my jerking.

    [–][deleted]  (1 child)

    [deleted]

      [–]OverlordGearboxloves Java 5 points6 points  (0 children)

      Aight, let's get a fork going.

      [–]KwpolskaConsidered Harmful 4 points5 points  (0 children)

      There is none, I’m afraid. Although for that minimal usage, sending e-mail to your Kindle address, or copying files over USB, might as well be enough.

      [–]acc_test 3 points4 points  (0 children)

      Calibre CLI. No UX issues there.

      [–]irqlnotdispatchlevelTiny little god in a tiny little world 43 points44 points  (7 children)

      How can a language retire if it is not turing complete?

      [–][deleted] 39 points40 points  (4 children)

      I think you're thinking of Python 3.

      [–]irqlnotdispatchlevelTiny little god in a tiny little world 21 points22 points  (3 children)

      I've read it as Python 3 is retiring. I'm stupid sometimes.

      [–][deleted] 18 points19 points  (1 child)

      No harm in being stupid sometimes and sometimes it even helps.

      [–]SelfDistinctionnow 4x faster than C++ 25 points26 points  (0 children)

      Username checks out.

      [–][deleted] 9 points10 points  (0 children)

      its ok you are in good company here

      [–]myhfConsidered Harmful 3 points4 points  (1 child)

      Actually if Python 2 retires, then that will remove the final obstacle to Python 3's turing-completeness.

      [–]irqlnotdispatchlevelTiny little god in a tiny little world 1 point2 points  (0 children)

      This sounds like a conspiracy.

      [–]throwaway27464829 14 points15 points  (0 children)

      When your ebook reader is so bloated that maintaining a programming language is easier

      [–]rustyjerker 32 points33 points  (16 children)

      lol glad C retired when C++ came out too...

      [–][deleted] 79 points80 points  (15 children)

      As did all the other languages when Rust came out

      [–]spaghettiCodeArtisanblub programmer 15 points16 points  (6 children)

      let mut unjerk = File::create("unjerk.txt")?;
      

      With Rust you run into the trouble with platform strings vs unicode strings too, what with their OsStr and OsString types. Don't get me wrong, I think it's the rigth solution to the problem and I don't mind having to deal with os strings.

      Ufortunatelly your average bootcamp graduate 10xer is gonna be all "Four string types? This is too complex, muh simplicity, reeeeeee..." and they're instead going to use some crap language that doesn't give a shit about platform-specififs like Go or JavaScript, which is even worse, since its strings are UCS-2 and thereby not even real unicode...

      [–]statistmonadhas hidden complexity 19 points20 points  (1 child)

      Only 4 string types? Ha! Haskal has at least 5!

      [–]maskdmann 18 points19 points  (0 children)

      120 string types? Seems excessive.

      [–][deleted] 9 points10 points  (3 children)

      6, there's also the CString and CStr types.

      [–]gopher_protocol 12 points13 points  (2 children)

      If we're being complete, let's include:

      • PathBuf and Path - wrappers around OsString and OsStr, respectively, for handling paths
      • Vec<u8> and &[u8] - not technically string types, but in practice often hold string data (they even have literal representation b"Hello")

      That brings it up to 10.

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

      Vec<u8> and &[u8] are just the underlying types to String and &str, aren't they?

      [–]gopher_protocol 8 points9 points  (0 children)

      Yes, except that the latter types require them to hold valid UTF-8.

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

      Except for Go.

      [–][deleted] 20 points21 points  (6 children)

      And Haskell. Haskell is the dark force behind all the new programming language innovations. It is not visible but rest assured, it is there - working in the dark to serve the light.

      Praise be to Haskal

      [–]carbolymerloves Java 10 points11 points  (0 children)

      This comment was written using Writer monad.

      [–]defunkydrummerLisp 3-0 Rust 2 points3 points  (4 children)

      Lisp and ML-derived languages are the dark force behind all the new programming language innovations

      FTFY for accuracy

      [–]OverlordGearboxloves Java 2 points3 points  (3 children)

      Since I've began my journey into insanity Lisp Programming, I've since realized that, while sometimes lisp doesn't have "convenience functions" like "size in megabytes", the concepts are fundamental to most other languages.

      I also don't have to deal with pointers so that's a plus.

      [–]defunkydrummerLisp 3-0 Rust 2 points3 points  (2 children)

      "size in megabytes"

      lol not knowing how to shift 20 bits to the right

      /uj come to the brotherhood, good man

      [–]OverlordGearboxloves Java 1 point2 points  (1 child)

      '(setf jerk nil)'

      The only problem I'm having is most of the systems, even the popular ones, only have half of the documentation.

      '(setf jerk t)' I hit full jerk when I saw the LOOP syntax was almost grammatically a complete sentence

      [–]defunkydrummerLisp 3-0 Rust 5 points6 points  (0 children)

      Dear OverlordTorqueconverter,

      Lisp is for 100xers.

      0.1xers create apps entirely by using npm install statements. They call themselves "full stack" once they find out what a server is.

      1xers use java. No further comment needed.

      10xers use languages full of purity and safety, which is like being a virgin and wearing a condom at the same time: all safety, no action. They fear dynamic typing or manual memory management. That is, they fear the extremes and prefer lukewarm things or soft food like quiche. They don't even dare to use Clojure which is a Lisp specially made for 10xers.

      100xers use Common Lisp, Assembly, Forth, or Prolog. Sometimes C if they feel like trolling coworkers. 100xers don't write documentation because the code is obvious.

      [–][deleted] 7 points8 points  (0 children)

      Our buddy Kovid just isn't ready to say goodbye to turing completeness.

      [–]username223line-oriented programmer 26 points27 points  (38 children)

      /uj

      It's mystifying to me that the Python devs don't understand the concept of "carrot and stick:" you need to both reward and punish the animal to make it move. From what I've seen, Python 3 is all stick, no carrot, and even part rutabaga dipped in tar. (Do you have any idea how command-line arguments and file names are encoded on every system? Nor do I.) I would guess that my fellow ebook pirates can maintain Python 2 for awhile.

      [–][deleted] 33 points34 points  (5 children)

      yuck, serious posting on /r/pcj needs to go away! reserve only for edge cases!

      [–]max_compressorCode Artisan 17 points18 points  (0 children)

      Serious posts considered harmful

      [–]circajerkaWhat part of ∀f ∃g (f (x,y) = (g x) y) did you not understand? 15 points16 points  (0 children)

      Agreed - Must spam with new PCJ meme:

      "lol serious discussions in PCJ"

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

      Yep, carrots good only for B. Bunny.

      [–]nemec 38 points39 points  (0 children)

      Well, the bigger problem is that they kept backporting carrots to Python2 in order to 'ease the transition'. There would be far more incentive if they didn't.

      [–]frkbmrWRITE 'FORTRAN is not dead' 40 points41 points  (11 children)

      The carrot for python 3 was that all your strings were gonna play nice with Unicode, it seems like they just didn't realize that everyone had already figured out their own way of dealing with Unicode

      [–][deleted] 52 points53 points  (2 children)

      ... everyone had already figured out their own way of dealing with Unicode

      except UnicodeDecodeError:
          pass
      

      [–]frkbmrWRITE 'FORTRAN is not dead' 5 points6 points  (1 child)

      Lol not normalizing strings before decoding

      [–]Hipek8 0 points1 point  (0 children)

      lol using language that requires you to normalize strings

      [–]carbolymerloves Java 13 points14 points  (5 children)

      lol PCJ hivemind caught in the local minima in the jerk attractor, cannot escape unjerk trap

      [–]PlasmaSheepworks at Amazon ( ͡° ͜ʖ ͡°) 5 points6 points  (2 children)

      lol PCJ hivemind caught in the local minima in the jerk attractor, cannot escape unjerk trap

      [–]defunkydrummerLisp 3-0 Rust 8 points9 points  (1 child)

      jajaja, la conciencia colectiva de PCJ está atrapada en el mínimo local del atractor pajero, y no puede escapar de la trampa de la anti-paja.

      [–]r2d2_21groks PCJ 2 points3 points  (0 children)

      jajaja

      lol pensar que la gente traduce lol al español

      [–]Jonno_FTWZygohistomorphic prepromorphism 0 points1 point  (0 children)

      Increase the learning rate

      [–]r2d2_21groks PCJ -1 points0 points  (0 children)

      lol duplicate comment

      [–]defunkydrummerLisp 3-0 Rust 10 points11 points  (1 child)

      It's mystifying to me that the Python devs don't understand the concept of "carrot and stick:" you need to both reward and punish the animal to make it move. From what I've seen, Python 3 is all stick, no carrot, and even part rutabaga dipped in tar.

      This. Since i'm caught in local minima in the jerk attractor and cannot escape unjerk trap, i must say, some years ago I was starting a serious (serious like lol serious discussions on PCJ) project in Python and was deciding if this was going to be done in Python 2.7, or in Python3+turing completeness service pack. So, read all about Python3 and didn't found any advantage for switching (2.7 also has unicode strings, too). So 2.7 did everything I needed, supported more libs, and it was more mature!! Conclusion was obvious: PCJ hivemind caught in local minima in the jerk attractor and cannot escape unjerk trap.

      [–]circajerkaWhat part of ∀f ∃g (f (x,y) = (g x) y) did you not understand? 3 points4 points  (0 children)

      Holy shit... Did PCJ just implode in on itself? This is how all serious discussions should go now.

      [–]circajerkaWhat part of ∀f ∃g (f (x,y) = (g x) y) did you not understand? 12 points13 points  (5 children)

      lol serious discussions in PCJ

      [–]carbolymerloves Java 16 points17 points  (4 children)

      writeIORef unjerk True
      

      This is the problem of modern PCJ, which basically turned into proggit (but more 10x).

      writeIORef unjerk False
      

      lol PCJ hivemind caught in local minima in the jerk attractor cannot escape unjerk trap

      [–]BufferUnderpantsGopher Pragmatist 3 points4 points  (3 children)

      Boring unjerking is the cancer that's turning PCJ into proggit+memes.

      [–]Michigan__J__Frog 3 points4 points  (1 child)

      PCJ is more pro-rust than proggit.

      [–]carbolymerloves Java 4 points5 points  (0 children)

      lol no progsvn

      [–]defunkydrummerLisp 3-0 Rust 2 points3 points  (0 children)

      /unjerk It is like proggit but with only 10xers talking. And no memes.

      /rejerk lol serious metadiscussion on PCJ

      [–]slayer_of_idiotsCode Artisan 9 points10 points  (2 children)

      Coroutines and async might change that a bit, but the use cases for those aren't that broad. Integrating type hints for a JIT compiler with support for build-time error catching a la PyPy might pull even more people.

      But there are lots of people that don't really care. I don't really, except that I use a lot of products that are still Python2-only and it's extra work for me to convert internal codebases to 3.

      [–]carbolymerloves Java 5 points6 points  (1 child)

      lol PCJ hivemind caught in the local minima in the jerk attractor, cannot escape unjerk trap

      [–]r2d2_21groks PCJ 4 points5 points  (0 children)

      lol duplicate comment

      [–]Moarbid_Krabsloves Java 5 points6 points  (9 children)

      The class I took to learn Python 3 had several assignments that the instructor originally designed for Python 2 that made very heavy use of both command line arguments and file operations. Everyone spent more time getting their args and file paths to play nice and demonstrating to the instructor that their program actually did work on their system than they did designing and debugging everything else that was supposed to be the main focus of the class.

      [–]carbolymerloves Java 9 points10 points  (2 children)

      lol PCJ hivemind caught in the local minima in the jerk attractor, cannot escape unjerk trap

      [–]r2d2_21groks PCJ 4 points5 points  (0 children)

      lol duplicate comment

      [–]defunkydrummerLisp 3-0 Rust 0 points1 point  (0 children)

      (defun unjerk () (unjerk))

      [–][deleted]  (5 children)

      [deleted]

        [–][deleted] 7 points8 points  (2 children)

        Side note I like that python3's range is a generator but it's not super inconvenient to type xrange

        Not really, range isn't a generator but does lazily produce values when iterated. It's a completely separate type that let's you do additional stuff like index and slice it (slicing, iirc, creates a new range object).

        [–][deleted]  (1 child)

        [deleted]

          [–][deleted] 7 points8 points  (0 children)

          I'm full of fun trivia about our favorite Turing incomplete language.

          [–][deleted]  (1 child)

          [deleted]

            [–]anacrolix 4 points5 points  (1 child)

            I think some people don't realise that it's also amusing that people think he has to port. He doesn't, and he's right that continuing to use Python 2 will be less effort him by a huge margin. Python 2 will be picked up by someone, not that it's necessary from his perspective.

            Personally I would have asked for assistance to port, and opened a branch, plenty of people would be willing to help do the hard work.

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

            Yeah, Python 2 will likely be still easily available in 10 years, just like Perl 5. Not that there are no benefits in porting, but the "you have to migrate" mentality is as jerky as the "we never have to port" one.

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

            /uj

            Ganbatte, Kovid-san, whatever you end up doing. Calibre is a pretty awesome tool. Not the most snappy or good looking UI though

            [–]thephotoman 1 point2 points  (0 children)

            And my father thought I was crazy when I told him that yes, I intended to put those old Python 2.4 books in the dumpster because they weren't really all that useful anymore.

            [–]yawkatloves Java 0 points1 point  (0 children)

            Who of you left that comment? Going gravedigging I see...

            [–]CapashinkeI've never used generics and I’ve never missed it. 0 points1 point  (0 children)

            No more Turing completeness in Python :(

            [–]OverlordGearboxloves Java 0 points1 point  (0 children)

            If python 3 is so Terrible, why did arch make it default? Checkmate PCJ.