Re: Future of C#

Tech-Archive recommends: Speed Up your PC by fixing your registry



Jon Skeet [C# MVP] wrote:
Jon Harrop <jon@xxxxxxxxxxxxxxxxx> wrote:
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
.



Relevant Pages

  • Re: Static vs Dynamic
    ... (Java has too much noise in its source code, ... lot to ask and is typical in a typed language supporting polymorphism. ... > developers can easily learn the Java programming language; ... > obivous bugs slip through and b) in many cases, ...
    (comp.lang.lisp)
  • Re: why is "self" used in OO-Python?
    ... and worse this has spread from Java into other ... by whatever happens to be the first OO language they learn". ... If the first programming language (or the ... I have no objection to teaching Java in a CS curriculum. ...
    (comp.lang.python)
  • Re: Public disclosure of discovered vulnerabilities
    ... I spoke of Java; ... > necessary when programming in Java. ... > it is every single programmer who wants to use the language securely. ... this is what we call the "mental model" problem in aerospace. ...
    (sci.crypt)
  • Re: 71% Say Finding New Energy Sources More Important than Conservation
    ... Most of the drive to define was for a test programming language, because each tester had it's own language and the engineer would have to re-write the program every time the testor changed. ... The only reason it was used was because people saw that it would have a longer life time than ADA. ... My group at Stanford switched to Java as their language of choice after giving up on C++ as too flawed to use. ...
    (soc.retirement)
  • Question on variable binding and assignment
    ... My Java for dummies book didn't tell me this stuff. ... Then for a dynamically typed language such as Perl, ... concept of "unbound variables" in a programming language in the first ...
    (comp.lang.lisp)