Slashdot Mirror


Guido and Bruce Eckel Discuss Python 3000

Phoe6 writes "Leading author and programmer, Bruce Eckel, posted some of his concerns on Python 3000 stating that the Python community is failing to address some of the important issues with this major, backward incompatible release. Problems he mentions are concurrency support on multi-core CPUs, easy deployment support, and a standardized user interface, amongst others. He expresses his dissatisfaction at the post titled "Python 3K or Python 2.9?. Guido van Rossum addresses the concerns in a very pragmatic way with his response to Bruce Eckel and calls for more developers to contribute to Python to improve it further. Bruce Eckel concludes with his thoughts that he wants his favorite language to be better with his reply to Guido's reply."

54 of 305 comments (clear)

  1. Bruce, Just a Make a New Language Then by tjstork · · Score: 2, Interesting

    I just don't see a reason for this conflict with Guido. Just make a new language, if you want something incompatible, but don't call it Python. Call it Anaconda or something. Or even Garter. Then you can do what you want. If you think you are better than Guido, then get typing, and prove it!

    --
    This is my sig.
    1. Re:Bruce, Just a Make a New Language Then by Aladrin · · Score: 3, Insightful

      There's 2 sides to that, though.

      While I agree, if he wants something that's fundamentally incompatible, but wants to still call it Python, that's silly.

      On the other hand, they're saying 'We need more devs to work on Python' and pushing people away that -care- is exactly the opposite of that. If they want new devs, they'd better be resigned to the fact that the newcomers WILL have a different vision, just as this guy does. Finding code-slaves that will do everything you want exactly as it always has been is nearly impossible. You have to pay people to make them go through pain like that. (Coding in someone else's style is just as hard as painting in someone else's... Initially it's almost impossibly hard, and it gets easier with time... And there's always the alternative of working on something else without all that pain.)

      --
      "If you make people think they're thinking, they'll love you; But if you really make them think, they'll hate you." - DM
    2. Re:Bruce, Just a Make a New Language Then by DigitalSorceress · · Score: 4, Funny

      Of course, since Python was named after Monty Python's Flying Circus, maybe it should be one of these:

      • Gumby
      • Nudge
      • Ni
      • Creosote
      • UnladenSwallow
      • Albatros
      • DeadParrot
      • CheeseShop
      • LiverDonor
      • CrimsonPermanentAssurance
      • AndNowForSomethingCompletelyDifferent
      • Spamalot
      • WhatsAllThisThen
      • NudgeNudge
      • Monty
      • KillerRabbit
      • Tim
      • Lumberjack
      • JudeanPeoplesFront
      • Gourd
      • Herring
      • Shrubbery
      • HungarianPhrasebook
      • Jabberwocky

      Something along those lines anyway

      --

      The Digital Sorceress
    3. Re:Bruce, Just a Make a New Language Then by drgonzo59 · · Score: 3, Insightful
      Finding code-slaves that will do everything you want exactly as it always has been is nearly impossible.

      Good point! Managing developers is hard enough in a company where the devs are paid. Managing volunteers is much, much harder. I strongly believe that half of the success of many open source projects is not the brilliant ideas or the super cool code, but the personality of the lead developer. Linus and Guido have proven to be such personalities that managed to galvanize hoards of developers around them. That is quite impressive. How many managers out there would be able retain employees without any pay?

      One distinctive feature of these open source project leaders is that they have to act like assholes sometimes. I proves that they are tough, have a vision and won't budge. At first it seems counter-intuitive that being disagreeable will accomplish more but it works because even if it pushes one developer way, it might attract others or make the ones who are left work harder. It's like a medieval army. Decimating 1% of the army is worth it because it will make the other %99 percent work harder.

    4. Re:Bruce, Just a Make a New Language Then by hey! · · Score: 3, Funny

      That's not right; you need to name the language after a comedy troupe or show. Then famous bits from that can be used to name features or releases.

      So, Bruce's Python derived language could be called SNL (Selfless Notation Language). Libraries could have names like "Bassomatic" (XML processing) or "Cowbell" (Multimedia types).

      --
      Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
    5. Re:Bruce, Just a Make a New Language Then by HiThere · · Score: 2, Insightful

      Nah, he's already said he likes Ruby, so if Python won't go where he wants he could choose dRuby (distributed Ruby). He wants Python to do it because he's more productive in Python. That's a good reason.

      Also, his main goal, changing the language to be more productive on multi-processor systems, is an extermely valid one in a "design for the future" sense. Right now it makes marginal sense, but multi-core & multi-processor systems are becoming more common...and the predictions is the trend will not only continue but intensify.

      OTOH, I've seen arguments that a data-flow architecture is inherently better suited for that environment, and I've seen at least one decent language to program in that was data-flow. (Prograf. It showed up for the Apple][ lc, which only had one processor and not threading capability to speak of. It died attempting to transition to MSWind95. It had problems as well as a lot of promise.)

      Perhaps Python could add a dataFlow library? The library would need to be coded in C or some such (C is traditional for Python libraries). Perhaps it would need to be an "along side" langauge, like Pyrex. That would tend to have the problem of never having the syntax match that of Python...quite, but there might be compensatory advantages.

      At all events, I'm not sure HOW the problem should be solved, merely that it NEEDS to be solved. And this is the reasonable time to address any necessary changes.

      P.S.: I also agree that threads, and processes that are handled like threads, are an inappropriate solution. This doesn't mean that I know what the best solution is, merely what it isn't.

      N.B.: This is a more than trivial problem, because of all the different levels of parallelism that are out there. Some of them don't HAVE any shared ram. (Think computer clusters.) Some of them have LOTS of shared RAM (think multi-core machines). Some don't share cache ram, but share system ram (multi-processor). And a good solution will need to handle these cases transparently. When you write on one system, you can't be expected to know the environment in which you'll be running. (Perhaps clustered computers could be split out to be handled separately. Those who are running computer clusters are still expected to be knowledgeable at the hardware level.)

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    6. Re:Bruce, Just a Make a New Language Then by The+One+and+Only · · Score: 3, Funny

      Pedantry: By definition, you decimate your army by killing 10%. If you select 1% of your army and decimate that, then you only kill 0.1%. And it's really not like decimation at all--if someone doesn't fit into the project, their departing the project just improves cohesion. Decimation was intended to terrorize the troops.

      --
      In Repressive Burma, it's not just your connection that dies. slashdot.org/comments.pl?sid=314547&cid=20819199
    7. Re:Bruce, Just a Make a New Language Then by VGPowerlord · · Score: 2, Insightful

      While I agree, if he wants something that's fundamentally incompatible, but wants to still call it Python, that's silly.

      You know, I said something similar to this about Larry Wall, Perl, and Perl 6.
      --
      GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
  2. Bad link? by albalbo · · Score: 4, Informative
    --
    "Elmo knows where you live!" - The Simpsons
  3. With a song and a dance by SEWilco · · Score: 3, Funny

    Shouldn't Python 3000 include a giant animated foot and silhouettes of the audience cracking jokes?

  4. staying with an old version -- how? by bcrowell · · Score: 4, Interesting

    One thing I don't understand about Eckel's original article is that he says breaking compatibility isn't a big deal, because the programmers who don't want to use the new version will just stay with the old one. How does that work for the users? Do they (a) end up having to pick which version of the language to install on their machine, and lose the ability to run half the world's python software, (b) have to install multiple versions of python on their machine, or (c) ??? Eckel is comparing with Java, but since Java is a compiled language, it's much less of an issue; syntactical changes don't affect the end user who just wants to run the code. How would python handle this? Perl 6, for instance, will automatically detect if the code you're running is perl 5, and will run it correctly in a compatibility mode.

    1. Re:staying with an old version -- how? by Niten · · Score: 5, Informative

      You'd typically install multiple versions of python on the same machine. On Unix-like systems each Python version's executable will be named in the manner of python2.4, python2.5, and so on, with a symbolic link from /path/python to (usually) the newest version. Scripts can call for a specific version of Python by starting with a hash-bang line like #!/usr/bin/env python2.5.

      Many operating systems facilitate this scheme by offering independent packages for different versions of Python. In particular, on Debian Etch the user can choose to install any of the python2.3, python2.4, and python2.5 packages, then use update-alternatives(8) to switch the system default between the three.

    2. Re:staying with an old version -- how? by Wheat · · Score: 2, Informative

      > Wow, they break compatibility with every dot release? That sounds crazy to me

      That would indeed be crazy. Python has not had any significant breaks in backwards compatability since I started using it in 1999. You can run a Python 1.5 or Python 2.0 program just fine in a Python 2.5 program. Of course, if you are taking advantage of a language feature introduced in Python 2.5 of course you can't run it in a earlier release.

      There are a few exceptions, such as code that interfaces with C has had changes. But Python developers have put a lot of time and effort into maintaining backwards compatability. This is the point of breaking backwards compatability in Python 3, and the current Python 2.5 implementation has a lot of verbose, length code that deals with a lot of corner cases that almost no one uses. Python 3 is about fixing all those small things that you can't fix without breaking backwards compatability, and about ditching all that backwards compatablity that is in Python 2 that makes maintainence and optimization that much harder.

  5. documentation by Anonymous Coward · · Score: 2, Insightful

    If they really want to help Python, build some online documentation that doesn't suck donkey balls. Seriously, I've never had more trouble learning a language than with Python. I have to go google it, because every site is missing info, so you have to put them all together. Does anyone know of a site with ALL the info, that lists ALL the methods in ALL the classes along with what those methods are expecting? Because I sure as hell could never find anything like that. Learn from PHP guys, the reason PHP took off so fast was because the php.net website kicks royal ass as far as documentation and you can learn it quickly. Just my 2 bits.

    1. Re:documentation by Niten · · Score: 4, Interesting

      Huh. One of the things that really attracted me to Python was the (perceived) quality of the Web documentation. The Python Tutorial and Python Reference Manual are very complete and provide an excellent high-level overview of the language, something which can be rather difficult to come across in, for example, the land of Perl. Granted, the Library Reference could be stronger, but I can still usually find what I need in there; and if not, it's easy enough to invoke dir() and view the __doc__ string on any objects of interest from Python's command line.

      I guess it's just a matter of personal taste. But for what it's worth, I found it much easer to pick up Python without resorting to any third-party books or reference materials than to start fresh with either Ruby or Perl.

    2. Re:documentation by psavo · · Score: 2, Insightful

      i dunno, every piece of documentation is just a starting point. I only use docs.python.org to find a suitable module and then just look around it in IPython shell (import module; module. etc.).

      As for PHP.net, it's full of buggy, halfassed examples written by morons and more often push you wrong way than not.

      --
      fucktard is a tenderhearted description
    3. Re:documentation by Waffle+Iron · · Score: 4, Informative

      Does anyone know of a site with ALL the info, that lists ALL the methods in ALL the classes along with what those methods are expecting?
      /usr/share/doc/python/html/lib/lib.html
    4. Re:documentation by jadavis · · Score: 2, Insightful

      If they really want to help Python, build some online documentation that [isn't bad]

      There are a few under-documented libraries that I've run into before, but largely I've been happy with the python docs.

      I could swear you were talking about Ruby, because that's exactly the way I feel about Ruby (a language I love, but the docs are disorganized, decentralized, and generally poor).

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
  6. losing the print statement by mathgenius · · Score: 4, Interesting

    My main problem with python 3.0 is the loss of the print statement! I have pestered Guido about it (including booing his talk on python3000 at europython this year) and, he said "well i brought this up last year and nobody seemed to object" and then to me personally "well no other language has a print statement".. I think the dumb simplicity of python's print statement is one of my favourite python things. It makes the language friendly (and I am a pepper-print debugger). As Mr. Hettinger says "you can't break 'hello world!'".

    I also think, more generally, that people are in for a world of pain, converting to python 3000. There needs to be tools that are %100 reliable that can convert code from 2.6->3.0. Otherwise, there will just be too much code mass, and it will take a long long time for 3.0 to be accepted. Such a stall is bad news for an OSS project.

    Simon.

    1. Re:losing the print statement by Yath · · Score: 3, Insightful

      I think the dumb simplicity of python's print statement is one of my favourite python things.


      Interesting. Where other languages have print statements that do exactly what you tell them, Python's print statement has at least two ways of adding unexpected characters. Not what I'd call "dumb simplicity".

      While most experienced programmers can predict what a print statement will output, they won't be able to do this with Python's ... unless they're experienced with Python.

      print "Hello, World!" # One extra character is added here.
      print "Hello", "world" # Two extra characters are added here.
      print "Hello", # Guess how many extra characters are added here? Hint: not zero.

      Quiz:

      * How can you use Python's print statement to print some text without a newline? No fair firing up the interpreter!
      * Name three languages whose print statement only prints characters that the programmer explicitly passes to it.

      --
      I always mod up spelling trolls.
    2. Re:losing the print statement by blank+axolotl · · Score: 2, Insightful

      boo hoo

      Instead of:
      >>> print "Hello World!"

      you now have to do
      >>> print("Hello World!")

      just two extra paretheses, and no more of this >> stuff.

    3. Re:losing the print statement by Nosklo · · Score: 2, Informative

      you can't just type "map(print, listname)" or anything else as compact and "clean". And in Python 3k you won't be able to do that either, because Map now returns an iterator object and that would result in no function actually being called unless the iterator is used. One good solution would be to:

      [print(line) for line in listname]
      --
      find -name "*base*" -exec chown us {} \; ; ln -s /dev/zero /dev/chance ; make time
  7. Python++? by Zackbass · · Score: 3, Funny

    Why not just call it Python++? Oh, that's right, Python doesn't do that.

    --
    You gotta find first gear in your giant robot car
    1. Re:Python++? by StarfishOne · · Score: 2, Informative

      I'd say there's nothing wrong with Python += 1

  8. Decimal point is wrong... by __aaclcg7560 · · Score: 2, Funny

    The python mathematics algorithms must have a bug if they're going from version 2.9 to version 3000.

  9. Sounds familiar. by markov_chain · · Score: 2, Funny

    Bruce complained that Python3K is not modular enough. Guido, always the pragmatist, and having just watched Reservoir Dogs, retorted that anyone who wants a modular language should get his head examined.

    Some guy on the mailing list proposed a new and better syntax, but Guido declined to merge it; he explained that he doesn't trust the new guy as much as Bob, whose Context-Free Syntax (CFS) is going into the next development version (odd-numbered, of course).

    --
    Tsunami -- You can't bring a good wave down!
    1. Re:Sounds familiar. by m2943 · · Score: 4, Interesting

      Guido, always the pragmatist, and having just watched Reservoir Dogs, retorted that anyone who wants a modular language should get his head examined.

      So why does Python scatter its standard libraries across half a dozen packages? Probably one of the biggest problems beginners have with Python is that they can never remember whether something is in os, os.path, sys, string, re, or whether it's maybe just a method on an object, or maybe it changed in some recent release. And you can't just safely import everything from those packages either.

  10. BS argument by henrypijames · · Score: 4, Insightful

    A lot of what Eckel is saying is basically "Python should be more like other languages" - not because they're better, but because I'm more used to them. Obviously that's totally ridiculous, yet not surprising: If you look at his resume, it seems he's far more familiar with other languages than Python. I seriously doubt his credential - let alone objectiveness - to question Python's design.

  11. both are right, sort of by m2943 · · Score: 5, Insightful

    Guido is right that Bruce's comments are mostly not core language issues.

    But that's also the problem the Python language is fine the way it is; it doesn't need any major overhaul. Before hacking away on P3K, Guido should concentrate on getting things like the UI, the standard libraries, and package management straightened out. Community contributions won't fix those; in fact, community contributions are the source of many of the problems of Python because often, there are multiple, mutually incompatible libraries and tools trying to do the same thing and stepping on each other.

    Guido is doing what is fun (hacking the language) instead of what is needed (straightening out the libraries), and that's not the best choice for Python overall.

  12. Re:Syntactic whitespace by Waffle+Iron · · Score: 4, Insightful

    Probably because the syntactic whitespace "problem" only exists in the heads of people who have never used Python.

  13. They are both wrong! by pigiron · · Score: 2, Interesting

    The right answer is here: http://newlisp.org/

  14. Those aren't the real problems with Python by Animats · · Score: 5, Insightful

    Actually, those aren't the real problems with Python. They're not the ones that keep it from, say, replacing Perl.

    • Multicore support is a nonissue. CPython is too slow to need it. It's helpful to distinguish between the Python language, which isn't bad, and the CPython implementation, which is a slow, naive intepreter. CPython is about 60x slower than C. Compare Java, which, with modern just-in-time compilers, is about 2-3x slower than C. What's needed is a Python compiler with some smarts. There's Shed Skin, but it doesn't work yet.

      One side effect of the speed problem is a tendency to try to write C modules to do things that take significant time. Unfortunately, CPython's interface to C is terrible, bug-prone, and changes with each new release.

    • The "dynamic language" thing is overdone. CPython is a demonstration of the fact that if you make everything a dictionary, it's easy to implement a dynamic language. It's also a demonstration of "if the only tool you have is a hammer, everything looks like a nail". Too much time is wasted in Python checking to see if something changed that probably didn't change. You can add or change functions or data of a running object or a running function. From outside the object or functionor thread, even! It's cool! It's l33t! It means you can't have an optimizing compiler. (Well, maybe you could, with one that goes to immense lengths to detect when "something funny" is going on and reworks the code on the fly. Won't be easy to implement.) Those features just don't get used that much, except to patch around bugs in the buggy Python libraries. The troubles with the "global interpreter lock" stem from this problem. The "global interpreter lock" is mostly protecting all those dictionaries which define the program. After all, one thread might want to patch the code in another thread.

      Years ago, LISP hackers used to talk about how great it was that LISP programs could modify themselves while they were running. Few useful programs ever actually did so. Java has a certain amount of dynamism; you can, if you really have to, create Java code from within a program, compile it, and load it. Few programs need more dynamism than that. The Shed Skin implementation imposes some restrictions on dynamism, and they're on the right track.

    • Libraries are someone else's problem. Python is better than Perl as a language, but CPAN is better than Python's Cheese Shop. Many key modules aren't part of the main Python distribution and aren't synchronized with it. Examples are the interfaces to databases like MySQL and the interface to SSL. These lag months or years behind the base system. Modules outside the small "core" are not supported in any coherent way. Each is supported by a developer or two, working in isolation. If they lose interest, the module languishes, and nobody else can change it. This sometimes leads to multiple libraries for the same purpose, each with different bugs, and none good enough to obsolete the others.

    The overall effect is that if you try to write something complicated in Python, everything goes along just great until you hit some library bug that can't easily be fixed. Or you discover that you need racks of servers to compensate for the painfully slow implementation.

    That's why Python hasn't even replaced Perl, over fifteen years into the deployment of Python.

    1. Re:Those aren't the real problems with Python by julesh · · Score: 2, Interesting

      Actually, those aren't the real problems with Python. They're not the ones that keep it from, say, replacing Perl.

              * Multicore support is a nonissue. CPython is too slow to need it.


      Agreed, but CPython isn't the only implementation that has problems with multicore support. The psyco JIT compiler also has a global lock, and is fast enough for many compute intensive applications. But still doesn't benefit from multicores. The issue is that dictionaries and lists are expected to have atomic operations, which is rather slow in most cases without the global lock. This needs changing at a language definition level, perhaps by introducing a way to declare that this isn't necessary.

    2. Re:Those aren't the real problems with Python by SanityInAnarchy · · Score: 3, Interesting

      Multicore support is a nonissue. CPython is too slow to need it.

      It is actually two issues.

      First is Psyco, and any similar efforts in the future. Psyco, aside from not supporting anything but 32-bit x86, also is limited to a single core, despite being very, very fast -- in some cases, supposedly faster than C. In any case, that is the goal.

      And if CPython is that slow, I'll take any performance boost I can get.

      Second, it means that any other implementation that doesn't have a GIL is likely going to expose obscure bugs in existing python programs. Well, not bugs, but assumptions that only one Python instruction can run at a time. Not to mention the C extensions...

      It means you can't have an optimizing compiler. (Well, maybe you could, with one that goes to immense lengths to detect when "something funny" is going on and reworks the code on the fly. Won't be easy to implement.)

      Well, first, no compiler is "easy". If it is, write me a C compiler that's half as good as gcc.

      Second, it's been done. You mention LISP:

      Years ago, LISP hackers used to talk about how great it was that LISP programs could modify themselves while they were running. Few useful programs ever actually did so.

      And yet today, there are very fast and useful LISP compilers, which do just what you said an "optimizing compiler" can't do -- they make LISP fast enough that it could probably be used as a replacement for C or Java (for most things), if it weren't for all those damned parentheses...

      Libraries are someone else's problem. Python is better than Perl as a language, but CPAN is better than Python's Cheese Shop.

      Well, CPAN is better than just about any language. Also, you were expecting to find cheese in the Cheese Shop? They're all out of that!

      In any case, CPAN doesn't seem to be much better supported -- often, yes, a developer or two, working in isolation, maybe a bit of peer review.

      Also, this is like the argument of Windows being better than Linux, due to number of apps. It's a sad reality that it limits options, but in my experience, Linux is better enough that I'd often rather do a little extra work to make Linux do what I want than buy a Windows program to do the same thing.

      I don't think Python is quite there yet, though. Notice how pretty much every one of your Python complaints holds for Perl, except CPAN. But, if Python were fast enough, and had threading that worked, I'd be using it instead of Perl, no question. (For that matter, if Perl6 ever gets released, and if Python gets ported to Parrot -- not very likely, I know, but if it happened -- CPAN would suddenly become available to Python people.)

      Or you discover that you need racks of servers to compensate for the painfully slow implementation.

      Which would be great, if it weren't for the fucking GIL. I hate that thing.

      Then again, people are willing to deploy Ruby, so at a certain point, CPU is cheaper than programmers. Although I still wish I didn't have to choose.

      That's why Python hasn't even replaced Perl, over fifteen years into the deployment of Python.

      Well, Perl hasn't replaced Java, and Java hasn't replaced C.

      Frankly, I think one of these languages needs to step up and offer something compelling -- or I need to find the one that already has, and still isn't dominating. But I've been looking for years, and still haven't found something that's as dynamic and easy as perl/python/ruby, as portable as Java (even CORA, please), and as fast as C, even though I'm convinced it's possible.

      --
      Don't thank God, thank a doctor!
    3. Re:Those aren't the real problems with Python by Wheat · · Score: 2, Informative

      > I suppose doing stuff like that is hard and boring for most people. So they'd rather do stuff like come out with python3k or perl6 instead of a fast python2.x/perl5.

      No. Please read the article(s), it is inaccurate to compare Python 3 development with Perl 6 development. Bruce Eckel was whinging about Python 3 not doing enough "fun stuff" as Python 3 is really only concerned with removing warts that resulted from early design decisions in Python. Perl 6 is about doing "fun stuff". As for performance, the cPython implementation in Python 2 has had a lot of optimization work done to it. Much optimization work done to Python 3 will be available to Python 2 in the form of the Python 2.6 release.

  15. Compiled type-safe python by goombah99 · · Score: 3, Interesting

    As long as they are going to break things here's my wish list for python. Make it possible for a compiler to compile it. Yes I realize that's essentially impossible for a dynamic language that does not enforce types in the function prototypes.

    However, it could be done like this. First recognize that nearly all uses of python do not take any advantage of the dynamic typing, and nearly all calls to functions happen with arguments whose type is not varying. Thus why not have a mechanism, an optional one, that could hint at the expected typing for a function and its args. I realize there are ways with "decorators" to add type checking, but that's not the point. I'm talking about type hinting. The reason for this would be to allow a compiler to examine the code, read the hints, and then compile the code or translate it to C++.

    The problem with existing python accelerators is that they bend overbackwards to avoid stepping on the dynamic typing. Why not allow the user to forego that if they want to and have static typing if they want to go to the effort of indicating it.

    --
    Some drink at the fountain of knowledge. Others just gargle.
  16. Regarding GUI by Brandybuck · · Score: 3, Interesting

    Regarding the GUI: don't.

    This is a language, so keep it as such. I realize it's hard to market a language without a rich set of standardized libraries, but the UI should be an exception. This is an area where the technology is slowly but constantly changing. In addition, GUIs tend to have somewhat "religious" supporters. Also, as Bruce mentioned, all of the toolkits have their advantages and disadvantages. One "disadvantage" they all share is a changing API. Nothing stays the same forever. Tying your language standard to a third party API is problematic.

    One language tried to do this (Java), but it's original GUI was universally reviled, and it's current "official" GUI (Swing) is competing with an extremely popular third party solution (SWT), and another third party solution (Jambi) is starting to gain enthusiastic users.

    So in my opinion, leave the UI unstandardized.

    --
    Don't blame me, I didn't vote for either of them!
  17. Why do people pile on Guido by pclminion · · Score: 2, Insightful

    He's not that different from Linus. He does things in ways that some people seem to really dislike. When they complain, he doesn't mind. "Tough cookies." I guess when Linus does it, it's a noble independent spirit, when Guido does it he's being an asshole.

    I use Python as a test, actually. Hating the language is okay by me, we've all got tastes. Lucky for you, we don't write our code in Python so you won't suffer. But saying you hate it because of enforced whitespace? That fails your interview, right there. Ohhhh boy. You've got a problem with having to make things line up the way their supposed to? Just wait until you hit some actual PROJECT REQUIREMENTS.

    1. Re:Why do people pile on Guido by julesh · · Score: 2, Insightful

      You're being obtuse. The problem with syntactic whitespace is that it can introduce errors that you can't find without doing a hexdump of the source code, which is about the stupidest thing ever.

      Not if you tell the language what size tabs you're using, it can't. Or just stick to the standard of 8 spaces. Or use an editor which has whitespace normalization, or whitespace character display. Sure, it's a problem if you're trying to use the tools wrong. But if you stop trying to fight it and go with the flow you'll be fine.

  18. Strange Guido's reply by renoX · · Score: 3, Insightful

    He said that 'self == whitespace indentation' whereas for me I see that as exactly the oposite:
    - using whitespace for indention remove 'visual noise' at the cost of 'language magic'
    - using self adds 'visual noise' with the (dubious IMHO) benefit of language 'simplicity'.

    IMHO removing self would be a big plus for Python, sure self makes things more explicit but if developers really wanted to use explicit language, they would stay with C instead of using Python, Ruby..

    1. Re:Strange Guido's reply by Cheesey · · Score: 4, Interesting
      You have touched on a problem with Python that has always annoyed me. It's not "self", but it is one of the reasons why "self" has to be explicitly specified.

      The problem is that Python does not distinguish between creating a variable and assigning a new value to an existing variable. This means that scoping doesn't work as well as it should. In particular, you can't do this:

      def Parent():
        v = 0
        def Child():
          v += 1
        Child()
      because Python cannot tell that the second v is the same as the first. You can access v from the Child() function, but you can't update it. There are ways around this problem, but they are ugly. That's why Python really uses self: so it knows which scope each variable belongs to. And it's a pain. There should be a way to explicitly specify the scope of variables without having to resort to ugly hacks. I am a big fan of Python, but it could be so much better...
      --
      >north
      You're an immobile computer, remember?
  19. It's not the langauge, stupid by Aminion · · Score: 2, Informative

    The Python Software Foundation (PSF) needs to realize that there's so much more to a language than the syntax. There needs to be a major effort in making it easier to install, get started with, and deploy Python, and much more advocating and marketing needs to be done. For example, PSF should start campaigning so that web hosting providers support Python out of the box. Why do you think PHP, despite it's obvious drawbacks, is so popular? Because it's ubiquitously supported and requires nil efforts to get started!

    It's great that Python is constantly evolving into a cleaner and more competent language, but I fear that the Python 3000 efforts could result in a pyrrhic victory in the war between programming languages because it simply fails to attract enough new people. There's so much that the PSF could do, but there seems to be too much "But that's not our job!"-thinking.

  20. even odder. by slashnot007 · · Score: 3, Funny

    I'm even more perplexed why Guido is removing the "+" sign. HE says he's reserving it for an unnamed future use. In the mean time using two minus signs in a row is how all additions will be done in python 3000. I'm baffled by this.

  21. Re:Blow my mind. by slashnot007 · · Score: 2, Informative

    Your wish is granted already. import numpy

  22. Re:Solved problems by SanityInAnarchy · · Score: 4, Interesting

    It's not even an issue of better support for concurrency in the language itself.

    Personally, I like some of the ideas of Python better than Haskell and Erlang. There have been some very good ways of doing multithreading, even massive multithreading (see Stackless, some of which is now back in the main Python), and making it natural, even with an imperative style of programming. Some implementations (again, see Stackless) make threads so lightweight that you can spawn thousands without being concerned about performance, and the structures used make it natural to do that without any kind of locking issues -- sometimes, without explicit locks at all.

    The problem is not with python, the language. It's with python, the interpreter, and all the associated C modules, embedded versions, etc, not to mention Python programs that might assume the same behavior.

    Specifically, it's the Global Interpreter Lock. The GIL is the most retarded move I've ever seen in a language. Basically, Python said "We don't want to make the Python interpreter too complicated, so we're going to deliberately remove multicore support." They even support real OS threads, but only one Python instruction may be executed at a time. Which is fucking stupid.

    There are a lot of really good things in Python. I'd like to be able to write a good, modern game with Python, but if you figure it may be half as fast as C already, I'm not going to lose another 50% speed because it can't use both cores. (Yes, psyco can make it MUCH faster, close to C. But, psyco doesn't work on 64-bit, which is another kick in the balls for performance.)

    --
    Don't thank God, thank a doctor!
  23. Re:PArrot by zerblat · · Score: 2, Funny

    Ah, you mean the Norwegian Blue? I don't know. Looks dead to me. Of course, 'e might just be resting. Beautiful plumage, though.

    --
    Please alter my pants as fashion dictates.
  24. Re:Python by An+Onerous+Coward · · Score: 2, Funny

    This has been a public service announcement from the Society for the Preservation of Curly Braces.

    --

    You want the truthiness? You can't handle the truthiness!

  25. Re:Syntactic whitespace by ubernostrum · · Score: 4, Funny

    The syntactic whitespace is hard to get used to and causes hard to find bugs.

    You do know about Python's block delimiter support, right? You can use the block delimiters from any language you like, just prefix them with '#' and Python will handle them automatically.

  26. Yeah, well by stonecypher · · Score: 2, Informative

    Bruce Eckel is looking for Erlang. That's not what Python is for.

    --
    StoneCypher is Full of BS
  27. Plenty of time by SiliconEntity · · Score: 3, Funny

    Sounds like some tough issues. Good thing they have 993 years to get it right.

  28. Re:Compiled Python 3000? by Just+Some+Guy · · Score: 2, Informative

    I love Python, but it's often just too slow!

    Try this, in increasing order of work required (and likely reward).

    One: try Psyco. It may give you the bump you needed, or it may do nothing, but since it's so easy you might as well try it.

    Two: write faster code. Basically, let Python do the work for you by handing off as much processing as possible to the language. For example, this:

    output = []
    for value in input: output.append(transformfunc(value))

    is longer to type and possibly vastly longer to execute than:

    output = [transformfunc(value) for value in input]

    since the latter knows how many values it needs to pre-allocate memory for, and can perform the operations in a tight C loop instead of evaluating a much slower Python loop.

    Three: profile. Once you're sure that you've written good algorithms are aren't re-implementing large bits of Python in Python, run a profiler to find out where you can direct extra attention. Some people do this before #2, but I don't touch it until I know that everything else is right.

    I wrote a "diff" function in native Python that searches two many-gig files for lines that appear in one but not the other. Said function is IO bound on a SCSI-320 RAID-0 system with 4 15K RPM drives, and typically uses about 20% CPU for the duration. You can write slow Python, but that doesn't mean that you have to.

    --
    Dewey, what part of this looks like authorities should be involved?
  29. Re:Syntactic whitespace by zigamorph · · Score: 4, Interesting

    Nope... I like python and use it every day. Losing the syntactic whitespace for a more traditional whitespace-neutral {}-block style would to me only feel as an improvement. Syntactic whitespace makes it harder to automatically reindent code, makes it easier to accidentally break the code structure and generally makes refactoring a pain. Furthermore I suspect the syntactic-whitespace to be the reason pythons lambda-statements are severely limited.

    If anyone is interested, my top candidates for improvement or python would be:
    * regular {} blocks instead of semantic whitespace
    * non-trivial lambda-statements
    * explicit scoping of variables like with the "var"-keyword in Javascript

    Nice to have but not essential would be:
    * ++ and its friends
    * ternary statements
    * switch statements, preferably supporting strings. I know that you can simulate this with a dict and a try-catch but honestly, why keep a feature out of the language for "simplicity" and then encourage people to use horribly unreadable workarounds?

  30. Re:Solved problems by ubernostrum · · Score: 2, Informative

    Er. Image rendering is typically one of the most obvious places where separate processes with no shared state yield huge benefits. In fact, image/graphics rendering applications are among the few categories of software which are able to take full advantage of multi-core systems right now, and it's largely because this is such a good solution for them.

  31. Performance... CPU vs Programmers by pavera · · Score: 2, Insightful

    Ok,
    Python is slower than C, C++ and Java... Guess what? So are PHP, Ruby, Perl, and every other interpreted language.

    However, if it takes me 10 programmer hours to create a python program (or PHP, Ruby, Perl) program, and the program takes 10 seconds to process 50,000 records from my database while the C version of this program takes 500 programmer hours and takes 1 second to process 50,000 records.... how long does it take before the C program is faster?

    about 9.8 billion records... well, at our current rate of record growth, I'll be there in about year 2500, even assuming 50% growth/yr (completely unsustainable for any enterprise past 10 years) its still 2100 before the time saved by the program equals the time saved on programming time... Not to mention CPU time costs less than 1 cent/hr, and programmers are much more expensive.

    And for the record, we have done this. We recently re-wrote a C application in python, the original application took 5 programmers 3 years to create, we recreated it in python with 2 programmers in 6 months, it is feature complete vs the C implementation, it is slower, but not outside of what would be considered reasonable. We also haven't even tried to optimize it at all... which we could do and probably at least get 10-20% improvements in performance.

    Now, in saying this am I saying interpreted languages are the answer to every problem? No! Sometimes, you need C, sometimes there are problems that can't be solved well in any specific language. If there was a be all end all language, we'd all be using it. Python, Perl, PHP, and Ruby all have their place, in general I prefer Python because I find it much more intuitive than Perl, I find generally better programmers advertising Python jobs than advertising PHP jobs, and I just like it better than Ruby