Domain: python.org
Stories and comments across the archive that link to python.org.
Comments · 1,513
-
Re:Languages: we have a lot of room for improvemen
I took a look at your webpage. Kudos on the effort. However, it looks like you're reinventing a clone of python. No offense, but I think you'd probably be better off making a frontend for python, given how many "in progress" and "todo" items you have (and the fact that those make up a significant portion of your total project).
Disclaimer: I'm not a fan of python, but I'm working on a language of my own, so I make it my business to read about and compare language ideas. While it looks like you've spent 90% of your time documenting, I've spent 90% of my time writing code. I have a working interpreter that runs an order of magnitude faster than interpreted perl or python, and I'm about to make the leap to JIT compilation. Anyway, once my compiler is ready, you may want to think about writing a frontend for it. (Note: I don't have a website yet, and I won't publish the spec until I finish my compiler.) -
Re:Stability/memory leaks
Yes, Java's GC would notice that nothing is referring to them and remove the objects. This unlike a simple reference counting gc such as python's which would not notice this.
Your information about Python is about four years out of date.
-
Re:Objective-C
As a footnote, I know the Mono guys have done a Cocoa# bindings for the PowerPC.
Sidenote #2, IronPython, which runs on Mono, has been shown to perform better (on average, 1.7x better) under most performance tests than standard Python v2.3. (this is not a troll or flame-incitation, just a FYI). See IronPython.com, or this paper from PyCon 2004. -
Why stop there?
While they're on a roll, they could always go after the writers of Python with infringement takedown notices.
In light of the above, it wouldn't be all that farfetched, would it? -
Jython
You might want to try Jython and the Numerical Python for Jython.
I have not used either for a long time, but use plain Python and Numerical Python a lot; sure beats Matlab and Mathematica for most things. Right now for solving optimization problems with 10k+ s.t. constraints. -
Re:This guy must be a nerd...
Mr. Ladd, you have just become my official hero. I used to suppose that I was the only socially hermetic bastard who sat around with a compiler-driving keyboard in one hand and an icing-laden spoon in the other; now I know that I'm not alone in the universe.
In all seriousness, I appreciate your compiler comparisons. However, it would be helpful if you'd include a few apps that aren't oriented toward scientific computation, such as the CLucene search engine or the Python interpreter's pystone benchmark.
The problem with either of those (as I'm sure you're aware) is that I/O would enter the picture to a greater extent than it does in scientific computation, and I/O is a huge can of worms as far as benchmarking is concerned.
Have you considered including some non-scientific code in your benchmarks, though? There are many of us who write primarily integer and/or string-based code, and don't deal with floating point to any significant extent. I'd be interested to see whether Intel's compiler (or even Microsoft's) is able to pull any integer-centric tricks out of its hat, relative to GCC.
-
Live Chat & Search
With voice software, you can already speak in real-time, conference style. I think Skype supports 5 people.
With speech-to-text, you could log all conversation to IRC.
Then you could have search engines that search *all conversation within the last 5 minutes, world-wide.*
Well, at least all conversation that was okay with being public.
So you could say, "Show me all conversations that are going right now about Python, and immediately find the people talking about Python, wherever they were.
One step towards the HiveMind. -
Python IDEsHere are lists of Python Editors and Python IDEs.
My bias is towards Wing IDE (note 2.0 is still in beta tho).
-
Python IDEsHere are lists of Python Editors and Python IDEs.
My bias is towards Wing IDE (note 2.0 is still in beta tho).
-
Local NamesI figure this is the right place to plug a project I've been working on.
It's called "Local Names," and it allows you to use short names for URLs.
The idea is that you should be able to use short names in:
- instant messages
- bulletin board posts
- blog posts
- wiki posts
- ...and in your address bar.
We can presently use LocalNames in most wiki (any wiki that supports InterLinks,) in WordPress blogs, and in Firefox browsers.
The LocalNames spec doesn't describe what linking syntax should look like, but it'd generally be something like this: [[short name of URL][long text to link.]] So for example, you might write:
"So, I was on [[Slashdot]] the other day, and I saw [[invisibility cloak][an incredible invisibility cloak!]]"
Which would render out as:
"So, I was on Slashdot the other day, and I saw an incredible invisibility cloak!
The names lists support defaulting, so that you don't have to name every URL you like. If someone makes a names list you like, (for example, the contents of a wiki,) you can just default to it.
There is already: a site for keeping your own names list, a web-browser redirection site, and a site for adapting a Wiki's title index into a Local Names list.
Python programmers may be interested in the Python library reference names, which you can use with FireFox to jump straight to any Python module's documentation.
Bloggers may be interested in MooKitty's plug-in for WordPress that lets you use LocalNames in blog posts.
Really, I get a little upset now when I have to look up URL's mid-post. I think, "Geeze, I've got the LocalName for this right on the tip of my tongue; Why do I have to actually resolve it to a URL myself, and then stick a href tags around it?"
Once you start using short names for stuff, you never want to go back. -
Re:Joy of programming...
My language experience going back 24 years:
Basic, Fortran, Assembly (Intel and Sparc), Pascal, C, C++, Java, Lisp, shell(sh,awk,sed), Perl, and most recently Python. (roughly in that order; I saw some COBOL code once when a young programmer, but was immediately repulsed - thank heavens)
I actively use Perl and Python myself for everything now for several reasons:
1. All of the machines at my job (800+) are all preloaded with Perl - so I have to use it for automation (better than shell scripts particularly for mission critical one-off applications that have to be fault tolerant but deployed at the whim of our marketing and operations staff). If I didn't have to maintain Python myself on all of those machines, I would port everything over to Python in a heartbeat. However it took me 2 years to get management to agree to loading Perl in the first place - and there is no reason to incur the costs associated with validating a new scripting language for use in our production environment. So I live with it - and keep the footprint small.
2. For all other tasks - I use python.
Some neat things fall out of python that even as a neophyte I can appreciate:
a) clean syntax (if I only had all the time spent finding dangling semicolons in perl, I could take a sabbatical)
b) full featured web development tool (Zope - provides a framework for developing and hosting full service applications - designed to make building products to run under Zope easy - seperates the presentation from the logic using ZPT cascading style sheets and DTML for presentation, and python for the program logic [unless you are masochistic enough to depend upon DTML alone] - has a built-in database for managing Zope objects - and built-in httpd and ftpd servers - which can be further frontended using Apache as desired - can communicate with other databases [oracle, ODBC, postgreSQL, etc... many database plugins available] - has a large library of predeveloped products [modules for you perlmongers] that you can load and be up and running, or modify to your heart's content - and did I mention that its GPL'd?)
c) platform independent (just as with java and perl, python scripts can run without modification on many operating systems - keeping porting costs down to a bare minimum.
d) built-in documentation functionality - not as full featured as Perl's perldoc - but I might not have found the right product yet to do that (ideas anyone? or, is this a python project waiting for me to jump on - perhaps something that ouputs XML?)
The only drawbacks (and I use this term with trepidation - because they can seem positively refreshing after 10 years with perl) that I can see are:
A. Does not have the sheer amount of user contributed products (modules) when compared to CPAN^. Of course I wouldn't judge the quality of my carreer based on the weight of all of my program printouts either. Quantity does not equate to quality.
B. Slower than Perl and Java. Again, something I can throw hardware at to rectify. Squid goes along way to making web pages generate faster too - so you can ameliorate some of the problems without having to kill yourself.
C. Sometimes it takes longer to find resources online than with other languages because of the difference in popularity. However, the time spent needing to refer to reference material for Perl and Java is many times larger than the time spent doing the same with Python.
D. Because of my long experience with Perl, I find myself immediately jumping to a predetermined algorithm/function that is implemented differently in Python and thus create syntax errors in my code. This last is really a personal problem that time will erase.
My whole programming paradigm has changed. The advent -
Re:Thoughts of Python...
All I need to do now is find a shop that actually uses Python...
Google, ILM, and NASA all use Python. See the Python Quotes page. -
Great Book
It's the first thing I recommend to read after the official python tutorial to my co-workers who are just starting to learn python.
This book, Python in a nutshell, and the online python library reference are the 3 tools that I always recommend for python newbies -
Re:Depends ...
Open source cross platform C++ libraries include Boost, ACE, STLSoft, and Loki to name a few.
You should give Python a try as well.
-
Re:The correct pricing structure for most software
If all software was free, why would anyone bother developing it?
Gee, I can't think of anyone who would develop software without getting paid for it...
But seriously, there are several reasons people would write software whose price is 0:
- People want better software to do $WHATEVER (for values of $WHATEVER that make money, which is most of them), so they write it
- People want to get a job as a programmer so they write a software package to prove they aren't total code monkeys
- People like fame; they like being admired and appreciated
- An industry consortium decides they need an open, standard, free way to do $WHATEVER
- Some people have a political motivation to undermine proprietary software (we may not have that same motivation; but it is a real driving force for some people)
- Some people like to help others (ditto)
- Your company might want to make your product universally (or nearly so) used in order to be able to charge money for training, certification, etc.
- I mentioned 15 high-profile products that are competitive with best-of-breed and are available for $0 (and not all of it is Free as in speech). All of them were written because one of the above bullet points (or one I forgot) applied.
There are lots of motivations for people's actions besides money.
-
I'd killed Java
-
Re:I think the world has finally left me behind
-
Re:Java is not back
SUN has done an amazing job in extending Java even to include generics without breaking backwards compatability. Yes it did not lead to the solution that is technically and internally the most efficient (it would have required changes to the JVM), but the developer is not affected. Internally it is solved by typecasts, but who cares?
I care. To me, Java has two arguments in its favor vs Python: execution speed and jobs available.
The former is being eroded. Really, the only application I can think of where Python's execution speed worries me is for a 3D engine I'd like to do. But with psyco, I found that the Python version of lesson 10 of the nehe opengl tutorial gets 140 frames-per-second to Java's/LWJGL's 180 (though not 'out of the box', I had to level the playing field by turning on the same opengl features for both versions). I'm still leaning slightly towards Java for this project, as I wonder that the performance gap won't become more pronounced with a real game engine that does more than just feed polygons to my graphics card.
As for jobs, I'm deciding whether I would really want another Java job. Java's not fun for me, but I digress.
Getting back to Sun, they broke backward compatibility from 1.3 to 1.4 for assertions. Why did they not do the same for generics when it would have improved performance? You'd think they would have, since there have been stories circulating of
.NET's superior performance (true or not). I think generics were rushed into Java to compete with C#. The JVM was left alone, not to preserve backward compatibility (which Sun has broken before), but because there was no time to add this feature and still ship Java 1.5 in a short enough time-frame to preserve Java's waning mind-share.".NET is years behind and plans to bring similar features only in 2007 (generics)."
Incorrect. C# has generics right now.
Also, I like that C# can allocate stuff on the stack and allows 'unsafe' code to use pointer arithmetic. These are all boons to performance, and performance is why you use C# or Java (buzzword-compliance notwithstanding). If you want to innovate or be spookily productive you use something else.
-
Re:I think the world has finally left me behind
Jeez, how many times am I going to see this claim repeated over and over? Perl and Python ARE NOT INTERPRETED LANGUAGES! They both compile to a bytecode (intermediate) language which is then interpreted, just like Java/C#, and thus share the same advantages you mentioned. Python I know was a bytecode compiled language from its very beginning, it was never an interpreted language, and Python at least has Psycho, which is a kind of just-in-time compiler for Python bytecode, which can convert a lot of Python code (but not all) into native x86 instructions.
Care to provide some links? From what I can find, Python is interpreted, Perl is interpreted, and Ruby is interpreted. Now perhaps they mean something different when they things like, "Ruby is the interpreted scripting language," or, "Python is an interpreted, interactive, object-oriented programming language," but to me that says "interpreted". That the interpreter may JIT compile the script into a faster bytecode during runtime does not necessarily make the languages non-interpreted. Java and C# need to be explicitly compiled. Python, Perl, and Ruby do not.
So, care to back up your statements?
-
Re:what is PG's fascination with Python?
- How do you create anonymous functions and pass them as variables in Python? You can't, only "lambda *expressions*" which is a strange and arbitrary distinction.
repeat after me, "python documentation is my best fiend
... ".You can read all about lambda expressions in the Tutorial section, 4.7.5 Lambda Forms. They have been around at least since '99. In fact if I dig out my trusty copy of Learning Python, Mark Lutz, 1st Ed., 1999, Oreilly Press, I find that if I turn to page 111 - 113 I can read that:
... Python also provides an expresson form that generates function objects. Because of it's similarity to a tool in the LISP Language. It's called lambda. It's general form is the keyword lambda, followed by one or more arguments, followed by an expression after a colon:
- lambda argument 1, argument N : expression using argument
So python does have lambda expression capability. However you maybe making a point similiar to PG in that Python is not as useful as Lisp as outlined in Beating the Averages and Sussinctness is power.
-
Re:what is PG's fascination with Python?
- How do you create anonymous functions and pass them as variables in Python? You can't, only "lambda *expressions*" which is a strange and arbitrary distinction.
repeat after me, "python documentation is my best fiend
... ".You can read all about lambda expressions in the Tutorial section, 4.7.5 Lambda Forms. They have been around at least since '99. In fact if I dig out my trusty copy of Learning Python, Mark Lutz, 1st Ed., 1999, Oreilly Press, I find that if I turn to page 111 - 113 I can read that:
... Python also provides an expresson form that generates function objects. Because of it's similarity to a tool in the LISP Language. It's called lambda. It's general form is the keyword lambda, followed by one or more arguments, followed by an expression after a colon:
- lambda argument 1, argument N : expression using argument
So python does have lambda expression capability. However you maybe making a point similiar to PG in that Python is not as useful as Lisp as outlined in Beating the Averages and Sussinctness is power.
-
Re:Python vs Java
Python, on the other hand, simply works. Sure, it doesn't have a standard GUI toolkit (although wxPython is pretty much the de facto standard now...), but it does everything I need it to do.
Actually, it's Tkinter, if only because it has been packaged with Python for a long time (since the beginning?). However, wxPython is very popular, and tends to look much better cross-platform as it uses native controls. -
Re:Java programmer's viewpointUntil there is an IDE for Python that's as extensive, capable and sophisticated as Eclipse I'm going to stay with Java.
Actually, you can use Eclipse as an IDE for Python: http://www.python.org/cgi-bin/moinmoin/EclipsePyth onIntegration.
And why choose between Java and Python when you can have both? -
Python's rexec disabled
One of my favorite thing about postgres is it's support of plpythonu (python stored procedures)
....Do you have them working at the moment? Last time I checked, the whole python side of postgres's stored procedures was broken (at least with recent python releases) due to Python's rexec module being disabled for security concerns.
Looking at the current online Python documentation, it appears that the latest python release still has rexec disabled.
I guess you could hack around this as long as you trust the code that you're going to be running, but it seems a bit ugly. Fortunately I'm happy enough with plpgsql for the stored procedures that I write.
-
Re:Other optionsDon't forget Wing IDE -- probably the most advanced Python IDE out there. Doesn't have Komodo's level of support for non-Python (it's a Python-specific IDE) but worth a look.
See also this list of Python IDEs (much more complete).
-
Re:Java
Untrue. Checked execeptions and strong typing are two features that Java has over Python, for example, which aid maintainability.
Checked exceptions are up for debate, though personally I think they are nice. Strong typing on the other hand - Python actually has strong typing, it just doesn't have static typing.
A major maintainability point that python is hopefully getting soon is Design by Contract. I blieve there are some packages that let you add it in to Java of course, but it's not in the standard package.
Jedidiah -
Re:Has anyone noticed?
if { ($_language->over::punctuated); }
import python
}; -
Re:XHTML and XML??
Why should we need a semi-colon to end a statement. The line feed should be enough.
Why should we need a closing brace. Cannot the compier SEE that it is the end of a block simply because the indenting is different?
Here you go: Python!
/me unable to resist the temptation
-
Re:Why should "cross platform" always mean Java/.NThis is pure ignorance. The differences between programming languages and scripting languages are completely in the eyes of the developer. Python has excellent tools for developing solid applications which perform well and make use of libraries normally associate with C/C++ applications:
- A large standard library that rivals "programming" languages like Java
- Hooks into popular interface libraries
- for developing GUI applications
- A JIT optimizing compiler for speeding up interpreted bytecode to near-directly compiled code speeds
- Great support for regression/unit testing by allowing "main" functions to be used in every script/class file in large projects
In short, Python can do pretty much anything Java or Mono is likely able to do. In addition, it's faster and easier to code in than most "programming" languages, largely due to dynamic variable typing.
For developer friendliness Mono and Java are a step up from C/C++, but languages like Python (and probably Ruby, though I haven't used it) have potential to be even more.
-
Re:Goodbye Perl?
-
Re:Similar piece of tech...
The BDFL is working for Microsoft?!? NO!!!!
(You mean there are other Guidos?) -
Re:Pseudocode for accomplishing this
Not a compiler (yet), but you can get a pseudocode interpreter here.
-
Re:Going the way of the dinosaurs
Open source can change some of those things, but as far as hardware goes you still need someone willing to put up considerable amounts of money for manufacturing.
Let me provide some suggestions. I work with F/OSS development for network security and wireless applications, and have spent a few years working with low-cost embedded systems that support Linux. With a Linux kernel and OS in a small box, there's not much you can't do per amateur/wireless development.
My current favorite foundation is:
o RouterBoard from Mikrotik of Latvia. Pentium 233/266 performance, very low cost ($300ish), dual PCMCIA slots, dual Ethernet (in one of the two models), microPCI slot (wonderful!), and compactflash slot. Hardware watchdog and other goodies built in are things normally found on much more expensive embedded system boards.
o IBM/Hitachi Microdrive: My base development systems runs with a 1 GB Microdrive with Debian on it, though I've got a 4 GB setup with Gentoo and use the 370 MB version for production loads. Routerboard has a Debian developers kit available for download on the site, including watchdog control. Avoid compactflash/CF (Microdrive fits the CF profile but is an actual spinning device) unless you're certain you're going to have minimal writes over time, as they will eventually cease to write and become somewhat worthless (in my experience, low-write use lasts about one year).
o Debian or Gentoo for development environment: there are some embedded distributions out there but they're intended for when you're ready to reduce to your final low-profile image. Both these distros give you a good amount of control over what is going into your system. Embedded Gentoo will be nice eventually (with cross-compile support) but isn't there yet.
o Python: Not to start any language wars (or distro wars per above), but Python is a great place for amateur developers to work in. Frameworks like Twisted allow you to focus on your code and build upon the networking smarts of others. I haven't tried yet, but I keep eyeballing Shtoom for an amateur project as well.
*scoove* -
Re:php-embed
Just on a guess, I'd say there are a lot more PHP developers out there than Lua or Ruby developers (though Lua looks pretty cool). Besides, Ruby developers are all just ex-Pythoneers who thought Python was becoming too popular, and don't really count as developers anyway
;>) -
Crossplatform Opensource VoIP 100% Python - Shtoom
Shtoom is a 100% VoIP implementation in Python.
It rocks. Homepage of Shtoom, Shtoom is a open-source, cross-platform VoIP softphone, implemented in Python. As well as the basic phone, there are many other services. PyCon Paper on Shtoom. -
Re:From an ocaml convert:
I imagine a variant of O'Caml language based on camlp4 that puts regular expression matching in syntactic sugar will make it very suitable for scripting.
In fact, I itch over this idea badly that I might do it. If I have the time. ;-)
Please do. I really like coding in Ocaml, but the constant double-escaping in regexps makes them a whole lot less useful than they could be. Having something similar to Python's raw strings might be helpful. -
Well, you mentioned Perl and PHP already...here comes another language, that starts with "P".
Python has already features like a simple HTTP server or asynchronous sockets library - built-in, portable (unix, win32, MacOS - no problem).
There are a few well known HTTP serving projects in Python (like this one), but the best thing in my opinion is Twisted - the framework of your internet, which features, among others, a 100% Python implementation of web server & ssh server/client. I strongly suggest anyone, who knows Python, to have a look at Twisted - many of ideas implemented there are logic and clean, it's a good programming lesson for sure.
Have fun!
-
Well, you mentioned Perl and PHP already...here comes another language, that starts with "P".
Python has already features like a simple HTTP server or asynchronous sockets library - built-in, portable (unix, win32, MacOS - no problem).
There are a few well known HTTP serving projects in Python (like this one), but the best thing in my opinion is Twisted - the framework of your internet, which features, among others, a 100% Python implementation of web server & ssh server/client. I strongly suggest anyone, who knows Python, to have a look at Twisted - many of ideas implemented there are logic and clean, it's a good programming lesson for sure.
Have fun!
-
Well, you mentioned Perl and PHP already...here comes another language, that starts with "P".
Python has already features like a simple HTTP server or asynchronous sockets library - built-in, portable (unix, win32, MacOS - no problem).
There are a few well known HTTP serving projects in Python (like this one), but the best thing in my opinion is Twisted - the framework of your internet, which features, among others, a 100% Python implementation of web server & ssh server/client. I strongly suggest anyone, who knows Python, to have a look at Twisted - many of ideas implemented there are logic and clean, it's a good programming lesson for sure.
Have fun!
-
Re:Um...Python?We're talking about performance. Pyrex implements a subset of Python that maintains all of Python's dynamicity. It runs at almost exactly the same performance as Python. You've never heard of it before today so don't bother arguing that it is "like" Python unless you are ready to argue that the differences are performance relevant.
The one difference that I have found is relevant is that if you add static type annotations to Pyrex you get Python-level speeds.
References:
1: http://www.prescod.net/python/pyrexopt/optimizati
o n.html2: http://mail.python.org/pipermail/python-list/1999
- April/001319.html (look for the words "interpreter" and "overhead") -
Re:Um...Python?We're talking about performance. Pyrex implements a subset of Python that maintains all of Python's dynamicity. It runs at almost exactly the same performance as Python. You've never heard of it before today so don't bother arguing that it is "like" Python unless you are ready to argue that the differences are performance relevant.
The one difference that I have found is relevant is that if you add static type annotations to Pyrex you get Python-level speeds.
References:
1: http://www.prescod.net/python/pyrexopt/optimizati
o n.html2: http://mail.python.org/pipermail/python-list/1999
- April/001319.html (look for the words "interpreter" and "overhead") -
Re:Um...Python?
That's great, and CPython (the C implementation of Python -- as opposed to Jython) can directly call C modules like Python modules. Optimize your modules in C that need the speed, write everythong else in Python.
see: http://docs.python.org/ext/intro.html for more on that.
On windows you can access COM components from Python.
By the way, did you know that Python is really OO with multiple inheritance (diamond-style class traversing added recently) and has hundreds of built-in libraries?
ultimately, stay with the UNIX philosophy. more here:
http://www.catb.org/~esr/writings/taoup/html/ch01s 06.html -
Re:What kind of talk is that???
you must be a python developer
-
Re:Oh my sweet Jesus...
I think the grandparent is not trying to say "2.99999..." repeating unto infinity, but rather e.g. 2.9999999999999999999981823, the kind of quantity that tends to pop up in FP arithmetic. As another poster noted, 3 can be represented exactly in FP, so it's a bad example. 3.3 would be better, which is 3.2999999999999998223643160599749535322189 as a double.
It's also wrong to say it's not deterministic. Of course it is; converting an integer to a float is a pure algorithm. I think what he meant is "I can't tell off the top of my head". :-)
On a related note, it looks like Python is about to get some Cowlishaw-style Decimal number types, which should help with some of these problems. -
Re:HTMLHTML is one of the hardest languages to learn, mainly due to the lack of widespread standardization.
Python is not too hard for anyone to learn. Perhaps some people just don't want to learn how to program (that seems to be the case in my family).
-
Re:Logo?
Having used Qbasic prior to logo, I hated logo. It was the most horrible programming experience I have ever had!
Try Python instead:
print 'Hello, World!'
And python can create much more advanced programs easily with it's "Batteries Included" philosiphy.
For a gui designer/ide try Boa Constrcutor.
For creating extension modules check out Pyrex A tip for Pyrex: If you're using windows use the free-of-charge Borland C compiler. -
Re:You got fooled!
Um, no, actually. It started off as a joke at the time, but since then Parrot has actually turned into a a real project which will run Perl 6 and, eventually, Python and other interpreted languages. (The Perl folks are in much more of a hurry to ditch their spaghetti Perl 5 VM, so that's priority #1.
:-P) But there's some strong rumblings in the Python community about the Python port in progress, there are quite a few references to JVM bytecode translation and a Scheme port, and I've seen unsubstantiated rumors of Ruby and PHP ports. True, the core Python community isn't planning a switch yet, but if someday down the road the standard Parrot distribution comes with a Python frontend, people might start flocking to it for the one-stop convenience. -
You got fooled!
The only official source for that was an April Fool's Day Press Release.
The Parrot implementors plan for it to be able to run Python, but the current Python implementors have no current plans to switch development from C to Parrot. -
Re:ps
In Python you can use tabnanny to avoid this.
I find the best fix is to just ban tab characters from files. That way there is no argument or confusion about how many spaces they are supposed to represent. N spaces is always N spaces.
Using only tabs and not spaces also kind-of works, but I think it is not such a good solution. Not everyone's favourite editor can be configured to treat tabs the right way. Spaces tend to creep in -- you can hardly avoid spaces altogether -- and so entropy increases. Code that makes sense indented with tabs shown as 2 spaces might look bad or wrong when someone changes it. I guess it does let you avoid agreeing on what size of indent to use but I am not sure that is a good thing. -
Trying to predict the next 2 years...Being regular Python user/fan, each news, which features Python makes me happy. How do you think, will Python become more and more popular in the next years? I think so.
- web development: Not only Zope and Plone, there's a lot of interesting development going on with Twisted... and, well, Twisted is not only about the web, it is about networking in general;
- .NET / Java development in general: Python in Java exists already... Java gaining more and more popularity? No problem, Python is already there.
.NET/Mono taking the market away from Java? The industry will perhaps support more and more .NET techniques - with IronPython (featured recently on /.), Python is already there. No problem; - some people might wonder if you really need that stinkin'
.NET/Java stuff at all - Python is already very portable, but that's not everything - it already supports a wide range of MacOS/Unix/win32-specific functionalities. - anything else makes you wonder, if Python is a good choice at all? What about realtime applications, like a VOIP phone (GUI included, win32/unix compatible) in Python? Do you read "interpreted" as "slow", do you wonder if Python is good enough to be useful in CPU-demanding programs like games? Anything else against it? Perhaps you're worried about Python's extensibility?
- if software telephony sucks for you, perhaps you should try a real mobile phone
;)