Community Sites
Create your own community website and start earning today !
It's Free !
 
Communities Members BookmarksPolls Fresher Jobs Funny Pictures MCA Projects New Member FAQ  



My Profile
Active Members
TodayLast 7 Days more...



Awards & Gifts
Online Exams

Fresher Jobs


Our fresher job section is exclusively for fresh graduates! Find jobs for freshers in major Indian cities including Bangalore, Chennai, Hyderabad, Pune or Kochi

Resources


Find educational articles, blogs, discussion threads and other resources.

Colleges


Find details about any college in India or search for courses.

website counter



Introducing C# and the .NET Framework


Posted Date: 24 Mar 2008    Resource Type: Articles/Knowledge Sharing    Category: Placement Papers

Posted By: ramya       Member Level: Gold
Rating:     Points: 5




C# is a programming language from Microsoft designed specifically to target the .NET Framework. Microsoft’s .NET Framework is a runtime environment and
class library that dramatically simplifies the development and deployment of
modern, component-based applications.

When the .NET Framework and C# language compiler were shipped in final form
in January 2002, both the platform and programming language had already
garnered much industry attention and widespread use among Microsoft-centric
early adopters. Why this level of success? Certainly, the C# language and the .
NET Framework address many of the technical challenges facing modern devel-
opers as they strive to develop increasingly complex distributed systems with ever-shrinking schedules and team sizes.

However, in addition to its technical merits, one of the main reasons for the
success that the language and platform has enjoyed thus far is the unprecedented
degree of openness that Microsoft has shown. From July 2000 to January 2002,
the .NET Framework underwent an extensive public beta that allowed tens of
thousands of developers to “kick the tires” of the programming environment. This
allowed Microsoft to both solicit and react to developer community feedback
before finalizing the new platform.

Additionally, the key specifications for both the language and the platform have
been published, reviewed, and ratified by an international standards organization
called the European Computer Manufacturers Association (ECMA). These stan-
dardization efforts have led to multiple third-party initiatives that bring the C#
language and the .NET platform to non-Microsoft environments. They have also
prompted renewed interest among academics in the use of Microsoft technologies
as teaching and research vehicles.

Lastly, although the language and platform are shiny and new, the foundations for
the C# language and the .NET Framework have been years in the making,
reaching back more than half a decade. Understanding where the language and
platform have come from gives us a better understanding of where they are
headed.

The C# Language

Reports of a new language from Microsoft first started surfacing in 1998. At that
time the language was called COOL, and was said to be very similar to Java.
Although Microsoft consistently denied the reports of the new language, rumors
persisted.

In June 2000, Microsoft ended the speculation by releasing the specifications for a
new language called C# (pronounced “see-sharp”). This was rapidly followed by
the release of a preview version of the .NET Framework SDK (which included a
C# compiler) at the July 2000 Professional Developer’s Conference (PDC) in
Orlando, Florida.

The new language was designed by Anders Hejlsberg (creator of Turbo Pascal and
architect of Delphi), Scott Wiltamuth, and Peter Golde. Described in the C#
Language Specification as a “...simple, modern, object-oriented, and type-safe
programming language derived from C and C++,” C# bears many syntactic simi-
larities to C++ and Java.

However, focusing on the syntactic similarities between C# and Java does the C#
language a disservice. Semantically, C# pushes the language-design envelope
substantially beyond where the Java language was circa 2001, and could right-
fully be viewed as the next step in the evolution of component-oriented
programming languages. While it is outside the scope of this book to perform a
detailed comparison between C# and Java, we urge interested readers to read the
widely cited article “A Comparative Overview of C# and Java,” by co-author Ben
Albahari, available at http://genamics.com/developer/csharp_comparative.htm.

Enabling Component-Based Development

Over the last 10 years, programming techniques such as object-oriented design,
interface-based programming, and component-based software have become ubiq-
uitous. However, programming language support for these constructs has always
lagged behind the current state-of-the-art best practices. As a result, developers
tend to either depend on programming conventions and custom code rather than
direct compiler and runtime support, or to not take advantage of the techniques at
all.

As an example, consider that C++ supported object orientation, but had no
formal concept of interfaces. C++ developers resorted to abstract base classes and
mix-in interfaces to simulate interface-based programming, and relied on external
component programming models such as COM or CORBA to provide the bene-
fits of component-based software.

While Java extended C++ to add language-level support for interfaces and pack-
ages (among other things), it too had very little language-level support for
building long-lived component-based systems (in which one needs to develop,
interconnect, deploy, and version components from various sources over an
extended period of time). This is not to say that the Java community hasn’t built
many such systems, but rather that these needs were addressed by programming
conventions and custom code: relying on naming conventions to identify common
design patterns such as properties and events, requiring external metadata for
deployment information, and developing custom class loaders to provide stronger
component versioning semantics.

By comparison, the C# language was designed from the ground up around the
assumption that modern systems are built using components. Consequently, C#
provides direct language support for common component constructs such as
properties, methods, and events (used by RAD tools to build applications out of
components, setting properties, responding to events, and wiring components
together via method calls). C# also allows developers to directly annotate and
extend a component’s type information to provide deployment, design, or
runtime support, integrate component versioning directly into the programming
model, and integrate XML-based documentation directly into C# source files. C#
also discards the C++ and COM approach of spreading source artifacts across
header files, implementation files, and type libraries in favor of a much simpler
source organization and component reuse model.

While this is by no means an exhaustive list, the enhancements in C# over Java
and C++ qualify it as the next major step in the evolution of component-based
development languages.

A Modern Object-Oriented Language

In addition to deeply integrated support for building component-based systems,
C# is also a fully capable object-oriented language, supporting all the common
concepts and abstractions that exist in languages such as C++ and Java.

As is expected of any modern object-oriented language, C# supports concepts
such as inheritance, encapsulation, polymorphism, and interface-based program-
ming. C# supports common C, C++, and Java language constructs such as
classes, structs, interfaces, and enums, as well as more novel constructs such as
delegates, which provide a type-safe equivalent to C/C++ function pointers, and
custom attributes, which allow annotation of code elements with additional
information.

In addition, C# incorporates features from C++ such as operator overloading,
user-defined conversions, true rectangular arrays, and pass-by-reference seman-
tics that are currently missing from Java.

Unlike most programming languages, C# has no runtime library of its own.
Instead, C# relies on the vast class library in the .NET Framework for all its
needs, including console I/O, network and file handling, collection data struc-
tures, and many other facilities. Implemented primarily in C# and spanning more
than a million lines of code, this class library served as an excellent torture-test
during the development cycle for both the C# language and the C# compiler.

The C# language strives to balance the need for consistency and efficiency. Some
object-oriented languages (such as Smalltalk) take the viewpoint that “everything
is an object.” This approach has the advantage that instances of primitive types
(such as integers) are first-class objects. However, it has the disadvantage of being
very inefficient. To avoid this overhead, other languages (such as Java) choose to
bifurcate the type system into primitives and everything else, leading to less over-
head, but also to a schism between primitive and user-defined types.

C# balances these two conflicting viewpoints by presenting a unified type system
in which all types (including primitive types) are derived from a common base
type, while simultaneously allowing for performance optimizations that allow
primitive types and simple user-defined types to be treated as raw memory, with
minimal overhead and increased efficiency




Responses


No responses found. Be the first to respond and make money from revenue sharing program.

Feedbacks      
Popular Tags   What are tags ?   Search Tags  
(No tags found.)

Post Feedback


This is a strictly moderated forum. Only approved messages will appear in the site. Please use 'Spell Check' in Google toolbar before you submit.
You must Sign In to post a response.
Next Resource: Introduction to ASP.Net
Previous Resource: Create Your Own Guestbook In ASP.NET
Return to Discussion Resource Index
Post New Resource
Category: Placement Papers


Post resources and earn money!
 
Related Resources

Watch TV Channels



Contact Us    Editors    Privacy Policy    Terms Of Use   

SpiderWorks Technologies Pvt Ltd. 2006 - 2007 All Rights Reserved.