C#--is it growing? Or saturated? (Charles Petzold does C#)

R

raylopez99

What is the state of C#? Somebody in a Linux advocacy newsgroup
implied it has saturated (leveled off in growth). Note the 'hard
code' pre-Wizards coding wizard Charles Petzold does C# only now.

RL

http://www.charlespetzold.com/etc/DoesVisualStudioRotTheMind.html

Does Visual Studio Rot the Mind?
Ruminations on the Psychology and Aesthetics of Coding
By Charles Petzold
A Talk Delivered at the NYC .NET Developer’s Group,
October 20, 2005

Twenty years ago, in November 1985, Windows 1.0 debuted with
approximately 400 documented function calls.5 Ten years later, Windows
95 had well over a thousand.6

Today we are ready for the official release of the .NET Framework 2.0.
Tabulating only MSCORLIB.DLL and those assemblies that begin with word
System, we have over 5,000 public classes that include over 45,000
public methods and 15,000 public properties, not counting those
methods and properties that are inherited and not overridden. A book
that simply listed the names, return values, and arguments of these
methods and properties, one per line, would be about a thousand pages
long.

If you wrote each of those 60,000 properties and methods on a 3-by-5
index card with a little description of what it did, you’d have a
stack that totaled 40 feet.7 These 60,000 cards, laid out end to end —
the five inch end, not the three inch end — can encircle Central Park
(almost), and I hear this will actually be a public art project next
summer.

Can any one programmer master 60,000 methods and properties? I think
not. One solution, of course, is specialization. I myself have
specialized. This evening I hope no one will ask me questions about
web forms or ASP .NET or SQL Server because those aren’t my specialty.
I do Windows Forms, and my language is C#.
IntelliSense

Visual Studio has attempted to alleviate the problem of class, method,
and property proliferation with a feature called IntelliSense.
IntelliSense indeed puts information at our fingertips, if you think
of your fingertips figuratively as that place on the screen where the
keyboard caret is.

Like other addictive technologies, I have a love/hate relationship
with IntelliSense, and the more I despise it, the more I use it, and
the more I use it, the more disgusted I am at how addicted I’ve
gotten, and the more addicted I get, the more I wish it had never been
invented.

Just in case you’ve been out of the trenches for awhile, IntelliSense
is a culmination of some past attempts at code completion
technologies. If you type an object name and a period, for example,
you’ll get a little scrollable dropdown menu with a list of all the
public methods, properties, and events for that class, and when you
choose a method name and type a left parenthesis, you’ll get the
various overloads with arguments, and a little tooltip describing what
the method does.

IntelliSense is considered by some to be the most important
programming innovation since caffeine. It works especially well
with .NET because Visual Studio can use reflection to obtain all the
information it needs from the actual DLLs you’ve specified as
references.

In fact, IntelliSense has become the first warning sign that you
haven’t properly included a DLL reference or a using directive at the
top of your code. You start typing and IntelliSense comes up with
nothing. You know immediately something is wrong.

And yet, IntelliSense is also dictating the way we program.
 
J

Jon Skeet [C# MVP]

raylopez99 said:
What is the state of C#? Somebody in a Linux advocacy newsgroup
implied it has saturated (leveled off in growth).

I would venture to suggest that without hard evidence either way,
there's not a lot of point in speculating.

Looking at
http://radar.oreilly.com/2008/03/state-of-the-computer-book-mar-23.html
shows C# growing reasonably significantly (in terms of number of books
bought) between 2006 and 2007. That may or may not be an indicator.

One important thing is: does it matter? There are certainly plenty of
jobs in C# around. There are also plenty of jobs in Java. There are
jobs in C/C++, etc. If you're good at what you do, you're unlikely to
find yourself unemployed for long, IMO.
Note the 'hard
code' pre-Wizards coding wizard Charles Petzold does C# only now.

Or at least, did 3 years ago...
 
P

Pavel Minaev

What is the state of C#?

It's doing well. The language and the tools are being developed
further at a steady pace, there are plenty of third-party providers of
libraries and components, countless books, quite a few universities
use C# in teaching these days, and the job market is rather large.
 
R

raylopez99

It's doing well. The language and the tools are being developed
further at a steady pace, there are plenty of third-party providers of
libraries and components, countless books, quite a few universities
use C# in teaching these days, and the job market is rather large.

For now...

RL
 
P

Pavel Minaev

For now...

Obviously. The trends are positive now, but I wouldn't expect C#
(or .NET, for that matter) to last forever. The number of once-
mainstream programming languages and technologies that have now faded
to obscurity is a testament to that (COBOL is one prominent example,
pre-.NET VB is another, but there are plenty more). I doubt .NET and
C# are going to go away in the following decade, though, so there is
still plenty of time.
 
K

Ken Foskey

What is the state of C#? Somebody in a Linux advocacy newsgroup implied
it has saturated (leveled off in growth). Note the 'hard code'
pre-Wizards coding wizard Charles Petzold does C# only now.

Look to the language itself. Does it answer questions that you want
answered. The tools available, do they provide good solutions to the
problems you have. There is no best or worst only good and bad
applications of a specific language to a problem.

I am a linux advocate and the C# tools are awful so it is not going to
penetrate Linux development in a hurry without some serious investment of
some gurus. I would prefer to use another language for programming on
Linux than C# although I think it is a really good language, c++ done
right.

Ken
 
P

Pavel Minaev

I am a linux advocate and the C# tools are awful

Compared to what? I'd say that VS2008+ReSharper is a decent match for
either Eclipse or NetBeans; and most certainly nothing comparable
exists for C++ (and, ironically enough, VS is still the best C++ IDE
insofar as code editing and debugging are concerned).
so it is not going to penetrate Linux development in a hurry without someserious investment of
some gurus.  I would prefer to use another language for programming on
Linux than C# although I think it is a really good language, c++ done
right.

If you're looking for Linux-enabled "C++ done right", then it's
probably D (http://www.digitalmars.com/d/). C# is closer to "Java done
right".
 
K

Ken Foskey

Compared to what? I'd say that VS2008+ReSharper is a decent match for
either Eclipse or NetBeans; and most certainly nothing comparable exists
for C++ (and, ironically enough, VS is still the best C++ IDE insofar as
code editing and debugging are concerned).

To be clear the C# tools on Linux are awful. Taking a snip like that out
make it hard to get context.

VS is not an option if you are talking to a serious Linux developer for
political reasons. You can so easily build applications in VS that will
not build in Mono so you are better off not using it if Linux is an
important market for you.

The compiler is OK and a portion of the .NET is OK because it is the same
code anyway. Monodevelop is the only FOSS IDE choice for C# on Linux, I
can crash it with ease. Until the Open Source tools are up to scratch
you will not penetrate the Linux market.

Can I use VS under Linux Wine, anyone tried it? Also does the license
allow me to install on desktop and Laptop concurrently.

Ken
 
P

Pavel Minaev

To be clear the C# tools on Linux are awful.  Taking a snip like that out
make it hard to get context.

Oh, I see what you mean now. Yes, I'm keeping an eye on MonoDevelop
myself, and while progressing quickly, it's still way too unstable to
be used for anything serious, in my opinion. Every new version I try
crashes within 15 minutes of me poking around (typically somewhere in
the Gtk# visual form editor).
VS is not an option if you are talking to a serious Linux developer for
political reasons.  You can so easily build applications in VS that will
not build in Mono so you are better off not using it if Linux is an
important market for you.

Actually, I wonder how true is that. You could use VS for IDE, but
reference Mono/Win32 assemblies for your projects - I think it would
let you do that. And so long as it works with Mono on Win32, it would
likely work with Mono on Linux.
The compiler is OK and a portion of the .NET is OK because it is the same
code anyway.

Mono JIT and GC are both still lagging quite behind. Though it's still
fast enough for many purposes.
 Monodevelop is the only FOSS IDE choice for C# on Linux, I
can crash it with ease.  Until the Open Source tools are up to scratch
you will not penetrate the Linux market.

Microsoft is obviously hardly interested in penetrating the Linux
market, so it's all up to Novell.
Can I use VS under Linux Wine,  anyone tried it?

Most recent version, no. Last I checked, Wine still had problems
running .NET in general, never mind VS above version 6.
 Also does the license allow me to install on desktop and Laptop concurrently.

It depends on which license. Licensing for MS products tends to be
pretty complicated.
 
G

Göran Andersson

raylopez99 said:
What is the state of C#? Somebody in a Linux advocacy newsgroup
implied it has saturated (leveled off in growth). Note the 'hard
code' pre-Wizards coding wizard Charles Petzold does C# only now.

RL

Do you mean the language itself, it's users or it's usage?

The language is still growing.

I believe that most of it's users are getting better and better at it.

It's usage may have leveled off, as with any language that has been
around for a few years. Perhaps it will get another upswing if
Silverlight gets used more.
 
M

Mike Schilling

Does Visual Studio Rot the Mind?
Ruminations on the Psychology and Aesthetics of Coding
By Charles Petzold
A Talk Delivered at the NYC .NET Developer’s Group,
October 20, 2005

Just in case you’ve been out of the trenches for awhile,
IntelliSense
is a culmination of some past attempts at code completion
technologies. If you type an object name and a period, for example,
you’ll get a little scrollable dropdown menu with a list of all the
public methods, properties, and events for that class, and when you
choose a method name and type a left parenthesis, you’ll get the
various overloads with arguments, and a little tooltip describing
what
the method does.

IntelliSense is considered by some to be the most important
programming innovation since caffeine. It works especially well
with .NET because Visual Studio can use reflection to obtain all the
information it needs from the actual DLLs you’ve specified as
references.

IntelliSense is no more advanced than the Java development tool
IntelliJ Idea. (The version I've got installed dates from 2004.) It
can do all of the things described above, and is actually better than
VS.NET at highlighting lines that will cause compilation errors and at
navigating from the use of a class/method/field to its definition and
vice versa. The paragraph above displays a real ignorance of what
goes on outside the Microsoft world.
 
V

viepia

Do you mean the language itself, it's users or it's usage?

The language is still growing.

I believe that most of it's users are getting better and better at it.

It's usage may have leveled off, as with any language that has been
around for a few years. Perhaps it will get another upswing if
Silverlight gets used more.

The important thing is not to take a job where anybody else can dictate what
tools/languages to use. Jobs like that can lead to a programmer being obsolete, trapped,
and otherwise unemployable stat.

Viepia
 
P

Pavel Minaev

IntelliSense is no more advanced than the Java development tool
IntelliJ Idea.  (The version I've got installed dates from 2004.)  It
can do all of the things described above, and is actually better than
VS.NET at highlighting lines that will cause compilation errors and at
navigating from the use of a class/method/field to its definition and
vice versa.  The paragraph above displays a real ignorance of what
goes on outside the Microsoft world.

I can't speak for Petzold, obviously, but all the Java code editors
goodness has been available in the .NET land for quite a while - the
company behind IDEA (which is indeed widely considered the most
powerful Java IDE in terms of code editing) also makes ReSharper,
which is a Visual Studio plugin bringing the same features to VS.
Feature-wise, it's pretty close, though I still miss IDEA's code
template search (or whatever it was called - it was a sort of regex
for specifying code structure rather than text, and it'd find code
matching the template).

Anyway, I think that speech should be taken in the context of Windows
development in particular, where IntelliSense (which predated .NET in
Microsoft products, by the way) was indeed a huge leap even for
straight Win32 API development.
 
P

Pavel Minaev

The important thing is not to take a job where anybody else can dictate what
tools/languages to use.  Jobs like that can lead to a programmer being obsolete, trapped,
and otherwise unemployable stat.

Using one set of tools on one's job does not restrict one from
studying something else. Keep your skills up to date, and there is no
danger of becoming obsolete. Personally, I went from a C# developer to
C++, and now back to C# in the last 5 years, and didn't have trouble
finding any of those jobs, even though in every case my immediate
prior experience was different from the main language used in each
company.
 
J

Jon Skeet [C# MVP]

The important thing is not to take a job where anybody else can dictate what
tools/languages to use.

So you'd only ever take a job where you get to decide which languages
to use? What if your team members disagreed with you? Or would you also
not take a job where you'd work in a team?
Jobs like that can lead to a programmer being obsolete, trapped, and
otherwise unemployable stat.

Only if you're forced to use obsolete languages. For instance, I work
at Google, writing code in Java. Would I prefer to use C#? Absolutely -
it's a nicer language in my view. However, it would be insane to start
suggesting that Google change all their infrastructure to run .NET. So
have I taken a job which is going to lead to me being obsolete, trapped
and unemployable? Strangely enough, I'm not worried.
 
J

jehugaleahsa

I actually find massive libraries a challenge of memory as well as
exploration. I love to dazzle my coworkers with an almost inhuman
retention and quick responses (not to brag). A couple years ago,
spitting out property and methods names for even the most commonly
used classes was a bit of a challege. However, now that I have been
working in C# for two years, spouting out a few hundred class
definitions a day is like a walk in the park.

What makes it so easy to remember? I think it is that the library
itself is exceptionally well organized. It is hard to think of a class
that is improperly placed within the wrong namespace. The classes are
usually very intuitively named. And it helps that Intellisense reduces
your need to remember names to few characters.

As for C#, I don't think it is dying down or reaching a peak. There
are a lot of folks out there who simply don't know something as
wonderful as C# exists. I let them know that they are wasting their
time writing their own web service proxies. I let them know that they
are wasting their time building classes just like DataTable. I let
them know they are wasting time looking through the labyrinthic tomes
of API references, when I can find what I am looking for in a matter
of seconds and its use is intuitive.

I have worked in C, C++, Java and now C#. Working with any other IDE
than VS and in any other language is so freightfully time consuming
and menial that I want to quit my job. Best of all, MS has made their
software free!!! How can it get any better than that? All they need is
to seriously work on a solution for other platforms and .NET will be
unquestionably the greatest step toward improving development since
the debugger was invented. Just my opinion.

Some times I feel like C# has made me a pansy. I worry that I will
stupidly forget to call delete on a pointer in C++ or reference a
variable without assigning it a value. I worry that all those "always
do this" and "never do that" occurrances in C++ will slip out the back
of my mind. I think it is important that I came from the low-level
guts of programming. I don't want to be a scripter who only gets code
written by copying some lame snippet he found on a forum and pasting
it into his code like it should just work. I doubt that will happen,
but I get paranoid.

In summary, anyone who is thinking about going to .NET definitely
should. If it is even an option, you should. If you need to run on
Linux, well, sorry. I think MS is a lot more reputable than a lot of
people give them credit. They have definitely improved their security
practices and are definitely developer-oriented.
 
A

Arne Vajhøj

raylopez99 said:
For now...

For the foreseeable future.

The not foreseeable future is hmm not foreseeable.

It does not make any sense to try and predict the
IT world in 25+ years - noone can do that.

Arne
 
A

Arne Vajhøj

Pavel said:
Obviously. The trends are positive now, but I wouldn't expect C#
(or .NET, for that matter) to last forever. The number of once-
mainstream programming languages and technologies that have now faded
to obscurity is a testament to that (COBOL is one prominent example,
pre-.NET VB is another, but there are plenty more). I doubt .NET and
C# are going to go away in the following decade, though, so there is
still plenty of time.

Note that there are actually still plenty of Cobol jobs
after 50 years.

Arne
 
A

Arne Vajhøj

Ken said:
To be clear the C# tools on Linux are awful. Taking a snip like that out
make it hard to get context.

VS is not an option if you are talking to a serious Linux developer for
political reasons. You can so easily build applications in VS that will
not build in Mono so you are better off not using it if Linux is an
important market for you.

The compiler is OK and a portion of the .NET is OK because it is the same
code anyway. Monodevelop is the only FOSS IDE choice for C# on Linux, I
can crash it with ease. Until the Open Source tools are up to scratch
you will not penetrate the Linux market.

I think the Linux worlds best options are:
- general purpose editor like Emacs, NEdit, JEdit etc.
- Eclipse with a C# plugin (*)

The current C# plugins for Eclipse are not that good, but considering
how many other languages that are well supported, then my guess would
be that getting the C# support improved is a doable task.

Arne
 
A

Arne Vajhøj

Mike said:
IntelliSense is no more advanced than the Java development tool
IntelliJ Idea. (The version I've got installed dates from 2004.) It
can do all of the things described above, and is actually better than
VS.NET at highlighting lines that will cause compilation errors and at
navigating from the use of a class/method/field to its definition and
vice versa. The paragraph above displays a real ignorance of what
goes on outside the Microsoft world.

In all due respect then I believe that VS was first with the
feature.

But yes - .NET is for all practical purposes a single IDE
environment.

Arne
 

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