473,836 Members | 1,987 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

What C# Needs

Having developed with VB since 1992, I am now VERY
interested in C#. I've written several applications with
C# and I do enjoy the language.

What C# Needs:

There are a few things that I do believe MSFT should do to
improve C#, however.

I know that in the "Whidbey" release of VS.NET currently
under development, VB.NET will get good ole "edit-and-
continue" back. Hurray! What's unfortunate (and correct
me if I'm wrong) is that C# developers won't enjoy this
feature. This is very unfortunate because THAT feature
should exist in ALL programming languages.

Another thing that C# needs is better intellisense (as
good as vb.net). I've found a few instances where I hit
ctrl+spacebar and nothing happens in C#. I write the SAME
exact piece of code in VB.NET and hit ctrl+spacebar and
the intellisense pops up just fine.

It's not like C# developers don't want to have these nice
visual and functional features enjoyed by VBers available
to them if they "choose" to use them. Keep in mind the
word "choose". Don't FORCE developers to have to use
these features. Allow them to disable or enable them as
needed. It's ONE development environment folks, why can't
all .NET languages using that dev env benefit?
Nov 15 '05
46 4278
Frans Bouma wrote:

I'm glad C# DOESN'T get E&C, so C# developers learn the GOOD way
of debugging applications instead of fixing code in the debugger. The
debugger is for testing, not for altering code.


Argh! No no no! You are TOTALLY wrong on that! Edit & Continue is an
absolute timesaving godsend. As an ex VB/C++ programmer I can swear to that.
However, I wouldnt go back to VB from C# even if C# didnt have edit &
continue, because I much prefer the terse C# syntax. But I am living in the
certainty that E&C will return at some time in the future!

BTW, some people used to (and still do) argue that 'you dont need an
interactive debugger, reading the code is the GOOD way to debug', and we all
know that's rubbish! :-)

(This wasnt a flame, but I do feel strongly about this issue ;-))
Nov 15 '05 #21
Frans Bouma wrote:

I'm glad C# DOESN'T get E&C, so C# developers learn the GOOD way
of debugging applications instead of fixing code in the debugger. The
debugger is for testing, not for altering code.


Argh! No no no! You are TOTALLY wrong on that! Edit & Continue is an
absolute timesaving godsend. As an ex VB/C++ programmer I can swear to that.
However, I wouldnt go back to VB from C# even if C# didnt have edit &
continue, because I much prefer the terse C# syntax. But I am living in the
certainty that E&C will return at some time in the future!

BTW, some people used to (and still do) argue that 'you dont need an
interactive debugger, reading the code is the GOOD way to debug', and we all
know that's rubbish! :-)

(This wasnt a flame, but I do feel strongly about this issue ;-))
Nov 15 '05 #22
"Frank Mulvenny" <fr***********@ info.r.us> wrote in
news:HD******** ************@ne ws-text.cableinet. net:
Frans Bouma wrote:

I'm glad C# DOESN'T get E&C, so C# developers learn the GOOD way
of debugging applications instead of fixing code in the debugger. The
debugger is for testing, not for altering code.
Argh! No no no! You are TOTALLY wrong on that! Edit & Continue is an
absolute timesaving godsend. As an ex VB/C++ programmer I can swear to
that. However, I wouldnt go back to VB from C# even if C# didnt have
edit & continue, because I much prefer the terse C# syntax. But I am
living in the certainty that E&C will return at some time in the future!


If you need EnC to develop good software, you are not thinking when
designing the software, nor when developing the software. Sorry to be
harsh, but all the "nooo, we want it and you are wrong and do not
understand what you're talking about" crap starts to get on my nerves
actually.

If you need EnC, start thinking about: why aren't we developing
software while it is running anyway? thus INSIDE a debugger?
BTW, some people used to (and still do) argue that 'you dont need an
interactive debugger, reading the code is the GOOD way to debug', and we
all know that's rubbish! :-)
No, 'we' do not. Reading back your code is good, because it is
NECESSARY to do so when you are checking the algorithm against the code-
representation of that algorithm you wrote.

Read my article about why E&C is bad practise and how to debug
software:
http://weblogs.asp.net/fbouma/posts/22211.aspx

If you still need E&C in every day software development, I truly
hope I'll never have to work with the software you're writing, sorry. The
reason for that is: if you KNOW what to fix, you fix it SO IT will then be
fixed. If you DO NOT know what you're doing you need a runtime-verifier to
verify what you're doing, and if you can't live without E&C you definitely
make a hell of a lot of 'stupidity' mistakes, which is not in favor of you
either.
(This wasnt a flame, but I do feel strongly about this issue ;-))


feelings are things you have for your wife/partner, your pets, your
children etc. When it comes to software, you have to think, not feel. If
yuo can't proof E&C is more productive, you can feel all you want, but you
do not have a strong case. I tried to proof E&C is not a feature that's
useful, and besides some smalltalk/lisp interpreter fellow who didn't
understand what the difference between an interpreted language and a
compiled language is, no-one could proof I'm wrong.

I write a hell of a lot of lines of code per day, but I fire up the
debugger three or four times a day to test some mistery behaviour I can't
find back in my algorithm implementations or in my algorithms itself. Look
at it this way: if you write some code, and you run it, and it misbehaves
and you do not understand why when yuo SEE the misbehaviour, you do not
understand the code you've just written.

FB

--
Solutions Design : http://www.sd.nl
My open source .NET Software : http://www.sd.nl/software
My .NET Blog : http://weblogs.asp.net/FBouma
-------------------------------------------------------------------------
Nov 15 '05 #23
"Frank Mulvenny" <fr***********@ info.r.us> wrote in
news:HD******** ************@ne ws-text.cableinet. net:
Frans Bouma wrote:

I'm glad C# DOESN'T get E&C, so C# developers learn the GOOD way
of debugging applications instead of fixing code in the debugger. The
debugger is for testing, not for altering code.
Argh! No no no! You are TOTALLY wrong on that! Edit & Continue is an
absolute timesaving godsend. As an ex VB/C++ programmer I can swear to
that. However, I wouldnt go back to VB from C# even if C# didnt have
edit & continue, because I much prefer the terse C# syntax. But I am
living in the certainty that E&C will return at some time in the future!


If you need EnC to develop good software, you are not thinking when
designing the software, nor when developing the software. Sorry to be
harsh, but all the "nooo, we want it and you are wrong and do not
understand what you're talking about" crap starts to get on my nerves
actually.

If you need EnC, start thinking about: why aren't we developing
software while it is running anyway? thus INSIDE a debugger?
BTW, some people used to (and still do) argue that 'you dont need an
interactive debugger, reading the code is the GOOD way to debug', and we
all know that's rubbish! :-)
No, 'we' do not. Reading back your code is good, because it is
NECESSARY to do so when you are checking the algorithm against the code-
representation of that algorithm you wrote.

Read my article about why E&C is bad practise and how to debug
software:
http://weblogs.asp.net/fbouma/posts/22211.aspx

If you still need E&C in every day software development, I truly
hope I'll never have to work with the software you're writing, sorry. The
reason for that is: if you KNOW what to fix, you fix it SO IT will then be
fixed. If you DO NOT know what you're doing you need a runtime-verifier to
verify what you're doing, and if you can't live without E&C you definitely
make a hell of a lot of 'stupidity' mistakes, which is not in favor of you
either.
(This wasnt a flame, but I do feel strongly about this issue ;-))


feelings are things you have for your wife/partner, your pets, your
children etc. When it comes to software, you have to think, not feel. If
yuo can't proof E&C is more productive, you can feel all you want, but you
do not have a strong case. I tried to proof E&C is not a feature that's
useful, and besides some smalltalk/lisp interpreter fellow who didn't
understand what the difference between an interpreted language and a
compiled language is, no-one could proof I'm wrong.

I write a hell of a lot of lines of code per day, but I fire up the
debugger three or four times a day to test some mistery behaviour I can't
find back in my algorithm implementations or in my algorithms itself. Look
at it this way: if you write some code, and you run it, and it misbehaves
and you do not understand why when yuo SEE the misbehaviour, you do not
understand the code you've just written.

FB

--
Solutions Design : http://www.sd.nl
My open source .NET Software : http://www.sd.nl/software
My .NET Blog : http://weblogs.asp.net/FBouma
-------------------------------------------------------------------------
Nov 15 '05 #24
Frans Bouma wrote:
"Frank Mulvenny" <fr***********@ info.r.us> wrote in
news:HD******** ************@ne ws-text.cableinet. net:
Frans Bouma wrote:

I'm glad C# DOESN'T get E&C, so C# developers learn the GOOD way
of debugging applications instead of fixing code in the debugger.
The debugger is for testing, not for altering code.
Argh! No no no! You are TOTALLY wrong on that! Edit & Continue is an
absolute timesaving godsend. As an ex VB/C++ programmer I can swear
to that. However, I wouldnt go back to VB from C# even if C# didnt
have edit & continue, because I much prefer the terse C# syntax. But
I am living in the certainty that E&C will return at some time in
the future!


If you need EnC to develop good software, you are not thinking
when designing the software, nor when developing the software. Sorry
to be harsh, but all the "nooo, we want it and you are wrong and do
not understand what you're talking about" crap starts to get on my
nerves actually.

If you need EnC, start thinking about: why aren't we developing
software while it is running anyway? thus INSIDE a debugger?


It is definately a useful facility to have. In fact, since developing
software involves debugging it, we are already developing software in the
debugger. E&C extends the power and flexibility of that debugging process.
Also, E&C is useful even outside the context of debugging as such. One can
use it to explore the facilities of some utility classes perhaps - in a live
situation. Can be very useful again.
BTW, some people used to (and still do) argue that 'you dont need an
interactive debugger, reading the code is the GOOD way to debug',
and we all know that's rubbish! :-)


No, 'we' do not. Reading back your code is good, because it is
NECESSARY to do so when you are checking the algorithm against the
code- representation of that algorithm you wrote.


Of course, reading your code to try and work out the problem is
a good way of debugging - that's a no-brainer.
But it's not neccesarily the only or quickest way in all cases.

This argument is one of a long line of obsolete arguments. It is the direct
descendent of that old chestnut:
"Writing your program, and having to send it
off to the computer to be batch executed, and
getting the results the next day is good
because it forces you to make sure it doesnt
have bugs."

Pure hairshirt mentality, with a soupcon of elitism.

Read my article about why E&C is bad practise and how to debug
software:
http://weblogs.asp.net/fbouma/posts/22211.aspx

If you still need E&C in every day software development, I truly
hope I'll never have to work with the software you're writing, sorry.
What other debugging facilities are beyond the pale and to be used only by
the plebians I wonder?
Changing the value of a variable?
Being able to see the value of a variable?
Altering the execution point?
Of course all these things are acceptable, because these are all useful
time-saving things to be able to do.
And if it is 'morally' acceptable for one to be able to alter the state of a
program by changing variables, why not code?

The reason for that is: if you KNOW what to fix, you fix it SO IT
will then be fixed.
The same could be said for compile errors, so therefore perhaps we shouldnt
have fast compilers that let us use the compiler as a crutch to find our
coding errors. This is the same argument as is being made against E&C.

If you DO NOT know what you're doing you need a
runtime-verifier to verify what you're doing, and if you can't live
without E&C you definitely make a hell of a lot of 'stupidity'
mistakes, which is not in favor of you either.
Of course we can live without E&C, and no doubt many other developments of
the past decades.
(This wasnt a flame, but I do feel strongly about this issue ;-))


feelings are things you have for your wife/partner, your pets,
your children etc. When it comes to software, you have to think, not
feel. If yuo can't proof E&C is more productive, you can feel all you
want, but you do not have a strong case.


I have found it to be very useful. It's not essential, but then neither are
fast compilers, or intellisense. Or syntax colouring. However, all these
things are useful so long as one can avoid having an elitist philosophy that
considers them fit only for 'bad programmers'.

I tried to proof E&C is not a feature that's useful and besides some smalltalk/lisp interpreter fellow who didn't understand what the difference between an
interpreted language and a compiled language is, no-one could proof
I'm wrong.
I presume you're talking about a previous thread in some discussion forum.
Do you have a link?
I write a hell of a lot of lines of code per day, but I fire up
the debugger three or four times a day to test some mistery behaviour
I can't find back in my algorithm implementations or in my algorithms
itself. Look at it this way: if you write some code, and you run it,
and it misbehaves and you do not understand why when yuo SEE the
misbehaviour, you do not understand the code you've just written.


Sorry, but your reply has displayed a quite disgusting degree of
condescension and arrogance.
I am disapointed that you should feel the need to resort to this kind of
stuff.
You seem to have a hair-trigger superiority complex! ;-)

Try and remember that in the end, the presence of E&C facility does no harm
to the 'real programmers' such as yourself, who will at no point be required
to lower themselves to making use of it.

Nov 15 '05 #25
Frans Bouma wrote:
"Frank Mulvenny" <fr***********@ info.r.us> wrote in
news:HD******** ************@ne ws-text.cableinet. net:
Frans Bouma wrote:

I'm glad C# DOESN'T get E&C, so C# developers learn the GOOD way
of debugging applications instead of fixing code in the debugger.
The debugger is for testing, not for altering code.
Argh! No no no! You are TOTALLY wrong on that! Edit & Continue is an
absolute timesaving godsend. As an ex VB/C++ programmer I can swear
to that. However, I wouldnt go back to VB from C# even if C# didnt
have edit & continue, because I much prefer the terse C# syntax. But
I am living in the certainty that E&C will return at some time in
the future!


If you need EnC to develop good software, you are not thinking
when designing the software, nor when developing the software. Sorry
to be harsh, but all the "nooo, we want it and you are wrong and do
not understand what you're talking about" crap starts to get on my
nerves actually.

If you need EnC, start thinking about: why aren't we developing
software while it is running anyway? thus INSIDE a debugger?


It is definately a useful facility to have. In fact, since developing
software involves debugging it, we are already developing software in the
debugger. E&C extends the power and flexibility of that debugging process.
Also, E&C is useful even outside the context of debugging as such. One can
use it to explore the facilities of some utility classes perhaps - in a live
situation. Can be very useful again.
BTW, some people used to (and still do) argue that 'you dont need an
interactive debugger, reading the code is the GOOD way to debug',
and we all know that's rubbish! :-)


No, 'we' do not. Reading back your code is good, because it is
NECESSARY to do so when you are checking the algorithm against the
code- representation of that algorithm you wrote.


Of course, reading your code to try and work out the problem is
a good way of debugging - that's a no-brainer.
But it's not neccesarily the only or quickest way in all cases.

This argument is one of a long line of obsolete arguments. It is the direct
descendent of that old chestnut:
"Writing your program, and having to send it
off to the computer to be batch executed, and
getting the results the next day is good
because it forces you to make sure it doesnt
have bugs."

Pure hairshirt mentality, with a soupcon of elitism.

Read my article about why E&C is bad practise and how to debug
software:
http://weblogs.asp.net/fbouma/posts/22211.aspx

If you still need E&C in every day software development, I truly
hope I'll never have to work with the software you're writing, sorry.
What other debugging facilities are beyond the pale and to be used only by
the plebians I wonder?
Changing the value of a variable?
Being able to see the value of a variable?
Altering the execution point?
Of course all these things are acceptable, because these are all useful
time-saving things to be able to do.
And if it is 'morally' acceptable for one to be able to alter the state of a
program by changing variables, why not code?

The reason for that is: if you KNOW what to fix, you fix it SO IT
will then be fixed.
The same could be said for compile errors, so therefore perhaps we shouldnt
have fast compilers that let us use the compiler as a crutch to find our
coding errors. This is the same argument as is being made against E&C.

If you DO NOT know what you're doing you need a
runtime-verifier to verify what you're doing, and if you can't live
without E&C you definitely make a hell of a lot of 'stupidity'
mistakes, which is not in favor of you either.
Of course we can live without E&C, and no doubt many other developments of
the past decades.
(This wasnt a flame, but I do feel strongly about this issue ;-))


feelings are things you have for your wife/partner, your pets,
your children etc. When it comes to software, you have to think, not
feel. If yuo can't proof E&C is more productive, you can feel all you
want, but you do not have a strong case.


I have found it to be very useful. It's not essential, but then neither are
fast compilers, or intellisense. Or syntax colouring. However, all these
things are useful so long as one can avoid having an elitist philosophy that
considers them fit only for 'bad programmers'.

I tried to proof E&C is not a feature that's useful and besides some smalltalk/lisp interpreter fellow who didn't understand what the difference between an
interpreted language and a compiled language is, no-one could proof
I'm wrong.
I presume you're talking about a previous thread in some discussion forum.
Do you have a link?
I write a hell of a lot of lines of code per day, but I fire up
the debugger three or four times a day to test some mistery behaviour
I can't find back in my algorithm implementations or in my algorithms
itself. Look at it this way: if you write some code, and you run it,
and it misbehaves and you do not understand why when yuo SEE the
misbehaviour, you do not understand the code you've just written.


Sorry, but your reply has displayed a quite disgusting degree of
condescension and arrogance.
I am disapointed that you should feel the need to resort to this kind of
stuff.
You seem to have a hair-trigger superiority complex! ;-)

Try and remember that in the end, the presence of E&C facility does no harm
to the 'real programmers' such as yourself, who will at no point be required
to lower themselves to making use of it.

Nov 15 '05 #26
"Frank Mulvenny" <fr***********@ info.r.us> wrote in
news:FY******** *************@n ews-text.cableinet. net:
Frans Bouma wrote: If you need EnC to develop good software, you are not thinking
when designing the software, nor when developing the software. Sorry
to be harsh, but all the "nooo, we want it and you are wrong and do
not understand what you're talking about" crap starts to get on my
nerves actually.

If you need EnC, start thinking about: why aren't we developing
software while it is running anyway? thus INSIDE a debugger?


It is definately a useful facility to have. In fact, since developing
software involves debugging it, we are already developing software in
the debugger.


No, we're not. THere is no runtime information available when we're
typing code-text.
E&C extends the power and flexibility of that debugging
process. Also, E&C is useful even outside the context of debugging as
such. One can use it to explore the facilities of some utility classes
perhaps - in a live situation. Can be very useful again.
I don't see why. Edit&Continue is about altering code at runtime
and immediately (well, after the recompile) see the effect of that
altering. That's it.
BTW, some people used to (and still do) argue that 'you dont need an
interactive debugger, reading the code is the GOOD way to debug',
and we all know that's rubbish! :-)


No, 'we' do not. Reading back your code is good, because it is
NECESSARY to do so when you are checking the algorithm against the
code- representation of that algorithm you wrote.


Of course, reading your code to try and work out the problem is
a good way of debugging - that's a no-brainer.
But it's not neccesarily the only or quickest way in all cases.


quickest? how do you measure that? I like to write code that is
solid and bugfree. And I want to proof that not by stepping through a
debugger but by other means, like the ones we all learned during our CS
study.
This argument is one of a long line of obsolete arguments. It is the
direct descendent of that old chestnut:
"Writing your program, and having to send it
off to the computer to be batch executed, and
getting the results the next day is good
because it forces you to make sure it doesnt
have bugs."

Pure hairshirt mentality, with a soupcon of elitism.
So, you think the people who write OS kernels use E&C? Ever
debugged an OS kernel? Or ever thought of how a remote debugger works when
you're debugging that ASP.NET website application? How are you going
implement E&C in these situations? You can't. And especially debugging
ASP.NET applications is common these days.
Read my article about why E&C is bad practise and how to debug
software:
http://weblogs.asp.net/fbouma/posts/22211.aspx
Read the article in the url above about debugging software. Then
come back and tell me you use E&C through all the 4 categories of bugs.
I'm pretty sure you don't use E&C nor WONT use E&C in 3 of the 4
categories, which are the majority of bugs in software.
If you still need E&C in every day software development, I truly
hope I'll never have to work with the software you're writing, sorry.


What other debugging facilities are beyond the pale and to be used only
by the plebians I wonder?
Changing the value of a variable?
Being able to see the value of a variable?
Altering the execution point?
Of course all these things are acceptable, because these are all useful
time-saving things to be able to do.
And if it is 'morally' acceptable for one to be able to alter the state
of a program by changing variables, why not code?


If I tell you I never alter variables in a debugger, do you believe
me?
The reason for that is: if you KNOW what to fix, you fix it SO IT
will then be fixed.


The same could be said for compile errors, so therefore perhaps we
shouldnt have fast compilers that let us use the compiler as a crutch to
find our coding errors. This is the same argument as is being made
against E&C.


If there was some kind of runtime analysis software we could use,
it would a big step forward. It would be great to have pre/post conditions
in the code itself, so the compiler could check them, so we could use
compile time to highlight bugs.
If you DO NOT know what you're doing you need a
runtime-verifier to verify what you're doing, and if you can't live
without E&C you definitely make a hell of a lot of 'stupidity'
mistakes, which is not in favor of you either.


Of course we can live without E&C, and no doubt many other developments
of the past decades.


It's not about if we can live with or without having it, it's
about:
1) There is a limited amount of time. Microsoft has stated in the
VS.NET newsgroup friday that there was a choice: OR refactoring OR E&C in
C#. They clearly made the choice for refactoring in C# and E&C in VB.NET
2) E&C encourages developers to use it as THE debugging tool for
their software, while these developers should be encouraged to debug by
reading their code and test the code against the algorithms they
implemented. Look at the developers using E&C: are they reading their code
and see with pre/post conditions if their code matches a PROVED algorithm?
10 to 1 they don't: they alter code in the debugger, re-run the method and
hope the values they see now in the locals window are the ones that should
be there.
(This wasnt a flame, but I do feel strongly about this issue ;-))


feelings are things you have for your wife/partner, your pets,
your children etc. When it comes to software, you have to think, not
feel. If yuo can't proof E&C is more productive, you can feel all you
want, but you do not have a strong case.


I have found it to be very useful. It's not essential, but then neither
are fast compilers, or intellisense. Or syntax colouring. However, all
these things are useful so long as one can avoid having an elitist
philosophy that considers them fit only for 'bad programmers'.


I don't see what the relation between intellisense and E&C is. You
clearly do not understand what debugging is all about, or for that matter,
what 'programming' stands for. Hint: not typing in code.
I tried to proof E&C is not a feature that's useful and besides some

smalltalk/lisp interpreter
fellow who didn't understand what the difference between an
interpreted language and a compiled language is, no-one could proof
I'm wrong.


I presume you're talking about a previous thread in some discussion
forum. Do you have a link?


see the blog link above
I write a hell of a lot of lines of code per day, but I fire up
the debugger three or four times a day to test some mistery behaviour
I can't find back in my algorithm implementations or in my algorithms
itself. Look at it this way: if you write some code, and you run it,
and it misbehaves and you do not understand why when yuo SEE the
misbehaviour, you do not understand the code you've just written.


Sorry, but your reply has displayed a quite disgusting degree of
condescension and arrogance.


Hmm, having an opinion is being arrogant? Why? I can explain and
have explained it why E&C is bad debugging practise and should be avoided
and if a tool DOES make you avoid it (because it doesn't have the feature)
you as the developer will be a better software engineer in the end.
I am disapointed that you should feel the need to resort to this kind of
stuff. You seem to have a hair-trigger superiority complex! ;-)
Well, from time to time I get a little tired of the people who
think they are professionals (I'm not talking about you personally) but
show a lack of knowledge about what software engineering is all about. And
instead of bashing these people that they're not what they think they are,
which is rude and counterproducti ve, it's better to educate them and show
them why they're wrong and how they can improve their skills and knowledge
and THUS their software they're making. About a decade ago, my mentor at
the uni spend extra time to enlighen me why the ideas I had about
designing / engineering software were not that good and also told me why.
I'll never forget that, and if I can open other people's eyes I won't stop
doing so. So, no, this is not about being arrogant. Yes I personally think
I'm very good at software engineering, but not the best. No wonder, since
I do it for a loooong time already. What's wrong with trying to teach some
knowledge I learned during the past 10 years?
Try and remember that in the end, the presence of E&C facility does no
harm to the 'real programmers' such as yourself, who will at no point be
required to lower themselves to making use of it.


Frank, even if MS was able to implement all the features in the
world into vs.net, I still would be writing these texts. It's not about a
silly feature I won't use and you will. It's about the philosophy behind
the REASON why you would use the feature and I won't.

FB

--
Solutions Design : http://www.sd.nl
My open source .NET Software : http://www.sd.nl/software
My .NET Blog : http://weblogs.asp.net/FBouma
-------------------------------------------------------------------------
Nov 15 '05 #27
"Frank Mulvenny" <fr***********@ info.r.us> wrote in
news:FY******** *************@n ews-text.cableinet. net:
Frans Bouma wrote: If you need EnC to develop good software, you are not thinking
when designing the software, nor when developing the software. Sorry
to be harsh, but all the "nooo, we want it and you are wrong and do
not understand what you're talking about" crap starts to get on my
nerves actually.

If you need EnC, start thinking about: why aren't we developing
software while it is running anyway? thus INSIDE a debugger?


It is definately a useful facility to have. In fact, since developing
software involves debugging it, we are already developing software in
the debugger.


No, we're not. THere is no runtime information available when we're
typing code-text.
E&C extends the power and flexibility of that debugging
process. Also, E&C is useful even outside the context of debugging as
such. One can use it to explore the facilities of some utility classes
perhaps - in a live situation. Can be very useful again.
I don't see why. Edit&Continue is about altering code at runtime
and immediately (well, after the recompile) see the effect of that
altering. That's it.
BTW, some people used to (and still do) argue that 'you dont need an
interactive debugger, reading the code is the GOOD way to debug',
and we all know that's rubbish! :-)


No, 'we' do not. Reading back your code is good, because it is
NECESSARY to do so when you are checking the algorithm against the
code- representation of that algorithm you wrote.


Of course, reading your code to try and work out the problem is
a good way of debugging - that's a no-brainer.
But it's not neccesarily the only or quickest way in all cases.


quickest? how do you measure that? I like to write code that is
solid and bugfree. And I want to proof that not by stepping through a
debugger but by other means, like the ones we all learned during our CS
study.
This argument is one of a long line of obsolete arguments. It is the
direct descendent of that old chestnut:
"Writing your program, and having to send it
off to the computer to be batch executed, and
getting the results the next day is good
because it forces you to make sure it doesnt
have bugs."

Pure hairshirt mentality, with a soupcon of elitism.
So, you think the people who write OS kernels use E&C? Ever
debugged an OS kernel? Or ever thought of how a remote debugger works when
you're debugging that ASP.NET website application? How are you going
implement E&C in these situations? You can't. And especially debugging
ASP.NET applications is common these days.
Read my article about why E&C is bad practise and how to debug
software:
http://weblogs.asp.net/fbouma/posts/22211.aspx
Read the article in the url above about debugging software. Then
come back and tell me you use E&C through all the 4 categories of bugs.
I'm pretty sure you don't use E&C nor WONT use E&C in 3 of the 4
categories, which are the majority of bugs in software.
If you still need E&C in every day software development, I truly
hope I'll never have to work with the software you're writing, sorry.


What other debugging facilities are beyond the pale and to be used only
by the plebians I wonder?
Changing the value of a variable?
Being able to see the value of a variable?
Altering the execution point?
Of course all these things are acceptable, because these are all useful
time-saving things to be able to do.
And if it is 'morally' acceptable for one to be able to alter the state
of a program by changing variables, why not code?


If I tell you I never alter variables in a debugger, do you believe
me?
The reason for that is: if you KNOW what to fix, you fix it SO IT
will then be fixed.


The same could be said for compile errors, so therefore perhaps we
shouldnt have fast compilers that let us use the compiler as a crutch to
find our coding errors. This is the same argument as is being made
against E&C.


If there was some kind of runtime analysis software we could use,
it would a big step forward. It would be great to have pre/post conditions
in the code itself, so the compiler could check them, so we could use
compile time to highlight bugs.
If you DO NOT know what you're doing you need a
runtime-verifier to verify what you're doing, and if you can't live
without E&C you definitely make a hell of a lot of 'stupidity'
mistakes, which is not in favor of you either.


Of course we can live without E&C, and no doubt many other developments
of the past decades.


It's not about if we can live with or without having it, it's
about:
1) There is a limited amount of time. Microsoft has stated in the
VS.NET newsgroup friday that there was a choice: OR refactoring OR E&C in
C#. They clearly made the choice for refactoring in C# and E&C in VB.NET
2) E&C encourages developers to use it as THE debugging tool for
their software, while these developers should be encouraged to debug by
reading their code and test the code against the algorithms they
implemented. Look at the developers using E&C: are they reading their code
and see with pre/post conditions if their code matches a PROVED algorithm?
10 to 1 they don't: they alter code in the debugger, re-run the method and
hope the values they see now in the locals window are the ones that should
be there.
(This wasnt a flame, but I do feel strongly about this issue ;-))


feelings are things you have for your wife/partner, your pets,
your children etc. When it comes to software, you have to think, not
feel. If yuo can't proof E&C is more productive, you can feel all you
want, but you do not have a strong case.


I have found it to be very useful. It's not essential, but then neither
are fast compilers, or intellisense. Or syntax colouring. However, all
these things are useful so long as one can avoid having an elitist
philosophy that considers them fit only for 'bad programmers'.


I don't see what the relation between intellisense and E&C is. You
clearly do not understand what debugging is all about, or for that matter,
what 'programming' stands for. Hint: not typing in code.
I tried to proof E&C is not a feature that's useful and besides some

smalltalk/lisp interpreter
fellow who didn't understand what the difference between an
interpreted language and a compiled language is, no-one could proof
I'm wrong.


I presume you're talking about a previous thread in some discussion
forum. Do you have a link?


see the blog link above
I write a hell of a lot of lines of code per day, but I fire up
the debugger three or four times a day to test some mistery behaviour
I can't find back in my algorithm implementations or in my algorithms
itself. Look at it this way: if you write some code, and you run it,
and it misbehaves and you do not understand why when yuo SEE the
misbehaviour, you do not understand the code you've just written.


Sorry, but your reply has displayed a quite disgusting degree of
condescension and arrogance.


Hmm, having an opinion is being arrogant? Why? I can explain and
have explained it why E&C is bad debugging practise and should be avoided
and if a tool DOES make you avoid it (because it doesn't have the feature)
you as the developer will be a better software engineer in the end.
I am disapointed that you should feel the need to resort to this kind of
stuff. You seem to have a hair-trigger superiority complex! ;-)
Well, from time to time I get a little tired of the people who
think they are professionals (I'm not talking about you personally) but
show a lack of knowledge about what software engineering is all about. And
instead of bashing these people that they're not what they think they are,
which is rude and counterproducti ve, it's better to educate them and show
them why they're wrong and how they can improve their skills and knowledge
and THUS their software they're making. About a decade ago, my mentor at
the uni spend extra time to enlighen me why the ideas I had about
designing / engineering software were not that good and also told me why.
I'll never forget that, and if I can open other people's eyes I won't stop
doing so. So, no, this is not about being arrogant. Yes I personally think
I'm very good at software engineering, but not the best. No wonder, since
I do it for a loooong time already. What's wrong with trying to teach some
knowledge I learned during the past 10 years?
Try and remember that in the end, the presence of E&C facility does no
harm to the 'real programmers' such as yourself, who will at no point be
required to lower themselves to making use of it.


Frank, even if MS was able to implement all the features in the
world into vs.net, I still would be writing these texts. It's not about a
silly feature I won't use and you will. It's about the philosophy behind
the REASON why you would use the feature and I won't.

FB

--
Solutions Design : http://www.sd.nl
My open source .NET Software : http://www.sd.nl/software
My .NET Blog : http://weblogs.asp.net/FBouma
-------------------------------------------------------------------------
Nov 15 '05 #28
"Frans Bouma" <pe**********@x s4all.nl> wrote in message
news:Xn******** *************** *********@207.4 6.248.16...
No, we're not. THere is no runtime information available when we're
typing code-text.
i think, C# IDE does compile (or parse) while typing (intellisense most of
the times is correct)
AFAIK designer does parse the CreateComponent method
I don't see why. Edit&Continue is about altering code at runtime
and immediately (well, after the recompile) see the effect of that
altering. That's it.
Frank implies the case of a "newbie" that is in the process of using your
code, and does not understand how it behaves. Consider E&C as an online/live
documentation or as learning tool. Much better in many cases than any docs
you may have write
Read my article about why E&C is bad practise and how to debug
software:
http://weblogs.asp.net/fbouma/posts/22211.aspx


In your article you forgot two other categories, i often encounter

1) Off-by-one errors most in drawing, coordinate calculation, but also the
relation of string.IndexOf and string.Substrin g (should i add 1, subtract 1
or leave it as is ?)
Those quests break my nerves, i wish i could write down a random expression
and while debugging write the correct one using the current context state

2) Heuristics-like (no algorithm exists, or trial and error *is* the
algorithm)
It's not about if we can live with or without having it, it's
about:
1) There is a limited amount of time. Microsoft has stated in the
VS.NET newsgroup friday that there was a choice: OR refactoring OR E&C in
C#. They clearly made the choice for refactoring in C# and E&C in VB.NET
Good point, I prefer refactoring but i guess this is not the reason
I think that the first implementation of E&C will be lame, i doubt that it
can handle templates and or unsafe code. With those omissions only VB (lame
by nature) can have it<g>
2) E&C encourages developers to use it as THE debugging tool for
their software, while these developers should be encouraged to debug by
reading their code and test the code against the algorithms they
implemented. Look at the developers using E&C: are they reading their code
and see with pre/post conditions if their code matches a PROVED algorithm?
What do you mean by "PROVED algorithm"
quick-sort ?
If not how do you prove an algorithm ?
ie STDDEV of Excel (and .net) uses a PROVED algorithm, but the result is in
many cases wrong
it's better to educate them and show
them why they're wrong and how they can improve their skills and knowledge
and THUS their software they're making.


this reminds me this :
http://lists.insecure.org/linux-kern.../Sep/1177.html

Should i follow it too ?
Nov 15 '05 #29
"Frans Bouma" <pe**********@x s4all.nl> wrote in message
news:Xn******** *************** *********@207.4 6.248.16...
No, we're not. THere is no runtime information available when we're
typing code-text.
i think, C# IDE does compile (or parse) while typing (intellisense most of
the times is correct)
AFAIK designer does parse the CreateComponent method
I don't see why. Edit&Continue is about altering code at runtime
and immediately (well, after the recompile) see the effect of that
altering. That's it.
Frank implies the case of a "newbie" that is in the process of using your
code, and does not understand how it behaves. Consider E&C as an online/live
documentation or as learning tool. Much better in many cases than any docs
you may have write
Read my article about why E&C is bad practise and how to debug
software:
http://weblogs.asp.net/fbouma/posts/22211.aspx


In your article you forgot two other categories, i often encounter

1) Off-by-one errors most in drawing, coordinate calculation, but also the
relation of string.IndexOf and string.Substrin g (should i add 1, subtract 1
or leave it as is ?)
Those quests break my nerves, i wish i could write down a random expression
and while debugging write the correct one using the current context state

2) Heuristics-like (no algorithm exists, or trial and error *is* the
algorithm)
It's not about if we can live with or without having it, it's
about:
1) There is a limited amount of time. Microsoft has stated in the
VS.NET newsgroup friday that there was a choice: OR refactoring OR E&C in
C#. They clearly made the choice for refactoring in C# and E&C in VB.NET
Good point, I prefer refactoring but i guess this is not the reason
I think that the first implementation of E&C will be lame, i doubt that it
can handle templates and or unsafe code. With those omissions only VB (lame
by nature) can have it<g>
2) E&C encourages developers to use it as THE debugging tool for
their software, while these developers should be encouraged to debug by
reading their code and test the code against the algorithms they
implemented. Look at the developers using E&C: are they reading their code
and see with pre/post conditions if their code matches a PROVED algorithm?
What do you mean by "PROVED algorithm"
quick-sort ?
If not how do you prove an algorithm ?
ie STDDEV of Excel (and .net) uses a PROVED algorithm, but the result is in
many cases wrong
it's better to educate them and show
them why they're wrong and how they can improve their skills and knowledge
and THUS their software they're making.


this reminds me this :
http://lists.insecure.org/linux-kern.../Sep/1177.html

Should i follow it too ?
Nov 15 '05 #30

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
1523
by: Donald 'Paddy' McCarthy | last post by:
So, for those that don't actively not-want a Python macro facility. If we are to have it what should it do? 1) Macro definitions should allow Doc strings. 2) There should be a separate statement to import Macro definitions from another file. 3) Existing import of a module file containing module definitions should NOT cause the module files macros to be 'active' in the file that is importing. A new macro import command would be needed...
2
3099
by: Martin Danielson | last post by:
Hello. I've been testing the WScript.Shell object and the Run command now for a server query. The file I am running generates a file with the server querys which i later on parse in my page. But there is a problem. When running the Run command om my Windows XP machine it all seems fine. But when trying to run it on my webserver (not configured by myself) I get an error, or the command fails. It's nothing wrong with the acctuall command but...
1
290
by: BStorm | last post by:
We have an application that is using .NET Crystal Reports. However, doing an XCOPY of this application to a client machine does not seem to work. What needs to be included?
5
1969
by: djake | last post by:
Someone can explain me what are makefiles useful for? Couldn't i write shell script instead of makefiles? (*.sh in unix; *.cmd in win32) Moreover i really doesn't understand what dependencies are useful for? Except when i need to compile different files with different compile options, i doesn't need to declare explicitly dependecies. Infact the compiler already find dependecies looking for header files included into the sources. Can...
35
3366
by: GTO | last post by:
I do not believe that C# is the future of C++. I also do not believe that adding two thousand new library functions to the standard library is the future of C++. But what is the future of C++? Is it as good as a programming language can get? Like so many of you, I programmed speech recognizers, image recognition systems, a portion of a chess program, lots of numeric code using STL, and tons of other applications in C++, (even firmware...
0
1219
by: Darin Browne | last post by:
I found the following email validation code in the newsgroup and it works great except it won't allow a dash in the name. I do not understand regular expressions so I'm unsure of how to fix it. Can someone who understands regular expressions tell me what needs to be changed to allow a dash in the email name public static bool IsValidEmailAddress(string sEmail if (sEmail == null return false
3
2060
by: Ben Becker | last post by:
I am trying to build a custom crosstab type of grid where I take some items in a data grid and based on the content of the current item compared to the previous item, determine if a new row in a table should be created or not. In order to do this, I need to have full control over the conditional logic for how items get displayed within a repeater element which I'm not seeing as possible. How can I cursor through a data set, apply...
5
1068
by: Oscar | last post by:
After that I've build a VB.NET/ASP.NET Webapplication in VS 2003 I want to install it at a webserver. Are there additional licence requirements besides the MS 2003 Server Operating system?
5
2958
by: HotRod | last post by:
I am new to this so please go easy. We currently have some students doing some work on some web based tracking documents for us. They are currently using VB .net to develop what we requested. Anyway I've been calling my local ISP's and no one supports .net it seems to be all apache and MySQL. I'm wondering if everyone here can answer a few questions. 1) Can I run vb .net web pages on a regular IIS server without the .net extensions? 2)...
2
1628
by: stargate03 | last post by:
Hi there I have a MYSQL database which has the following table CREATE TABLE `#__content` ( `id` int(11) unsigned NOT NULL auto_increment, `title` varchar(100) NOT NULL default '', `title_alias` varchar(100) NOT NULL default '', `introtext` mediumtext NOT NULL,
0
9820
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, weíll explore What is ONU, What Is Router, ONU & Routerís main usage, and What is the difference between ONU and Router. Letís take a closer look ! Part I. Meaning of...
0
9670
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
10844
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
10254
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
1
7792
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Duprť who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
6979
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5649
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
0
5826
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
3
3115
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.