469,645 Members | 1,569 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,645 developers. It's quick & easy.

General question to other developers...

I've been writing in C# for about 4 years now, coming from VB.net and
VB6 before that, in which I know I'm not alone. I found learning C#,
at least to the extent that I use it in developing database front-
ends, to be rather painless. The language and VS ide seemed
comfortable pretty quickly.

Some of the enhancements that have come along in the last two updates
(via VS 2005 and 2008) like Generics and now Linq and anonymous types
etc, are really nice, but seem to have made the learning curve a bit
steeper. I'd like to see my son learn coding, but where I used to tell
him he could get off the ground in a few months, that now seems more
like two or three years. After all, how would you use Linq to Sql if
you didn't understand T-Sql yet? And WPF seems like it has great
potential, but that's another layer again.

Anybody have thoughts they care to share on this?

Bob
Jan 17 '08 #1
40 1451
RvGrah <rv****************@sbcglobal.netwrote:
I've been writing in C# for about 4 years now, coming from VB.net and
VB6 before that, in which I know I'm not alone. I found learning C#,
at least to the extent that I use it in developing database front-
ends, to be rather painless. The language and VS ide seemed
comfortable pretty quickly.

Some of the enhancements that have come along in the last two updates
(via VS 2005 and 2008) like Generics and now Linq and anonymous types
etc, are really nice, but seem to have made the learning curve a bit
steeper. I'd like to see my son learn coding, but where I used to tell
him he could get off the ground in a few months, that now seems more
like two or three years. After all, how would you use Linq to Sql if
you didn't understand T-Sql yet? And WPF seems like it has great
potential, but that's another layer again.

Anybody have thoughts they care to share on this?
I don't think C# is an ideal first language, to be honest -
particularly not C# 2 and 3. I've heard good things about Squeak, a
Smalltalk variant often used for education.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
World class .NET training in the UK: http://iterativetraining.co.uk
Jan 17 '08 #2
Bob,

The learning curve for basic .NET 2.0 is not that hard. Even if your son
has little to none experience in coding he should be able to create
console / form applications in no time. When using form applications he
immidiately sees what he has created so its a good motivation to
continue. When he has basic knowledge of C# it might be wise to show him
some sql before letting him work with linq. the step will be small from
there as the basics of linq aren't to difficult to understand with some
sql knowledge.

Finally WPF: I can't say I've tested a lot of WPF features but what i've
seen indeed has great potential. The only problem is that the components
have different attributes and methods then the normal c# components so
that development was not as easy as I hoped. Also, when deploying wpf
over the internet as an xbap application all king of security issues
come up.

Hope this information could be of any help

Edwin

RvGrah wrote:
I've been writing in C# for about 4 years now, coming from VB.net and
VB6 before that, in which I know I'm not alone. I found learning C#,
at least to the extent that I use it in developing database front-
ends, to be rather painless. The language and VS ide seemed
comfortable pretty quickly.

Some of the enhancements that have come along in the last two updates
(via VS 2005 and 2008) like Generics and now Linq and anonymous types
etc, are really nice, but seem to have made the learning curve a bit
steeper. I'd like to see my son learn coding, but where I used to tell
him he could get off the ground in a few months, that now seems more
like two or three years. After all, how would you use Linq to Sql if
you didn't understand T-Sql yet? And WPF seems like it has great
potential, but that's another layer again.

Anybody have thoughts they care to share on this?

Bob
Jan 17 '08 #3
On Thu, 17 Jan 2008 12:55:50 -0800, RvGrah
<rv****************@sbcglobal.netwrote:
[...]
Some of the enhancements that have come along in the last two updates
(via VS 2005 and 2008) like Generics and now Linq and anonymous types
etc, are really nice, but seem to have made the learning curve a bit
steeper. I'd like to see my son learn coding, but where I used to tell
him he could get off the ground in a few months, that now seems more
like two or three years. After all, how would you use Linq to Sql if
you didn't understand T-Sql yet? And WPF seems like it has great
potential, but that's another layer again.

Anybody have thoughts they care to share on this?
I agree with Jon that C# is probably not a good choice for a first
computer language.

Frankly, I think that someone first getting into programming, especially
at a young age, should probably not even start out with an OOP language.
For all its flaws as compared to other high-level languages in common use
in the industry, BASIC still remains IMHO a very good introduction to the
basic ideas of data storage, flow control, and i/o. There's a reason the
word "beginner" is in the name. :)

And I'm not talking about an OOP variation of BASIC like VB or VB.NET
either. Just plain old BASIC. Though, properly managed I think one could
use a VB-based environment to introduce someone to programming. You'd
just need to be careful to provide all of the non-BASIC goop for that
person.

Another good starting language is Logo. Granted, it's a little more
object-oriented and even a bit functional in nature, but IMHO it's still
at its heart a straight-forward procedural language. It's also inherently
graphical, which can make it a bit more fun to play with than BASIC
(though frankly, when I was a child learning BASIC, it never once occurred
to me that I might not be having fun even when the only output I could do
was text).

I also think that Lisp can be a good starting language. It's actually a
relatively powerful language IMHO, but it's fairly simple to describe at
its most basic. Of course, the downside is that learning Lisp doesn't
really give you much of an introduction with respect to the procedural
environments that are the bread-and-butter of the software industry. But
at least it helps a person start thinking in a more structured,
computer-friendly way (which IMHO is an essential part of being a
programmer).

Basically, I don't think that C#, or any .NET environment for that matter,
is a very good way to introduce someone to programming. Even without the
changes in C# 2.0 and 3.0, it's a fairly complicated, abstract environment
and much better suited to someone that already has some good programming
fundamentals under their belt.

Pete
Jan 17 '08 #4
Jon Skeet [C# MVP] <sk***@pobox.comwrote in news:MPG.21f9d68e1969a79b7c6
@msnews.microsoft.com:
RvGrah <rv****************@sbcglobal.netwrote:
>I've been writing in C# for about 4 years now, coming from VB.net and
VB6 before that, in which I know I'm not alone. I found learning C#,
at least to the extent that I use it in developing database front-
ends, to be rather painless. The language and VS ide seemed
comfortable pretty quickly.

Some of the enhancements that have come along in the last two updates
(via VS 2005 and 2008) like Generics and now Linq and anonymous types
etc, are really nice, but seem to have made the learning curve a bit
steeper. I'd like to see my son learn coding, but where I used to tell
him he could get off the ground in a few months, that now seems more
like two or three years. After all, how would you use Linq to Sql if
you didn't understand T-Sql yet? And WPF seems like it has great
potential, but that's another layer again.

Anybody have thoughts they care to share on this?

I don't think C# is an ideal first language, to be honest -
particularly not C# 2 and 3. I've heard good things about Squeak, a
Smalltalk variant often used for education.
It's difficult to argue my case as C# is my first and only language - next
to T-SQL. I started learning about 2 years ago. I passed my 70-316 Window
Applications exam after 1 year. Before that I'd already done 70-229 Sql
Server 2000 Design and Implementation, so I had a head start I guess.

I didn't work as a programmer. I was (and still am) a tester working in a
small development team, looking to give my self that little bit more to
prove myself. I've recently started work along side the developers in the
team on a C# application; two of which are VB6 developers. I'm acting as a
mentor to get them using C#. From the start I've always concentrated on the
concepts of OOP, so I simply think that way when I'm programming; trying to
pass those concepts and my idea on the VB6 programmers is interesting and
frustrating for both. They just struggle to grasp the OOP concepts.

IMHO, with the possible exception of the functions provided in .Net
Framework, C# is just another programming language. Encapsulation and
inheritance etc are powerful concepts with OOP, otherwise is there really
that much of a difference? Yet as I said before "It's difficult to argue my
case as C# is my first and only language".

Jan 17 '08 #5
Peter Duniho wrote:
On Thu, 17 Jan 2008 12:55:50 -0800, RvGrah
<rv****************@sbcglobal.netwrote:
>[...]
Some of the enhancements that have come along in the last two updates
(via VS 2005 and 2008) like Generics and now Linq and anonymous types
etc, are really nice, but seem to have made the learning curve a bit
steeper. I'd like to see my son learn coding, but where I used to tell
him he could get off the ground in a few months, that now seems more
like two or three years. After all, how would you use Linq to Sql if
you didn't understand T-Sql yet? And WPF seems like it has great
potential, but that's another layer again.

Anybody have thoughts they care to share on this?

I agree with Jon that C# is probably not a good choice for a first
computer language.

Frankly, I think that someone first getting into programming, especially
at a young age, should probably not even start out with an OOP
language. For all its flaws as compared to other high-level languages
in common use in the industry, BASIC still remains IMHO a very good
introduction to the basic ideas of data storage, flow control, and i/o.
There's a reason the word "beginner" is in the name. :)
There's also a reason Dijkstra wrote:

"It is practically impossible to teach good programming to students that
have had a prior exposure to BASIC: as potential programmers they are
mentally mutilated beyond hope of regeneration."

I don't think "beyond hope of regeneration" is quite right, but it
certainly does far more harm than good.

Alun Harford
Jan 17 '08 #6
RvGrah wrote:
I've been writing in C# for about 4 years now, coming from VB.net and
VB6 before that, in which I know I'm not alone. I found learning C#,
at least to the extent that I use it in developing database front-
ends, to be rather painless. The language and VS ide seemed
comfortable pretty quickly.

Some of the enhancements that have come along in the last two updates
(via VS 2005 and 2008) like Generics and now Linq and anonymous types
etc, are really nice, but seem to have made the learning curve a bit
steeper. I'd like to see my son learn coding, but where I used to tell
him he could get off the ground in a few months, that now seems more
like two or three years. After all, how would you use Linq to Sql if
you didn't understand T-Sql yet? And WPF seems like it has great
potential, but that's another layer again.

Anybody have thoughts they care to share on this?
I don't think C# is a good first programming language.

The 'purer' functional languages are a much better bet. ML, Haskell, and
(if you want a .NET language) F# are much better languages to learn first.

Alun Harford
Jan 17 '08 #7
JTC^..^ <da********@jazzthecat.co.ukwrote:

<snip>
IMHO, with the possible exception of the functions provided in .Net
Framework, C# is just another programming language. Encapsulation and
inheritance etc are powerful concepts with OOP, otherwise is there really
that much of a difference? Yet as I said before "It's difficult to argue my
case as C# is my first and only language".
Yes, there are massive differences between different types of
programming language. Have a look at things like Haskell or Lisp, and
then compare them to C# again. Even consider "pure" SQL (rather than
say T-Sql etc) - it's a different world.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
World class .NET training in the UK: http://iterativetraining.co.uk
Jan 17 '08 #8
On Thu, 17 Jan 2008 14:40:07 -0800, Alun Harford
<de*****@alunharford.co.ukwrote:
There's also a reason Dijkstra wrote:

"It is practically impossible to teach good programming to students that
have had a prior exposure to BASIC: as potential programmers they are
mentally mutilated beyond hope of regeneration."

I don't think "beyond hope of regeneration" is quite right, but it
certainly does far more harm than good.
I don't understand that comment, and I think it's hopelessly
narrow-minded. Just because Dijkstra knows something about programming,
that doesn't mean he knows something about _teaching_ programming. That
statement proves to me that he doesn't know enough about teaching.

An entire generation of programmers were raised on BASIC, myself
included. I have not found my BASIC experience to be a liability, and in
fact if anything it made me appreciate the more structured environments I
was exposed to later. Beyond that, BASIC is extremely simple and provides
a no-nonsense, no-complications initial exposure to the idea of thinking
like a computer.

Frankly, I've seen far too many people approach programming from a sort of
gestalt, holistic point of view, trying to do everything at once rather
than applying a good methodical approach. They have no idea where to
start, so they try to start everything all at once and fail miserably. I
suspect that these people have been exposed to higher-level, highly
abstract concepts far too early. They don't have the discipline required
to work through problems a piece at a time the way that computers insist
on.

And finally, any teacher who says that teaching a student is impossible is
simply a failure as a teacher. Assuming a student who is willing, any
competent teacher should be able to convey whatever concept they need to.
Blaming that failure on the student or the student's prior experience is a
cop-out. It is true that the "law of primacy" applies, and a student who
has learned bad habits from their use of BASIC will have to unlearn them
and this is harder than learning the good habits in the first place. But
BASIC doesn't in and of itself cause bad habits (you can just as easily
teach good habits in BASIC as elsewhere, within the limitations of BASIC
of course), and in any case these bad habits are always unlearnable.

Maybe it's my own bias, based on my own experience, but I don't consider
myself a bad programmer and I don't think that I was "mentally mutilated
beyond hope of regeneration". I think it's silly for anyone to claim that
BASIC is necessarily going to be a cause of something like this happening.

Pete
Jan 17 '08 #9
RvGrah wrote:
I've been writing in C# for about 4 years now, coming from VB.net and
VB6 before that, in which I know I'm not alone. I found learning C#,
at least to the extent that I use it in developing database front-
ends, to be rather painless. The language and VS ide seemed
comfortable pretty quickly.

Some of the enhancements that have come along in the last two updates
(via VS 2005 and 2008) like Generics and now Linq and anonymous types
etc, are really nice, but seem to have made the learning curve a bit
steeper. I'd like to see my son learn coding, but where I used to tell
him he could get off the ground in a few months, that now seems more
like two or three years. After all, how would you use Linq to Sql if
you didn't understand T-Sql yet? And WPF seems like it has great
potential, but that's another layer again.

Anybody have thoughts they care to share on this?
C# is not that bad a language to start with.

Just start with a reasonable level of ambition.

Do not jump to LINQ in week 2.

Of course there are other languages as well.

20 years ago Pascal was generally considered *the* language
for learning programming.

It is not in favor today, but it is still a good learning
language. Not too complex and you will learn good practices.

Arne
Jan 18 '08 #10
I just would add that my kids, started with "Scratch", a language from MIT.
It teaches some of the basic principles before moving on to a more
traditional language. I liken it to the old "Logo" language. Now the older
one is dabbling in C#.

http://scratch.mit.edu/
"RvGrah" wrote:
I've been writing in C# for about 4 years now, coming from VB.net and
VB6 before that, in which I know I'm not alone. I found learning C#,
at least to the extent that I use it in developing database front-
ends, to be rather painless. The language and VS ide seemed
comfortable pretty quickly.

Some of the enhancements that have come along in the last two updates
(via VS 2005 and 2008) like Generics and now Linq and anonymous types
etc, are really nice, but seem to have made the learning curve a bit
steeper. I'd like to see my son learn coding, but where I used to tell
him he could get off the ground in a few months, that now seems more
like two or three years. After all, how would you use Linq to Sql if
you didn't understand T-Sql yet? And WPF seems like it has great
potential, but that's another layer again.

Anybody have thoughts they care to share on this?

Bob
Jan 18 '08 #11
Peter Duniho wrote:
On Thu, 17 Jan 2008 14:40:07 -0800, Alun Harford
<de*****@alunharford.co.ukwrote:
>There's also a reason Dijkstra wrote:

"It is practically impossible to teach good programming to students
that have had a prior exposure to BASIC: as potential programmers they
are mentally mutilated beyond hope of regeneration."

I don't think "beyond hope of regeneration" is quite right, but it
certainly does far more harm than good.

I don't understand that comment, and I think it's hopelessly
narrow-minded. Just because Dijkstra knows something about programming,
that doesn't mean he knows something about _teaching_ programming. That
statement proves to me that he doesn't know enough about teaching.

An entire generation of programmers were raised on BASIC, myself
included. I have not found my BASIC experience to be a liability, and
in fact if anything it made me appreciate the more structured
environments I was exposed to later. Beyond that, BASIC is extremely
simple and provides a no-nonsense, no-complications initial exposure to
the idea of thinking like a computer.
Dijkstra worked as a teacher at a university for several years and wrote
a book about teaching computer science, so he must have had some
experience with teaching.

It should be note that he said that about BASIC in 1975. And the BASIC
of 1975 was let us call it "basic" and did not have the capabilities
of recent BASIC dialects like VB.NET and VB6.

Arne
Jan 18 '08 #12
On Thu, 17 Jan 2008 17:35:16 -0800, Jeroen Mostert <jm******@xs4all.nl>
wrote:
It's a good thing he's dead, because he'd be deeply offended at that
statement.
That seems doubtful to me. How could someone who makes such blatantly
offensive statements themselves be so easily offended?

In any case, if he would be offended, then he ought not to have made such
an offensive statement. People in glass houses, etc.
The thing is, Dijkstra had a very different view from what programming
is (or ought to be) than most of us do, and it was that view he was
trying to teach.
If your point is that his idea of what's a "good programmer" is different
from the rest of the world's idea, that's fine with me. But then the
quoted statement is entirely irrelevant in this discussion.
[...]
>And finally, any teacher who says that teaching a student is impossible
is simply a failure as a teacher.

On the other hand, anyone who claims that, given enough time and effort,
*anyone* could be taught to program well, is arguably part of the
problem.
I did qualify my comment as being applicable only to a student who is
themselves willing to be part of the process.

There are obviously some people that are unteachable. Whether due to
mental defect or simply their lack of interest in the topic. But
otherwise, it is simply untrue that it could be impossible to teach a
particular person a particular topic. Human beings are designed to learn,
and given a student has all the normal functioning human intelligence and
who is able and willing, they can be taught anything.

Pete
Jan 18 '08 #13
My 2c...

It is more than likely that, if your son progresses in programming, he
will be writing in an OOP environment.
My belief (as an experienced software developer using pretty much any
language you care to mention (yes, I'm THAT old)) is that the best
thing to teach a student today is OO concepts. These are so poorly
understood by so many developers today, that a good understanding puts
you a step ahead.
Whether C# is the 'best' language is debatable - and I think depends a
great deal on age and prior experience. All those curly braces
sometimes make it look a little scarey to first timers!

Remember, you don't have to look at the whole of the .NET 3.5
framework if you are teaching programming. Start with a simple Hello
World form - click the button and change the label text. This
introduces OO (and also alows the student to play with the form
properties, (which can be a distraction in the classroom environment,
I admit, but playing with properties is introducing OO in an easy way)

You can progress from there whichever way your fancy takes you -
introducing just parts of the framework that are necessary to develop
the program. Initially, I feel, this will involve introducing the
usual programming concepts common to most programming languages -
iteration and conditional programming being the two major constructs.

Moving on to databases does become increasingly complex - and (in my
experience) DB concepts are often taught separately, introducing SQL
outside of the development environment, so that when tying together
some front ent program to a database, both ends are familiar to the
student.

One problem that occurs here is the abilities of the teacher. Many
teachers were brought up on procedural languages, and many take the
'it didn't do me any harm' view. This is a poor argument. I have a
friend who never wore a bicycle helmet when he was young, and it never
did him any harm either - so he lets his kids ride around without
them. Of course, his school friend who was killed when not wearing a
helment didn't grow up to sire any offspring...

..\\ax
Software developer for more years than I care to remember, high school
teacher for not very long at all.
Jan 18 '08 #14
On Thu, 17 Jan 2008 19:19:36 -0800, .\\axxx <ma*******@gmail.comwrote:
My 2c...

It is more than likely that, if your son progresses in programming, he
will be writing in an OOP environment.
My belief (as an experienced software developer using pretty much any
language you care to mention (yes, I'm THAT old)) is that the best
thing to teach a student today is OO concepts. These are so poorly
understood by so many developers today, that a good understanding puts
you a step ahead.
No question that OOP is going to be an eventual step for any serious
programmer.

But. We don't insist that children go straight to walking. We let them
practice crawling first. That allows them to master basic concepts like
perception and navigation before they are up on two feet going too fast
for their brains to keep up.

Likewise, even OOP programming still involves a lot of basic procedural
implementation details. I don't care how well a person has been taught
OOP design, if they haven't mastered the basic mechanics first they still
won't be able to write a useful program.
[...]
One problem that occurs here is the abilities of the teacher. Many
teachers were brought up on procedural languages, and many take the
'it didn't do me any harm' view. This is a poor argument.
In that situation, sure. I agree. A bicycle helment is demonstrably
useful in preventing injuries and death that might otherwise occur. Just
because someone lived through not wearing one, that doesn't mean a
helmet's not useful.

But it's a pretty far stretch to use the same argument to justify a claim
that learning programming without OOP concepts as an initial step is
harmful to one's future as a programmer. All the evidence in fact argues
against this claim. On the other hand, it's well-proved that when
teaching something to a person, it does no good whatsoever to jump ahead
to advanced topics before they have mastered the foundational elements.

Pete
Jan 18 '08 #15
On Jan 18, 1:43 pm, "Peter Duniho" <NpOeStPe...@nnowslpianmk.com>
wrote:
On Thu, 17 Jan 2008 19:19:36 -0800, .\\axxx <mailma...@gmail.comwrote:
My 2c...
It is more than likely that, if your son progresses in programming, he
will be writing in an OOP environment.
My belief (as an experienced software developer using pretty much any
language you care to mention (yes, I'm THAT old)) is that the best
thing to teach a student today is OO concepts. These are so poorly
understood by so many developers today, that a good understanding puts
you a step ahead.

No question that OOP is going to be an eventual step for any serious
programmer.

But. We don't insist that children go straight to walking. We let them
practice crawling first. That allows them to master basic concepts like
perception and navigation before they are up on two feet going too fast
for their brains to keep up.

Likewise, even OOP programming still involves a lot of basic procedural
implementation details. I don't care how well a person has been taught
OOP design, if they haven't mastered the basic mechanics first they still
won't be able to write a useful program.
I believe you think of OOP as being an advanced concept because it was
learned by you post procedural coding - and not hand-in-hand. If we
are going to be walking in a jungle environment, we shouldn't learn to
crawl in a suburban loungeroom (sorry - running out of relevant
examples). OOp is, if you like, the environment, so learning to
program in that environment is, I would think, the best environment
for learning. And learning procedural language can be done just as
well in that environment as in another.
>
[...]
One problem that occurs here is the abilities of the teacher. Many
teachers were brought up on procedural languages, and many take the
'it didn't do me any harm' view. This is a poor argument.

In that situation, sure. I agree. A bicycle helment is demonstrably
useful in preventing injuries and death that might otherwise occur. Just
because someone lived through not wearing one, that doesn't mean a
helmet's not useful.

But it's a pretty far stretch to use the same argument to justify a claim
that learning programming without OOP concepts as an initial step is
harmful to one's future as a programmer. All the evidence in fact argues
against this claim. On the other hand, it's well-proved that when
teaching something to a person, it does no good whatsoever to jump ahead
to advanced topics before they have mastered the foundational elements.
All the evidence? You mean all the OOp programmers now who learned on
procedural languages first? I've met a large number who were, frankly,
crap at OOP - and I have never met a professional who was brought up
on OOp from first principals - so what evidence?

and again - sure you need to teach the basics before going on to the
advanced, but do you really think OOP is advanced? I think of it as
simply a different way of thinking about a problem - and in fact with
kids I find it makes more sense to them as a concept that 'pure'
coding. Sure, they still need to learn how to write a function, and a
loop, and an If and Switch (or whatever) (and, please, nobody teach
them to use GoTo :) but doing this in an OO environment, using OO
terms, is a great introduction to something which, at its heart, is
not advanced - just different.
Pete
Jan 18 '08 #16
On Thu, 17 Jan 2008 20:53:11 -0800, .\\axxx <ma*******@gmail.comwrote:
I believe you think of OOP as being an advanced concept because it was
learned by you post procedural coding - and not hand-in-hand.
That's not why I think of OOP as being advanced. OOP requires a certain
level of abstract thinking that is simply not even present in most young
children. On the other hand, the idea behind a basic loop iteration (for
example) is something anyone who can count and follow instructions can
easily grasp.

OOP _is_ advanced. And not just because I didn't learn it first.
[...]
All the evidence? You mean all the OOp programmers now who learned on
procedural languages first? I've met a large number who were, frankly,
crap at OOP
Irrelevant. The assertion was that it's impossible to teach good
programming practices to someone who started with BASIC. To refute that
assertion you need only demonstrate some (or one, for that matter)
programmers who started with BASIC but who have learned good programming
practices.

Every field has what I believe to be a relatively high number of people
who don't practice the field with proficiency. Honestly, in most cases I
think it's more an issue of the people just not caring than anything
else. Those people _could_ be good at what they do, if only they had some
pride in their work.

But even if all those people are truly intractably bad at what they do,
it's the _other_ people that are relevant. Those who serve as
counter-examples to the false claim. And no matter how many bad
programmers you find, there are plenty of the other kind.
- and I have never met a professional who was brought up
on OOp from first principals - so what evidence?
Well, unless it's your claim that you also have never met a professional
who has learned good programming practices, then you have stated the
evidence right here (anecdotal though it may be).
[...] Sure, they still need to learn how to write a function, and a
loop, and an If and Switch (or whatever) (and, please, nobody teach
them to use GoTo :) but doing this in an OO environment, using OO
terms, is a great introduction to something which, at its heart, is
not advanced - just different.
Even assuming you can successfully teach your student OOP, the OOP
concepts cannot be used at all (in mainstream programming contexts)
without the procedural/imperative foundation. It's a basic matter of
primacy: you can write a program with imperatives but without OOP. You
can't write a program with OOP but without the imperatives. Frankly,
that's all it takes to know that one follows the other.

Pete
Jan 18 '08 #17
Well I almost forgot about my pensive moment this afternoon. Thank you
all for weighing in...

Let me add some preface. My dad wrote Cobol in the Sixties for
Chrysler International out of their London offices. Later he wrote
Basic for an insurance company stateside. He wanted me to learn coding
when I turned 18 in 1973, but I had my head just about anywhere else,
despite the fact that I had the ability to learn programming then as I
do now. I finally got into writing code full-time for a living in 2000
(never actually had a computer until 1995!). This was after various
careers, mostly in construction and as a contractor. I still work in
the construction field, just as a developer for a larger construction
company that has some ambitious software ideas.

My son is now 18, and I want him to learn to write code. He's going to
go to a local school to learn Dreamweaver and graphic arts type
things, but he has the smarts to just dive in and learn code, if he
could develop the inclination and determination to do it. He has his
head in music and all the other kinds of things 18 year olds do.

It seems to me at least, that for a smarter individual, seeing
programs go together that right away have their own gui, colors,
tricks is more gratifying than doing things that just print results to
a screen. I know it did for me. I've shown him how to build a simple
sql server set of three or four tables and then query them from C# and
display results in an Infragistics grid. I'm sure he grasped all of
it, but kids nowadays are a lot harder to amaze and surprise than my
generation was 35 years ago.

I don't really think the whole OOP versus procedural thing is such a
big issue. You can use VB.Net or C# as mostly a procedural language
anyway until you start to grasp the concepts of how the tools you work
with are all object based and then start building your own little
classes and overrides as you see a need. All depends on the kinds of
things you're developing... But the gratification factor is much
higher, imho, with any "visual" language-ide.

Bob
Jan 18 '08 #18

"Peter Duniho" <Np*********@nnowslpianmk.comwrote in message
news:op***************@petes-computer.local...
On Thu, 17 Jan 2008 17:35:16 -0800, Jeroen Mostert <jm******@xs4all.nl>
wrote:
>It's a good thing he's dead, because he'd be deeply offended at that
statement.

That seems doubtful to me. How could someone who makes such blatantly
offensive statements themselves be so easily offended?

In any case, if he would be offended, then he ought not to have made such
an offensive statement. People in glass houses, etc.
>The thing is, Dijkstra had a very different view from what programming
is (or ought to be) than most of us do, and it was that view he was
trying to teach.

If your point is that his idea of what's a "good programmer" is different
from the rest of the world's idea, that's fine with me. But then the
quoted statement is entirely irrelevant in this discussion.
>[...]
>>And finally, any teacher who says that teaching a student is impossible
is simply a failure as a teacher.

On the other hand, anyone who claims that, given enough time and effort,
*anyone* could be taught to program well, is arguably part of the
problem.

I did qualify my comment as being applicable only to a student who is
themselves willing to be part of the process.

There are obviously some people that are unteachable. Whether due to
mental defect or simply their lack of interest in the topic. But
otherwise, it is simply untrue that it could be impossible to teach a
particular person a particular topic. Human beings are designed to learn,
and given a student has all the normal functioning human intelligence and
who is able and willing, they can be taught anything.
I used to believe that, but I don't any more. Not everybody can understand
everything, whether because of their background, or because of some kind of
wiring, I don't know.

Some people "get" math while to others it is incomprehensible.

I made A's in Organic Chemistry (eons ago) and it all made complete sense to
me, where others who really, really wanted to do well in the class and spent
hours studying, couldn't get higher than a C no matter how hard they tried.

Some programmers you work with see the patterns and know how it all fits
together. Others barely get it to work and it hangs by a thread.

And when I was writing software with other developers for chemical plants, I
explained repeatedly that pressure and temperature affect the volume of a
fluid, but still got the same questions over and over again (the valve is
open 100% all the time, but the volume fluctuates; why?) from the same two
people because they just could not comprehend that one simple fact.

RobinS.

Jan 18 '08 #19
On Thu, 17 Jan 2008 23:49:13 -0800, RobinS <ro****@imnottelling.comwrote:
[...]
And when I was writing software with other developers for chemical
plants, I explained repeatedly that pressure and temperature affect the
volume of a fluid, but still got the same questions over and over again
(the valve is open 100% all the time, but the volume fluctuates; why?)
from the same two people because they just could not comprehend that one
simple fact.
All due respect, those experiences do not show that those people were
unteachable. It simply shows that they failed to be taught.

In any case, we're not talking about people who are simply not "cut-out"
to learn something particular. The thesis here is that there are people
who cannot be taught to program well, but could have been if only they
hadn't learned BASIC.

I think it's a pretty lame excuse for a teacher to blame their failure to
be able to teach a person something on something that person had been
taught previously.

Pete
Jan 18 '08 #20
On Thu, 17 Jan 2008 23:23:44 -0800, RvGrah
<rv****************@sbcglobal.netwrote:
[...]
My son is now 18, and I want him to learn to write code.
For what it's worth, most of the children I am in constant contact with
are significantly younger than that, and I made the assumption (bad idea,
I know) that your son was younger too.

An 18 year old is basically an adult. They've still got a lot of maturing
to do, but mentally they have completed the bulk of their development. In
particular, they have pretty much all the necessary tools with respect to
abstract thinking required for effective programming in any relevant
situation. I think a motivated, interested 18 year old can learn
programming in pretty much environment without the environment itself
becoming a barrier.

It's a very different question than that of teaching young children, which
is what I thought we were discussing. Obviously the relevance of my
comments is significantly less, given the actual situation.

Pete
Jan 18 '08 #21
Peter Duniho <Np*********@nnowslpianmk.comwrote:
My son is now 18, and I want him to learn to write code.

For what it's worth, most of the children I am in constant contact with
are significantly younger than that, and I made the assumption (bad idea,
I know) that your son was younger too.
Ditto - partly because I'm beginning to wonder how and when to start my
eldest off on programming, assuming he's interested. (He's 4 now. I'll
get more fun a few years later, when I can start to teach the twins -
an ideal way to start off with pair programming!)
An 18 year old is basically an adult. They've still got a lot of maturing
to do, but mentally they have completed the bulk of their development. In
particular, they have pretty much all the necessary tools with respect to
abstract thinking required for effective programming in any relevant
situation. I think a motivated, interested 18 year old can learn
programming in pretty much environment without the environment itself
becoming a barrier.
Yup. I wouldn't like to start off teaching a young child about OO with
things like polymorpishm, but a young adult is a different matter.

(Someone mentioned Logo and BASIC in the same post, btw - one of the
most rewarding things I did as a 10 year old was to write a Logo
interpreter in Spectrum BASIC. The Spectrum BASIC manual was brilliant
- I learned trigonometry from it, effectively.)

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
World class .NET training in the UK: http://iterativetraining.co.uk
Jan 18 '08 #22
Hi,
"Jon Skeet [C# MVP]" <sk***@pobox.comwrote in message
news:MP*********************@msnews.microsoft.com. ..
RvGrah <rv****************@sbcglobal.netwrote:
>>
Anybody have thoughts they care to share on this?

I don't think C# is an ideal first language, to be honest -
particularly not C# 2 and 3. I've heard good things about Squeak, a
Smalltalk variant often used for education.
In my university the classes were teached first in Pascal and now they use
Java. This is the introductory curse, after that you use C++ for the most
part.

IMHO you can use C# as a learning language and simply left out the most
"tricky" features, after all you can still use "goto" in C# :)

But still for a complete picture you need to move out and explore other
languages like C++ to deal with memory management and if possible a
functional language too.
--
Ignacio Machin
http://www.laceupsolutions.com
Mobile & warehouse Solutions.
Jan 18 '08 #23

"Peter Duniho" <Np*********@nnowslpianmk.comwrote in message
news:op***************@petes-computer.local...
On Thu, 17 Jan 2008 14:40:07 -0800, Alun Harford
<de*****@alunharford.co.ukwrote:
>There's also a reason Dijkstra wrote:

"It is practically impossible to teach good programming to students that
have had a prior exposure to BASIC: as potential programmers they are
mentally mutilated beyond hope of regeneration."

I don't think "beyond hope of regeneration" is quite right, but it
certainly does far more harm than good.

I don't understand that comment, and I think it's hopelessly
narrow-minded. Just because Dijkstra knows something about programming,
that doesn't mean he knows something about _teaching_ programming. That
statement proves to me that he doesn't know enough about teaching.

An entire generation of programmers were raised on BASIC, myself
included. I have not found my BASIC experience to be a liability, and in
fact if anything it made me appreciate the more structured environments I
was exposed to later. Beyond that, BASIC is extremely simple and provides
a no-nonsense, no-complications initial exposure to the idea of thinking
like a computer.

Frankly, I've seen far too many people approach programming from a sort of
gestalt, holistic point of view, trying to do everything at once rather
than applying a good methodical approach. They have no idea where to
start, so they try to start everything all at once and fail miserably. I
suspect that these people have been exposed to higher-level, highly
abstract concepts far too early. They don't have the discipline required
to work through problems a piece at a time the way that computers insist
on.

And finally, any teacher who says that teaching a student is impossible is
simply a failure as a teacher. Assuming a student who is willing, any
competent teacher should be able to convey whatever concept they need to.
Blaming that failure on the student or the student's prior experience is a
cop-out. It is true that the "law of primacy" applies, and a student who
has learned bad habits from their use of BASIC will have to unlearn them
and this is harder than learning the good habits in the first place. But
BASIC doesn't in and of itself cause bad habits (you can just as easily
teach good habits in BASIC as elsewhere, within the limitations of BASIC
of course), and in any case these bad habits are always unlearnable.

Maybe it's my own bias, based on my own experience, but I don't consider
myself a bad programmer and I don't think that I was "mentally mutilated
beyond hope of regeneration". I think it's silly for anyone to claim that
BASIC is necessarily going to be a cause of something like this happening.

Pete
That's a pretty high soap-box, Pete.

Especially for someone who said this just the other day:

"I can't answer that question, not knowing enough college interns, and it
having been far too long ago for me to really remember what it was like to
be a college student myself."

Jan 18 '08 #24

"Peter Duniho" <Np*********@nnowslpianmk.comwrote in message
news:op***************@petes-computer.local...
On Thu, 17 Jan 2008 20:53:11 -0800, .\\axxx <ma*******@gmail.comwrote:
>I believe you think of OOP as being an advanced concept because it was
learned by you post procedural coding - and not hand-in-hand.

That's not why I think of OOP as being advanced. OOP requires a certain
level of abstract thinking that is simply not even present in most young
children. On the other hand, the idea behind a basic loop iteration (for
example) is something anyone who can count and follow instructions can
easily grasp.

OOP _is_ advanced. And not just because I didn't learn it first.
I'm curious how you reconcile your comments here with your assertion in
another thread that use of delegates & anonymous methods is actually "more
readable" than basic loop iteration (which, according to you, hides the
intent of the code). I realize that delegates and anonymous methods are not,
strictly speaking, OOP. But any rational thinker would admit that they are
more advanced that basic loop iteration.
Irrelevant. The assertion was that it's impossible to teach good
programming practices to someone who started with BASIC. To refute that
assertion you need only demonstrate some (or one, for that matter)
programmers who started with BASIC but who have learned good programming
practices.
You seem to have missed the obvious hyperbole.

Jan 18 '08 #25

"Peter Duniho" <Np*********@nnowslpianmk.comwrote in message
news:op***************@petes-computer.local...
On Thu, 17 Jan 2008 23:49:13 -0800, RobinS <ro****@imnottelling.com>
wrote:
>[...]
And when I was writing software with other developers for chemical
plants, I explained repeatedly that pressure and temperature affect the
volume of a fluid, but still got the same questions over and over again
(the valve is open 100% all the time, but the volume fluctuates; why?)
from the same two people because they just could not comprehend that one
simple fact.

All due respect, those experiences do not show that those people were
unteachable. It simply shows that they failed to be taught.

In any case, we're not talking about people who are simply not "cut-out"
to learn something particular. The thesis here is that there are people
who cannot be taught to program well, but could have been if only they
hadn't learned BASIC.

I think it's a pretty lame excuse for a teacher to blame their failure to
be able to teach a person something on something that person had been
taught previously.

Pete
Actually, that's not the thesis at all. The thesis is simply that BASIC
teaches more bad habits than good. I'm 100% certain that Dijkstra was simply
stating that it's more difficult to teach programmers who started on BASIC,
and tossed in a little hyperbole to make his point.

I'm not saying that I agree with that thesis, but at least argue the correct
point.

Jan 18 '08 #26
On Jan 18, 4:16 pm, "Scott Roberts" <srobe...@no.spam.here-webworks-
software.comwrote:
Actually, that's not the thesis at all. The thesis is simply that BASIC
teaches more bad habits than good. I'm 100% certain that Dijkstra was simply
stating that it's more difficult to teach programmers who started on BASIC,
and tossed in a little hyperbole to make his point.

I'm not saying that I agree with that thesis, but at least argue the correct
point.
I think it's reasonable to argue with the words Dijkstra used. Just to
put both Dijkstra's words and Peter's understanding together:

Dijkstra:
"It is practically impossible to teach good programming to students
that
have had a prior exposure to BASIC: as potential programmers they are
mentally mutilated beyond hope of regeneration."

Peter's interpretation:
"The thesis here is that there are people who cannot be taught to
program well, but could have been if only they hadn't learned BASIC."

It seems a pretty reasonable interpretation to me. It's possible that
Dijkstra *meant* that it's harder to teach programmers who'd started
on BASIC, but that's definitely not what he *stated*.

If we can all agree that what Dijkstra actually *stated* is
unreasonable, we can move on to debate one particular guess as to what
he *meant*.

Jon
Jan 18 '08 #27
I think it's reasonable to argue with the words Dijkstra used. Just to
put both Dijkstra's words and Peter's understanding together:

Dijkstra:
"It is practically impossible to teach good programming to students
that
have had a prior exposure to BASIC: as potential programmers they are
mentally mutilated beyond hope of regeneration."

Peter's interpretation:
"The thesis here is that there are people who cannot be taught to
program well, but could have been if only they hadn't learned BASIC."

It seems a pretty reasonable interpretation to me. It's possible that
Dijkstra *meant* that it's harder to teach programmers who'd started
on BASIC, but that's definitely not what he *stated*.
Arguing semantics is pointless.
If we can all agree that what Dijkstra actually *stated* is
unreasonable, we can move on to debate one particular guess as to what
he *meant*.
The only debate worth having is one about ideas.

If you really think that Dijkstra's meaning was that it is literally
impossible to teach good programming to someone who first learned BASIC
because their brain has literally been mutilated beyond hope of
regeneration, then you are 100% correct in calling his statement silly. In
fact, it's so obviously silly that it's clearly not what he meant - which,
of course, is the very definition of hyperbole.

Jan 18 '08 #28
Bob.. My first Z80 assembly project moved a fish around the screen on an
8K
Exidy Sorcerer. My second assembly project printed text sideways since
all I had
was a narrow thermal printer.

IMHO this type of positive feedback is really useful to a beginner, no
matter what
the language. So I would consider practical scripting use a script
language as a
first step, where the coder can see practical and useful results.

Regards,
Jeff

*** Sent via Developersdex http://www.developersdex.com ***
Jan 18 '08 #29
On Fri, 18 Jan 2008 07:57:48 -0800, Scott Roberts
<sr******@no.spam.here-webworks-software.comwrote:
I'm curious how you reconcile your comments here with your assertion in
another thread that use of delegates & anonymous methods is actually
"more readable" than basic loop iteration (which, according to you,
hides the intent of the code).
I never wrote that "basic loop iteration" "hides the intent of the code".
I did say that the intent is harder to see, but that's a completely
different statement. Please don't put words in my mouth.

As far as reconciling goes, there's no reconciling to do. In the other
thread, I made it very clear that the question of "readable" is subjective
and dependent on one's experience. The question was whether one should
denigrate certain language concepts as being bad choices simply on the
basis of one's own lack of understanding of the concepts.

That's a completely different question from whether one needs to learn one
programming concept before moving on to another. You are comparing apples
to oranges.
>Irrelevant. The assertion was that it's impossible to teach good
programming practices to someone who started with BASIC. To refute
that assertion you need only demonstrate some (or one, for that matter)
programmers who started with BASIC but who have learned good
programming practices.

You seem to have missed the obvious hyperbole.
The quoted statement is only a contradiction of what I suggested if you
take it literally. Hyperbole or not, it's not a valid refutation of what
I wrote.

Pete

Jan 18 '08 #30
On Fri, 18 Jan 2008 07:47:19 -0800, Scott Roberts
<sr******@no.spam.here-webworks-software.comwrote:
That's a pretty high soap-box, Pete.
And the original quote wasn't? Right.
Especially for someone who said this just the other day:

"I can't answer that question, not knowing enough college interns, and it
having been far too long ago for me to really remember what it was like
to
be a college student myself."
Bravo. Very nice straw-man Scott. Blew right over, didn't it?

It's amazing what you can do when you take things out of context, eh?
Jan 18 '08 #31

"Peter Duniho" <Np*********@nnowslpianmk.comwrote in message
news:op***************@petes-computer.local...
On Fri, 18 Jan 2008 07:57:48 -0800, Scott Roberts
<sr******@no.spam.here-webworks-software.comwrote:
>I'm curious how you reconcile your comments here with your assertion in
another thread that use of delegates & anonymous methods is actually
"more readable" than basic loop iteration (which, according to you,
hides the intent of the code).

I never wrote that "basic loop iteration" "hides the intent of the code".
I did say that the intent is harder to see, but that's a completely
different statement. Please don't put words in my mouth.
I apologize. For the record, here is the exact quote:

"I _can_ tell you that I find the intent of the code much more apparent in
the second version. The first version is very clear about the mechanics,
but any interpretation of the intent is completely hidden."

(The "second version" refers to anonymous methods and delegates, the "first
version" is an iterative loop)

I guess we simply differ in our understanding of the phrase "intent is
completely hidden". I'm sorry that I apparently misunderstood you.

Jan 18 '08 #32
On Fri, 18 Jan 2008 12:05:43 -0800, Scott Roberts
<sr******@no.spam.here-webworks-software.comwrote:
I guess we simply differ in our understanding of the phrase "intent is
completely hidden". I'm sorry that I apparently misunderstood you.
You did. I was referring to a specific example. The statement was not a
general indictment of looping constructs.

Jan 18 '08 #33

"Peter Duniho" <Np*********@nnowslpianmk.comwrote in message
news:op***************@petes-computer.local...
On Fri, 18 Jan 2008 07:47:19 -0800, Scott Roberts
<sr******@no.spam.here-webworks-software.comwrote:
>That's a pretty high soap-box, Pete.

And the original quote wasn't? Right.
>Especially for someone who said this just the other day:

"I can't answer that question, not knowing enough college interns, and it
having been far too long ago for me to really remember what it was like
to
be a college student myself."

Bravo. Very nice straw-man Scott. Blew right over, didn't it?

It's amazing what you can do when you take things out of context, eh?

Sorry Peter, but yesterday you were claiming ignorance on the capabilities
of new programmers (e.g. college interns) as it relates to the "readability"
of various blocks of code. Today you seem to be an expert in the area of
teaching programming to new students. Forgive me if I'm a little confused.

Jan 18 '08 #34
On Fri, 18 Jan 2008 13:00:12 -0800, Scott Roberts
<sr******@no.spam.here-webworks-software.comwrote:
Sorry Peter, but yesterday you were claiming ignorance on the
capabilities of new programmers (e.g. college interns) as it relates to
the "readability" of various blocks of code.
Read my posts again. You are misinterpreting them to suit your own whim.

In particular, the problem with understanding what's "readable" to a
college intern or anyone else is that, AS I HAVE SAID NUMEROUS TIMES, that
question is subjective in nature.
Today you seem to be an expert in the area of teaching programming to
new students.
Expert? No. But I do have some knowledge of teaching, yes. In any case,
what's teachable has zero to do with what a person naturally finds
"readable". Your conflation of the two issues is, quite frankly, absurd.
Forgive me if I'm a little confused.
You are forgiven, assuming you will stop trying to twist every little word
into something it's not. You would do well to give the benefit of the
doubt until you are sure you have comprehended what's been written.
You're not doing that right now. Instead, you just make up whatever
interpretation suits you and then use that false interpretation to
buttress an invalid point.

Forgiveness is for those who are truly apologetic.

Pete
Jan 18 '08 #35
On Jan 17, 7:09 pm, "Peter Duniho" <NpOeStPe...@nnowslpianmk.com>
wrote:
On Thu, 17 Jan 2008 17:35:16 -0800, Jeroen Mostert <jmost...@xs4all.nl>
wrote:
It's a good thing he's dead, because he'd be deeply offended at that
statement.

That seems doubtful to me. How could someone who makes such blatantly
offensive statements themselves be so easily offended?

In any case, if he would be offended, then he ought not to have made such
an offensive statement. People in glass houses, etc.
The thing is, Dijkstra had a very different view from what programming
is (or ought to be) than most of us do, and it was that view he was
trying to teach.

If your point is that his idea of what's a "good programmer" is different
from the rest of the world's idea, that's fine with me. But then the
quoted statement is entirely irrelevant in this discussion.
[...]
And finally, any teacher who says that teaching a student is impossible
is simply a failure as a teacher.
On the other hand, anyone who claims that, given enough time and effort,
*anyone* could be taught to program well, is arguably part of the
problem.

I did qualify my comment as being applicable only to a student who is
themselves willing to be part of the process.

There are obviously some people that are unteachable. Whether due to
mental defect or simply their lack of interest in the topic. But
otherwise, it is simply untrue that it could be impossible to teach a
particular person a particular topic. Human beings are designed to learn,
and given a student has all the normal functioning human intelligence and
who is able and willing, they can be taught anything.

Pete
I had a probability teacher who claimed he had taught his 3 year-old
advanced calculus. He wasn't bluffing, either. He wasn't a good
teacher, but he was sure "a monkey could do it." In my experience,
some people refuse to learn about programming. I have met masterminds
who simply didn't like it. One students got an 105% on a test and then
dropped the subject. *Shrugs* Other students have read entire books,
done assignments multiple times over and still manage to get 30%.
*Shrugs* Whether is interest of capacity is the question - I am not
the type to pick a side and run for it. BTW, I am a fan of Djikstra,
and I am fairly confident he had a wonderful sense of humor. :- )
Jan 19 '08 #36
On Jan 17, 8:43 pm, "Peter Duniho" <NpOeStPe...@nnowslpianmk.com>
wrote:
On Thu, 17 Jan 2008 19:19:36 -0800, .\\axxx <mailma...@gmail.comwrote:
My 2c...
It is more than likely that, if your son progresses in programming, he
will be writing in an OOP environment.
My belief (as an experienced software developer using pretty much any
language you care to mention (yes, I'm THAT old)) is that the best
thing to teach a student today is OO concepts. These are so poorly
understood by so many developers today, that a good understanding puts
you a step ahead.

No question that OOP is going to be an eventual step for any serious
programmer.

But. We don't insist that children go straight to walking. We let them
practice crawling first. That allows them to master basic concepts like
perception and navigation before they are up on two feet going too fast
for their brains to keep up.

Likewise, even OOP programming still involves a lot of basic procedural
implementation details. I don't care how well a person has been taught
OOP design, if they haven't mastered the basic mechanics first they still
won't be able to write a useful program.
[...]
One problem that occurs here is the abilities of the teacher. Many
teachers were brought up on procedural languages, and many take the
'it didn't do me any harm' view. This is a poor argument.

In that situation, sure. I agree. A bicycle helment is demonstrably
useful in preventing injuries and death that might otherwise occur. Just
because someone lived through not wearing one, that doesn't mean a
helmet's not useful.

But it's a pretty far stretch to use the same argument to justify a claim
that learning programming without OOP concepts as an initial step is
harmful to one's future as a programmer. All the evidence in fact argues
against this claim. On the other hand, it's well-proved that when
teaching something to a person, it does no good whatsoever to jump ahead
to advanced topics before they have mastered the foundational elements.

Pete
My guess is that most American programmers don't write applications,
but are responsible for scripts/batch files, etc. Whether they are
programmers is also a good question. My guess is that the majority of
the remaining programmers are grunts and rarely have part or say in
the design of large software systems. Many programmers can survive
just implementing skeletons, which requires almost no OOP at all,
usually. I agree that OOP is extremely desirable for any programmer to
understand; how many that do understand it can use it? If you want to
be on top, learn a language as fluently as english, hammer design
patterns and gather a ton of experience when to use them. A single man
*can* write a library as complex as some provided by vendors; since he
has complete understanding of the system, he can work faster. Build a
few libraries, build some applications on top of those and then become
a consultant or a software engineer. You just have to prove to someone
that you know what you are doing. Clients like to see things work. I
personally don't feel I have reached the level of experience needed.
But C# is becoming as clear as crystal and OOP is old hat, now.
However, I am already finding myself at the lead of many projects and
consulting/teaching. Just remember that skills are only half the
battle.

Thanks,
Travis
Jan 19 '08 #37
On Jan 18, 12:23 am, RvGrah <rvgrahamsevaten...@sbcglobal.netwrote:
Well I almost forgot about my pensive moment this afternoon. Thank you
all for weighing in...

Let me add some preface. My dad wrote Cobol in the Sixties for
Chrysler International out of their London offices. Later he wrote
Basic for an insurance company stateside. He wanted me to learn coding
when I turned 18 in 1973, but I had my head just about anywhere else,
despite the fact that I had the ability to learn programming then as I
do now. I finally got into writing code full-time for a living in 2000
(never actually had a computer until 1995!). This was after various
careers, mostly in construction and as a contractor. I still work in
the construction field, just as a developer for a larger construction
company that has some ambitious software ideas.

My son is now 18, and I want him to learn to write code. He's going to
go to a local school to learn Dreamweaver and graphic arts type
things, but he has the smarts to just dive in and learn code, if he
could develop the inclination and determination to do it. He has his
head in music and all the other kinds of things 18 year olds do.

It seems to me at least, that for a smarter individual, seeing
programs go together that right away have their own gui, colors,
tricks is more gratifying than doing things that just print results to
a screen. I know it did for me. I've shown him how to build a simple
sql server set of three or four tables and then query them from C# and
display results in an Infragistics grid. I'm sure he grasped all of
it, but kids nowadays are a lot harder to amaze and surprise than my
generation was 35 years ago.

I don't really think the whole OOP versus procedural thing is such a
big issue. You can use VB.Net or C# as mostly a procedural language
anyway until you start to grasp the concepts of how the tools you work
with are all object based and then start building your own little
classes and overrides as you see a need. All depends on the kinds of
things you're developing... But the gratification factor is much
higher, imho, with any "visual" language-ide.

Bob
I have ran into this issue myself. Most people like to see immediate
results, rather than having to work for them. I am still amazed by
pong because I see the immense amount of technology that goes into it.
However, and you can tell your son this, just making pictures becomes
less and less rewarding after a while. Once you learn the tool and how
to combine the features, graphic design becomes really, really tedious
and unrewarding.

When I first started programming, I wanted to be a game programmer
because I loved games. I loved how they looked, how they played. But
deep down there was always this question in my head asking, "What
magic makes thy computer run so?". And eventually the questions were
answered through my computer science courses. And now video games are
horribly boring to me. I am more interested in how they simulated that
fire, or the g-force or how the computer manages all those 3D points.
However, now I am more aware of what a computer is and I can use that
to do things like make computer games from scratch.

Most of the code I write for fun doesn't do anything. It helps me do
something. I like to write libraries. I like to fix other programmer's
code. I like to learn why code works. Screw the final result! I found
my niche.

Tell your son that programming is fun and keeps on coming. I think my
job is more fun than a job should be. It is frustrating, yes, but it
is also intense and when you finally get your head around it, it
becomes like a playland.
Jan 19 '08 #38
On Jan 18, 11:10 am, "Scott Roberts" <srobe...@no.spam.here-webworks-
software.comwrote:
I think it's reasonable to argue with the words Dijkstra used. Just to
put both Dijkstra's words and Peter's understanding together:
Dijkstra:
"It is practically impossible to teach good programming to students
that
have had a prior exposure to BASIC: as potential programmers they are
mentally mutilated beyond hope of regeneration."
Peter's interpretation:
"The thesis here is that there are people who cannot be taught to
program well, but could have been if only they hadn't learned BASIC."
It seems a pretty reasonable interpretation to me. It's possible that
Dijkstra *meant* that it's harder to teach programmers who'd started
on BASIC, but that's definitely not what he *stated*.

Arguing semantics is pointless.
If we can all agree that what Dijkstra actually *stated* is
unreasonable, we can move on to debate one particular guess as to what
he *meant*.

The only debate worth having is one about ideas.

If you really think that Dijkstra's meaning was that it is literally
impossible to teach good programming to someone who first learned BASIC
because their brain has literally been mutilated beyond hope of
regeneration, then you are 100% correct in calling his statement silly. In
fact, it's so obviously silly that it's clearly not what he meant - which,
of course, is the very definition of hyperbole.
I like you Scott Roberts. :-)
Jan 19 '08 #39
Scott Roberts <sr******@no.spam.here-webworks-software.comwrote:
Peter's interpretation:
"The thesis here is that there are people who cannot be taught to
program well, but could have been if only they hadn't learned BASIC."

It seems a pretty reasonable interpretation to me. It's possible that
Dijkstra *meant* that it's harder to teach programmers who'd started
on BASIC, but that's definitely not what he *stated*.

Arguing semantics is pointless.
To me, arguing semantics is arguing the meaning. Without agreeing on
the meaning of the quote we're discussing, anything else really is
pointless.
If we can all agree that what Dijkstra actually *stated* is
unreasonable, we can move on to debate one particular guess as to what
he *meant*.

The only debate worth having is one about ideas.

If you really think that Dijkstra's meaning was that it is literally
impossible to teach good programming to someone who first learned BASIC
because their brain has literally been mutilated beyond hope of
regeneration, then you are 100% correct in calling his statement silly. In
fact, it's so obviously silly that it's clearly not what he meant - which,
of course, is the very definition of hyperbole.
So contrary to what you said before, you *don't* want to discuss what
was stated. You want to discuss what you happen to believe Dijkstra
meant.

That's absolutely fine, and almost certain to be a more useful
discussion, but I don't think it's reasonable to claim that what you
believe he meant was what he actually stated.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
World class .NET training in the UK: http://iterativetraining.co.uk
Jan 19 '08 #40
On Sun, 20 Jan 2008 10:11:46 -0800, RobinS <ro****@imnottelling.comwrote:
[...]
As for people being taught BASIC and not believing they could ever do
OO, I'm not sure I buy that.
I don't buy it either, and that's the point here. The original statement
as quoted is IMHO absurd, and not at all useful in the context of this
thread.
Jan 20 '08 #41

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

1 post views Thread by GChong | last post: by
39 posts views Thread by Hareth | last post: by
6 posts views Thread by Alex | last post: by
105 posts views Thread by Christoph Zwerschke | last post: by
2 posts views Thread by Doug | last post: by
5 posts views Thread by WalterPScott | last post: by
reply views Thread by gheharukoh7 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.