From: Larry Wall [mailto:[EMAIL PROTECTED]] > > Here's another article that talks about a lot of the things we > *should* be thinking. In fact, it's possible this article should > be required reading for anyone who aspires to be a Perl designer. > > http://windows.oreilly.com/news/hejlsberg_0800.html Here are my notes from the article on what C# offers: C# - multilingual - deep object-orientation - object-simplification - stays close to C++ in design: operators, keywords, statements, enums, operator overloading, type conversions, structure for name spaces - component oriented o first class language constructs: properties, methods, events, attributes (typed extensible metadata), documentation (XML) o everything as an object o boxing/unboxing: value <-> object conversion o only one kind of class (always GC'd) - code as embeddable self-describing self-contained unit: no headers, IDL's, GUID's, or complex interfaces - notion of safe/unsafe code o safe code > runs in managed 'boxes' > requires establishment of "trusts" to allow unsafe code exec o unsafe code > uses: C inline code, pointers, casts, protect memory from GC > runs in managed spaced, i.e., method calls can determine if object is live without crossing marshalling boundary - strong support for HTTPD, HTML, XML, COM (other MS glue), importing from existing shared libraries - modern mark and sweep GC: o closer relationship with code o code needs to be more descriptive: where and how memory utilized - The platform, language, and runtime o platform = .Net > can implement multiple programming languages > maintain common shared api's > unification of programming models > allows compilation of scripting languages > JVM != .Net IL (Intermediate Language) x can generate native or IL from source x can generate native from IL at install x can do just-in-time at runtime x no interpreters, one-pass conversion to machine code x IL is type neutral, type is inferred from arguments pushed on the stack o language = C# - Why C#? o C++ is too complicated o Java's missing features - No built-in regex (it in the base class libraries) - Namespace o separation between physical packaging and logical naming - Generic Programming possibly in future release o generics understood by underlying runtime o instantiation at runtime o no 'baking' types into instruction stream in the IL - C# submitted to ECMA for standardization - uses SOAP and XML for buidling distributed applications in a loosely connected stateless fashion. I.e., to overcome state dependencies in CORBA and RMI. - attributes o can add declaritive information to types and members > public/private > transactable > serializable as XML > web service o can be added to classes and fields within classes