> programmer, but he claims that the install, config, and > library models for C# have proved to be less > problematic than Python. So both his courses (intro, > data structs, algorithms) are taught in C#.
A little anecdotal comparison from some of my experience with two web apps deployed at my current company: One web app, written in C#/ASP.net one written in Python. Moved each app to new servers (C#/ASP.net on a new Windows box, Python app on a shiny new Debian box). C#/ASP.net app: had to find and install the right version of the .net libraries. That's an afternoon of my life I won't get back. Python app: copied my app C#/ASP.net app: couldn't find VS2003 (in which the app had been written) any more so had to upgrade to VS2005. Python app: Continued to use the same development environment. C#/ASP.net app: (ASP specific) generally requires following a particular convention. Writing a RESTful web app is next to impossible given the reliance on the postbacks; and the server environment doesn't make it easy to make clean URLs Python app: Django makes web-app development easy and clean/RESTful (other frameworks may as well...I speak from Django experience) and push you to Do The Right Thing (tm) C#/ASP.net app: had to re-partition my server containers so that it could deploy .Net 2.0 and .Net 3.0 apps side-by-side Python app: I've had Python 2.3, 2.4 and 2.5 running on the same machine without a thought C#/ASP.net app: libraries are often written to a particular framework version, so if any new functionality requires the new version the whole app needs to be migrated. Python app: most of the libraries I use come built in, or they work with 2.3 or later. C#/ASP.net app: Installing new libraries, same as upgrading currently-used libraries. Usually requires paying for, then manually installing various libraries, clearing distribution rights, etc. Python app: There are an abundance libraries that are just an apt-get away in terms of difficulty, and they are Free Software so I can install them and deploy them without additional costs. C#/ASP.net app: 3rd party libraries usually come as source-less DLLs that you can't peer into Python app: 3rd party libraries are usually pure python which you can modify or step into as needed C#/ASP.net app: really only works well on Windows Python app: works well on Windows, Linux, BSD, Mac OS X... C#/ASP.net app: really requires Visual Studio Python app: works well with Eclipse, Vim, Emacs, Wing IDE, Komodo, Idle, and piles of other development environments. Heck, I've written the occasional python program using "ed" or "cat > x.py". C#/ASP.net app: files are scattered all over. You've got source apps, you've got templates, you've got resource files, you've got GUID files. And VS hides the complexity so when (not "if") something breaks you get a crash course in what goes on under the covers. Python app: I've got .py files (and sometimes templates for my Django code, and could have I18N files for translations). Very easy to track down where everything is. C#/ASP.net app: Code/syntax is horridly opaque, requires braces and lots of additional overhead code to get things done. Compare the clutter of a basic C# script with a similarly function Python script. How much is pure syntactic overhead? Python app: Code/syntax is rather easy to read (once you understand list comprehensions and the __foo__ methods) Yeah, I'd take Python any day...for implementation *OR* for teaching someone how to program. -tkc -- http://mail.python.org/mailman/listinfo/python-list