Importance of C# (was Re: IronPython-0.6 is now available!)

Tor Iver Wilhelmsen tor.iver.wilhelmsen at broadpark.no
Sat Jul 31 05:24:57 EDT 2004


johng2001 at rediffmail.com (John) writes:

> OK! I am unaware of any. Can you point me to some.

Well, the one I "crashed" into was when I (by mistake) had compiled
Microsoft's free ASP.Net container (Cassini) using version 1.0 of the
framework, while my ASP.Net application was compiled using version 1.1
of the framework. The result was that the container complained that it
could not find the superclass for my page, since the 1.0 version of
System.Web.HttpApplication is *not* the 1.1 version of
System.Web.HttpApplication. It doid not even try to use it.

In Java, I *might* later have received a runtime exception about a
missing method, if I actually used a method that was too "new".

(The solution to the Cassini problem was to manually write an
application .config XML file that told it to use the 1.1 framework.
This config file is also where you define any dependencies to
particular versions of libraries; by default an application will use
the newest available.)

> Yes! Why do I have to list every jar file I use for the application in
> the classpath? Why can't I just drop them in the same folder with the
> app and expect the JVM to find them.

You can, if the jars are included in your "main jar"'s manifest's
Class-Path value, e.g.

Main-Class: some.Application
Class-Path: library.jar stuff.jar

Setting this up is, as in the case of .Net, a task for your IDE.

> Isn't that intuitive? Practically every VM language I know does
> that. Current folder had to be listed in explicitly in the current
> path.

For safety reasons: These are Unix people. You simply don't trust the
current directory.

> Is that intuitive? Every other language behaves the other way.

Er, "languages" don't behave in that way, executables do. Executables
look in your path environment variable, which the user need to keep up
to date; the Win2k family has moved the setting of that to a
relatively obscure location in the system properties dialog - not very
friendly.

.Net applications look in the "assembly cache", which also needs to be
kept "up to date". You can override dependencies using the "user
friendly" syntax described in 

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconTargetingNETFrameworkVersion.asp

> You are a Java developer and probably have used these IDE's over an
> extended period of time to no longer see the complexities within.

I've used JBuilder and JDeveloper almost exclusively; I never could
get my head around the "project-less" directory-focused and slow
NetBeans.

> To quote an example, we teach Java here. I was discouraged to
> introduce Eclipse (which is much simpler than the other Java IDEs and
> I loved it immediately after coming across it for the first time) to
> the students because it overwhelmed them. On the other hand, I would
> not even want to introduce C# without Visual Studio.

Because it hides the .Net complexities from the developer. Is that a
good thing?

> They seemed to compile Quake 2 fine.

How much of it ended up as unmanaged code? An application that runs
outside of the managed container is not a .Net application.



More information about the Python-list mailing list