Datasheet
1
Primer
WHAT’S IN THIS CHAPTER?
‰
Understanding strategies
‰
Reviewing Lambda calculus
‰
Infering types
‰
Understanding mutability
‰
Creating your own bindings
Object-oriented programming has been with us for close to two decades, if not longer; its
expressions of those concepts via the languages C# and Visual Basic, and the platform on
which they run, the CLR, have been more recent, only since 2002. The community and eco-
system around the object-oriented paradigm is vast, and the various traps and pitfalls around
an object-oriented way of thinking has seen copious discussion and experience, and where
disagreements occur, reasoned and heated debate. From its inception more than 40 years
ago, through its exploration in languages invented yesterday, an object-oriented approach to
languages has received the benefi t of the attention of some of the smartest language and tool
designers in the industry, and a highly permutational approach to ancillary features around
the language, such as garbage collection, strong-versus-weak typing, compilation-versus-inter-
pretation, and various hybrids thereof, full-fi delity metadata, parameterized types, and more;
no stone, it seems, remains unturned.
One of the principal goals of an object-oriented language is the establishment of user-defi ned
types (UDTs) that not only serve to capture the abstractions around the users’ domain, but
also the capability to reuse those types in a variety of different scenarios within the same
domain without modifi cation. Sometimes this domain is a business-fl avored one — at the start
of the 21
st
century these kinds of types were called business objects and later domain types.
Sometimes the domain is an infrastructural one, such as presentation or communication,
c01.indd 3c01.indd 3 10/1/2010 3:20:34 PM10/1/2010 3:20:34 PM