Future of C#

J

Jon Harrop

If Microsoft turn F# into a product and place it alongside C# and VB, will
many people migrate from C# to F#?
 
J

Jon Skeet [C# MVP]

If Microsoft turn F# into a product and place it alongside C# and VB, will
many people migrate from C# to F#?

My guess is not - people are too used to imperative languages. C# is
gradually becoming more functional, and I suspect that rate of change
will be enough for most people. There'd have to be a *really*
compelling reason to abandon the knowledge of C# and make everyone in
the team learn a completely new language, even one backed by the same
framework. (Learning a new language for fun is a different matter, of
course.)

I think there's plenty of room for all three, to be honest. Hopefully
we'll find out :)

Jon
 
T

Tom Porterfield

Jon said:
If Microsoft turn F# into a product and place it alongside C# and VB, will
many people migrate from C# to F#?

I agree with Jon Skeet, I don't see a mass switch to a new language. I
now have a heavy investment in C#, which meets the needs of the types of
programs that I write (also holds true for the company that I work for).
I could see adding F# to our library and using it where it makes
sense, but I don't see a complete switch to writing everything new
exclusively in F#.
 
J

Jon Harrop

Tom said:
I agree with Jon Skeet, I don't see a mass switch to a new language. I
now have a heavy investment in C#, which meets the needs of the types of
programs that I write (also holds true for the company that I work for).
I could see adding F# to our library and using it where it makes
sense, but I don't see a complete switch to writing everything new
exclusively in F#.

Yes, that's pretty much what I would predict. Legacy code written in C# will
almost certainly linger indefinitely but C# itself has so much momentum
that people will continue to program in it regardless of what else comes
out. I believe all mainstream languages have shown this to be true, often
to a surprising extent (e.g. Fortran).

I think this raises some interesting questions:

If few people will migrate from C# to F# then is it worth having a common
language run-time? I think it is still worthwhile because projects like F#
would require a massive investment of time and effort were it not for the
CLR and .NET but the sales pitch for easy interoperability seems greatly
diminished.

Even if users don't migrate their code from C# to a new language they might
still learn a new language and write at least some of their code in it. In
the case of F#, Microsoft's angle is largely that it is a language for
technical computing. Assuming that only a tiny minority of current .NET
users are using .NET for technical computing, presumably this will expand
the .NET user base to include a completely new breed of .NET user. What
effect will this have on .NET? Is there much scope for overlapping talents?

I have long thought that the web could be a much friendlier place for
technical users. After all, it was born from scientists wanting to share
their work. Currently, converting most scientific papers to a web friendly
form (with typeset mathematics and vector graphics) is prohibitively
difficult, so they remain just PDFs. Look at the ergonomics of Wikipedia's
typeset math, for example. However, I think the web has enormous potential
for helping to describe and teach mathematics, science and engineering.
Perhaps there is scope for leveraging the web capabilities of .NET with the
technical computing abilities of F#?

On a related note, is there much cross-over between C# programmers and VB
programmers? Is C# displacing VB or vice-versa?
 
C

Cor Ligthert[MVP]

Jon Harrop,

Are you writing about steam engine they where first too only for engineers.

Come to the world, Internet is not only for engineers anymore.

There is no turn over, C# is for those used with C derived languages. VB is
for those with Basic and probably Cobol expirience.

Probably there is a small minority switching just because of the shop they
are working in has a prefered language or otherwise because they cannot
understand the VB or in oposite C#.

Cor
 
G

Guest

Comments below:
I could see adding F# to our library and using it where it makes

Yes, that's pretty much what I would predict. Legacy code written in C# will
almost certainly linger indefinitely but C# itself has so much momentum
that people will continue to program in it regardless of what else comes
out. I believe all mainstream languages have shown this to be true, often
to a surprising extent (e.g. Fortran).

Perhaps our company hires the oddities, but we have many Fortran
programmers, but they (and I) have moved to the new tools as our customers
requirements have changed. I disagree with your implication that a single
piece of legacy code ties the developer to that language for his career. You
have to use the right tool for the given requirement.
....
On a related note, is there much cross-over between C# programmers and VB
programmers? Is C# displacing VB or vice-versa?

I'm the happy middle man who manages a group where the developers are free
to develop as they choose. Personally, I prefer C# (of those two languages)
but if I am assisting one that uses VB, I work with VB.
 
?

=?ISO-8859-1?Q?Arne_Vajh=F8j?=

Jon said:
If Microsoft turn F# into a product and place it alongside C# and VB, will
many people migrate from C# to F#?

Not likely.

There are dozens of languages (hundreds if we count the rarities).

Only a small part of those has seen widespread usage.

I can not imagine ML suddenly becoming popular (outside
of computer science classes).

Arne
 
?

=?ISO-8859-1?Q?Arne_Vajh=F8j?=

Jon said:
Even if users don't migrate their code from C# to a new language they might
still learn a new language and write at least some of their code in it.

Very few companies will be interested in developing some of their
stuff in a rare language.

It needs very good justification.
On a related note, is there much cross-over between C# programmers and VB
programmers? Is C# displacing VB or vice-versa?

My impression:
- not many switching from VB.NET to C# or the other way around
- about 2/3 of VB6/VBS people switching to C# and only 1/3 switching
to VB.NET

Arne
 
J

Jon Harrop

Arne said:
I can not imagine ML suddenly becoming popular (outside
of computer science classes).

Well, we have specialized in the industrial use of ML for the past three
years. Our client database shows customers in 32 countries spanning 6
continents, from startups to bluechip companies using ML for everything
from cancer research to aerospace engineering. So I can give a lot of hard
evidence to the contrary:

Microsoft already use ML to handle advertising on live.com (a billion dollar
market), for XBox player analysis, for driver verification and for many
internal projects. All of these projects are now either using or migrating
to F#. Intel already use ML for hardware verification. Several other major
players are among our customers, including Canon, Apple, Boeing, Philips,
Nokia, Lockheed-Martin and Sun Microsystems.

There are also many medium-size companies using it, like Wolfram Research
(the creators of Mathematica), MathWorks (the creators of Matlab) and
XenSource (recently sold for $500M).

But ML is particularly common among startups composed of talented
programmers because choosing a modern language gives them an edge over the
competition. Dozens of startups are among our customers.

While C# looks common, its use in industry extends little beyond web
programming. So I would say that use of ML is already far more widespread
and F# can only broaden its use.
 
J

Jon Harrop

Arne said:
Very few companies will be interested in developing some of their
stuff in a rare language.

These are the same companies that moved to the fledgling C# language?
It needs very good justification.

Yes. What justified a migration to C# when it was first released?
My impression:
- not many switching from VB.NET to C# or the other way around
- about 2/3 of VB6/VBS people switching to C# and only 1/3 switching
to VB.NET

Interesting, thanks. May I ask a different but related question: what
proportion of C#/VB programs interoperate with VB/C# programs? i.e. how
much is the common language run-time actually leveraged?

I find the CLR an interesting idea because there is no equivalent for the
other major platforms. My personal opinion is that its main benefit is in
making it easier for Microsoft to implement new languages for their
platform, rather than to ease the interoperability between different
languages that sit on top of the CLR (which is how it is often portrayed).
 
?

=?ISO-8859-1?Q?Arne_Vajh=F8j?=

Jon said:
These are the same companies that moved to the fledgling C# language?


Yes. What justified a migration to C# when it was first released?

It looked sufficiently similar to C++ and Java and has massive
support from Microsoft.
Interesting, thanks. May I ask a different but related question: what
proportion of C#/VB programs interoperate with VB/C# programs? i.e. how
much is the common language run-time actually leveraged?

My impression is that:
- most companies choose wither C# or VB.NET for their own code
- it is very common to use somebody elses code written in
another language
I find the CLR an interesting idea because there is no equivalent for the
other major platforms. My personal opinion is that its main benefit is in
making it easier for Microsoft to implement new languages for their
platform, rather than to ease the interoperability between different
languages that sit on top of the CLR (which is how it is often portrayed).

I thing that is more or less two sides of the same.

Same library/calling convention/naming/etc. across languages is seen
before .NET, but .NET is the first for object oriented languages
that I am aware of.

Arne
 
?

=?ISO-8859-1?Q?Arne_Vajh=F8j?=

Jon said:
Well, we have specialized in the industrial use of ML for the past three
years. Our client database shows customers in 32 countries spanning 6
continents, from startups to bluechip companies using ML for everything
from cancer research to aerospace engineering. So I can give a lot of hard
evidence to the contrary:

Good for you.
Microsoft already use ML to handle advertising on live.com (a billion dollar
market), for XBox player analysis, for driver verification and for many
internal projects. All of these projects are now either using or migrating
to F#. Intel already use ML for hardware verification. Several other major
players are among our customers, including Canon, Apple, Boeing, Philips,
Nokia, Lockheed-Martin and Sun Microsystems.

There are also many medium-size companies using it, like Wolfram Research
(the creators of Mathematica), MathWorks (the creators of Matlab) and
XenSource (recently sold for $500M).

But ML is particularly common among startups composed of talented
programmers because choosing a modern language gives them an edge over the
competition. Dozens of startups are among our customers.

While C# looks common, its use in industry extends little beyond web
programming. So I would say that use of ML is already far more widespread
and F# can only broaden its use.

Make a reality check.

Go to dice.com or another big job site and search for languages.

Dice.com now:
C# 7888 jobs
F# 1 job (OCAML finds 2, ML finds 50 but most of them are not this ML)

And belive me C# is used a lot beyond web apps.

Arne
 
J

Jon Harrop

Arne said:
Go to dice.com or another big job site and search for languages.

Dice.com now:
C# 7888 jobs
F# 1 job (OCAML finds 2, ML finds 50 but most of them are not this ML)

There are a dozen OCaml jobs within a mile of where I'm sitting, so that
clearly reflects upon "big job sites" and says nothing of how domain
specific C# currently is.
And belive me C# is used a lot beyond web apps.

Not according to the page you just cited:

C# jobs in last 30 days: 7481 hits
web xml asp: 5680 hits
sql ado: 5401 hits

So 72% web- and 68% database-related job offers.

This concurs with Google hits:

C#: 67M hits
C# web OR xml OR asp: 50M hits
C# sql OR ado: 12M hits

That's 75% web- and 18% database-related information.

So C# is clearly not in widespread use.

Interestingly, Java is in widespread use despite being almost identical and
it is used in many other fields including technical computing. I discovered
this when I started trying to use C# for scientific computing only to find
that it has very few libraries compared to more widespread languages like
Java and ML.

Specifically, I was looking for open source FFT implementations. In OCaml, I
found three robust and efficient implementations. In Java, I found 55
implementations of varying quality. In C#, I found no working
implementations whatsoever.

So we had to write our own. In fact, we even commercialized it:

http://www.ffconsultancy.com/products/signal_processing_net/?cs

The lack of libraries for C# outside web/database programming is a vicious
circle because people are highly unlikely to start using a language if they
must write everything from scratch themselves. So technical users will
choose languages that provide at least a basic level of functionality, like
a complex number implementation. C and OCaml are among the languages with
complex number implementations in their standard libraries.
 
?

=?ISO-8859-1?Q?Arne_Vajh=F8j?=

Jon said:
There are a dozen OCaml jobs within a mile of where I'm sitting, so that
clearly reflects upon "big job sites" and says nothing of how domain
specific C# currently is.

Noone claims that a job site has all jobs, but I see no reason to
why the C#/OCAML ratio should be different in th etotal than at a
big job site.
Not according to the page you just cited:

C# jobs in last 30 days: 7481 hits
web xml asp: 5680 hits
sql ado: 5401 hits

So 72% web- and 68% database-related job offers.

????

Neither ASP or ADO has anything to do with .NET.

ASP.NET and ADO.NET has something to do with .NET.

And there may be lots of ASP.NET and ADO.NET jobs
that does not involve C#.

So it seems as if you have searched on the wrong terms
and applied false logic on the irrelevant numbers.
This concurs with Google hits:

C#: 67M hits
C# web OR xml OR asp: 50M hits
C# sql OR ado: 12M hits

That's 75% web- and 18% database-related information.

So C# is clearly not in widespread use.

More or less the same as above applies.
The lack of libraries for C# outside web/database programming is a vicious
circle because people are highly unlikely to start using a language if they
must write everything from scratch themselves. So technical users will
choose languages that provide at least a basic level of functionality, like
a complex number implementation. C and OCaml are among the languages with
complex number implementations in their standard libraries.

I repeat: C# is widely used outside of ASP.NET.

And I don't think the complex support in C is that good.

Arne
 
N

Niu Kun

Noone claims that a job site has all jobs, but I see no reason to
why the C#/OCAML ratio should be different in th etotal than at a
big job site.
????

Neither ASP or ADO has anything to do with .NET.

ASP.NET and ADO.NET has something to do with .NET.

And there may be lots of ASP.NET and ADO.NET jobs
that does not involve C#.

So it seems as if you have searched on the wrong terms
and applied false logic on the irrelevant numbers.
More or less the same as above applies.


I repeat: C# is widely used outside of ASP.NET.

And I don't think the complex support in C is that good.

Arne

Yes. We have C/S system written in c#.
I think c# is easier to learn than framework provided by c++ like MFC etc.
 
J

Jon Harrop

Arne said:
Noone claims that a job site has all jobs, but I see no reason to
why the C#/OCAML ratio should be different in th etotal than at a
big job site.

Two main effects will make the correlation between jobs advertised on big
job sites and actual current usage highly non-linear:

1. Big job sites do not distribute their advertising budget in proportion to
language popularity because advertising to programmers of more common
languages is more cost effective.

2. Jobs reflect maintainance so older languages and harder-to-maintain
languages will have more jobs.

You can see just how big the non-linearity is by comparing market share per
language of different measures:

dice.com
Java: 17621
C: 19121
C++: 9008
C#: 7892
Perl: 5875
Python: 1220
Ruby: 597
Fortran: 143
Lisp: 30
OCaml: 2

TIOBE (search engine hits):
Java: 21.7%
C: 14.9%
C++: 9.94%
Perl: 5.42%
C#: 3.58%
Python: 3.03%
Ruby: 2.06%
Lisp: 0.633%
Fortran: 0.48%
OCaml: 0.082%

Usenet posts so far this year:
C#: 47921
C: 43841
Python: 39166
C++: 37898
Ruby: 37731
Java: 31335
Lisp: 16993
Perl: 16424
Fortran: 12938
OCaml: 5897

You can see that the correlation is highly non-linear just from the spread
of the numbers. The spread on the first figures was a factor of 8,811x from
Java to OCaml, TIOBE indicates a 265x but in terms of usenet posts it is
only 8x.

But can you guess why C# is so disproportionately represented in terms of
usenet posts? :)
????

Neither ASP or ADO has anything to do with .NET.

ASP.NET and ADO.NET has something to do with .NET.

And there may be lots of ASP.NET and ADO.NET jobs
that does not involve C#.

The search was for C# and one of the following, e.g. web, xml or asp.
So it seems as if you have searched on the wrong terms
and applied false logic on the irrelevant numbers.

The numbers are correct.
More or less the same as above applies.

Again, these results are accurate and they clearly show that C# is not in
widespread use.
I repeat: C# is widely used outside of ASP.NET.

I think the quantitative results put it best. We can argue if they
are "wide" or not forever.
And I don't think the complex support in C is that good.

Works well here.
 
J

Jon Skeet [C# MVP]

While C# looks common, its use in industry extends little beyond web
programming. So I would say that use of ML is already far more widespread
and F# can only broaden its use.

Just to clarify, are you seriously contending that there is more ML
development going on than C# development? More full time ML developers
than C# developers? More ML projects than C# projects?

If that's what you're claiming, I'm sure you're right in certain
sectors - but overall, globally? I think not.

Jon
 
J

Jon Harrop

Jon said:
Just to clarify, are you seriously contending that there is more ML
development going on than C# development?

My hypothesis is that C#'s use is very domain specific whereas ML is not. I
know that ML is not because I've been involved with such a broad range of
applications written in ML. I don't know about C# but everything I find
suggests that its use is web programming first, database programming second
and windows application programming a distant third with very little else.

That is not a surprising result because Microsoft would have identified
those domains as lucrative and built C# (well, the whole of .NET) to make
money from them.

Perhaps this is an unfair comparison because C# is a new language but ML is
a family of languages with a legacy dating back over 30 years. Even OCaml
is 11 years old now.

I'm certainly interested in the prospect of using .NET languages like C# for
technical computing but C# is currently the obscure language in that arena.
However, I think Microsoft would have to do relatively little work to make
C# much more attractive for technical users.
 
J

Jon Skeet [C# MVP]

Jon Harrop said:
My hypothesis is that C#'s use is very domain specific whereas ML is not. I
know that ML is not because I've been involved with such a broad range of
applications written in ML. I don't know about C# but everything I find
suggests that its use is web programming first, database programming second
and windows application programming a distant third with very little else.

Well, that encompasses a massive amount of the coding landscape. I
don't think of that as being "very domain specific". Furthermore, just
because those are its *primary* uses doesn't stop it from being used
elsewhere.

Would you say that C is very domain specific as well?
That is not a surprising result because Microsoft would have identified
those domains as lucrative and built C# (well, the whole of .NET) to make
money from them.

Given how you seem to think that C# is "not in widespread use" I don't
see how Microsoft program managers are justifying the amount of time
and effort they've put into it.
Perhaps this is an unfair comparison because C# is a new language but ML is
a family of languages with a legacy dating back over 30 years. Even OCaml
is 11 years old now.

I'd have expected it to become more mainstream in that time then,
wouldn't you?
I'm certainly interested in the prospect of using .NET languages like C# for
technical computing but C# is currently the obscure language in that arena.
However, I think Microsoft would have to do relatively little work to make
C# much more attractive for technical users.

The trick would be to do that without introducing more complexity than
it's worth for the vast majority of developers who aren't in that
field.


I notice that you didn't answer my question, however. I'll repeat it:
Are you seriously contending that there is more ML development going on
than C# development?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top