By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
448,803 Members | 1,570 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 448,803 IT Pros & Developers. It's quick & easy.

Future of C#

P: n/a

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

--
Dr Jon D Harrop, Flying Frog Consultancy
http://www.ffconsultancy.com/products/?u
Sep 27 '07 #1
Share this Question
Share on Google+
51 Replies


P: n/a
On Sep 27, 1:30 pm, Jon Harrop <j...@ffconsultancy.comwrote:
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

Sep 27 '07 #2

P: n/a
Jon Harrop,

Looks like you're getting slightly less blatant about your newsgroup
spam. Still spam though. :(

http://groups.google.com/groups/sear...cy&qt_s=Search

Isn't there an F# group you can use for promoting your F# services?
On Thu, 27 Sep 2007 13:30:58 +0100, Jon Harrop <jo*@ffconsultancy.com>
wrote:
>
If Microsoft turn F# into a product and place it alongside C# and VB, will
many people migrate from C# to F#?
------------------------------------------------------------
We're hiring! B-Line Medical is seeking .NET
Developers for exciting positions in medical product
development in MD/DC. Work with a variety of technologies
in a relaxed team environment. See ads on Dice.com.
Sep 27 '07 #3

P: n/a
Jon Harrop wrote:
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#.
--
Tom Porterfield
Sep 27 '07 #4

P: n/a
Tom Porterfield wrote:
Jon Harrop wrote:
>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#.
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?

--
Dr Jon D Harrop, Flying Frog Consultancy
http://www.ffconsultancy.com/products/?u
Sep 28 '07 #5

P: n/a
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

Sep 28 '07 #6

P: n/a
Comments below:
I could see adding F# to our library and using it where it makes
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).
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.
-
--
Dr Jon D Harrop, Flying Frog Consultancy
http://www.ffconsultancy.com/products/?u
Sep 29 '07 #7

P: n/a
Jon Harrop wrote:
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

Oct 3 '07 #8

P: n/a
Jon Harrop wrote:
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
Oct 3 '07 #9

P: n/a
Arne Vajh°j wrote:
Jon Harrop wrote:
>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.
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?
>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
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).

--
Dr Jon D Harrop, Flying Frog Consultancy
http://www.ffconsultancy.com/products/?u
Oct 3 '07 #10

P: n/a
Jon Harrop wrote:
Arne Vajh°j wrote:
>Jon Harrop wrote:
>>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.

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?
It looked sufficiently similar to C++ and Java and has massive
support from Microsoft.
>>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

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
Oct 4 '07 #11

P: n/a
Arne Vajh°j wrote:
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.

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/product...essing_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.

--
Dr Jon D Harrop, Flying Frog Consultancy
http://www.ffconsultancy.com/products/?u
Oct 4 '07 #12

P: n/a
Jon Harrop wrote:
Arne Vajh°j wrote:
>>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.
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.
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.
>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.
????

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
Oct 4 '07 #13

P: n/a
>
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.
Oct 4 '07 #14

P: n/a
On Oct 3, 8:13 pm, Jon Harrop <j...@ffconsultancy.comwrote:

<snip>
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

Oct 4 '07 #15

P: n/a
Jon Skeet [C# MVP] wrote:
On Oct 3, 8:13 pm, Jon Harrop <j...@ffconsultancy.comwrote:
>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?
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.

--
Dr Jon D Harrop, Flying Frog Consultancy
http://www.ffconsultancy.com/products/?u
Oct 4 '07 #16

P: n/a
Jon Harrop <jo*@ffconsultancy.comwrote:
Jon Skeet [C# MVP] wrote:
On Oct 3, 8:13 pm, Jon Harrop <j...@ffconsultancy.comwrote:
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?

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?

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
If replying to the group, please do not mail me too
Oct 4 '07 #17

P: n/a
My hypothesis is that C#'s use is very domain specific whereas ML is not.

C# is no more domain-specific than C or Java. It may be the most
general-purpose language I've ever used.
Oct 4 '07 #18

P: n/a
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.
Definitely not. I would say Windows application programming first, web
second, and database third. It is not at all a special-purpose or
restricted language.
Oct 4 '07 #19

P: n/a
Jon Harrop wrote:
Jon Skeet [C# MVP] wrote:
>On Oct 3, 8:13 pm, Jon Harrop <j...@ffconsultancy.comwrote:
>>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?

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.
You are very hard to follow.

None of the "categories" you mention are domains. I see C# used in many
domains.
I see C# used for:
* web apps
* GUI apps
* console apps
* daemons (windows service in MS terminology)
* embedded apps
which must the all the possible types of apps.

Database programming is a part of many apps across app types.
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.
And in my estimate 95% of IT people has not even heard about it.

Arne
Oct 5 '07 #20

P: n/a
Michael A. Covington wrote:
>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.

Definitely not. I would say Windows application programming first, web
second, and database third. It is not at all a special-purpose or
restricted language.
Right, that's just it. C# is a completely general purpose language yet it is
rarely used in bioinformatics, biology, physics, chemistry and engineering.

--
Dr Jon D Harrop, Flying Frog Consultancy
http://www.ffconsultancy.com/products/?u
Oct 5 '07 #21

P: n/a

"Jon Harrop" <jo*@ffconsultancy.comwrote in message
news:13*************@corp.supernews.com...
Michael A. Covington wrote:
>>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.

Definitely not. I would say Windows application programming first, web
second, and database third. It is not at all a special-purpose or
restricted language.

Right, that's just it. C# is a completely general purpose language yet it
is
rarely used in bioinformatics, biology, physics, chemistry and
engineering.
I am using it in computational linguistics research right now.
www.ai.uga.edu/caspr

By "is rarely used" do you mean "is not yet entrenched and traditional"? C#
just hasn't been around that long, and laboratory science is very
tradition-bound.

Is it bad just because it's new?
Oct 5 '07 #22

P: n/a
Jon Skeet [C# MVP] wrote:
Jon Harrop <jo*@ffconsultancy.comwrote:
>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.
Sure. Perhaps "domain specific" is not the best phrase but I can't think of
a better one.
Would you say that C is very domain specific as well?
C was used very broadly 15 years ago but it has been largely superceded by
other languages (primarily C++) in many areas now. In scientific computing,
many more people use C++ than C. I expect the same is true of completely
unrelated domains like Windows application development. Now, I would say
that C is primarily a glue language used in foreign function interfaces and
a systems language used to write OSs and drivers.

Java is probably the most widely used language that I am aware of. Every
application area that I come to, I find people are already using Java for
it.

You can see how narrow the use of C# is by looking at Google hits. Search
for a language and a technical keyword. For example, bioinformaticians
might search for "suffix tree" and their favourite language:

Java: 31,200
C++: 23,600
Lisp: 9,370
C#: 1,340
Haskell: 875
OCaml: 726
F#: 94

Anyone doing technical computing might want a "set union":

Java: 32,500
C++: 23,100
Lisp: 17,100
C#: 1,500
Haskell: 792
OCaml: 562
F#: 127

Yahoo gives similar results:

"suffix tree"
Java: 1,860
C++: 1,230
OCaml: 428
Lisp: 374
Haskell: 348
C#: 327
F#: 81

"set union"
Java: 3,290
C++: 1,850
Lisp: 921
Haskell: 488
C#: 341
OCaml: 152
F#: 98

As you can see, the market share for C# among technical users is tiny
compared to the market share for C# among web programmers.
>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.
Microsoft simply select the most lucrative subjects and work to dominate
them. They have absolutely no interest in working to get C# used in a wide
variety of different subjects.
>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?
Mainstream like Sudoku or mainstream like calculus?
>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 think they just need to add some basic libraries, like complex numbers.
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?
No, of course not.

--
Dr Jon D Harrop, Flying Frog Consultancy
http://www.ffconsultancy.com/products/?u
Oct 5 '07 #23

P: n/a
Michael A. Covington wrote:
I am using it in computational linguistics research right now.
www.ai.uga.edu/caspr
This is fascinating, thank you.
By "is rarely used" do you mean "is not yet entrenched and traditional"?
I suppose, yes. I was just very surprised to see such a large discrepancy
between C#'s total market share (where it is a major player) and its market
share among technical users (where it is a minor player).
C# just hasn't been around that long, and laboratory science is very
tradition-bound.
Yes. I think it will be very interesting to see if the uptake of F# among
technical users is faster.
Is it bad just because it's new?
On the contrary, I am surprised that C# is not more widely used. Among its
relatives, C# is an excellent language.

--
Dr Jon D Harrop, Flying Frog Consultancy
http://www.ffconsultancy.com/products/?u
Oct 5 '07 #24

P: n/a
Jon Harrop <jo*@ffconsultancy.comwrote:
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.

Sure. Perhaps "domain specific" is not the best phrase but I can't think of
a better one.
Would you say that C is very domain specific as well?

C was used very broadly 15 years ago but it has been largely superceded by
other languages (primarily C++) in many areas now. In scientific computing,
many more people use C++ than C. I expect the same is true of completely
unrelated domains like Windows application development. Now, I would say
that C is primarily a glue language used in foreign function interfaces and
a systems language used to write OSs and drivers.

Java is probably the most widely used language that I am aware of. Every
application area that I come to, I find people are already using Java for
it.

You can see how narrow the use of C# is by looking at Google hits. Search
for a language and a technical keyword. For example, bioinformaticians
might search for "suffix tree" and their favourite language:
<snip>
As you can see, the market share for C# among technical users is tiny
compared to the market share for C# among web programmers.
And yet in all but one of your results, C# comes above OCaml, which you
are claiming *is* widely used in these areas. Either the results aren't
reliable, or they're showing that even where C# is relatively rarely
used, it's used more often than OCaml. How does that fit with your
claim that OCaml is used more widely than C#?
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.

Microsoft simply select the most lucrative subjects and work to dominate
them. They have absolutely no interest in working to get C# used in a wide
variety of different subjects.
I think that's an overstatement, but I'd agree that they're primarily
interested in traditional business applications - and I think that's
entirely reasonable.
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?

Mainstream like Sudoku or mainstream like calculus?
Mainstream like "there are vast hordes of developers around, and it's
commonly used in the biggest development area - business".
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 think they just need to add some basic libraries, like complex numbers.
That wouldn't be a C# issue at all then - it's a .NET issue. Please
distinguish between platform and language.
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?

No, of course not.
Okay. Can you explain what on earth you meant when you said:

<quote>
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.
</quote>

To me, C# is more widespread because there's vastly more C# development
going on than ML development. I'm sure it's used in just about every
industry on the planet, to a greater or lesser extent.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
If replying to the group, please do not mail me too
Oct 5 '07 #25

P: n/a
Jon Skeet [C# MVP] wrote:
And yet in all but one of your results, C# comes above OCaml, which you
are claiming *is* widely used in these areas.
I was referring to the distribution of domains rather than the size of the
largest domain. Most general purpose languages are used uniformly across a
wide range of subjects but C# has a very skewed distribution with the vast
majority of its users in a small number of application domains.

Consequently, C# appears near the top for some results (web programming) but
the bottom for others (technical computing).
>Mainstream like Sudoku or mainstream like calculus?

Mainstream like "there are vast hordes of developers around, and it's
commonly used in the biggest development area - business".
Vast hordes of developers around where though? I've been an industral
programmer for several years now and I don't know a single C# programmer.
Okay. Can you explain what on earth you meant when you said:

<quote>
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.
</quote>

To me, C# is more widespread because there's vastly more C# development
going on than ML development.
To me, that is like saying that Sudoku is a widespread mathematical
technique because lots of people do Sudoku puzzles but calculus is an
obscure technique because only educated people know and use it.
I'm sure it's used in just about every industry on the planet, to a
greater or lesser extent.
I was only referring to the extent. C# is a dominant force in web
programming, database programming and windows application programming but
nothing else. Java seems to dominate everything.

--
Dr Jon D Harrop, Flying Frog Consultancy
http://www.ffconsultancy.com/products/?u
Oct 6 '07 #26

P: n/a
Vast hordes of developers around where though? I've been an industral
programmer for several years now and I don't know a single C# programmer.
I was only referring to the extent. C# is a dominant force in web
programming, database programming and windows application programming but
nothing else. Java seems to dominate everything.
But since you youself say - you don't know a single C# programmer, so
perhaps your analysis is itself flawed by being unfamiliar with where
C# *is* used?

To move this forward, can I suggest that rather than saying "nothing
else", you propose some actual areas where you think C# isn't used. I
suspect that you might be surprised to find that it is, in fact, used
there - but that in these smaller areas, the visibility is lower,
exactly as a consequence of these areas *being* smaller. I will
exclude areas like low-level device-drivers, because due to the
platform this is not a reasonable development area for .NET (nor
perhaps java?).

Marc
Oct 6 '07 #27

P: n/a
To me, that is like saying that Sudoku is a widespread mathematical
technique because lots of people do Sudoku puzzles but calculus is an
obscure technique because only educated people know and use it.
And your point? That sounds 100% correct to me. Let me explain; first
off, I have a 1st-class (hons) degree in Mathematics, so I do
understand calculus pretty well - however, in 8 years in industry
(business software, which is numerically the biggest employer) I have
used it exactly never [I have more commonly used some other math
areas, especially around graph/network theory, optimistation, etc].
I know that *in it's area* it is a very powerful tool, but it doesn't
address a problem that is common in the majority of developer's
experience. Hence it is *entirely* an obscure tool in the context of
the developer. I can't remember once being on this forum and reading a
question about integration techniques in C#. It is, however, very
common in a small niche area of developers (engineers in certain
fields, physicists, mathematical modellers, etc), and I have myself
read more than articles on such techniques in C# - but only in
dedicated arenas. Which this forum isn't.

Sudoku, however, appears in most newspapers.

One of the definitions for obscure is:
<q>known to few people: unknown to most people, e.g. because of being
hidden or remote</q>

That appears to (against the general population, or the developer
population) describe calculus very well. That statement, however, does
*nothing* to diminish the significance of calculus.

Marc

Oct 6 '07 #28

P: n/a
Jon Harrop <jo*@ffconsultancy.comwrote:
Jon Skeet [C# MVP] wrote:
And yet in all but one of your results, C# comes above OCaml, which you
are claiming *is* widely used in these areas.

I was referring to the distribution of domains rather than the size of the
largest domain. Most general purpose languages are used uniformly across a
wide range of subjects but C# has a very skewed distribution with the vast
majority of its users in a small number of application domains.
Well, that's not the common use of the phrase "widely used" or the word
"widespread". By your definition, HTML isn't widely used - it's almost
solely used for web development. Yet I'm sure if you asked people which
was more widely used, ML or HTML, *everyone* (except you, perhaps)
would say that HTML is more widely used.
Consequently, C# appears near the top for some results (web programming) but
the bottom for others (technical computing).
I don't see why that's a problem though.
Mainstream like Sudoku or mainstream like calculus?
Mainstream like "there are vast hordes of developers around, and it's
commonly used in the biggest development area - business".

Vast hordes of developers around where though? I've been an industral
programmer for several years now and I don't know a single C# programmer.
Ask recruitment agencies how many C# developers they've got on their
books, then ask how many ML developers they've got on their books. Ask
how many vacancies they've got for each. I'm sure you don't really
believe there are more ML developers than C# developers.

As for why you don't know any, I suspect that's due to the particular
areas of computing you've been working in - which are relatively
uncommon, compared with the *extremely* common areas of n-tier
development for business purposes.
Okay. Can you explain what on earth you meant when you said:

<quote>
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.
</quote>

To me, C# is more widespread because there's vastly more C# development
going on than ML development.

To me, that is like saying that Sudoku is a widespread mathematical
technique because lots of people do Sudoku puzzles but calculus is an
obscure technique because only educated people know and use it.
Sudoku isn't a mathematical technique - but it's a more widespread
mathematical exercise than calculus is, yes.
I'm sure it's used in just about every industry on the planet, to a
greater or lesser extent.

I was only referring to the extent. C# is a dominant force in web
programming, database programming and windows application programming but
nothing else.
Yes, and we all know how insignificant those three areas are, of
course.
Java seems to dominate everything.
Does Java dominate games programming? Device drivers? OS development?
RDBMS development (not as a plugin, but as the engine)? No. Native
languages still have the edge in all those fields.

I suspect that there are three major reasons why C# isn't more widely
used in scientific computing:

1) There aren't as many scientific libraries available for .NET as for
some other platforms. This is partly due to age.

2) Scientific computing is often performed on non-Windows boxes. While
Mono is a great project, I suspect it isn't fully trusted yet, and may
not be as well optimised as .NET itself.

3) Scientific computing often involves long projects, which may have
started (in one form or another) long before .NET came on the scene.
Java has a 7 year advantage over .NET.

Notice how none of these reasons are specific to C# - they're about the
..NET platform.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
If replying to the group, please do not mail me too
Oct 6 '07 #29

P: n/a
Marc Gravell wrote:
But since you youself say - you don't know a single C# programmer, so
perhaps your analysis is itself flawed by being unfamiliar with where
C# *is* used?
I think the results I presented were objective and not biased by my
background. So I have objectively identified where C# is and isn't used.
To move this forward, can I suggest that rather than saying "nothing
else", you propose some actual areas where you think C# isn't used. I
suspect that you might be surprised to find that it is, in fact, used
there - but that in these smaller areas, the visibility is lower,
exactly as a consequence of these areas *being* smaller. I will
exclude areas like low-level device-drivers, because due to the
platform this is not a reasonable development area for .NET (nor
perhaps java?).
For example, I believe C# is not a popular language for:

.. Non-Windows development.
.. Scientific computing.
.. Finance.
.. Embedded systems.

I'm particularly interested in scientific computing.

--
Dr Jon D Harrop, Flying Frog Consultancy
http://www.ffconsultancy.com/products/?u
Oct 6 '07 #30

P: n/a
Jon Harrop wrote:
>
. I'd like to break down market size (in $) by programming language.
My survey shows the following:

C# 5%
C++ 1.5%
GWBasic 93%
Other 05%

Hope that helps

Cheers,

Cliff

--

Have you ever noticed that if something is advertised as 'amusing' or
'hilarious', it usually isn't?
Oct 6 '07 #31

P: n/a
Enkidu wrote:
Jon Harrop wrote:
>. I'd like to break down market size (in $) by programming language.
My survey shows the following:

C# 5%
C++ 1.5%
GWBasic 93%
Other 05%
Fascinating, thank you. :-)

I get:

OCaml: 80%
F#: 11%
C#: 2.4%
Mathematica 6.6%

Where is GWBasic available from?

--
Dr Jon D Harrop, Flying Frog Consultancy
http://www.ffconsultancy.com/products/?u
Oct 6 '07 #32

P: n/a
Jon Harrop wrote:
Enkidu wrote:
>Jon Harrop wrote:
>>. I'd like to break down market size (in $) by programming language.
My survey shows the following:

C# 5%
C++ 1.5%
GWBasic 93%
Other 05%

Fascinating, thank you. :-)

I get:

OCaml: 80%
F#: 11%
C#: 2.4%
Mathematica 6.6%

Where is GWBasic available from?
Microsoft.

Cheers,

Cliff

--

Have you ever noticed that if something is advertised as 'amusing' or
'hilarious', it usually isn't?
Oct 7 '07 #33

P: n/a
Jon Harrop <jo*@ffconsultancy.comwrote:
Everything you can do in C# is either the same or easier in F#. So I think
it is pretty clear cut in that case.
The fact that you take the first statement as read is the problem.
While you continue to assume that without presenting evidence, I can't
see how this is going to be a constructive discussion.

I'm bowing out... this discussion is a waste of time, I suspect.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
If replying to the group, please do not mail me too
Oct 7 '07 #34

P: n/a
Everything you can do in C# is either the same or easier in F#.

You simply have not supported this at all. You have just given some
examples (in the F# sweet-spot), but this does not support the
"everything you can do" argument. I will happily accept that it would
be possible for a highly targetted language to address a specific
problem better than a general purpose language (possibly such as F#
with your examples) - but that simply isn't a common problem *to the
majority of developers*. It is my suspicion that you are so deep in
the niche that you cannot accept that the niche exists. Sorry, but IMO
F# will always be a minority language - perhaps highly valuable in a
few areas, but (going back to your original post) making no impact on
the typical developer who simply has other things to do.
You could have said the same thing when C++ was born: "having libraries in C
is a major stumbling block in proposing C++
...
any language that catches
on (as C++ did) ends up reimplementing everything natively. That is already
happening with F#.
That is the exact *opposite* intent of the CLR. Rather than spending
time and money trying to bring ML into .NET, don't you think the
overall community would have been better off by extending CLR
libraries with similar functionality? In particular, 3.5 lambda
expressions seem quite similar in syntax, so may have been a good
starting point.
Picking an exampe at random, the point being, I don't need to look for
"AJAX for C#" - just "AJAX for .NET". I don't care what language the
assembly was written in. The only thing language specific is the code
samples. If F# does things differently, it will have a major
difficulty getting converts. OK, each CLR compiler might provide a few
small nicities (anonymous methods, a LINQ compiler, late-binding
(VB.NET) etc), but these are just wrappers around framework calls,
that can be used from any CLR language.

[JS]this discussion is a waste of time, I suspect.
Seconded. Sorry Jon (H), but I don't think you're convincing anyone.

Oct 7 '07 #35

P: n/a
Marc Gravell wrote:
>Everything you can do in C# is either the same or easier in F#.

You simply have not supported this at all.
F# simply takes the capabilities of C# and adds functional programming,
pattern matching, type inference and a variety of other features. So this
is a no-brainer.
You have just given some examples (in the F# sweet-spot), but this does
not support the "everything you can do" argument.
The examples I've given were designed to showcase the new features offered
by F#. Everything else is the same as C#.
I will happily accept that it would
be possible for a highly targetted language to address a specific
problem better than a general purpose language (possibly such as F#
with your examples) - but that simply isn't a common problem *to the
majority of developers*. It is my suspicion that you are so deep in
the niche that you cannot accept that the niche exists.
Then I am also "deep in the niche" that OOP improves upon procedural
programming.
Sorry, but IMO
F# will always be a minority language - perhaps highly valuable in a
few areas, but (going back to your original post) making no impact on
the typical developer who simply has other things to do.
The same can be said of C#, of course.
>You could have said the same thing when C++ was born: "having libraries
in C is a major stumbling block in proposing C++
...
any language that catches
on (as C++ did) ends up reimplementing everything natively. That is
already happening with F#.

That is the exact *opposite* intent of the CLR.
Yes. This progression is inevitable. At the core of the CLR is an inherently
mutating OOP style that is ill suited to the future landscape of computing
(most notably concurrent programming). While future developments are made
much easier by leveraging the CLR now, they will make progressively less
use of its OOP features as people migrate to better paradigms in the
future. The front-ends of the compilers for these languages will grow to be
much more sophisticated (just as F# is compared to C#). Eventually, a next
generation CLR will be created that has a wildly different style at its
core, one that can handle the massive parallelism of the future and expose
higher-level constructs (like closures) between languages.
Rather than spending
time and money trying to bring ML into .NET, don't you think the
overall community would have been better off by extending CLR
libraries with similar functionality?
In essence, you cannot retrofit functional programming onto and OOP system
as a library in a usable way just as you could not retrofit OOP onto
procedural programming as a library.

The CLR was extended with IL extensions (ILX) for some core functional
features like tail calls (which the JVM still lacks) but functional
programming is largely about what the programmer sees.

OOP makes it easy to extend types but hard to extend functions. Functional
programming makes it easy to extend functions but harder to extend types.
Both approaches have relative merits but, when they have the choice,
programmers generally find functional programming more useful than OOP
(objects are rarely used in OCaml and self-contained F#, for example).

F# also adds a variety of other language features like pattern matching,
which is a vastly better way to manipulate trees including XML data. These
benefits are widely appreciated because XSLT provides pattern matching
specifically for XML data, but F#'s pattern matching can be applied to any
data and is arbitrarily extensible.
Picking an exampe at random, the point being, I don't need to look for
"AJAX for C#" - just "AJAX for .NET". I don't care what language the
assembly was written in. The only thing language specific is the code
samples. If F# does things differently, it will have a major
difficulty getting converts.
I must have misled you. F# provides the same seamless interoperability with
existing .NET libraries that C# does. So an AJAX for .NET will work
perfectly with F# just as it does with C#.

The point I was trying to convey is that many applications in parsing, XML,
graphics and so forth stand to benefit enormously from the features
provided by F# but you can only get APIs written using these higher-level
constructs by sitting down and writing the interface yourself.
OK, each CLR compiler might provide a few
small nicities (anonymous methods, a LINQ compiler, late-binding
(VB.NET) etc), but these are just wrappers around framework calls,
that can be used from any CLR language.
Yes.
[JS]this discussion is a waste of time, I suspect.
Seconded. Sorry Jon (H), but I don't think you're convincing anyone.
If you are genuinely interested in learning about what other paradigms have
to offer and when they are preferable then I can direct you at more
information.

Suffice to say, Microsoft will be inundating everyone here with such
information in the near future.

--
Dr Jon D Harrop, Flying Frog Consultancy
http://www.ffconsultancy.com/products/?u
Oct 7 '07 #36

P: n/a
Jon Skeet [C# MVP] wrote:
Jon Harrop <jo*@ffconsultancy.comwrote:
>Everything you can do in C# is either the same or easier in F#. So I
think it is pretty clear cut in that case.

While you continue to assume that without presenting evidence...
That was not an assumption, it is the purpose of Microsoft's next major
language.

--
Dr Jon D Harrop, Flying Frog Consultancy
http://www.ffconsultancy.com/products/?u
Oct 7 '07 #37

P: n/a
Jon Harrop wrote:
Jon Skeet [C# MVP] wrote:
>Jon Harrop <jo*@ffconsultancy.comwrote:
>>Everything you can do in C# is either the same or easier in F#. So I
think it is pretty clear cut in that case.
While you continue to assume that without presenting evidence...

That was not an assumption, it is the purpose of Microsoft's next major
language.
Which is ?

My assumption is that C# will be the major language for MS for
10-20 years to come.

Arne
Oct 8 '07 #38

P: n/a
Jon Harrop wrote:
>Sorry, but IMO
F# will always be a minority language - perhaps highly valuable in a
few areas, but (going back to your original post) making no impact on
the typical developer who simply has other things to do.

The same can be said of C#, of course.
Except that the typical developer can code in C# but not in ML.
Yes. This progression is inevitable. At the core of the CLR is an inherently
mutating OOP style that is ill suited to the future landscape of computing
(most notably concurrent programming).
Guess what - people don't seem to have a problem writing concurrent
apps in C#.

Arne
Oct 8 '07 #39

P: n/a
"Jon Harrop" <jo*@ffconsultancy.comwrote
Yes. This progression is inevitable. At the core of the CLR is an
inherently
mutating OOP style that is ill suited to the future landscape of computing
(most notably concurrent programming). While future developments are made
much easier by leveraging the CLR now, they will make progressively less
use of its OOP features as people migrate to better paradigms in the
future.
Nobody really seems to have a solid handle on where Concurrent Programming
is going to end up.

Transactional Memory seems a likley candidate, as do the various Port Based
implementions that are cropping up. Likewise, a case could be made for
technologies like PLINQ, or some of the related variations.

I'm really not sure how the "inheritenly concurrent" languages do (ERLang,
etc), or how they do it, but from what I read there seems to be little
concensus at this point as to the direction the future of concurrent
programming is headed...

Until then, it's impossible to say that the CLR is unsuited to what's
coming....

--
Chris Mullins
Oct 8 '07 #40

P: n/a
Arne Vajh°j wrote:
My assumption is that C# will be the major language for MS for
10-20 years to come.
Then why did they develop a common language run-time and start pushing
IronPython and F#?

--
Dr Jon D Harrop, Flying Frog Consultancy
http://www.ffconsultancy.com/products/?u
Oct 9 '07 #41

P: n/a
Arne Vajh°j wrote:
Jon Harrop wrote:
>>Sorry, but IMO
F# will always be a minority language - perhaps highly valuable in a
few areas, but (going back to your original post) making no impact on
the typical developer who simply has other things to do.

The same can be said of C#, of course.

Except that the typical developer can code in C# but not in ML.
You mean the typical developer should be familiar with C++ or Java and,
therefore, should be able to pick up C# quickly?
>Yes. This progression is inevitable. At the core of the CLR is an
inherently mutating OOP style that is ill suited to the future landscape
of computing (most notably concurrent programming).

Guess what - people don't seem to have a problem writing concurrent
apps in C#.
Writing concurrent apps that are correct and fast, on the other hand, is
hard.

--
Dr Jon D Harrop, Flying Frog Consultancy
http://www.ffconsultancy.com/products/?u
Oct 9 '07 #42

P: n/a
Jon Harrop wrote:
Arne Vajh°j wrote:
>My assumption is that C# will be the major language for MS for
10-20 years to come.

Then why did they develop a common language run-time and start pushing
IronPython and F#?
Primarily to support the #2 language (VB.NET) and the #3 language (C++).

J#, JScript.NET, L#, F#, IronPython, IronRuby etc. are more "for fun".

Arne
Oct 10 '07 #43

P: n/a
Jon Harrop wrote:
Arne Vajh°j wrote:
>Jon Harrop wrote:
>>>Sorry, but IMO
F# will always be a minority language - perhaps highly valuable in a
few areas, but (going back to your original post) making no impact on
the typical developer who simply has other things to do.
The same can be said of C#, of course.
Except that the typical developer can code in C# but not in ML.

You mean the typical developer should be familiar with C++ or Java and,
therefore, should be able to pick up C# quickly?
No - I mean that they actually know C#.
>>Yes. This progression is inevitable. At the core of the CLR is an
inherently mutating OOP style that is ill suited to the future landscape
of computing (most notably concurrent programming).
Guess what - people don't seem to have a problem writing concurrent
apps in C#.

Writing concurrent apps that are correct and fast, on the other hand, is
hard.
I don't think so.

It is relative rare that we see concurrency issues in C# code.

Arne
Oct 10 '07 #44

P: n/a
Arne Vajh°j wrote:
Jon Harrop wrote:
>You mean the typical developer should be familiar with C++ or Java and,
therefore, should be able to pick up C# quickly?

No - I mean that they actually know C#.
Well, C# has clearly only gained traction in a very specialized area and,
even there, it is not dominant.

For example, the following Google hits indicate that, outside XML- or
SQL-related programming, less than 4% of programmers know C#:

"C programming" -xml -sql: 1,650k
"Java programming" -xml -sql: 1,610k
"C++ programming" -xml -sql: 1,290k
"Perl programming" -xml -sql: 474k
"Python programming" -xml -sql: 385k
"Ruby programming" -xml -sql: 298k
"D programming" -xml -sql: 286k
"C# programming" -xml -sql: 246k

I'm quite surprised to see that a language designed and implemented by a
single person (D, by Walter Bright) has managed to gain more traction that
Microsoft's flagship language but there you go.

Anyway, I would not say that many programmers know C#. As I said, I don't
know any C# programmers personally (outside Microsoft employees, of
course).
It is relative rare that we see concurrency issues in C# code.
Ok, I'm surprised to hear anyone say that. The technologies usually hailed
for concurrent programming (e.g. Erlang) have vastly more sophisticated
support for concurrency built into the language. In contrast, C# provides
almost nothing over and above the OS in this respect. No monads, no agents,
no actors, nothing. Indeed, even Windows forms fails to provide thread-safe
access.

--
Dr Jon D Harrop, Flying Frog Consultancy
http://www.ffconsultancy.com/products/?u
Oct 10 '07 #45

P: n/a
Lew
Jon Harrop wrote:
For example, the following Google hits indicate that, outside XML- or
SQL-related programming, less than 4% of programmers know C#:

"C programming" -xml -sql: 1,650k
"Java programming" -xml -sql: 1,610k
"C++ programming" -xml -sql: 1,290k
"Perl programming" -xml -sql: 474k
"Python programming" -xml -sql: 385k
"Ruby programming" -xml -sql: 298k
"D programming" -xml -sql: 286k
"C# programming" -xml -sql: 246k
What exactly are you measuring here, and exactly how does it indicate how many
programmers there are, much less how many know each language? I note that you
have not labeled the columns of your little table, so there is no way to
interpret it.

Are you suggesting that there are 1.65 x 10e6 programmers who know C?

Have you factored out programmers who know more than one language? For
example, I am conversant with FORTRAN, C, C++, C#, Java, a few flavors of
assembler, Javascript, several dialects of BASIC, SQL, xBase. Algol, Pascal,
and a teensy-tiny bit of FORTH, LISP and Prolog. At that, I consider myself
somewhat less language-fluent than many programmers.

Where is FORTRAN in your chart, for God's sake?

Why did you leave F# off that list? Javascript? PHP?

Why do you consider XML a programming language? It's a markup language.

The commercially viable programming languages right now are led by BASIC, SQL,
C, C++, C#, Java and COBOL in the desktop and enterprise world; add Perl and
PHP to that for Web crap.

--
Lew
Oct 10 '07 #46

P: n/a
Lew wrote:
Jon Harrop wrote:
>For example, the following Google hits indicate that, outside XML- or
SQL-related programming, less than 4% of programmers know C#:

"C programming" -xml -sql: 1,650k
"Java programming" -xml -sql: 1,610k
"C++ programming" -xml -sql: 1,290k
"Perl programming" -xml -sql: 474k
"Python programming" -xml -sql: 385k
"Ruby programming" -xml -sql: 298k
"D programming" -xml -sql: 286k
"C# programming" -xml -sql: 246k

What exactly are you measuring here,
Google hits for search terms.
and exactly how does it indicate how many programmers there are, much less
how many know each language?
This is an estimate of the number of web pages (excluding the terms xml and
sql) related to programming in each language. The more popular a language,
the more pages it will have.
Are you suggesting that there are 1.65 x 10e6 programmers who know C?
I'm assuming that 6.5x as many Java pages as C# pages indicates that there
are 6.5x as many Java programmers as C# programmers.
Have you factored out programmers who know more than one language?
No. The implication there is that many people might have learned C# but do
not use it. Is that more likely for C# than the next language?
Why did you leave F# off that list? Javascript? PHP?
There are many other languages that could be added to the list.
Why do you consider XML a programming language? It's a markup language.
I listed C, Java, C++, Perl, Python, Ruby, D and C#. I did not list XML.
The -xml asks Google to remove those pages.
The commercially viable programming languages right now are led by BASIC,
SQL, C, C++, C#, Java and COBOL in the desktop and enterprise world; add
Perl and PHP to that for Web crap.
Perl is used a lot for Unix admin. I'm not sure what exactly you mean
by "commercially viable" in that context. We deal with other languages
commercially, for example.

--
Dr Jon D Harrop, Flying Frog Consultancy
http://www.ffconsultancy.com/products/?u
Oct 10 '07 #47

P: n/a
Jon Harrop wrote:
Arne Vajh°j wrote:
>My assumption is that C# will be the major language for MS for
10-20 years to come.

Then why did they develop a common language run-time and start pushing
IronPython and F#?
Because they are a good basis to move to GWBasic.

In GWBasic this is a complete program:

10 Print "Hullo World"

This would require up to a dozen lines of declarations and other
unnecessary rubbish in any other language.

This is a loop in GWBasic:

10 Print "Hullo World"
20 GOTO 10

Succinct, does what you need with a minimum of fuss.

There are no confusing procedures or methods or objects in GWBasic. It's
just in-your-face code. The ideal programming language.

Cheers,

Cliff

--

Have you ever noticed that if something is advertised as 'amusing' or
'hilarious', it usually isn't?
Oct 10 '07 #48

P: n/a
Jon Harrop wrote:
>
Anyway, I would not say that many programmers know C#. As I said, I don't
know any C# programmers personally (outside Microsoft employees, of
course).
We have many C# programmers, and in the main they have all moved from
other languages and would not go back. You must move in a restricted
world, Jon.

Cheers,

Cliff

--

Have you ever noticed that if something is advertised as 'amusing' or
'hilarious', it usually isn't?
Oct 10 '07 #49

P: n/a
Enkidu wrote:
Jon Harrop wrote:
>Then why did they develop a common language run-time and start pushing
IronPython and F#?

Because they are a good basis to move to GWBasic.

In GWBasic this is a complete program:

10 Print "Hullo World"

This would require up to a dozen lines of declarations and other
unnecessary rubbish in any other language.
Just:

printf "Hullo World"

in F#.
This is a loop in GWBasic:

10 Print "Hullo World"
20 GOTO 10

Succinct, does what you need with a minimum of fuss.
Absolutely. This is an interpreter for a dynamically-typed functional
programming language written in F#:

let rec eval vars = function
| EApply(func, arg) -begin match eval vars func, eval vars arg with
| VClosure(var, vars, body), arg -eval ((var, arg) :: vars) body
| _ -invalid_arg "Attempt to apply a non-function value"
end
| EAdd(e1, e2) -VInt (int(eval vars e1) + int(eval vars e2))
| EMul(e1, e2) -VInt (int(eval vars e1) * int(eval vars e2))
| EEqual(e1, e2) -VBool (eval vars e1 = eval vars e2)
| EIf(p, t, f) -eval vars (if bool (eval vars p) then t else f)
| EInt i -VInt i
| ELetRec(var, arg, body, rest) ->
let rec vars = (var, VClosure(arg, vars, body)) :: vars in
eval vars rest
| EVar s -List.assoc s vars;;

--
Dr Jon D Harrop, Flying Frog Consultancy
http://www.ffconsultancy.com/products/?u
Oct 11 '07 #50

51 Replies

This discussion thread is closed

Replies have been disabled for this discussion.