Ask Guido van Rossum
This week's interview is with Guido van Rossum, a man who, as they say, needs no introduction. (Not around here, at least.) To learn a bit more about him, check his personal page. You might want to ask him about Python 2.1, which was released today. One question per person, please. We'll send 10 of the highest-moderated ones to Guido about 24 hours after this post went up, and will run his answers as soon as he gets them back to us.
Considering that you named the language after the comedy troupe, what's your favourite Monty Python sketch? Personally, my favourite is the lecture on sheep aircraft, but I suppose that's a discussion for another time ;).
Alex Bischoff
---
Alex Bischoff
HTML/CSS coder for hire
Of course, there's also JPython, which has fantastic integration between Java and Python code, and resolves the threading thing... so if yer extending Java code, it's really a no-brainer (IMHO).
There has been efforts, most notably the (currently inactive, I believe) static typing SIG, which would make it possible to make code that could be efficiently translated to machine code (also known as "compiling"). Static typing is by no means required to translate to machine code, but it would probably make that faster.
An interesting option might be something like Squeak did, with a subset of the language that can be efficiently translated into C (and then compiled). This is something like what the static type SIG was aproaching -- not quite Python, but something that could run in the conventional CPython interpreter, wouldn't necessarily require any knowledge of C or assembly, but could run fast.
Of course, it is also possible to simply compile Python into system code just as it is (well, if someone wrote the compiler). There is nothing that makes Python inherently interpreted. The problem, however, would be in the efficiency of that code. A naive attempt to do this would probably be slower than CPython. OTOH, compilers for Scheme (which have many similar issues as Python) have produced very fast code (on par with C). In particular, Stalin is very fast (though there are others which are very fast as well) -- sometimes faster than C. Python doesn't have any of the huge flaws that languages like, say, Tcl have in this regard. Some operations are difficult in compiled environments -- like getattr or eval -- but they could still be possible, or they could be left out (since much code doesn't use them). OTOH, all the best Python code uses them.
distutils fulfills some of the functionality required for a Python CPAN. I think it has reached a state of relative maturity -- it may be asked to do more later, but it does what it needs to well right now.
There has also been some discussion and implementation of methods to describe and upload modules, which would probably be included in distutils or something related when they mature. I think at that point, along with a little infrastructure on the web, Python will have its own little CPAN. I know CPAN does more than this, but not all that much more, and it's something that should be grown into.
I couldn't find what I was really looking for on the subject, but maybe this thread would be a starting place. There's more stuff elsewhere as well. This message (from that thread) gives a nice overview of what's necessary for CPAN, I think. And I guess the whole discussion starts here.
Almost every modern high-level application language today supports, and perhaps forces the Object Oriented Paradigm (OOP). Students are encouraged to define and use objects whenever possible. Python's standard library seems nothing but objects. Java is the same. Newer technologies, like SOAP/Microsoft .Net/blahh are the apex of this concept.
When I refer to the OOP, I mean the drive to decompose all programming into components, not necessarily the individual concept of having classes with methods and constructors and context-sensitive results, etc
Application developers accept the OOP as the only way and consider those who refuse it to be uncivilized coder barbarians. Clearly, one can only bring sanity to programming via the OOP. But what is it really bringing?
Most of the ideas that the OOP promotes are good programming practice anyway. That is absolutely not what I hate about the OOP.
In the very ideal cases, you can create a reusable object/module that other people can enjoy. This is very rare, though. UNIX is a good example of an easy to use interface that allows for massive code reuse. The Win32 API, while affording code reuse, has a miserable interface that makes Windows programming a chore.
Without going into a huge tirade; Modularity on that level is good. It's worth it to struggle with the interface, because the alternative is 100 man-years worth of functionality that you need to implement. On a much reduced level, trying to deal with the OOP just doesn't seem worth it.
The problem with the OOP is that it encourages all code to be tiny little modules with it's own unique domain, which helps complicate the code both visually and in terms of execution.
For every beautifully designed reusable component, you have a thousand more that are confined to a single project and do nothing but add complexity and visual noise to an otherwise simple idea.
The Objects Everywhere philosophy seems to promote complexity, rather than simplicity. The less code, the easier it is to understand, the better off it'll be. Python does achieve many of these goals, but I can't understand why the push to OO'ize it all.
Bad programmers can write bad code no matter what, and there's a vast army of bad programmers out there, but I'm not sure I've ever seen good code that employs the Objects Everywhere ideal.
Does this make sense? What are your thoughts?
That's really the beautty of Python's whitespace blocks. Both the programmer and the parser are looking at the same cues for block nesting. I am sure you have debugged C code that was missing a brace (or worse that had one misplaced) but was still indented "correctly." Your mind thinks that everything is hunky dory because the code "looks" right. This doesn't happen very often if you are a skilled C coder (with an intelligent text editor), but it does happen. And it happens a lot with newbie programmers. I was teaching my little brother Perl at one point, and he had all sorts of trouble with braces. However, when we switched to Python there was no longer any need for him to think about which braces matched up. I didn't believe that Python's significant whitespace was a good idea either, at first, but I am a believer now.
I am not a vi user, so I can't help you there.
What other languages do you use? Why do you use them? Are any of them better than python? When can I expect Parrot to be released? ;-)
TheNewWazoo
Queues can be done using Python lists; linked lists could be done using tuples or lists. AVL trees and B-trees are available in persistent forms (through the BerkeleyDB library, for example), and there's a BTrees package inside the ZODB. PEP 218 proposes a built-in type for sets, but there doesn't seem to be much agreement on what people want from a set type. Some people want fast intersection operations and some don't care; some want; some people want an O(1) membership test and some people don't care; it seems difficult to write a set type that's equally speedy for all possible applications.
Note that Python 2.0 included a cycle-detection algorithm, so reference cycles do get cleaned up now. See the Modules/gcmodule.c file in the Python source distribution, and the GC module docs.
Do you have any plans to merge Stackless Python with Python? If yes, when? If not, why not?
Since the original question referenced VB and Kylix I'm assuming the poster wants a 'GUI builder' type of IDE. I believe the most common Python approach to GUI widgets is through Tk. In that case the question might be, are there any Tk GUI builders that handle Python. I don't know the answer, I'll leave the searching as a reader exercise. There are a couple of basic IDEs for Python, the Windows version even comes with the install. These are about on par with Komodo, faster but with different features.
Chris Cothrun
Curator of Chaos
Bleh!
Thoughts on Ruby?
Is there any chance that stackless and microthreads might be integrated into the main python distribution?
-
Stop worrying about the risks of nuclear power and start worrying about the risks of not using nuclear power.
So, my question is a two parter:
ObJectBridge (GPL'd Java ODMG) needs volunteers.
Finding God in a Dog
It's been a while since I've seen any mention of Python 3000--aside from the recent April Fools joke, that is. I love Python as a language, and use it both professionally and personally. But, Python's current implementation is lacking; the interpreter is not multi-threaded, causing large Python applications (such as Zope) to implement various workarounds that only partly address the problem; and the C API is rather...unpleasant. Working with the Tcl C API in an embedding situation is much, much better, IMO. Will Python 3000 address any of these concerns? Any information on a timeline, or current status?
First, I feel obligated to state that I think Python is totally tits. I love it. Thank you.
Reading "What's New in Python 2.1", I'm curious about nested scopes. Given that name lookup has always been the cause of poor performance in Python (or so I've heard), it would initially seem that introducing nested scopes would further reduce the speed at which Python scripts run if you use this feature.
Is there any information available about Python's performance with this addition?
I have been doing C development for 9 years now, and I know a plethora of other languages including shell scripting, perl, PHP (for scripts). Now, each language uses 'normal' grouping for control structures (if, for, etc).
What was the logic behind creating a whitespace-based syntax rule? And why do you feel it is good, please refrain from the readability answer because that is all I get from those people I know who know Python.
I find, because of my background, it is much easier to read code that uses braces ({}) than whitespace because my mind automatically looks for them. After maintaining legacy code that extends a life span of 20 years from it's first line of code, I have some concerns about the longevity of any Python code. So, my second question is, how well do you see Python holding up for 20 years and why do you think it will hold up that long?
Thanks.
Dacels Jewelers can't be trusted.
(It has to be asked every once in a while.)
Any movement away from Tkinter, and toward something else, as the pretty-much-standard programming interface for graphical user interfaces?
Any movement towards a Tk library that *doesn't* use Tcl?
Stupid job ads, weird spam, occasional insight at
Programmers frequently praise Python for its generally clean syntax, its ease of use (as in CP4E), and its "Batteries Included" philosophy. As a PyUser myself, I have to agree that these are fantastic features.
I'm interested, though, in the conflict between library design and legacy habits. Would you suggest that C-isms like "popen2", "execlp", "sys.argv", and "socket(AF_INET, SOCK_STREAM)" really belong in a "clean" language in the long run?
Is there any chance that we'll someday see a standard library extension that (much like Java's libraries) allows developer to program in English rather than UNIXglish?
Thanks!
--JRZ
I've recently come across Ruby and I must say that at first site it has all the features (after all it was inspired by python) that made python a success and some more. What are your impressions of this language and would you be willing to give up python for it or some other language?
Jilles
I have seen a couple of Java based Unified Modeling Language tools but no Python support or implementation. It would seem natural to develop in python based on UML, so this must be a large gap in the python suite. What do you think of designing with UML and implementing in python?
Thorn is an opensource UML editor written in Java with JPython scripting but no python code generation.
ArgoUML is an opensource UML editor written in Java with no current python code generation
Ethics II Axiom 2. "Man thinks." B. Spinoza
i notice that the release of 2.1 isn't signed or even checksummed. what will you do in the future to ensure that mirror sites don't supply versions infected with macro viruses or changes to the core? nobody has time to audit a 4 meg download, and everybody runs "configure" right away (downloading an executable and running it -- idiotic, eh?).
I have some friends that are extremely talented programmers that find python very difficult to use because it relies on whitespace for code block delineation. They're blind. With that in mind, is it still a great idea to use whitespace (not braces) just so the code will all look alike?
"We are not tolerant people. We prefer drastically effective solutions"
Have you actually used Komodo?
even compared to Visual Basic it really sucks... like.. REALLY sucks. I would be embarrased to ship a program built with that IDE builder.
--------------------
Would you like a Python based alternative to PHP/ASP/JSP?
Do you know if there are any projects on it's way to compete with Kylx or Visual Basic based on Python.
--------------------
Would you like a Python based alternative to PHP/ASP/JSP?
Is it possible to make Python as fast as C/C++? In particular, is there a way to compile Python into system code (as opposed to byte code)? If there isn't, will there ever be?
There have been a few other posts about this. See my earlier response to another post about that here.
I'll answer your post with a question. Why should a programmer be free to style their code anyway they want?
The point of a programming language is to communicate instructions to a computer in human-readable format. I still maintain that people who complain about being forced to write readable code are the ones who write the most unreadable code. TMTOWDTI, Perl's motto, is the main reason that when the first Obfuscated Perl Code contest was announced, many Slashdotter's joked that it was redundant. Consistent style is a necessity for maintainability. It helps to allow others (and maybe yourself a year later) to understand what you were doing when you wrote a piece of code.
Honestly, if you think everyone should be able to write code in whatever style they see fit, you've never worked on a large project before. Languages with more freedom just force people to place other personal standards on how their code must be formatted within their project or lose readability of code as multiple programmer styles conflict. Python forces a consistent standard across all development, making it an great relief to maintain.
If it's for-profit but free, you're not the customer -- you're the product (e.g., the Slashdot Beta's "audience").
I recently started using Python and I now use it for everything, including an interactive shell. Thanks.
One thing I see in Python-land is that there is a tendency to implement everything in Python. I just submitted a design for a program that I want to write in Python and I used Sketch for diagrams, despite having CorelDraw for Linux right here. It seems that no Python programmer is happy with having a component written in another language. Many other languages don't interoperate as well as in Python but those programmers seem happy with mixing Perl and C, for example. Look at Zope. It has it's own web server. I know it's faster, but why do you think this is happening with Python specifically?
What use of Python have you found that surprised you the most, that gave you the strongest "I can't believe they did that" reaction?
Slashdot - News for Herds. Stuff that Splatters.
I personally believe that Python bytecode is very efficent, take the case of Java bytecode, it is just as efficent, to over optimize it will put very serious constraints on what python does and can do, it is a simple tradeoff, the speed in python all lies in RAD.
------ Curiosity killed the cat. {satisfaction brought it back | it didn't die ignorant | lack of it is killing mankind
You have all the data structures you need, perhaps your skills are lacking. A list is already given with you, with that list you can implement a stack, queue, etc using the existing methods! A dictionary is given to you, with which you can implement a set/hashtables, the only thing that isn't native is trees, which is very easy. What I will like to see tho, is a Collections framework just as in Java, that would be cool.
------ Curiosity killed the cat. {satisfaction brought it back | it didn't die ignorant | lack of it is killing mankind
I think it is very wonderful, I can't stop talking about JPython, the best of both worlds, mixing python and java, coding with pythons wonderful fun interpretter environment, and getting to use stable java libraries. Saves so much time with the java compile cycle, yet, you can write your java servlet or a swing application in python. Guido probably doesn't care, his work is python, but this shows java's potential.
------ Curiosity killed the cat. {satisfaction brought it back | it didn't die ignorant | lack of it is killing mankind
The most annoying thing in python for me, is when walking with classes, and having to reference all local variables and method with the self class. self.It self.gets self.annoying self.and self.I self.believe self.it self.reduces self.readability. As you can see, lots of "selfs" over your screen is annoying, I know that there is a hack out there to remedy that, but is there any immediate plan to fix that in the future?
------ Curiosity killed the cat. {satisfaction brought it back | it didn't die ignorant | lack of it is killing mankind
Is there any plan to adopt wxPython (www.wxpython.org) as the GUI standard? The Tk interface looks butt ugly, and I am sure you have heard that many times, what do you see as the advantages and disadvatages for using wxPython over Tinker?
------ Curiosity killed the cat. {satisfaction brought it back | it didn't die ignorant | lack of it is killing mankind
This is the greatest contribution of the perl community. A true example of code re-use.
War is necrophilia.
KomodoAt Active State.
Best Slashdot Co
How do you see the relationship between jPython (the java implementation) and standard cPython (the original C language version) evolving? And do you see the advantages of either one (i.e. portability vs. speed) becoming especially pronounced in light of the recent trend toward distributed software (ala the MS
sean
It seems that (optional) static types would enable the creation of practical python compilers, and could also provide much more in the way of pre-execution error detection.
I've heard rumours that static typing might be in the pipeline for Python. Is there any truth to these rumours, and if so, how might they be implemented?
Fixing copyright
I have long wondered why the value None in python is named "None". It's pretty common in other languages to call that thing (or something very similar) "NULL". Were you trying to differentiate None and NULL in some way, or do you just like the way "None" sounds as you read code?
Do you see things in a similar way? If so, why has Python not evolved something similar or better, and what can I do to help it along in this realm?
I know first hand that you have an uncanny ability to remain calm and level-headed. I emailed you once a flame--it even contained several instances of "DIE"--that while done with some jest was quite insulting. Your reply was not only civil but combined with the fact that you even bothered to reply left me feeling quite embarassed (and rightly so).
What is your secret for keeping your cool when discussions get heated, particularly when techies tend to be very loyal to their causes?
I can't spell or type, but that doesn't mean I'm unusually stupid.
Don't you ever get sick of talking about Python? Are there times when you just want to talk about your collection of scotch-tape dispensers or your love of shuffleboard? Do you feel sad that people pidgeonhole you as "Guido van Rossum, the Python guy" or "Guido van Rossum, the father of Python", when perhaps you'd prefer to be "Guido van Rossum, the ballet dancer" or "Guido van Rossum, the Buddhist monk"?
In all seriosity (?) are there times when you overload on Python and just have to get away for a while?
-DA
How closely does the primary Python development team interact with the other language binding efforts (mainly Jython)? Anyone who's hung out in Slashdot seems to have a rabid attachment towards their native tounge, so to speak, and I've found it refreshing that the Python community "plays nice". Is there a lot of cross-pollenation(sic) between the groups?
Thanks.
Python is about simplicity of expression. When doing advanced programming it is nice to have a large set of encapsulated data structures. After coding a data structure 5-6 times it ceases to be instructional.
You can look up data structures anywhere, but developing clean algorithms takes "skills".
bash-2.04$
bash-2.04$
bash-2.04$yes "Don't you hate dialup connections?"| write USERNAME
I love python for making quick hacks, but the one thing that I haven't seen is a comprehensive data structures library. Is their one in development that you would like to comment about or point us to?
bash-2.04$
bash-2.04$
bash-2.04$yes "Don't you hate dialup connections?"| write USERNAME
I've actually written a porn bot in python/glade ... "beelzebot" ... :) Its an automated usenet porn downloader/decoder.
Free Techno/Jazz/DNB/MI Music by guys obsessed with monkeys!
When its done :)
Free Techno/Jazz/DNB/MI Music by guys obsessed with monkeys!
Are there any plans to set some kind of standard language specification that will hold for a while?
I learned Python from the "Internet Programming" book, and I love the lean and mean Python. Because of the recent burst of development, it seems to me that lots of new features are being stuffed into the language. Is my perception correct? Is there a danger that Python will forfeit two of its best features, simplicity and cohesiveness, merely to appease a few complainers?
In the upcoming volume IV of Knuth's TAOCP, Seminumerical Searches for Hoaring Triplets, he conjectures the following about the Theory of Programming Languages:
Along these lines, I pose the following questions:
Thank you.
What's your idea of the future of Python? Since the PEP process, a lot of new feature ideas have been put forward, and a lot of people feel uncomfortable with quick change to a good language (Python 2.1 is again excellent though, congrats). Do you think or hope Python will be finished one day? If not, isn't the alternative an endless string of added features? "Python 3000" was an idea of a sort of ideal Python that would be worked on, but as I understand Python will now evolve more gradually.
I believe posters are recognized by their sig. So I made one.
What are the bad points in Python ?
What kind (or size) of project should not be written in Python ?
When should one use a different language ?
Thanks.
In Python, indentation is the token. What's the rationale for this? Do you get a lot of flack from people who prefer the old-fashioned way?
Oh yeah, and since the Vim % command (jump to matching bracket) doesn't work with Python code, do you know of a macro to replace it?
__
Now all I need is a macro to actually do the function I described! That's the easy part, of course!
__
Follow-up questions are:
What's your favorite Monty Python Quote and Movie?
Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
(1) who would win in a fistfight, you or larry wall?
(2) who speaks more languages, you or (that supposed linguist) larry wall?
(3) if you could eliminate one planet from the solar system (besides the earth), which one would it be?
(4) how do you feel about the euro?
What Is Python? Understanding Them : Pythons are relatively primitive snakes belonging to the subfamily Pythoninae within the family Boidae. Boidae, in turn, is one of 11 families in suborder Serpentes, The Snakes. Within the subfamily of pythons, arboreal pythons with heat-sensing pits along their lips (green tree pythons) are grouped seperately from terrestrial pythons that have heavy bodies and short tails
(blood pythons). Each different type of snake eventually ends up with two names, one for the genus and one for the species. When isolated population exits that are still identifiable as the same type of snake, a third name, the trinomial, is added.
The term primitive indicates that these snakes were some of the first snakes to evolve. Primitive snakes display features that link them to lizards. These features include a rudimentary pelvic girdle in the form
of cloacal spurs, and lungs of equal sizes . Advanced snakes, like the rat snakes and whip snakes, have only one functional lung and no cloacal spurs.
Pythons are divided into about 26 species, depending on which authority you accept. Pythons range in size from very big (Burmese and Reticulated pythons with the potential of over 20 feet and over 200
pounds) to small (Children's pythons do not get much bigger than 24 inches '61cm' in length) . No matter what the size , they are all constrictors . Some burrow-hunting species have developed novel ways of
using thei coils to catch prey within the confines of a burrow but they are still constrictors nonetheless . Most pythons are nocturnal hunters and some species have heat sensory pits along the edges of their lips
to aid in finding warm-blooded prey .
Pythons Versus Boas : Many people don't know the main difference between boas and pythons . Boas are termed ovoviviparous , this means their eggs inside the females are surrounded by a membrane
instead of a hard shell like pythons . So when the boa babies born , babies break through the membrane to crawl away . Pythons are oviparous , this means the eggs are surrounded by a thin , parchmentlike
shell . Female pythons will coil around their eggs and stay with them during the incubation period .
Life Span : Over 20 Years But Much More In Captivity .
Their Orginal Habitat : Africa , Asia and Australia , North America (A Little Amount) . All python snakes are tropical animals . They won't live under the temperature 22C (77F) . Under this fact the areas
that they live must be near the deserts or tropical places like amazon . But mainly you can find them Africa , Asia and Australia , North America (A Little Amount) .
Pythons As Pets : Pythons can be good pets if you care them enough .
-- Floyd
-- Floyd
... what book would you bring, what CD would you bring, and what language OTHER than Python would you be using (assuming that your computer suvives the sand and wet.)
How closely does the primary Python development team interact with the other language binding efforts (mainly Jython)? Anyone who's hung out in Slashdot seems to have a rabid attachment towards their native tounge, so to speak, and I've found it refreshing that the Python community "plays nice". Is there a lot of cross-pollenation(sic) between the groups?
Yours,
Bob
All the best,
--Bob
What are the plans for the compilation of Python code to efficient executables? Python's object system is very dynamic, allowing anybody to add instance variables and methods to any object at any time--how are you planning on dealing with that during compilation? Performance-wise, how do you expect Python will compare to compiled CommonLisp or Smalltalk, which evolved along similar lines 20 years ago? And will there be a language standard, or will Python continue to be defined by what the C implementation does?