General question to other developers...

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • RvGrah

    #1

    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
  • Jon Skeet [C# MVP]

    #2
    Re: General question to other developers...

    RvGrah <rvgrahamsevate nein@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 - <skeet@pobox.co m>
    http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
    World class .NET training in the UK: http://iterativetraining.co.uk

    Comment

    • Edwin van Holland

      #3
      Re: General question to other developers...

      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

      Comment

      • Peter Duniho

        #4
        Re: General question to other developers...

        On Thu, 17 Jan 2008 12:55:50 -0800, RvGrah
        <rvgrahamsevate nein@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

        Comment

        • JTC^..^

          #5
          Re: General question to other developers...

          Jon Skeet [C# MVP] <skeet@pobox.co mwrote in news:MPG.21f9d6 8e1969a79b7c6
          @msnews.microso ft.com:
          RvGrah <rvgrahamsevate nein@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".

          Comment

          • Alun Harford

            #6
            Re: General question to other developers...

            Peter Duniho wrote:
            On Thu, 17 Jan 2008 12:55:50 -0800, RvGrah
            <rvgrahamsevate nein@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

            Comment

            • Alun Harford

              #7
              Re: General question to other developers...

              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

              Comment

              • Jon Skeet [C# MVP]

                #8
                Re: General question to other developers...

                JTC^..^ <daveN0SP%M@jaz zthecat.co.ukwr ote:

                <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 - <skeet@pobox.co m>
                http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
                World class .NET training in the UK: http://iterativetraining.co.uk

                Comment

                • Peter Duniho

                  #9
                  Re: General question to other developers...

                  On Thu, 17 Jan 2008 14:40:07 -0800, Alun Harford
                  <devnull@alunha rford.co.ukwrot e:
                  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

                  Comment

                  • =?ISO-8859-1?Q?Arne_Vajh=F8j?=

                    #10
                    Re: General question to other developers...

                    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

                    Comment

                    • =?Utf-8?B?RmFtaWx5IFRyZWUgTWlrZQ==?=

                      #11
                      RE: General question to other developers...

                      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#.

                      Scratch is a free programming language and online community where you can create your own interactive stories, games, and animations.



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

                      Comment

                      • =?UTF-8?B?QXJuZSBWYWpow7hq?=

                        #12
                        Re: General question to other developers...

                        Peter Duniho wrote:
                        On Thu, 17 Jan 2008 14:40:07 -0800, Alun Harford
                        <devnull@alunha rford.co.ukwrot e:
                        >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

                        Comment

                        • Peter Duniho

                          #13
                          Re: General question to other developers...

                          On Thu, 17 Jan 2008 17:35:16 -0800, Jeroen Mostert <jmostert@xs4al l.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

                          Comment

                          • .\\\\axxx

                            #14
                            Re: General question to other developers...

                            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.

                            Comment

                            • Peter Duniho

                              #15
                              Re: General question to other developers...

                              On Thu, 17 Jan 2008 19:19:36 -0800, .\\axxx <mailmaxxx@gmai l.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

                              Comment

                              Working...