up to date books?

aleaxit at gmail.com aleaxit at gmail.com
Thu Aug 18 17:40:05 EDT 2005


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




More information about the Python-list mailing list