John Salerno wrote: ... > Just one more quick question: I'm basically learning programming for > fun, and I'm concentrating on C# right now. Python seems interesting, > but I was wondering if I should even bother. Would it supplement C# in > any way, or can C# do everything Python can?
C# and Python are both Turing-complete (net of limitations to finite amounts of storage, in the real world), so of course "they can do" exactly the same things as each other in some pretty strong sense -- so can machine language, Fortran, ... Exactly because of this, this is hardly ever a sensible question to ask. It clearly can be more _convenient and practical_ to "do some thing" in C# than machine language, because C# is a higher-level language than machine language, which increases your productivity (this applies to most tasks, but for a few things, such as some interrupt-response routines in embedded systems, machine language can instead be vastly more practical and productive). Similarly, Python is a higher-level language than C#, which further increases your productivity (and again this applies to most tasks, but for a few lower-level things C# may in fact be more practical and productive). Besides considerations connected to the language themselves, similar issues (pushing the same way) apply to their implementations -- Python vs C# as well as C# vs machine language. As far as I know, to deploy C# applications you need a dotNet runtime (or perhaps a Mono runtime, if you find it robust enough for your purposes); with machine language you'd be restricted to a particular family of CPUs (or emulators thereof, such as VirtualPC to emulate intel CPUs under MacOSX with PowerPC CPUs). Similarly, with Python you can deploy on the same runtimes as you can with C# (using the IronPython implementation, which compiles Python to Microsoft CLR intermediate-code) -- but alternatively you can deploy to JVMs (with the Jython implementation), to a variety of architectures and OSs using a Python-dedicated runtime/VM (with the classic, CPython implementation), to some Nokia cellphones (Series 60 ones, I believe) using the Python runtime which Nokia has developed and released, one day to the Parrot VM, etc, etc... in practice, therefore, Python pervades more niches than C#, and thus offers more practical deployment options, just like C# is more pervasive and deployable than machine language. However, I believe the language-level (and therefore programmer-productivity) issue will be even more important in most cases. Alex -- http://mail.python.org/mailman/listinfo/python-list