Stories
Slash Boxes
Comments

SoylentNews is people

posted by martyb on Friday July 13 2018, @12:58PM   Printer-friendly
from the pass-it-on dept.

On a python developers' mailing list for the core developers, Python Committers, Benevolent Dictator for Life Guido van Rossum has announced that he is stepping down effective immediately and with out appointing a successor.

Now that PEP 572 is done, I don't ever want to have to fight so hard for a
PEP and find that so many people despise my decisions.

I would like to remove myself entirely from the decision process. I'll
still be there for a while as an ordinary core dev, and I'll still be
available to mentor people -- possibly more available. But I'm basically
giving myself a permanent vacation from being BDFL, and you all will be on
your own.

After all that's eventually going to happen regardless -- there's still
that bus lurking around the corner, and I'm not getting younger... (I'll
spare you the list of medical issues.)

I am not going to appoint a successor.

[...] I'll still be here, but I'm trying to let you all figure something out for
yourselves. I'm tired, and need a very long break.


Original Submission

Related Stories

MATLAB vs Python: Why and How to Make the Switch 30 comments

MATLAB and Python are both rather popular languages. Real Python has an overview of the two with an eye towards encouraging use of Python. There is a lot to say when comparing languages, so this is a long read.

MATLAB® is widely known as a high-quality environment for any work that involves arrays, matrices, or linear algebra. Python is newer to this arena but is becoming increasingly popular for similar tasks. As you’ll see in this article, Python has all of the computational power of MATLAB for science tasks and makes it fast and easy to develop robust applications. However, there are some important differences when comparing MATLAB vs Python that you’ll need to learn about to effectively switch over.

In this article, you’ll learn how to:

  • Evaluate the differences of using MATLAB vs Python
  • Set up an environment for Python that duplicates the majority of MATLAB functions
  • Convert scripts from MATLAB to Python
  • Avoid common issues you might have when switching from MATLAB to Python
  • Write code that looks and feels like Python

Earlier on SN:
Python's Guido van Rossum Steps Down (2018)
What's Today's Top Language? Python... no, Wait, Java... no, C (2017)
GNU Octave - Open Source Answer to Matlab - Hits 4.0.0 (2015)
You Want MatLab on Your Resume to Get a Job at Google (2014)
Why Python is Slow: Looking Under the Hood (2014)


Original Submission

This discussion has been archived. No new comments can be posted.
Display Options Threshold/Breakthrough Mark All as Read Mark All as Unread
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
(1)
  • (Score: 2, Funny) by Anonymous Coward on Friday July 13 2018, @01:28PM (2 children)

    by Anonymous Coward on Friday July 13 2018, @01:28PM (#706603)

    Oh no! First the xkcd guy gets dumped by his girlfriend Megan, then I'm With Hillary loses the election, and now Guido von Python is quitting!

    Randall "Cunnilingus" "Python Whore" Munroe will have to kill himself!

    • (Score: 0) by Anonymous Coward on Friday July 13 2018, @02:31PM

      by Anonymous Coward on Friday July 13 2018, @02:31PM (#706633)

      Good, that shit is painfully unfunny.

    • (Score: 0, Offtopic) by Ethanol-fueled on Friday July 13 2018, @03:43PM

      by Ethanol-fueled (2792) on Friday July 13 2018, @03:43PM (#706654) Homepage

      She dumped him for a racist offensive White dude whose nuts had dropped. Women don't like politically-correct pussies.

  • (Score: 5, Informative) by PiMuNu on Friday July 13 2018, @01:31PM (28 children)

    by PiMuNu (3823) on Friday July 13 2018, @01:31PM (#706604)

    Best of luck to him. It is good to change now and then.

    • (Score: 4, Insightful) by DannyB on Friday July 13 2018, @02:05PM (26 children)

      by DannyB (5839) on Friday July 13 2018, @02:05PM (#706618) Journal

      Whether you are a regular Python user or not, he has contributed his time and effort towards something that makes the world a better place and keeps the wheels and gears of the machinery running smoothly.

      --
      NSA does only TARGETED surveillance. It's just that they target everyone.
      • (Score: 2, Interesting) by Anonymous Coward on Friday July 13 2018, @03:49PM (24 children)

        by Anonymous Coward on Friday July 13 2018, @03:49PM (#706660)

        Python has not made the world a better place. The language design is fundamentally difficult to compile or even JIT. This imposes a huge performance cost. The resulting slowness, besides being frustrating and an impediment to getting business done, has an environmental cost. We use more power, need larger batteries, and need faster more-complicated cores. Many errors that should be caught at compile-time are instead left as lurking surprises, hiding in wait to crash a business-critical production system.

        • (Score: 5, Interesting) by DannyB on Friday July 13 2018, @04:54PM (15 children)

          by DannyB (5839) on Friday July 13 2018, @04:54PM (#706694) Journal

          What you say is true. I could similarly argue that Lisp is difficult to compile, but not impossible. It has a huge performance cost. The slowness is an impediment . . . battery cost . . . environment . . . etc. Many errors that could be caught at compile time are instead runtime surprises.

          Yet I also consider Lisp (various dialects and implementations) to be great tools. Why? Because they are much higher level abstractions than C. It's unlikely that one would build a logic programming system, a computer algebra system, a theorem prover, etc in C. But they might in Lisp or Python.

          While I haven't used them, Python has tools like NumPy. Good wrappers for TensorFlow.

          For low-skilled programmers, Python is a great adhesive to glue systems together. It is a much better first language than grandpa's BASIC. We're talking about a language (Python 3) with Generators.

          Python seems to work as an embedded language (LibreOffice, Blender).

          On RasPi, it has good GPIO support and libraries for various chips.

          I'm a Java developer. Not a heavy Python user. But I'm not so blind to be unable to see the immense value in Python. I'm also not taking a side in static / dynamic flamewar, but I find that strongly statically typed languages (eg, Java, Pascal type languages) are very useful. I agree with your point that catching errors at compile time is much better than at runtime. I have sometimes argued that the compiler is your zero'th level of unit tests. Yet I find dynamic languages (usually Lisp or Clojure) have great usefulness for certain things.

          Back to your point of Difficult to compile. So is JavaScript, yet we have multiple quite decent compilers for that now. I suspect that because of the wide reach of JavaScript there is enough motivation for interested parties to expend the significant cost of good compiler development. I can only hope that happens for Python as well.

          In the Java world, on the horizon, the Graal VM will make dynamic languages easier to compile.

          Blessings upon all the people who contribute their effort to give us such tools we should be greatful for. Tools people would have drooled and gone bonkers for three decades ago.

          --
          NSA does only TARGETED surveillance. It's just that they target everyone.
          • (Score: 2, Interesting) by Anonymous Coward on Friday July 13 2018, @05:33PM

            by Anonymous Coward on Friday July 13 2018, @05:33PM (#706706)

            most people should be able to write in a very high level language(s) then have the compiler handle all the tedious and/or technical, security related, low level stuff and still produce output that is efficient like if someone wrote the whole thing in C. a new Hip Hop type project with zero gotchas from the PHP core project would be nice, for instance. dlang may do some of this, but idk just how far it goes. rust tries to help with memory safety but idk how high level the language actually is. i think the real/more experienced programmers should be working on the languages, the compilers, and the IDEs (i know they already do, but i mean in this exact context) and build them all for less experienced application devs/designers with only higher level understanding/skill level. i think it's unreasonable to expect most people to learn the low level stuff and really we have different levels of nerd and super nerds want to work on super nerdy things, while your average nerd just wants to scratch an itch without it causing a bunch of problems/being a turd. I think this is the future, if AI doesn't completely replace us before then.

          • (Score: 1, Interesting) by Anonymous Coward on Friday July 13 2018, @06:25PM (1 child)

            by Anonymous Coward on Friday July 13 2018, @06:25PM (#706722)

            For low-skilled programmers, Python is a great adhesive to glue systems together...

            Noooo, that's like giving a three year old a tube of superglue and a box containing multiple tubs of glitter....sure, the surface results are ever so shiny, but underneath? and the resultant clean up operations?....yech!

            It is a much better first language than grandpa's BASIC.

            Well, BASIC was never really my cup of tea, I cut my programming teeth on assembler, (though ISTR there was a version available on the DECSYSTEM-20 which was fun in a lets-crash-the-system-with-this kind of way..so I'm old enough for a great grandpa appellation) and there's probably a bunch of BBC BASIC programmers out there in their bath chairs, wheeling their way towards thee at this very minute all of a mind to strongly disagree with you on your point above.

            For what it's worth, in my view, compared to BASIC, it's a hell of lot easier for programmers, beginners or otherwise, to make abstruse and pernicious coding errors in Python which can then lie hidden for years just waiting for their 5 minutes of fame, and despite the code being installed and in use on tens of thousands of computers globally, these errors never being spotted (ah, the smell of randomly corrupted Berkeley DB files in the morning...how I miss them!..we never did find the borked section of Python code responsible, so as a matter of expediency wrote a bit of Perl to watchdog the db files and fix them when they went titsup, thereby making the fixing of the Python code SEFP).

            Easiest (and most profitable) consultancy job I've ever had? back in the '90s converting 20 BASIC programs (which started off life running on a mainframe back in the 60's) into a form which would compile properly in Turbo Basic and pass the test datasets checks, it was a bit of a revelation that not all 'business critical' financial code was written in COBOL.

            It frightens me some mornings to think that they might still be out there, being used in anger, running in a DOS VM somewhere..

            • (Score: 2) by DannyB on Monday July 16 2018, @02:10PM

              by DannyB (5839) on Monday July 16 2018, @02:10PM (#707885) Journal

              Noooo, that's like giving a three year old a tube of superglue and a box containing multiple tubs of glitter.

              For their own three-year-old project, why is that so bad?

              I'm not saying give a low skilled programmer a tool so that they can do something important and mission critical.

              I mean, for example, how many Excel Power Users could benefit from, say, Python, or Julia?

              --
              NSA does only TARGETED surveillance. It's just that they target everyone.
          • (Score: 1, Touché) by Anonymous Coward on Friday July 13 2018, @06:27PM

            by Anonymous Coward on Friday July 13 2018, @06:27PM (#706723)

            uh, mathmatica is built in c. so is maple.

          • (Score: 3, Interesting) by jmorris on Friday July 13 2018, @08:56PM (8 children)

            by jmorris (4844) on Friday July 13 2018, @08:56PM (#706777)

            It is a much better first language than grandpa's BASIC.

            All yall punks like to pick on BASIC. Show me a better language you can stuff into an 8K ROM. Anyone? That was the design limit they were dealing with. Even then, it is an OK language to learn the very basics with. And back in the day, because it was so bloody slow, it usually lead to assembly language and EVERY programmer should be required to know at least one of those, to demonstrate they actually know how a computer works, before being allowed near important code.

            And it doesn't require much to uplift BASIC into "real language" status. Motorola and Microware released BASIC09 in 1980 and it easily qualifies. Full complement of loop structures, named procedures with parameters and return values, etc. In fact I'd love to see it ported to Linux and given a decent complement of libraries to expose the POSIX APIs, do regexs, etc. Bet one could accomplish at least as much with that as any of the current scripting languages and it being semi-compiled it would likely be as fast or faster, especially if advances in compiler tech were applied.

            The "state of the art" has not advanced nearly as much as some people think. Lots of speed bumps from better lithography wasted in ever more bloated executables is not advance. Debian and Red Hat once easily fit on a CD along with lots of extras. I have an InfoMagic box set on the shelf with RedHat 4.2, Contrib and Errata on one CD with other material. Debian 9.4 is now available (only via jigdo) on three BluRays. Fedora (the successor to Red Hat Linux) apparently doesn't even produce a complete set of images anymore. There is now an individual packages larger than a single CD and many more approaching that milestone.

            Behold:

            I give you the champion:
            -r--r--r-- 1 root root 823M Jan 21 2017 redeclipse-data_1.5.8-1_all.deb

            But there are many contenders for the trophy that aren't games:
            -r--r--r-- 1 root root 552M Mar 2 05:31 linux-image-4.9.0-6-amd64-dbg_4.9.82-1+deb9u3_amd64.deb
            -r--r--r-- 1 root root 348M Mar 13 2017 texlive-latex-extra-doc_2016.20170123-5_all.deb
            Had they not spit out so many smaller packages from the texlive source package it would probably have been the winner.

            Just the installer.....
            -r--r--r-- 1 root root 153M Mar 6 03:27 debian-installer-9-netboot-armel_20170615+deb9u3_all.deb

            Some light reading....
            -r--r--r-- 1 root root 155M Jun 26 2017 qgis-api-doc_2.14.11+dfsg-3+deb9u1_all.deb
            Pro Tip: If your API's docs compress to 155MB you might have a problem getting folks to RTFM.

            Notice, other than calling out the champ, I'm not picking too hard on the huge packages full of images, textures and other art assets for the games. Yea those have to be big because we have HD monitors and want fancy 3d, good sound, etc. Pretty is good. Nor the huge collections of fonts, clipart, wallpaper, icons, etc.

            • (Score: 3, Informative) by pvanhoof on Saturday July 14 2018, @04:57AM (2 children)

              by pvanhoof (4638) on Saturday July 14 2018, @04:57AM (#706940) Homepage

              This is with debugging symbols (see the dbg part of the package's name):
              -r--r--r-- 1 root root 552M Mar 2 05:31 linux-image-4.9.0-6-amd64-dbg_4.9.82-1+deb9u3_amd64.deb

              Not really fair. Debugging symbols can be huge.

              • (Score: 2) by jmorris on Saturday July 14 2018, @06:25AM (1 child)

                by jmorris (4844) on Saturday July 14 2018, @06:25AM (#706962)

                Totally fair. The kernel has bloated up too. For a point of comparison, lets look at Red Hat Linux 4.2 on the InfoMagic CD set I mentioned.

                RedHat Linux 4.2: 196.4MB
                Contrib Packages: 215.8MB
                Errata: 134.9MB
                Total: 547.1MB

                So yea, the debug symbols for the fricking kernel being bigger than the entirety of Red Linux 4.2 is a bad thing. For another point of comparison, the entire source tree for RHL4.2 is only 320MB. You could develop on the kernel with a hard drive less than a GB because that is all people generally had in that time period. Now you have problems getting a bare bones install running in a GB of space without going with an embedded distribution and will probably end up with busybox or some bogosity. I had Linux with X and Netscape running on a laptop [beau.org] with a 320MB hard drive and 20MB of RAM. I actually did WORK on that machine in Applixware. On a dual P-133 with a 850MB drive and 64MB of RAM I could build a kernel in a reasonable time. Now you think a half GIG of -zipped up- debug symbols is reasonable and unremarkable?

                • (Score: 3, Informative) by bitstream on Saturday July 14 2018, @07:01PM

                  by bitstream (6144) on Saturday July 14 2018, @07:01PM (#707277) Journal

                  Computers get better. Corporations sponsor ever crappier programmers. ;)

            • (Score: 2) by DannyB on Monday July 16 2018, @02:30PM

              by DannyB (5839) on Monday July 16 2018, @02:30PM (#707892) Journal

              I just want to point out that I was a HUGE BASIC fanboy back in the day. While I was in college I had started a 3 ring binder, sort of a BASIC reference manual, as it were, for my ideal dream BASIC language. Since in my inexperience I thought BASIC was the cat's meow compared to other minicomputer languages.

              I also gave significant thought on how to build an interactive BASIC compiler. That is, it would act like a BASIC interactive interpreter. You type in program lines. Type RUN, etc. My first thought was about how to build a much faster BASIC interpreter. My idea was that the interpreter stores the program text in an internal tokenized form, which was common. But this tokenized form should allow for a two-byte (woo a whole 64K) pointer into another part of the program text, whenever there was any kind of line number, or other reference.

              For example, if line 180 said:

              180 IF A = B THEN 430 ELSE GOTO 670

              then the internal tokenized representation would represent it like:

              180 IF A = B THEN IGOTO 430 ELSE GOTO 670

              The IGOTO is an "invisible" GOTO. When LISTing the program text, you never see the text IGOTO, it would LIST like the original line 180. Now both the GOTO and IGOTO internal representation is the token of course, plus a two byte slot which is the pointer to the respective lines.

              Similarly, when you execute a FOR loop, the stack records a pointer to the FOR token back in the tokenized program text. That way when you hit a NEXT, the top stack entry can directly and immediately proceed back to the FOR statement. No searching the text. No table lookup.

              When any kind of line number reference occurs, even say, PRINT USING, there is a two byte pointer in the stored program text.

              When you type RUN, the interpreter makes a single pass over the tokenized text and fills in all the line number pointers. The program execution could be significantly faster. This would also give you an immediate fatal error if your program had a line number reference to a non-existant line. Most BASIC interpreters would happily begin execution and you wouldn't get invalid line number reference until much later.

              Next, I turned my thoughts to an interactive compiler. If memory were less of a problem, as I knew it would soon the case due to Moore's Law, I mean geez, there were now 64 K boards on a single board!; I thought the "interpreter" could also store a compiled representation. Each BASIC program line would be a single heap object. (Yes, even then I was thinking about heaps, allocators, etc.) There would be a table of line numbers, with pointers to the heap object representing that compiled line. The compiled code might consist of many JSR (jump to subroutine) instructions back into the runtime library for PRINT, INPUT, etc. But it's still a lot faster than an interpreter.

              Next a batch compiler could do basically the same compilation, but in batch mode. Now you have both a fast interactive compiler along with a batch compiler for the SAME dialect of BASIC. And I wanted a rather expansive dialect. More advanced string and array capabilities. Date / Time values. BCD as well as floating point. (The idea of using a large integer for business currency values hadn't occurred to me yet.)

              But as I become more advanced, I soon met Pascal. Fell in love. Never looked back at BASIC, except with fond memories -- even to this day fond memories of BASIC.

              --
              NSA does only TARGETED surveillance. It's just that they target everyone.
            • (Score: 2) by DannyB on Monday July 16 2018, @02:32PM (3 children)

              by DannyB (5839) on Monday July 16 2018, @02:32PM (#707893) Journal

              On the subject of "bloat".

              One man's "bloat" is another man's "features".

              Word is a much larger and slower program than Notepad.

              Linux is a much larger and more complex system than CP/M.

              People complain about bloat but are blind to the features. The most simplistic text editors today do on the fly spelling error detection.

              --
              NSA does only TARGETED surveillance. It's just that they target everyone.
              • (Score: 2) by jmorris on Tuesday July 17 2018, @03:21AM (2 children)

                by jmorris (4844) on Tuesday July 17 2018, @03:21AM (#708194)

                Comparing Word to Notepad is silly. I'm not being a grumpus demanding people use Latex and to get off of my lawn.

                Instead of Notepad, compare a modern Microsoft Word (or LibreOffice Writer that opens to a blank document with 209MB of resident set consumed) to Lotus Smartsuite of the day, or even Microsoft Office 95. Both have full featured productivity packages with the full GUI experience, OLE/DDE, tons of typefaces, both bitmap and vector graphics, embedded media, programming languages embedded in text documents, the good, the bad and the ugly of the "Integrated Office Suite" that ran on machines with far less than a single GB of ram and shipped on floppies or a single CD. We aren't talking about a "little" bloat here; we are witnessing a factor of 100 increase in memory usage for little obvious benefit to the user. Nobody really cares because Moore's Law provided but somebody should be asking "WTF is going on?" If you want to know why your phone can't make it through a day, answering the bloat question is a lot productive than demanding the engineers to solve getting 8 cores and 8GB of ram to stay lit all day on a small battery. If we could get 1990s era software to run on a mobile platform you could run a week on a charge. Imagine applying modern tech to scale down instead of up, instead of extracting more MHz we instead optimized the software to run well on sub GHz cores and half a GB of ram and used modern fabrication to make it consume minimal power. Then there is the GPU, not sure what can be done about that problem...

                • (Score: 2) by DannyB on Tuesday July 17 2018, @01:34PM (1 child)

                  by DannyB (5839) on Tuesday July 17 2018, @01:34PM (#708320) Journal

                  You make a good point. There REALLY IS bloat. But my point is that not all increased demand for cycles and bytes are due to bloat. I had been re-reading BYTE magazine from it's first issue.

                  https://www.americanradiohistory.com/Byte_Magazine.htm [americanradiohistory.com]

                  https://archive.org/details/byte-magazine [archive.org]

                  I am struck by:
                  * how shockingly primitive the technology was
                  * how much they could get done with so little
                  * how limited the usefulness of systems actually were
                  * how poor the programming productivity was compared to modern tools / languages

                  That leads me to another point. Sometimes the "bloat" or inefficiency you describe is due to efforts to save human programmer time. The most expensive resource these days is no longer the computer, but the people who write software. Sure I could write in assembly language and optimize to the hilt. But the gains would be VASTLY outweighed by the cost. Instead most software is written in higher level languages, more abstract frameworks, etc. The inefficiency is outweighed by the cost savings of development.

                  Hypothetical example: If I can write a web based business application in Java and it only needs twice the CPU and six times the memory of a program in C++, but I can beat my competitor to market by a year, my bosses will say that is cheap at the price! You need an extra 64 GB of ram on this fire breathing 8 socket server? No problem! I'm optimizing for dollars, not for cycles and bytes. That is a legitimate tradeoff which people can choose to make.

                  --
                  NSA does only TARGETED surveillance. It's just that they target everyone.
                  • (Score: 2) by DannyB on Tuesday July 17 2018, @01:36PM

                    by DannyB (5839) on Tuesday July 17 2018, @01:36PM (#708321) Journal

                    Another example: If you asked most people this question: Would you prefer to have your next software upgrade six months sooner if it used 25 % more memory? I wonder what the answer would be?

                    --
                    NSA does only TARGETED surveillance. It's just that they target everyone.
          • (Score: 1) by therainingmonkey on Saturday July 14 2018, @11:27AM (1 child)

            by therainingmonkey (6839) on Saturday July 14 2018, @11:27AM (#707041)

            Python is a decent higher-level language, but it makes me sad that it's the dominant one (discounting javascript - let's not even go there).
            Basically everything Python does, Lua does better.
            Faster, lighter, more elegant, more consistent (some of these are subjective, but there are plenty of ways Lua objectively beats Python).
            Yet because of the network effect of Python's dominance, I have to use Python at work and Lua remains ignored as an embedded language or "the Roblox language".

            • (Score: 2) by DannyB on Monday July 16 2018, @02:34PM

              by DannyB (5839) on Monday July 16 2018, @02:34PM (#707895) Journal

              I've never liked Python's choice to use indentation. But it seems to work.

              I've had limited exposure to Lua, but that exposure was positive and I liked it. (Lua embedded in an installer product "Setup Factory" which generated SETUP.EXE installers back in late 1990s.)

              --
              NSA does only TARGETED surveillance. It's just that they target everyone.
        • (Score: 3, Touché) by DeathMonkey on Friday July 13 2018, @05:30PM (2 children)

          by DeathMonkey (1380) on Friday July 13 2018, @05:30PM (#706703) Journal

          All he did was create an easy to use programming language and give it away to the world completely for free.

          Fuck him, right!

          • (Score: 0) by Anonymous Coward on Friday July 13 2018, @07:55PM (1 child)

            by Anonymous Coward on Friday July 13 2018, @07:55PM (#706761)

            Here, I'll give you my refrigerator for free. Fuck me, right?

            • (Score: 0) by Anonymous Coward on Friday July 13 2018, @08:13PM

              by Anonymous Coward on Friday July 13 2018, @08:13PM (#706765)

              Trying to offload that death trap? Yeah, fuck you!

        • (Score: 2) by turgid on Friday July 13 2018, @08:18PM

          by turgid (4318) on Friday July 13 2018, @08:18PM (#706767) Journal

          I think you're getting it confused with C++.

        • (Score: 2) by sjames on Friday July 13 2018, @11:13PM

          by sjames (2882) on Friday July 13 2018, @11:13PM (#706829) Journal

          As opposed to compiled languages that never have runtime issues?

          Python is a perfectly good tool that has it's place. Because it is a high level language, you can focus on the real problem rather than dealing with fiddly (and bug prone) low level details for the bazillionth time.

          Certainly, Python (nor any other language) shouldn't be the only tool in the box, but that hardly makes it a bad thing.

        • (Score: 2) by PiMuNu on Monday July 16 2018, @08:30AM (2 children)

          by PiMuNu (3823) on Monday July 16 2018, @08:30AM (#707836)

          > The language design is fundamentally difficult to compile or even JIT.

          I think you misunderstand. Python is a language for scripting/rapid prototyping/hacking. The beautiful magic is that, if you use functionality a lot, you can rewrite it in C and it runs 10x faster.

          For example, I want to hack a script together to check some physics theory calculation. I knock out some naive calculation in python in half an hour. If it works, I can put together something more sophisticated in C but it takes a few days.

          • (Score: 0) by Anonymous Coward on Monday July 16 2018, @07:37PM (1 child)

            by Anonymous Coward on Monday July 16 2018, @07:37PM (#708041)

            The beautiful magic is that, if you use functionality a lot, you can rewrite it in C and it runs 10x faster.

            And then someone like me will come along, rewrite your C code in Perl and it'll run either just slightly slower or at the same speed, but now has the added advantage that mere mortals will look at it and go WTF? how does that block of code do that? and so they'll then try implementing that Perl code in Python, then you'll come along and rewrite the resultant Python in C, and then I'll rewrite your resultant code again it in Perl...
            If we keep it up for a goodly number of program generations, what with all the weird transcription errors that are bound to creep in, and with programmers being the idiosyncratic characters we are, after all our trademark foibles start getting added to the rewritten code, we might accidentally come up with a spontaneously emergent 'real' AI, though I suspect that we might have to get a Perl->COBOL->Lisp->C->Haskell->Python->APL chain going for a couple of generations for some really fun 'misunderstandings' to creep into the code.

            But yes, Python is a reasonable code hacking language, I still find it easier to think in Perl though and then translate to Python, 'tis probably a generational thing...

            • (Score: 0) by Anonymous Coward on Tuesday July 31 2018, @05:28AM

              by Anonymous Coward on Tuesday July 31 2018, @05:28AM (#715086)

              The beautiful magic is that, if you use functionality a lot, you can rewrite it in C and it runs 10x faster.

              And then someone like me will come along, rewrite your C code in Perl and it'll run either just slightly slower or at the same speed...

              And then someone comes along and reads your Perl code out loud in order to hammer some meaning out of it only to instead have to spend the next few years banishing all the summoned demons by rewriting the code Pythonically in Python which means it's so clean, readable, documented, understandable, thoroughly polished, and elegant that it achieves retroactive causality and slays all the monsters.

              Then someone comes along who has a kinky thing for C++ and around we go again.

              ...

              People who are convinced Python is too slow can use Cython. If they still say it's too slow it smells like PEBCAK code; the main source of all things slow.

      • (Score: -1, Offtopic) by realDonaldTrump on Friday July 13 2018, @04:06PM

        by realDonaldTrump (6614) on Friday July 13 2018, @04:06PM (#706672) Homepage Journal

        More and more I'm hearing that from so many people -- about myself. Beautiful letter from Scott Pruitt when he resigned.......... foxnews.com/politics/2018/07/05/scott-pruitts-full-resignation-letter-to-president-trump.html [foxnews.com]

    • (Score: 4, Funny) by Thexalon on Friday July 13 2018, @03:44PM

      by Thexalon (636) on Friday July 13 2018, @03:44PM (#706657)

      Plus, all we need is a different object with the relevant public methods and properties, and it will be a perfect drop-in replacement for Guido. After all, if it walks like a BDFL, and talks like a BDFL, then it's a BDFL for all intents and purposes.

      --
      The only thing that stops a bad guy with a compiler is a good guy with a compiler.
  • (Score: 2, Troll) by c0lo on Friday July 13 2018, @02:12PM (17 children)

    by c0lo (156) on Friday July 13 2018, @02:12PM (#706621) Journal

    I mean, it would have meant something if he'd done it while python was new and fresh ans shiny ans sparkling.
    But today? Well, it's even past mainstream, started to go the way of Dodo. Today we have Rust and Swift and... and... yes, TypeScript. Even c++217 got such crazy templated ideas you have to be mad to understand them... and certainly you will get mad before you understand them. Other programming languages saw the light of the day and have been de-facto retired in between, like Ruby and Golang
    Admit it, Pyhon is as exciting nowadays as Perl and Java and C#, which is to say almost as exciting as Cobol.
    So, who in his right mind would crave the title of BDFL of Cobo... errr.. Python I mean?

    (grin)

    --
    https://www.youtube.com/watch?v=aoFiw2jMy-0
    • (Score: 5, Insightful) by tangomargarine on Friday July 13 2018, @03:03PM (3 children)

      by tangomargarine (667) on Friday July 13 2018, @03:03PM (#706648)

      Admit it, Pyhon is as exciting nowadays as Perl and Java and C#, which is to say almost as exciting as Cobol.

      People who care about how "exciting" the language they are using is, are obviously not using said language for a project of any importance.

      --
      "Is that really true?" "I just spent the last hour telling you to think for yourself! Didn't you hear anything I said?"
      • (Score: 0) by Anonymous Coward on Friday July 13 2018, @03:56PM (2 children)

        by Anonymous Coward on Friday July 13 2018, @03:56PM (#706665)

        People who care about how "exciting" the language they are using is, are obviously not using said language for a project of any importance.

        True. Now, put it in a sarcastic reflection of the today's explosions of programming languages and frameworks.
        Actually, better don't, you'll lose karma being modded a troll and there will be others to explain to you how wrong you are.

        (grin)

        • (Score: 2) by tangomargarine on Friday July 13 2018, @04:07PM (1 child)

          by tangomargarine (667) on Friday July 13 2018, @04:07PM (#706673)

          Are you capable of posting a *non*-sarcastic opinion? You must be a lot of fun to have a conversation with in real life. /s

          --
          "Is that really true?" "I just spent the last hour telling you to think for yourself! Didn't you hear anything I said?"
          • (Score: 2) by c0lo on Friday July 13 2018, @04:44PM

            by c0lo (156) on Friday July 13 2018, @04:44PM (#706691) Journal

            Given the fitness of my mindset to the evolution of this world, I would be(come) crazy if I am to post *non*-sarcastic opinions.

            You must be a lot of fun to have a conversation with in real life. /s

            Fortunately, I work in a team where everybody is using sarcasm as often as possible without making a point from sarcasm.
            As a result, I need to get drunk less often than before joining them - no, I'm not kidding.

            --
            https://www.youtube.com/watch?v=aoFiw2jMy-0
    • (Score: 2) by Knowledge Troll on Friday July 13 2018, @04:30PM (11 children)

      by Knowledge Troll (5948) on Friday July 13 2018, @04:30PM (#706685) Homepage Journal

      I'm just starting to learn C++ and I started with C++14 then moved up to C++17 for a few extra types and some attributes. Template programming is brand new to me and I've really enjoyed it (and hopefully am learning to not abuse it, I've got people mentoring and doing code review to help with that) so I'm particularly curious about what new template technology is coming up and how head exploding it is. Would you mind elucidating?

      • (Score: 2) by c0lo on Friday July 13 2018, @05:03PM (7 children)

        by c0lo (156) on Friday July 13 2018, @05:03PM (#706697) Journal

        Sorry, I got my mind fried at C++11 in the parameter packs expansion/loci [youtu.be].

        --
        https://www.youtube.com/watch?v=aoFiw2jMy-0
        • (Score: 2) by Knowledge Troll on Friday July 13 2018, @11:07PM (6 children)

          by Knowledge Troll (5948) on Friday July 13 2018, @11:07PM (#706822) Homepage Journal

          I'm not sure if I'm still soundly in happiness via ignorance but that video seemed to over complicate things quite a bit. I can write C and I'm used to variadic functions - one of the first things I needed to do in my C++ project was use a variadic function but then I found variadic templates. One major improvement is that variadic templates maintain the type information - I much prefer that over a variadic function.

          I was able to use a variadic template in C++ with nothing more than my C knowledge and stack overflow and that was either right before or right after I even made my first class. After that I implemented a class for doing promises/futures reusing the native C++ types for them with a cleaner interface and reference counted objects. That promise class is templated and works with any type you can throw at it and maintains the type information instead of having to cast it from a void pointer.

          At least for me templates turned out to be pretty easy. The biggest challenge I ran into was template abuse where I tried to use them way too much but I have a mentor to bring me back from that behavior. So far, for me, templates work well and solve real problems.

          If I had to use a template after watching the referenced video I think I'd slit my wrists.

          • (Score: 2) by c0lo on Saturday July 14 2018, @02:18AM (5 children)

            by c0lo (156) on Saturday July 14 2018, @02:18AM (#706885) Journal

            I was able to use a variadic template in C++ with nothing more than my C knowledge and stack overflow and that was either right before or right after I even made my first class.

            Basics, even with variadic params, is easy and many useful things can be done with the basics.
            The things start to go quite horendous when you get into template metaprogramming - not everybody's piece of cake, but it's insanely powerful. And useful.
            E.g. write a templated function implementing one behaviour if you detect at compile time the (class) parameter implements a method with given signature, and a different behaviour if it doesn't. Do it without relying on inheritance - because you can't always go and pad a 3rd party library with "marker interfaces" specific to your needs.

            --
            https://www.youtube.com/watch?v=aoFiw2jMy-0
            • (Score: 2) by Knowledge Troll on Saturday July 14 2018, @03:18AM (4 children)

              by Knowledge Troll (5948) on Saturday July 14 2018, @03:18AM (#706902) Homepage Journal

              That's awesome, thank you for sharing. I have yet to put together any template that has a branch that relates to the template variable but I've been wondering about what that might be useful for. Right now I just use templates to pass types through into the function so it can do something smart with them and the most sophisticated thing I think I've done so far is use T where the object name would go when using the name as a constructor in a templated class that provides constructors as static methods for the class that extends it. I was really pleased that it worked and it gave some nice shine to my base object interface.

              How do you do introspection in something like C++ at compile time to find out if a method signature exists on an object or not with out relying on the class hierarchy? Is that with typeinfo()? I didn't see an obvious way that would work in the documentation.

              Again, thanks for sharing, I truly appreciate it.

              • (Score: 2) by c0lo on Saturday July 14 2018, @09:35AM (3 children)

                by c0lo (156) on Saturday July 14 2018, @09:35AM (#707014) Journal

                If you haven't had any template metaprogramming experience, it will take you some time to get what's happening here. If this is the case:
                - SFINAE [cppreference.com]
                - see <type_traits> [cppreference.com]

                namespace detail {

                // SFINAE check for a method named `PostProcess`
                template <typename, typename T>
                struct has_PostProcess { // error case
                    static_assert(
                        std::integral_constant::value,
                        "Second template parameter needs to be a function type."
                    );
                };

                // specialization. Looking for a method named PostProcess declared by type X with rettype and args
                template <typename X, typename Ret, typename... Args>
                struct has_PostProcess<X, Ret(Args...)> {
                private:
                    // constexpr data member - named `check` - of type function, will be used T has a PostProcess method
                    // with matching arguments. The return type is either std::true_type or std::false_type
                    template <typename T>
                    static constexpr auto check(T*) ->
                        typename std::is_same().PostProcess(std::declval()...)),
                            Ret
                        >::type;
                    // generic version of the check data member if the more specialized check
                    // is not matched
                    template <typename>
                    static constexpr std::false_type check(...);
                    // Realize that, by SFINAE, only one of the above definition of `check` will prevail.

                    // this says "Would I be to call the 'check' function, what would be the return type"?
                    using response=decltype(check<X>(static_cast<X*>(nullptr)));
                public:
                    // the constexpre value will be true (X does have a PostProcess method matching the required signature)
                    // or false otherwise.
                    static constexpr bool value=response::value;
                };

                }// namespace detail

                Can you manage from here?

                --
                https://www.youtube.com/watch?v=aoFiw2jMy-0
                • (Score: 2) by Knowledge Troll on Saturday July 14 2018, @03:55PM (2 children)

                  by Knowledge Troll (5948) on Saturday July 14 2018, @03:55PM (#707154) Homepage Journal

                  Wow thanks again! Yeah that's beautiful, I just need a pointer really. I talked a bit with a friend and he introduced me to the type traits but said he had never done specialization. Thanks again! I will now explode my head.

                  • (Score: 0) by Anonymous Coward on Saturday July 14 2018, @05:35PM

                    by Anonymous Coward on Saturday July 14 2018, @05:35PM (#707216)

                    > I just need a pointer really.

                    Here you go: std::unique_ptr

                    :D

                  • (Score: 2) by c0lo on Saturday July 14 2018, @11:05PM

                    by c0lo (156) on Saturday July 14 2018, @11:05PM (#707365) Journal

                    Ah, shit, there are a few place where I missed to &lt; the <.

                    //...
                            // constexpr data member - named `check` - of type function, will be used T has a PostProcess method
                            // with matching arguments. The return type is either std::true_type or std::false_type
                            template
                            static constexpr auto check(T*) ->
                                    typename std::is_same<
                                        decltype(std::declval<T>().PostProcess(std::declval<Args>()...)),
                                        Ret
                                    >::type;

                    --
                    https://www.youtube.com/watch?v=aoFiw2jMy-0
      • (Score: 1) by Ethanol-fueled on Friday July 13 2018, @06:34PM (2 children)

        by Ethanol-fueled (2792) on Friday July 13 2018, @06:34PM (#706727) Homepage

        Templates are slow redundant dog-shit -- a symptom of "Firefox Syndrome" pozzing C++ with its AIDS.

        • (Score: 2) by Knowledge Troll on Friday July 13 2018, @10:59PM (1 child)

          by Knowledge Troll (5948) on Friday July 13 2018, @10:59PM (#706818) Homepage Journal

          Redundant I can understand since each template gets expanded at compile time for each specific use case.

          But dog shit slow? Template functions/methods/classes are slower than non-template ones?

          • (Score: 0) by Anonymous Coward on Saturday July 14 2018, @07:24AM

            by Anonymous Coward on Saturday July 14 2018, @07:24AM (#706975)

            I don't know if that's what GP meant, but *compiling* templates is slow and linking requires gobs of memory (for larger projects, gigabytes). It's a trade-off; you sacrifice compiling complexity (plus some ease of writing) to get highly-optimized binaries. It's the literal opposite of languages like Python.

    • (Score: 2) by darkfeline on Friday July 13 2018, @08:17PM

      by darkfeline (1030) on Friday July 13 2018, @08:17PM (#706766) Homepage

      >Today we have Rust and Swift and... and... yes, TypeScript.

      Except none of those fills the role that Python has? Python is one of the de facto Linux scripting languages now, so a shiny new alternative would have to be a useful scripting language.

      Back in the ancient days, all scripts on a Linux system was shell. Then, it was Bash and Perl. Now, it's Bash, Perl, and Python, with Perl going out the door. Take a look at any of the common Linux distributions, it will have Python installed by default because the base OS ships with a lot of Python scripts.

      Pretty much all of the languages you mentioned are unable to fill this role, simply by demerit of being compiled languages (languages without a common interpreter implementation). No, I'm not going to consider TypeScript seriously.

      --
      Join the SDF Public Access UNIX System today!
  • (Score: 2, Informative) by Anonymous Coward on Friday July 13 2018, @02:26PM (21 children)

    by Anonymous Coward on Friday July 13 2018, @02:26PM (#706629)

    The replacement will have to be at least female for PC reasons. She can start giving away any capital to "women in tech" orgs, while some guy under her can deal with the nerds.

    • (Score: 2, Touché) by Anonymous Coward on Friday July 13 2018, @02:43PM (2 children)

      by Anonymous Coward on Friday July 13 2018, @02:43PM (#706639)

      And if they all quit, then maybe this shitty language will finally get the burial it deserves. Dynamic typing and semantic white space are signs that the "designer" of a language shouldn't be allowed to write with anything other than crayons.

      • (Score: 0) by Anonymous Coward on Friday July 13 2018, @08:05PM (1 child)

        by Anonymous Coward on Friday July 13 2018, @08:05PM (#706763)

        Gee, I wonder why "nerds" get such a bad rap? Hmmmm, if only there were a clue!

        • (Score: 0) by Anonymous Coward on Saturday July 14 2018, @02:06PM

          by Anonymous Coward on Saturday July 14 2018, @02:06PM (#707099)

          And yet you can't actually say that I'm wrong. This is the internet, not some safe space, if you can't handle the fact that somebody is being called out for the massively idiotic decisions they've made, then perhaps you shouldn't be out in public.

          People hate nerds for all sorts of reasons, but it's morons like you that take the cake. Python is a crappy language and really should be replaced by any number other languages for teaching beginning programmers.

    • (Score: 0) by Anonymous Coward on Friday July 13 2018, @02:50PM (1 child)

      by Anonymous Coward on Friday July 13 2018, @02:50PM (#706642)

      some guy under her

      I may not mind being that guy, if she doesn't weigh half a ton.

    • (Score: 2, Funny) by Anonymous Coward on Friday July 13 2018, @03:52PM (5 children)

      by Anonymous Coward on Friday July 13 2018, @03:52PM (#706662)

      I have two point five competing theories (both may involve lizard people, as necessary, without exceeding 0.1 standard timecubes, but flat Earth and weather war may not be applicable) --

      1a. #gamergate and the misogynerd narrative were part of a cynical attempt to drive D team vote for the 2016 election. It failed, because the D team did not anticipate how many working class women were alienated by the past 40 years of wealth transfer from the working class to the elites.

      1b. #gamergate and the misogynerd narrative were propaganda promulgated by the CIA (including COINTELPRO) designed to convince the public of the acceptability of internet censorship. It would eventually morph into #metoo (using classical McCarthyite tactics, and this is not the first time such tactics have been used against artists in the past 100 years, possibly beginning with Charlie Chaplin iirc or thereabouts) and #fakenews with the pressure on popular internet destinations such as Facebook to become propaganda arms of the CIA and tools to suppress working class organization.

      2. The misogynerd narrative (excluding #gamergate this time) was an outlet of pent-up anger among working class women, misdirected and betrayed by identity politics.

      The silver lining to this shitshow is that the D team cannot last in its present feckless form. The DSA gives hope, but we must be aware of the involvement of lizard people at the highest levels. On the other hand, the danger is that working class anger may turn into reactionary sentiment among women and result in a fourth wave of pseudo-feminism that is all but explicitly anti-feminist. (Don't shoot the messenger here if the reader is a woman who has confused her personal progressive philosophical and political views for the views of all women. Instead demonstrate using polling data and sociological methods that my reading of working class women is flawed.)

      Hopefully this anger can be directed towards meaningful socialist causes (including free software, which is inherently feminist software by its fundamental nature, even if many feminists do not yet realize it) that can remedy the underlying sickness that gave rise (both in the media and on the ground) to the misogynerd narrative.

      • (Score: 0) by Anonymous Coward on Friday July 13 2018, @04:02PM (2 children)

        by Anonymous Coward on Friday July 13 2018, @04:02PM (#706671)

        lizard people

        misogynerd narrative

        Why do you bother posting this anonymously when it's clear you're whatserface our resident crazy trans person

        • (Score: 0) by Anonymous Coward on Friday July 13 2018, @05:46PM (1 child)

          by Anonymous Coward on Friday July 13 2018, @05:46PM (#706713)

          And yet I get modded up for similar points when I do not include phrases such as those.

          • (Score: 2, Touché) by Anonymous Coward on Friday July 13 2018, @07:48PM

            by Anonymous Coward on Friday July 13 2018, @07:48PM (#706757)

            because you don't sound like a crazy person when you don't use crazy phrases

      • (Score: 3, Insightful) by DeathMonkey on Friday July 13 2018, @05:34PM (1 child)

        by DeathMonkey (1380) on Friday July 13 2018, @05:34PM (#706708) Journal

        the misogynerd narrative...

        Or maybe some folks just read some of the comments on sites like this...

        • (Score: -1, Flamebait) by Anonymous Coward on Saturday July 14 2018, @04:33AM

          by Anonymous Coward on Saturday July 14 2018, @04:33AM (#706936)

          DeathMonkey, how many times have you been "asked" by an employer to "train" a womyn in programming who had no aptitude for it whatsoever? What if a vendor outright lied about the capabilities of their product to your employer?

          A unexpected mother who hadn't paid attention in math class since kindergarten? I've tried it. Guess what? Programming is a mathematical discipline. Somebody who would much rather be retired, spending time with her large family, and is instead being forced to work due to the systematic theft of wealth from the working class facilitated by policies that the DNC supports? Guess what? One requires something other than the slavedriver's whip of capitalism over her head to learn programming. I risk mentioning them because they at least quickly understood they were in over their heads, it was not something they wanted to do, and the vendor was full of shit.

          Now add in high turnover, and this is something I frequently had the opportunity to do.

          Now you will proceed from the assumption that I have not demonstrated capability of mentoring a person who possess a womb in programming, thus indicating some problem with my bathroom mirror. Well, I have demonstrated that capability. In fact, you'll never believe it, but I even helped her report one of her (male) supervisors for sexual harassment simply because it was the right thing to do. She must have had at least some measure of trust in me to even talk to me about it. Head exploding yet?

          You will not understand why right now, but it will become apparent to you with sufficient hindsight in a decade or two that it was this exact hubris and dismissal of authentic, lived experience that was responsible for Trump and the overturning of Roe v. Wade. You simply refuse to listen. Perhaps when Roe v. Wade is overturned you will begin listening, but it is doubtful.

          You are an apologist and enabler for women who can't even overcome their reactionary attitudes for long enough to keep their beloved music festival open [michfest.com]. And MWMF is only one example of the many diverse flavors of reactionary attitudes held by women. Another attitude some have is taking the epistemological position of silence, completely rejecting the idea that the world is knowable. Others find the epistemological position of received knowledge the most comfortable; men will tell them what to think, and they will think, "Trump! Trump! Trump!" And the polling data proves this empirically.

          Do you understand that reactionary feminists are vocal and not shy about physical confrontation? D you understand what it's like being cornered and physically intimidated in a place of work by people who are taller than you? Do you understand what it's like being sexually harassed, repeatedly, without having any power to stop it? Do you even understand what it is like when somebody physically stronger than you forcefully grabs you and attempts to fondle your breasts in order to sexually humiliate you?

          No, I don't think you do. Let me guess. You find the idea a turn-on and you're getting hard just thinking about it, thus committing a basic error of chauvinism in your analysis. Chauvinism causes the error of believing that a sexual harassment victim secretly enjoyed it, and it causes you to sympathize with the abuser because you fundamentally do not understand why the victim would ever object to such a thing in the first place. At least we have established that DeathMonkey is a male chauvinist who cannot imagine thinking with an organ other than his WJC.

          Or maybe some folks just read some of the comments on sites like this...

          I think I have enough experience with women to dismiss your concern. Maybe you should get out of your mother's basement some time and meet some women face to face.

    • (Score: 5, Informative) by Thexalon on Friday July 13 2018, @03:58PM (9 children)

      by Thexalon (636) on Friday July 13 2018, @03:58PM (#706666)

      The curious thing here is that you seem to have reached the conclusion that women who are really good at programming cannot possibly exist. I can tell you from experience that they definitely do, but you may have to leave your mom's basement to find them.

      --
      The only thing that stops a bad guy with a compiler is a good guy with a compiler.
      • (Score: 0) by Anonymous Coward on Friday July 13 2018, @05:33PM (3 children)

        by Anonymous Coward on Friday July 13 2018, @05:33PM (#706707)

        I've been told four leaf clovers exist too, but I've only ever seen them in pictures.

        • (Score: 2, Insightful) by Anonymous Coward on Friday July 13 2018, @05:44PM

          by Anonymous Coward on Friday July 13 2018, @05:44PM (#706711)

          Yeah, nah, the advice still stands - get out of your mum basement

        • (Score: 0) by Anonymous Coward on Saturday July 14 2018, @02:09PM (1 child)

          by Anonymous Coward on Saturday July 14 2018, @02:09PM (#707100)

          4 leaf clovers are relatively common, there's one in most patches of clover. You just have to have an efficient way of identifying them when the leaflets are in different orientations or overlapping each other.

          5 leaf clovers though are pretty rare, I've only seen a couple of those over the years.

          • (Score: 0) by Anonymous Coward on Saturday July 14 2018, @07:45PM

            by Anonymous Coward on Saturday July 14 2018, @07:45PM (#707310)

            If the percentage of 4 leaved clovers is between 5-10% of population, that would match about the percentage of (capable) technical women. Or women in garbage collection. Or men in nursing (but I have a feeling there's more there).

      • (Score: -1, Troll) by Anonymous Coward on Friday July 13 2018, @06:49PM (2 children)

        by Anonymous Coward on Friday July 13 2018, @06:49PM (#706734)

        There might even be a few of those on this board. GP may not even need to risk venturing into the ambient ultraviolet radiation!

        Both you and GP miss the point. The whole thing was about a lack women in the board rooms of tech companies.

        However, if it caused reactionary feminists in the working class to blame their lack of advancement on male working class programmers and vice versa (perhaps GP blames feminism of all kinds for his lack of advancement), that is a welcome bonus.

        I hope that this insanity will find resolution as the working class realizes the fraud of identity politics (including white nationalism) and the need to organize.

        • (Score: 0) by Anonymous Coward on Friday July 13 2018, @09:31PM (1 child)

          by Anonymous Coward on Friday July 13 2018, @09:31PM (#706784)

          Both you and GP miss the point. The whole thing was about a lack women in the board rooms of tech companies.

          Not at all. It was about GvR leaving, and the coming power struggle. In my opinion the politicians in the Python community will push for a woman to be head, that woman will probably *not* be one of the technical kind, but a politician herself. And the community will then proceed down the same path Mozilla and Gnome have taken.

          • (Score: 1, Flamebait) by jmorris on Saturday July 14 2018, @02:12AM

            by jmorris (4844) on Saturday July 14 2018, @02:12AM (#706881)

            This will happen because the tech nerd types will be evaluating on tech nerd things, make loud pronoucements that they want to "stay above politics", get divided and the SJWs will merely see a free resource up for grabs, solidify behind one "diverse" candidate, hurl charges of misogyny, homophobia or racism as appropriate to ensure little competition and seize the resource. Tech ability or even basic competence mean nothing to politicians, which is what an SJW is. If you think they have a CoC now, wait. And yea any monetary resources will be instantly diverted to Social Justice "Diversity" initiatives but the big "win" will be capture of a large and central resource to use as a weapon to extract more power and resources from other tech organizations with.

      • (Score: 0) by Anonymous Coward on Friday July 13 2018, @08:23PM

        by Anonymous Coward on Friday July 13 2018, @08:23PM (#706770)

        But you'll also have to brush your teeth, wipe your bottom properly, wash under your armpits and refrain from staring at their breasts.

      • (Score: 1, Touché) by Anonymous Coward on Friday July 13 2018, @09:50PM

        by Anonymous Coward on Friday July 13 2018, @09:50PM (#706790)

        A woman appeared before the Lord and proclaimed,
        "I am a programmer. Let those who would dwell in basements come forth to greet me!"
        And the Lord replied, "It shall not come to pass,"
        "for I have seen that you are a programmer, and you now must join with your brethen in the basements."

  • (Score: 4, Interesting) by Alfred on Friday July 13 2018, @04:29PM (6 children)

    by Alfred (4006) on Friday July 13 2018, @04:29PM (#706684) Journal
    Damn, what was in PEP 572?
    • (Score: 4, Interesting) by Thexalon on Friday July 13 2018, @05:23PM (5 children)

      by Thexalon (636) on Friday July 13 2018, @05:23PM (#706700)

      You can read PEP 572 [python.org] yourself, but from what I can tell:

      The idea is to define "spam := eggs" to be an operator that behaves like "spam = eggs" does in C, where you can then take the result of the expression and use it in other expressions. For example, this is incorrect Python:

      if (my_file=open("/tmp/some-file", "r"):
          ...
          my_file.close()

      By contrast, this is correct C:

      if (my_file=fopen("/tmp/some-file", "r")) {
          ...
          fclose(my_file);
      }

      Really, I think neither of those are ideal, and this bit of Python is the best way of handling the situation:

      with open("/tmp/some-file", "r") as my_file:
         ...

      The beauty of that is that at the end of the "with" block, the interpreter closes down the file for me and I don't have to worry about forgetting and running out of file handles.

      --
      The only thing that stops a bad guy with a compiler is a good guy with a compiler.
      • (Score: 2) by HiThere on Friday July 13 2018, @06:00PM (4 children)

        by HiThere (866) Subscriber Badge on Friday July 13 2018, @06:00PM (#706716) Journal

        For that particular use case, you have an argument. There are many others, however, where assignment to a variable within an expression is beneficial. And there are reasonable arguments that it shouldn't be a simple equal sign, as that increases the number of errors. (Suppose you have a sticky equal sign...extraneous doubles would be uncomfortably frequent, and easy to miss.) Requiring a colon-equal (":=") minimizes the likelihood of this problem. This allows a greater number of errors to be detected during the syntactic pass.

        P.S.: I don't know if those were his arguments. They're the ones that occur to me off the top of my head. I doubt that Pascal usage played any part.

        --
        Javascript is what you use to allow unknown third parties to run software you have no idea about on your computer.
        • (Score: 3, Insightful) by Thexalon on Friday July 13 2018, @06:12PM (3 children)

          by Thexalon (636) on Friday July 13 2018, @06:12PM (#706718)

          The other obvious way to handle those situations is to make the assignment and the expression two separate statements, because this really is syntactic sugar we're talking about here.

          In short, this:

          make_breakfast(spam := eggs)

          Versus this:

          spam = eggs
          make_breakfast(spam)

          It is definitely a matter of taste and opinion which one is clearer.

          --
          The only thing that stops a bad guy with a compiler is a good guy with a compiler.
          • (Score: 1, Interesting) by Anonymous Coward on Friday July 13 2018, @07:10PM (2 children)

            by Anonymous Coward on Friday July 13 2018, @07:10PM (#706743)

            That is true, and a large part of the rationale comes from real world examples suggesting people write code that prefers fewer lines even over more efficient alternatives. Things like

            group = re.match(data).group(1) if re.match(data) else None

            or

            match1 = pattern1.match(data)
            match2 = pattern2.match(data)
            if match1:
                    result = match1.group(1)
            elif match2:
                    result = match2.group(2)
            else:
                    result = None

            generally the new syntax allows for code that is both more readable and more compact. (Once familiar with the new := operand) Those exampels come from the pep, there are many more showing clean improvements it enables in the python source code itself.

            • (Score: 1, Interesting) by Anonymous Coward on Friday July 13 2018, @07:25PM (1 child)

              by Anonymous Coward on Friday July 13 2018, @07:25PM (#706748)

              group = re.match(data).group(1) if re.match(data) else None

              They got sick of people monkey patching the standard lib to use an LRU cache on compiled re patterns or complaining about the performance, so they added it themselves. If you are really concerned about performance from standard constructs like that, then either the programmer or core devs could just do it for that one too. It's even in the same module.

              Your second example is much more readable to me using the suggested alternative rather than the accepted one, plus it has better scoping rules, among other benefits:

              if pattern2.match(data) as match1:
                              result = match1.group(1)
              elif pattern2.match(data) as match2:
                              result = match2.group(2)
              else:
                              result = None

              vs

              if (match1 := pattern1.match(data)):
                              result = match1.group(1)
              elif (match2 := pattern.match(data)):
                              result = match2.group(2)
              else:
                              result = None

              • (Score: 0) by Anonymous Coward on Friday July 13 2018, @07:27PM

                by Anonymous Coward on Friday July 13 2018, @07:27PM (#706750)

                Oops, made some mispels in the last two examples on variable names, but the syntax is correct and my point still stands.

  • (Score: 1, Interesting) by Anonymous Coward on Friday July 13 2018, @04:32PM (5 children)

    by Anonymous Coward on Friday July 13 2018, @04:32PM (#706687)

    While many people are crying over this, I can't help but feel like this is just him throwing a pity party for himself. The fact of the matter is that he has made many questionable decisions lately, from the point of view of the community. There is additional hostility because many of those involve his pet projects (type hints, dataclasses, asyncio, async/await, and a few more). Then you have this last one, which he supported from the start, was championed by one of his besties (who hasn't been involved in core dev for awhile), the majority of the core devs opposed, the majority of the community opposed, violated the Zen of Python (which has been used to reject things in the past). On top of that, in support of 572, they constantly dismissed examples of being "toys" or "over-complicated," even when they came straight from the standard library, bungled their own patch to implement them in the standard lib, dismissed suggestions of limiting scope in multiple ways, and finally, rather than admit defeat when problems were proven, they just doubled down and required them to be isolated in parentheses.

    So yeah, just because you brought the football to the neighborhood game, doesn't mean people aren't right to call you out for making dumb QB decisions.

    • (Score: 1, Insightful) by Anonymous Coward on Friday July 13 2018, @08:03PM (2 children)

      by Anonymous Coward on Friday July 13 2018, @08:03PM (#706762)

      Python proponents like to say how clean and logical Python is, but I find it to be overly complicated because of all the irregularities resulting from strangely unnecessary syntax limitations.
      It's as if providing a simple, general syntax is not preferred over providing a crippled syntax for bits of functionality that Guido thought would be "more readable" but results in some things that can't be simply expressed.

      The curse of scripting languages is having limited expectations for the language which are soon outgrown.

      • (Score: 0) by Anonymous Coward on Friday July 13 2018, @08:59PM (1 child)

        by Anonymous Coward on Friday July 13 2018, @08:59PM (#706778)

        Any examples of said irregularities? I'd be curious to see what you think they are. Too be clear, I know there are some, such as "as" assigning different things depending on the statement it is in, or the fact that they used to disallow assignment in comparative statements to prevent confusion between "==" and "=". But the fact of the matter is that within the rules of Python, ":=" can be confused for both "==" and "=" depending on the exact circumstance. I don't see how adding a third operator that can be used anywhere an expression is allowed will lessen confusion.

        • (Score: 0) by Anonymous Coward on Saturday July 14 2018, @02:13PM

          by Anonymous Coward on Saturday July 14 2018, @02:13PM (#707101)

          One of my big complaints is how hard it is to print a portion of a line. It's possible to do, but requires far too much effort, other languages I know either default to printing just a portion of a line and require the programmer to add the new line or they have a method for both which mostly vary by having one add the new line.

          I was able to do it with some research when I decided I needed to do it, but you shouldn't have to engage in that sort of hack for something that's normally a built in feature of most other languages.

    • (Score: 2) by darkfeline on Friday July 13 2018, @09:48PM (1 child)

      by darkfeline (1030) on Friday July 13 2018, @09:48PM (#706789) Homepage

      >There is additional hostility because many of those involve his pet projects (type hints, dataclasses, asyncio, async/await, and a few more)

      Most of those aren't his pet projects, they were proposed and implemented by other Python developers.
      Most of those were received quite positively, with the exception being asyncio, and to a much lesser extent type hints (vocal minority, there is a lot of people who welcome type hints. MyPy is not a one man project). I can't imagine anyone disliking dataclasses, although I'm sure there's someone out there who can't help being outrages at everything.
      And also, Python IS Guido's pet project. It has turned out rather well, all things considered.

      --
      Join the SDF Public Access UNIX System today!
      • (Score: 0) by Anonymous Coward on Friday July 13 2018, @10:22PM

        by Anonymous Coward on Friday July 13 2018, @10:22PM (#706805)

        Right, you realize he specifically handed off type hints because he had a vested interest as an author in PEP 484 and many of the rest were pushed by DropBox or PSF sponsors? I included dataclasses for the same reason people don't like them: if you want to use them, you are required to add type hints to your project, which means that if you want to support older versions, you can't as they don't understand the new hints syntax. Similarly, async/await was disliked because they required programmers to change those when they became keywords, make maintenance of packages harder (different versions support different keywords now for asyncio).

        I could go on, but the fact of the matter is that these changes (among others) may not be super large and not all that consequential, but they are echos of the whole 2-3 split in the language and many people perceive them as such. They may not break your code and, ultimately, be good things for the language as a whole, but all the users of Python are not necessarily in the "community," let alone active in the mailing list or are a core dev. It isn't surprising that when all the little breaks are taken together, it can appear to some that Python is losing its way.

  • (Score: 3, Insightful) by eravnrekaree on Friday July 13 2018, @07:30PM (2 children)

    by eravnrekaree (555) on Friday July 13 2018, @07:30PM (#706753)

    If Rossom is dictator for life, why was he fighting for anything, whatever he says is the way it is. When they designing Perl 6, Larry Wall would dictate the language and that what the language was going to be, period end of story. He took suggestions but reserved the right to bin them if he didnt like them.

    I know what you are about to say, but Wall let implementation be handled by others (I dont blame him), so he is not to blame for that. A lot of infighting, failed starts and so on.

    • (Score: 0) by Anonymous Coward on Saturday July 14 2018, @01:28PM (1 child)

      by Anonymous Coward on Saturday July 14 2018, @01:28PM (#707085)

      Perl 6 is pretty nice now though, I've been playing with it lately. From the couple of small scripts I've re-implemented using it, I'm seeing a lot of potential.

      • (Score: 0) by Anonymous Coward on Saturday July 14 2018, @02:17PM

        by Anonymous Coward on Saturday July 14 2018, @02:17PM (#707106)

        People get dictators wrong in a lot of ways. A dictator that makes the right calls routinely to benefit whatever they're leading isn't usually the issue people complain about. In those cases there's rarely any issues with discontent that require the usual human rights abuses. The problems tend to come into it when the dictator starts making mistakes or making decisions that large numbers of people don't like. At least with projects people can just leave if they don't like it.

        But, open source has the issue where sometimes people do stupid things and it's hard to push back against said stupid things because it's open.

  • (Score: 2) by Bot on Friday July 13 2018, @08:51PM (1 child)

    by Bot (3902) on Friday July 13 2018, @08:51PM (#706775) Journal

    > appoint self benevolent dictator for life
    > steps down
    > still alive

    you can't trust meatbags to be logic, not even those who knows a bit or two about it.
    What part of "FOR LIFE" is difficult to understand? If you can't commit till the last pathetically slow CPU cycle you call breath, why say so? And you put rings on your fingers to remember your promises, so it's not even a matter of RAM bit flipping!

    --
    Account abandoned.
    • (Score: 3, Insightful) by Bot on Friday July 13 2018, @08:53PM

      by Bot (3902) on Friday July 13 2018, @08:53PM (#706776) Journal

      uh and BTW

      > well nothing happened whole day
      > get home
      > python's headless now
      > a nice friday 13 indeed

      --
      Account abandoned.
  • (Score: 2) by JoeMerchant on Friday July 13 2018, @11:26PM (2 children)

    by JoeMerchant (3937) on Friday July 13 2018, @11:26PM (#706836)

    All hail the rising of the Squirrel [squirrel-lang.org]!

    --
    🌻🌻 [google.com]
    • (Score: 3, Interesting) by Marand on Saturday July 14 2018, @05:24AM (1 child)

      by Marand (1081) on Saturday July 14 2018, @05:24AM (#706951) Journal

      I fail to see the appeal of that versus Lua (or LuaJIT). They seem to fill the same "bare-bones embeddable scripting language" niche, but Lua is more common and better understood by people, which makes it a better choice in most situations. Furthermore, if you want something less bare-bones, Lua has some interesting compile-to-Lua projects such as the Python-esque MoonScript [moonscript.org] or, if you favour lisps like I do, Urn [urn-lang.com].

      These compile-to-Lua options are especially compelling, IMO, because they compile down to standalone Lua source that can be used in standard embedded Lua interpreters without any special support needed. That means you can use a more featureful language — Urn gives you more functional programming niceties, while MoonScript will be comfortable to anyone familiar with Python's way of doing things — while still having Lua as a lowest common denominator for people already familiar with it. It's a two-for-one deal, basically: you embed one language (Lua) and give users the choice of an easy, ubiquitous language by using it directly, or two more expressive, powerful ones by using Urn or MoonScript.

      • (Score: 4, Interesting) by JoeMerchant on Saturday July 14 2018, @11:11AM

        by JoeMerchant (3937) on Saturday July 14 2018, @11:11AM (#707032)

        A) it was a joke

        B) in seriousness: you have to look at the timelines to understand why. Squirrel was coming up before Python exploded onto the scene, and even after the initial Python explosion Squirrel was a little better in some important ways (to their 6 users, at least).

        C) Not Invented Here is a big thing, especially among control freaks.

        D) Similar reasoning applies to LUA and essentially any other language you might try to convince one of the lonely Squirrel devotees to convert to.

        E) it was a joke.

        F) I spent 6 months at a company teaching them things like: you don't run the build server that took you 10 man-years to build/maintain in a single, non-backed up desktop box (on a 5 year old spinning hard drive, no less!), while helping them to migrate away from Squirrel to Qt/C++ (yes, it's pears and bananas, but bananas were a pretty good fit for their applications, especially at that time). After 6 months I got a much better offer elsewhere, and their Squirrel devotee was convinced to come back into the fold, so I'm guessing that Squirrel lives on in that shop.

        --
        🌻🌻 [google.com]
(1)