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
 

Reply via email to