Groups | Blog | Home
all groups > dotnet general > april 2005 >

dotnet general : c# is a good way to learn c


Montrose...
4/5/2005 10:09:52 PM

After working in c# for a year, the only conclusion I can come to is
that I wish I knew c.

All I need is Linux, the gnu c compiler and I can do anything.

Web services are just open sockets hooked up to interfaces.

The Gtk is more than enough gui.
Bruce Wood
4/5/2005 10:47:04 PM
I worked for 15 years in C. Yes, you can do anything. The only hitch is
that you have to do it all yourself.

You'll never really know how much the .NET Framework is helping you
until you go into the C world and have to work without it... build all
of your tools yourself, from scratch. Believe me, you spend as much
time building "tool" classes as you do actually solving the problem at
hand. Yes, it can be entertaining at first, but after 10 years or so it
wears very, very thin.

Programming in C is kind of like driving a Volkswagon Beetle. Yes, Bugs
do have their charms, but perhaps it's just my age showing up that I
much prefer driving in C#'s comfy SUV where so much is handed to me on
a silver platter. :)
=?iso-8859-1?Q?Lin=F8nut?=
4/6/2005 6:34:47 AM
Bruce Wood poked his little head through the XP firewall and said:

[quoted text, click to view]

I've not found that. However, I did find that packing and unpacking a
structure fit to go around the network between Linux and Window was so
painful using C that I don't do that again.

[quoted text, click to view]

Except that C# is still basically a Microsoft-only thingie, though it is
gaining some traction in Linux thanks to Mono, as Tom will jump in to
clarify.

I still think C++ is the ultimate language. Enough rope to shoot off your
foot and then build a new one. <grin> Why jack off with Java when you can
get pure programming.

Flame on!

--
When all you have is a hammer, everything looks like a nail.
=?iso-8859-1?Q?Lin=F8nut?=
4/6/2005 6:39:00 AM
Olaf Baeyens poked his little head through the XP firewall and said:

[quoted text, click to view]

You're not a very experienced programmer, are you?

[quoted text, click to view]

Ahhh, you must be using a Microsoft compiler. Horrible error messages.
Many of them not comprehensible. Small errors yielding a tome of error
messages.

You want to see error messages that actually help you find the one true
error? Check out gcc/g++.

[quoted text, click to view]

I take back my first comment, but still do not understand why you think C is
unrewarding.

The Linux kernel is nothing but C, for example. Bare gtk+ is nothing but C.
Yet, from this apparently barren ground, you get a sea of software.

(I'm a C++ fanboy, by the way.)

--
When all you have is a hammer, everything looks like a nail.
=?iso-8859-1?Q?Lin=F8nut?=
4/6/2005 6:40:54 AM
Bob Powell [MVP] poked his little head through the XP firewall and said:

[quoted text, click to view]

And now you know why being called an MVP is absolutely, totally useless.

What does this guy think? That Win32 is coded in C#?

Next puppy I get, I'm going to call him "MVP". Here MVP! Fetch! Good boy!

--
When all you have is a hammer, everything looks like a nail.
slackbot
4/6/2005 7:23:36 AM
[quoted text, click to view]

Sometimes all you want is the piece of mind that is afforded by doing it yourself


--
tab
4/6/2005 7:55:42 AM
[quoted text, click to view]

That is funny. I have, at work, now beat C++ programmers, 4 times,
in getting the job done. And my solutions are still in place.
The C++ guys were finally layed off. They took to long to finish,
and spent all their time debating what is faster. I have now also
seen a C# guy kick the hell out of a C++ guy in building GUI's to
Databases. You know, the most common business stuff.

You must not be in the mainstream of coding, but a side application.
Incense & Peppermints
4/6/2005 8:55:00 AM
[quoted text, click to view]

If I were the IT director of a midsized startup with total fiat power I
would:

0. Eliminate all application servers
1. Ban all OO programing and only use structs in c
2. Implement the SOA
3. Hire only proficient c coders with CS degrees
4. Only run Linux
5. Do all windowed programming using the Gimp Toolkit ( gtk )
6. Be highly data dispersed; using a lot of XML instead of RDBMS where
possible.


Bill Butler
4/6/2005 10:25:21 AM

[quoted text, click to view]

*** News Flash ***
There is still a huge demand for Legacy software support.
And as a rule, legacy software is NOT written in the latest of languages ;^)

There is an ENORMOUS amount of legacy code out there that still needs
support.
Having a healthy knowledge of "Legacy languages" as well as "Hot Languages"
can only make you MORE attractive in your field.

The important thing in using legacy languages is to code like it is a modern
language.
Object oriented C
Structured Cobol

Don't propagate spaghetti

My language of choice is C# and I use it whenever I can.
Unfortunately, many of my clients are Dotnet shy.

Bill

Thunderbolt & Lightfoot
4/6/2005 10:31:37 AM
[quoted text, click to view]

That's my sentiments exactly!

Most IT processing could be done with greater speed and efficiency and
use far less money and resources if it were done with efficient c code.


[quoted text, click to view]
Olaf Baeyens
4/6/2005 10:43:21 AM
[quoted text, click to view]
You can always start to learn it. :-)
But you will discover that it is not very rewarding to program in C, because
it take ages before you have something that actually works. And it is even
harder to keep up with the new technology to extend that C program. Very
time consuming.

And I do not talk about the ever strugle with the header files, search
paths, link errors, and a zillion of errors in your output screen because
you forgot a ';' and all the errors try to point you in the wrong direction.

But in my opinion, you should at least have tried C/C++. And you can indeed
program parts of the program that needs the higest performance. And you
should also try assembly language. This helps a lot to understand why some
functions are faster than other, and you can create even faster code in C if
you know how the processor works. Especialy in 2D loops, and why the 'true'
part of the if-then-els should contain the most used code than the else
part.

--
http://www.skyscan.be

=?iso-8859-1?Q?Lin=F8nut?=
4/6/2005 11:03:02 AM
tab poked his little head through the XP firewall and said:

[quoted text, click to view]

Big deal. They sound like doofuses. They problem don't even know how to
use the STL. You could probably beat them just as well if you used straight
C.

[quoted text, click to view]

I don't do GUIs at the moment. Other people do it here, using Qt.

[quoted text, click to view]

Nah, I just wrote the C++ socket library and an XDR packet library
implementation for our group, not to mention a unit test library, an NT
service base class, our audio library, a dictionary XML markup language library,
and a library of string, filename, and other odds and ends. All in C++.

Yeah, a side application, that's the right term.

There's more to programming than "kewl apps" and GUIs. In fact, the GUI
code is by far the easiest part of most applications.

--
When all you have is a hammer, everything looks like a nail.
=?iso-8859-1?Q?Lin=F8nut?=
4/6/2005 11:05:36 AM
Tom Shelton poked his little head through the XP firewall and said:

[quoted text, click to view]

That would be extremely difficult to prove. If I ever have to get some
significant experience with C#, I'll get back to you with my feelings on it.

--
When all you have is a hammer, everything looks like a nail.
=?iso-8859-1?Q?Lin=F8nut?=
4/6/2005 11:09:40 AM
Olaf Baeyens poked his little head through the XP firewall and said:

[quoted text, click to view]

What is CBuilder? If you mean C++ Builder by Borland, I disagree. It is
even worse than Visual C++ (unless you use only the compiler and stick to
true C++ without those stupid Borland extensions.)

[quoted text, click to view]

Oh, come off it. In gtk+, for example, that would be the work of a few
minutes, not a few weeks.

[quoted text, click to view]

Bullshit, pure and simple. Absolute bullshit. Although C# might be more
protective of fresh new coders who don't yet value their craft.

--
When all you have is a hammer, everything looks like a nail.
Bob Powell [MVP]
4/6/2005 11:13:37 AM
Thats a good idea. Learn C and make sure that you keep on using 20 year old
technologies. The job-market is too full anyway.

--
Bob Powell [MVP]
Visual C#, System.Drawing

Find great Windows Forms articles in Windows Forms Tips and Tricks
http://www.bobpowell.net/tipstricks.htm

Answer those GDI+ questions with the GDI+ FAQ
http://www.bobpowell.net/faqmain.htm

All new articles provide code in C# and VB.NET.
Subscribe to the RSS feeds provided and never miss a new article.





[quoted text, click to view]

linønut
4/6/2005 11:15:11 AM
Sean Hederman poked his little head through the XP firewall and said:

[quoted text, click to view]

You MVPs sure are a bunch of know-nothings, aren't you?

[quoted text, click to view]

Now, at last, a glimmer of sense. C isn't for everything, of course. Even
C++ isn't for everything. You probably want, say, Visual COBOL.

[quoted text, click to view]

Odd. I found C to be a breath of fresh air after having to endure the
limitations of the old-style Pascal. I've found C++ to be a renewed breath
of fresh air, with some incredible support libraries, whether open source or
closed source.

I'm not tied to one company's view of what a language should be.

At this stage in my career, C++ is easy.

I'm sure C# has some merit, but with C/C++ making it easy for me to code
cross-platform, I don't feel any compelling need to look at C#. I'll wait
until someone has a project that demands I use it.

--
When all you have is a hammer, everything looks like a nail.
=?iso-8859-1?Q?Lin=F8nut?=
4/6/2005 11:18:28 AM
Olaf Baeyens poked his little head through the XP firewall and said:

[quoted text, click to view]

Nor was I. Win32 is not C++, it is C.

[quoted text, click to view]

Sure, I agree.

[quoted text, click to view]

However, since I learned C first, and, while doing so, took great care to
develop pretty good habits in that language, C++ turned out to be a natural
progression for me.

As for being old, we'll come back to laugh at you for using C# when C++0x is
available, and you're a doddering old man like myself.

--
When all you have is a hammer, everything looks like a nail.
Greyfrog
4/6/2005 11:21:37 AM
Didn't know there was that much difference.
Thanks for the info. Was going to study C, but now I'll go to C#.
S Barringer
Olaf Baeyens
4/6/2005 11:37:31 AM
[quoted text, click to view]
But we need people that still understands C in order to port C to .NET way.
:-)

--
http://www.skyscan.be

Ku Karlovsky
4/6/2005 12:45:52 PM
Top-posting sig-quoting, "Bob Powell [MVP]"
[quoted text, click to view]

C is over 30 years old. It's Microsoft's versions of Windows that are
20 years old.

[quoted text, click to view]

Instead of a dime a dozen, we'll be able to purchase MVPs for 8 or 9
Joe Cole
4/6/2005 1:09:44 PM
C# and Java are for those opportunist wimps (those who did not major in
CS or did a 3 month VB course in Brooklyn) who are just happy to jump on
to the Dot Com craze. They are the reason why the commercial software
industry is loaded with inefficient bad code. I have more respect for
COBOL programmer than this bunch of gold-diggers. They would be the one
to jump ship if Microsoft or Sun comes up with the next-big-heap-of-junk.
[quoted text, click to view]
Ku Karlovsky
4/6/2005 1:11:53 PM
On Wed, 6 Apr 2005 15:50:27 +0200, "Sean Hederman"
[quoted text, click to view]

The thing is that nnybody, except those who are sick, will take
technical advice from an Outlook Express user. The thing is that OE
has no place, and certainly no place at all. I have to ask what you
Cor Ligthert
4/6/2005 1:58:37 PM
Bob,

[quoted text, click to view]
Not that it matters, I don't agree with you, there will in my opinion always
be needed to make things as drivers etc. Beside direct machine language is
in my opinion than C the best alternative. When you disagree please tell
than why, maybe do I have an old perception.

Cor

Olaf Baeyens
4/6/2005 2:03:24 PM
[quoted text, click to view]
It depends how you look at it. I am not a beginner. ;-)

[quoted text, click to view]
CBuilder is as bad as Visual C++.

[quoted text, click to view]
It is very rewarding if you want to impress your fellow C/C++ programmers
with your knowledge.

But it is not very rewarding if you have a deadline and must add new
features because they forgot to tell me. And I have to explain to the
customer that adding this one stupid button will take a few weeks. C/C++ in
it's current state just misses all the necessary building blocks needed to
have something functional in a day or 2. (compared to C#)

--
http://www.skyscan.be

Olaf Baeyens
4/6/2005 2:11:12 PM
[quoted text, click to view]
Actually he is right, not to delve too deep into C.
He is not referring to C++!

The problem is that if you learn C first then you will have to unlearn that
way of thinking and this is very hard to do.
But learn C++/C# first and then it is much easier to see why C is outdated
and hard to keep up with if your code library gets big and you do not have
to unlearn.

A programmer coming form school should not take too much effort in outdated
languages, because by the time he has a job the new languages will be far
more in demand than the older ones. Unless you want to specialize in a niche
to keep outdated software running. The C population is getting a lot of grey
heir, and are preparing for their pension. ;-) They are litteraly dying out.
:-)

---
http://www.skyscan.be

Olaf Baeyens
4/6/2005 2:13:33 PM
[quoted text, click to view]
This is true. At this moment and probably the next 5 years.

--
http://www.skyscan.be

idi_amin
4/6/2005 2:17:02 PM
Obviously you've never had to build applications for users who assume that
hitting a button more than once will "make the system go faster", or who
complain that your database app is kicking them out every 30 minutes
(screensaver), or who believe that "data entry" means printing out whats on
the screen, filling it out by hand, then giving it to "IT" so they can "put
it in the system".

All first-hand knowledge real life examples :^P
I agree with you that coding GUIs is a piece of cake these days, but
designing them is the real challenge. re: Lotus Notes client

[quoted text, click to view]
Tom Shelton
4/6/2005 3:37:55 PM
[quoted text, click to view]

No need... You've done my work for me. C# is being used on Linux as
well.

[quoted text, click to view]

Hmm... C# allows you do direct memory manipulation (a.k.a pointers).
There are definately places where you wouldn't want to use C#, for
example device drivers, but for most line of buisness applications C# is
a much more superior choice.

--
Sean Hederman
4/6/2005 3:50:27 PM
[quoted text, click to view]

Yes but the Linux kernel is also based on a 40-year old architecture, so I
suppose writing it in a 33-year old programming language makes a certain
sick kind of sense...

The thing is that C has it's place, but it's certainly not every place. If
you were to tell me that I should write business solutions using C, I'd have
to ask what you were smoking.

[quoted text, click to view]

For me it depends on how recently I used it. Memory has a way of fading the
frustration ;D

linønut
4/6/2005 5:46:33 PM
Tom Shelton poked his little head through the XP firewall and said:

[quoted text, click to view]

I don't buy that. Not at all. Not when C++ is so easy to use for an
experienced programmer.

[quoted text, click to view]

You never know.

[quoted text, click to view]

So what?

--
When all you have is a hammer, everything looks like a nail.
=?iso-8859-1?Q?Lin=F8nut?=
4/6/2005 5:48:34 PM
Thunderbolt & Lightfoot poked his little head through the XP firewall and said:

[quoted text, click to view]

So, what do we have here? A range of languages and a range of opinions.

Which is absolutely as it should be.

--
When all you have is a hammer, everything looks like a nail.
linønut
4/6/2005 6:03:34 PM
Sean Hederman poked his little head through the XP firewall and said:

[quoted text, click to view]

How many times do I need to point out that this is a simple humorous
followup string as configured in the configuration file of my newsreader:

set followup_string "%r poked his little head through the XP firewall and
said:\n"


[quoted text, click to view]

I understand the dates, my friend. It is the juxtaposition of assertions to
which I object:

1. The Linux kernel is not based on UNIX. It was written from scratch with
some knowledge of Minix. It has since acquired a few UNIX traits, but
most true UNIX guys still sneer at the Linux kernel.

2. The C used for Linux is, as far as I can tell, pretty much ISO C99 with
some GNU extensions. Unitl recently you could only use this C, gcc, to
compile the Linux kernel (now you can also use Intel's fine compiler.)
Since ISO C99 was ratified around 1999, and contains much more complexity
and features over the original C (which I first encountered only about 25
years ago), I would hardly say that Linux is written in a 33-year-old
programming language.

[quoted text, click to view]

They can do that. Nonetheless, when you develop for certain project (e.g.
the Linux kernel and the devices drivers) you *will* use C, and it
will be formatted using kernel coding conventions.

[quoted text, click to view]

For better or worse, it is essentially a Microsoft product. Microsoft is
being more reasonable about the openness of C# than Sun is about Java, and
there is one Linux C# project, and C# does have some 3rd party support, as I
understand it.

However, I am loath to give up the STL, for example.

[quoted text, click to view]

So is C++, which is what we use for our Windows users and servers.

--
When all you have is a hammer, everything looks like a nail.
=?iso-8859-1?Q?Lin=F8nut?=
4/6/2005 6:05:19 PM
Sean Hederman poked his little head through the XP firewall and said:

[quoted text, click to view]

http://thingy.apana.org.au/~fun/slrn/

Slrn for windows. It's a console app. Don't know how well it works on
Windows, but it is a big favorite on Linux.

--
When all you have is a hammer, everything looks like a nail.
Tom Shelton
4/6/2005 6:14:34 PM
[quoted text, click to view]

3 Words - Time To Market.

[quoted text, click to view]

Ok - but I doubt you ever will...

By the way, lets play name that language - what language was the
following code block written in (borrowed from MSDN):

public void MakeGreyUnsafeFaster ()
{
Point size = PixelSize;
LockBitmap();

for (int y = 0; y < size.Y; y++)
{
PixelData* pPixel = PixelAt(0, y);
for (int x = 0; x < size.X; x++)
{
byte value =
(byte) ((pPixel->red + pPixel->green + pPixel->blue) / 3);
pPixel->red = value;
pPixel->green = value;
pPixel->blue = value;
pPixel++;
}
}
UnlockBitmap();
}

Yep - that's C#. And what the! It's using pointers!

--
Tom Shelton
4/6/2005 7:55:32 PM
[quoted text, click to view]

I can attest to slrn working well on windows. I use it on both Linux
and windows. Love it...

--
Tom Shelton
4/6/2005 8:24:40 PM
[quoted text, click to view]

I think it has been born out by the fact that C++ is almost no where in
the development of inhouse line of buisness applications. Almost all of
those are VB or Java.

Don't get me wrong... I still like C++, though I haven't had much call to use
it in the last 3 or 4 years....

[quoted text, click to view]

Know you don't. But, there seems to be too much bias to make you ever
stop and look at it.

[quoted text, click to view]

Well, there seems to be this bias that C++ is the great and almighty
language because it allows direct memory manipulation... Well, other
then mutiple inheritance, I can't really think of much I can't do in C#
that I could do in C++. The difference is that I almost never have to
:) The only time I do stuff like the above is when I find that I can
create a faster implementation that way via profiling. In fact, the
above snippit of C# code is something like 400x faster then the
equivalent varifiable code.

C# is not the great baby sitter that Java is. That's one of the reasons
I like it - and have really liked Java.

--
Tom Shelton
4/6/2005 8:35:24 PM
[quoted text, click to view]

Most of which exist as native .NET components... And would never have
to be written in C# because they already exist. This is what I meant by
Time-To-Market. With C#, you spend more time worrying about the problem
then writting socket libraries and service base classes...

Sockets - System.Net and System.Net.Sockets
Service base class - System.ServiceProcess.ServiceBase (along with a
whole bunch of classes to support the manipulation of services).
Unit Testing - NUnit (not part of .NET properly, but it is a freely
available product written entirely in C#)
String - System.String, System.Text, System.Text.RegularExpressions
FileName - System.IO, System.IO.Path
XML stuff - System.XML. I'm not sure what your's does exactly, but I'm
sure there is something close or would be simpler to implement.

I'm not dissing you. I'm just pointing out that there is a reason that
VB and Java were more popular for buisness programming... Less bugs, and
less time to market.

[quoted text, click to view]

Actually, I disagree :) I have always like the non-gui parts the best.

--
American Pope
4/6/2005 9:03:16 PM
[quoted text, click to view]

Well...actually the real workhorses are all written in COBOL and RPG-III.

What c++, c#, java and VB fight over are the 15 percent 'glamour'
Sean Hederman
4/6/2005 11:24:44 PM
[quoted text, click to view]

Tried a couple of other newsreaders, didn't like them. Got any good
suggestions that run on Windows?

Sean Hederman
4/6/2005 11:36:42 PM
[quoted text, click to view]

Actually, I did major in CS.

[quoted text, click to view]

I thought the Dot Com craze was a joke, no sound business model. Similar to
why I'm leery of OSS, I just don't grok the long-term business model. I am
however intellectually honest enough to admit that I might be wrong.

[quoted text, click to view]

A bad programmer is bad no matter what tool they use. Getting all high and
mighty based on the fact that you use a specific language makes as much
sense as saying that you're brighter than Tsiolovsky because you can speak
English.

[quoted text, click to view]

Damn right I would! I use the best tool for the job, and don't get tied into
some religious close-minded denial of all other possibilities. Somebody
comes out with a tool that lets me write the programs my customers want and
that's better than my current tools, of course I'd switch. I'd be an idiot
not to.

Here's a hint, sticking with a constant strategy despite changing conditions
is bad idea in nature, in life, and in programming.

[quoted text, click to view]

Gerry Hickman
4/6/2005 11:46:05 PM
Hi Sean,

[quoted text, click to view]

I've used Mozilla for years (currently 1.8b), I have OE on a test box at
work, but there's no comparison for NNTP and email. The nice thing with
Mozilla, is also that you can browse the web safely and without pop-ups
and adverts and ActiveX. The pop-up blocking is much more intelligent
than Microsoft's and it deals with things like Flash in a much more
intuitive way - with Microsoft, it downloads the whole plug-in BEFORE it
askes if you want to install it and often the user doesn't know what it
is or why they're being asked. In Mozilla you just get a square and can
choose to enable it (if you want to view the ad) or just leave it as a
square and get on with the real browsing. The email rendering pane is
also superior to Outlook 2003 in the way it deals with things like HTML
mail, and it's also safer as it has no ActiveX attack surface.

The other nice thing with Mozilla is that it's open source, so if you
need to fix a bug or "enhance" the product, it's just a case of changing
a few lines of code - no need to wait the the mythical "next version"
like wot you do with Microsoft. It also handles CSS2 whereas Microsoft
does not. It also runs on more operating systems than wot Microsoft's
can run on.

--
billwg
4/7/2005 12:00:00 AM
[quoted text, click to view]
C++ is wonderful for native Windows code, nut, but you better get .NET
if you want to be relevant next week! Being philosophic about linux and
Windows and even languages is fine for argument, but if you want to keep
up with the wave, you have to surf and today that means .NET and that
really means C# or VB.Net. So if you have to walk the plank, which one
do you choose?

Sean Hederman
4/7/2005 12:00:00 AM
[quoted text, click to view]

Ah, finally a real argument. The Linux kernel is very similar in
architecture to UNIX, and very dissimilar to Minix (see the Tanenbaum/Linus
flamefest). It uses the same fork() copy that made sense on a PDP-7, but
doesn't really in this day and age. The same file-based security system
(hacked up a bit but still recognisable) that is so coarse-grained and
inflexible. I wasn't asserting that Linux was *completely* copied from UNIX,
but the architecture is pretty much the same. About the biggest shift away
from the traditional UNIX architecture is the vastly improved modularity.

[quoted text, click to view]

So by that argument a programming language is as old as it's most recent
incarnation? Okay.

[quoted text, click to view]

Naturally, I never said otherwise.

[quoted text, click to view]

The upcoming version of .NET has an STL-like library called STL.NET.
Needless to say it has to be somewhat different because of the differences
between generics and templates.

[quoted text, click to view]

Since they're Windows (and by implication Windows-only, since that was my
implication) users why exactly are you using a language that means a
guaranteed slower development and guaranteed more bugs? To me, it just
doesn't make sense. C++ has it's place, but standard Windows business apps
are not one of them.

Thomas Edison
4/7/2005 12:00:00 AM
[quoted text, click to view]

On Windows, I'd recommend 40tude Dialog: <http://www.40tude.com/dialog/>.
Sean Hederman
4/7/2005 12:00:48 AM
[quoted text, click to view]

Sorry, which XP firewall is that? Did you get my firewall make from my
message header? How do you do that? Oh, right, you can't.

[quoted text, click to view]

Can't speak for the MVPs, since I'm not one. Here's a hint: if you're going
to back out of an argument by hiding behind an ad-hominem attack, make sure
that the attacks on the mark.

http://en.wikipedia.org/wiki/C_programming_language - C is 33 years old.
http://en.wikipedia.org/wiki/Unix - Unix is 35 years old. Sorry about that,
I accidentally used the Multics date.

[quoted text, click to view]

No thanks. I'd rather stick with C# and C++, they seem to fit all my needs
right now.

[quoted text, click to view]

Agreed. I much prefer the C family to Pascal.

[quoted text, click to view]

Fine, all I'm trying te get across is that C# is even easier, and without a
major reduction in the possible solution domain.

[quoted text, click to view]

If cross-platform is the main requirement, then yes, I'd agree. Either C++
or Java would be my choice in that situation too. However, right now my
customers are Windows users and .NET is a logical choice.

AddThis Social Bookmark Button