Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. Revenge of Redmond – C# and the .Net Frameworks

Revenge of Redmond – C# and the .Net Frameworks

Scheduled Pinned Locked Moved The Lounge
csharpannouncementdelphidotnetvisual-studio
75 Posts 28 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • J jschell

    Pete O'Hanlon wrote:

    As for the other features - in the most part, they are there to make the job of the day to day developer a lot easier

    Unless you have some real statistics to back that up it is nothing but subjective nonsense. In my experience programmers spend most of their time dealing with design (even at the implementation level) issues, logic/design/architecture bugs, library learning/usage, and other issues of which the vast majority have nothing to do with language semantics. Now maybe you spend every day all year long doing nothing but constructing generic collections and linq expressions but that isn't what most developers do. So it isn't possible for a language construct to have a significant impact.

    P Offline
    P Offline
    Pete OHanlon
    wrote on last edited by
    #54

    Balanced the Univote. While I disagree with your arguments, you made them cogently so there's no reason for someone to downvote you.

    jschell wrote:

    maybe you spend every day all year long doing nothing but constructing generic collections and linq expressions

    I wish. I spend most of my time now in project plans, bid and tender documents, as well as the company accounts.

    *pre-emptive celebratory nipple tassle jiggle* - Sean Ewington

    "Mind bleach! Send me mind bleach!" - Nagy Vilmos

    My blog | My articles | MoXAML PowerToys | Mole 2010 - debugging made easier - my favourite utility

    1 Reply Last reply
    0
    • G gggustafson

      Over the many years that I have been programmer, I have detected a growing arrogance on the part of Microsoft employees. I find this strange because Microsoft depends so much upon its customer base. Yet, whenever some flaw is found in its software, Redmond is quick to argue that the bug is really a feature. This has occurred to me, personally, since Visual Studio 4. This arrogance spiked with the release of the C# programming language and its associated multiple .Net frameworks. Having been a member of the X3J9 Pascal technical committee (circa 1978), I am aware of what makes a “good” programming language. We teach these attributes to serious students of language design. Unfortunately, Redmond either didn’t take the classes or neglected their import. As a result, we have C# in its fourth generation (surprisingly not called "C#-4GL"). Generics, LINQ, and so forth have been added. Unfortunately, they were not part of the original C# language. They are "corrections" to missteps taken by Redmond in its attempt to be all things to all people. And they make my programming job much more difficult. I truly would like to see a new, simple, stripped-down version of C#. What I liked the most with the original C# language were the ArrayList and garbage collection. I believe that all the rest is unnecessary object oriented revenge. Peace.

      Gus Gustafson

      E Offline
      E Offline
      elun
      wrote on last edited by
      #55

      Hmm and what we gonna do with pure C# program? arent these new ability or component ease are works ?

      (--eLuN--)

      1 Reply Last reply
      0
      • S Stefan_Lang

        I've heard that argument over and over again. While I can perfectly understand that notion when I look at certain pieces of code, the fact that the code is so convoluted that goto is considered the best way to get out of it, is a very strong indication that you should refactor that code, not use goto. goto is a short circuit. That's the kind of thing a good programmer strives to avoid. Using it intentionally is reserved for dubious causes such as stealing a car. ;) P.S.: saying it may be 'the best thing to do' implies that there are other options. In my experience, programmers telling me 'that it's the best' judge it to be the best for all the wrong reasons. But anyway, it's at least partially subjective. In 26 years of C++ programming I've yet to see a piece of code that convinces me of using goto, but that's just me. Others may have different preferences.

        C Offline
        C Offline
        Carlosian
        wrote on last edited by
        #56

        Stefan_Lang wrote:

        goto is a short circuit.

        I'm honestly curious to know what you think of break and continue. Those are short-circuits too, just in a more limited context. But of course they can't jump to previous code which it seems to me is the most harmful use of goto.

        S 1 Reply Last reply
        0
        • C CPallini

          Nope. For instance, I often use a subset of C++ for 'procedural' programming in small projects. However it is still C++ and won't require different build tools or knowledge.

          Veni, vidi, vici.

          J Offline
          J Offline
          jschell
          wrote on last edited by
          #57

          CPallini wrote:

          However it is still C++ and won't require different build tools or knowledge.

          I can assure you that a developer who has only used C#/Java experience will in fact "require different...knowledge" to maintain C++. And a developer who has experience in C#/Java/C++ is going to "request different ...knowledge" to maintain fortran/cobol too.

          1 Reply Last reply
          0
          • R RedCatsRic

            This post could have been reduced to: I am too set in my ways and stubborn to learn a new generation of programming languages and the benefits that they offer. You can enjoy your pointers and manual memory management all you want, but you won't be writing any enterprise level web systems with them. And that's exactly the point, isn't it? Use the tool that works best for the job. If you can't see the benefits of a particular tool, that does not indicate that there aren't any; it only indicates that you are unable to recognize them.

            J Offline
            J Offline
            jschell
            wrote on last edited by
            #58

            RedCatsRic wrote:

            You can enjoy your pointers and manual memory management all you want, but you won't be writing any enterprise level web systems with them.

            Err...you do realize that C++ is and can be used for "enterprise" systems and for "web systems" right? As a very real and prominent example of that Apache is written in C++ (and/or C.)

            1 Reply Last reply
            0
            • S Stefan_Lang

              :sigh: Yes, indeed. You don't always get the time required to get your code clean. I can in fact understand that in such circumstances you may feel forced to stick with goto. That however doesn't justify to make it available as part of a new language. Regarding efficiency I disagree though: you can always store the condition that you would use to trigger a goto in a boolean variale and then just skip over the remaining blocks of code. That takes virtually no time at all. That's what I usually do.

              J Offline
              J Offline
              jschell
              wrote on last edited by
              #59

              Stefan_Lang wrote:

              That takes virtually no time at all

              That of course is the detail since if you are already optimizing a piece of code based on a measured (not guessed at) need then a conditional branch is in fact slower than an unconditional one.

              S 1 Reply Last reply
              0
              • S Stefan_Lang

                I've heard that argument over and over again. While I can perfectly understand that notion when I look at certain pieces of code, the fact that the code is so convoluted that goto is considered the best way to get out of it, is a very strong indication that you should refactor that code, not use goto. goto is a short circuit. That's the kind of thing a good programmer strives to avoid. Using it intentionally is reserved for dubious causes such as stealing a car. ;) P.S.: saying it may be 'the best thing to do' implies that there are other options. In my experience, programmers telling me 'that it's the best' judge it to be the best for all the wrong reasons. But anyway, it's at least partially subjective. In 26 years of C++ programming I've yet to see a piece of code that convinces me of using goto, but that's just me. Others may have different preferences.

                J Offline
                J Offline
                jschell
                wrote on last edited by
                #60

                Stefan_Lang wrote:

                In 26 years of C++ programming I've yet to see a piece of code that convinces me of using goto,

                There was an article/column in the C\C++ users Journal in that time period that was implementing printf (or maybe sprintf) which is part of the standard C library and it used goto quite a bit. As I remember it I doubt other constructs would have made the code more readable nor easier to understand. Other constructs might have been the same speed but introducing artificial conditionals would not have met that goal. And back then many applications would have been impacted by a slower implementation of that method.

                S 1 Reply Last reply
                0
                • C Carlosian

                  Stefan_Lang wrote:

                  goto is a short circuit.

                  I'm honestly curious to know what you think of break and continue. Those are short-circuits too, just in a more limited context. But of course they can't jump to previous code which it seems to me is the most harmful use of goto.

                  S Offline
                  S Offline
                  Stefan_Lang
                  wrote on last edited by
                  #61

                  I am grudgingly willing ;) to accept these. Especially the use of break in a switch statement is something I do not know any good way around.

                  1 Reply Last reply
                  0
                  • J jschell

                    Stefan_Lang wrote:

                    In 26 years of C++ programming I've yet to see a piece of code that convinces me of using goto,

                    There was an article/column in the C\C++ users Journal in that time period that was implementing printf (or maybe sprintf) which is part of the standard C library and it used goto quite a bit. As I remember it I doubt other constructs would have made the code more readable nor easier to understand. Other constructs might have been the same speed but introducing artificial conditionals would not have met that goal. And back then many applications would have been impacted by a slower implementation of that method.

                    S Offline
                    S Offline
                    Stefan_Lang
                    wrote on last edited by
                    #62

                    *shrug* There was a time where I would contemplate other peoples programming styles in published media and maybe adapt some of it. But I have long since realized that everyone makes mistakes and just because something is published doesn't mean it's good. That said, I have to point out, again, that my argument was about language designers putting the goto command into a language, not programmers using what language designers gave them.

                    J 1 Reply Last reply
                    0
                    • J jschell

                      Stefan_Lang wrote:

                      That takes virtually no time at all

                      That of course is the detail since if you are already optimizing a piece of code based on a measured (not guessed at) need then a conditional branch is in fact slower than an unconditional one.

                      S Offline
                      S Offline
                      Stefan_Lang
                      wrote on last edited by
                      #63

                      That point is moot: I said the language designers shouldn't have put goto into C#. If you're so strained about performance, why do you even use C# to start with?

                      J 1 Reply Last reply
                      0
                      • J jschell

                        Stefan_Lang wrote:

                        ...worse for OO, and catastrophic for anything involving multithreading

                        How can you construct "catastrophic" code with a goto involving threads for which you cannot do the same thing using some other idiom that involves branching? Certainly both Java and C++ compilers generate most branching idioms that exist in the language specifically by substituting structures that use goto. And both of them seem to handle threading without problems related to that.

                        S Offline
                        S Offline
                        Stefan_Lang
                        wrote on last edited by
                        #64

                        Lock(someSharedVariable)
                        if (someCondition) goto someOtherPlace;
                        doStuff(someSharedVariable); // do some stuff
                        Unlock(someSharedVariable);

                        That's what I mean by catastrophic, only that in real code, there may be alot more fluff around, hiding the fact that you're actually accessing a shared resource and jumping out of the context before releasing a lock.

                        1 Reply Last reply
                        0
                        • S Stefan_Lang

                          That point is moot: I said the language designers shouldn't have put goto into C#. If you're so strained about performance, why do you even use C# to start with?

                          J Offline
                          J Offline
                          jschell
                          wrote on last edited by
                          #65

                          Stefan_Lang wrote:

                          If you're so strained about performance, why do you even use C# to start with?

                          That statement of course makes no sense. The performance of an application or even an enterprise system might be dependent on a language choice. But of course it is even more dependent on requirements, architecture and design. Conversely this discussion related to goto would only be relevent to optimizing the performance of code. And of course one might wish to optimize any section of code regardless of language choice.

                          S 1 Reply Last reply
                          0
                          • S Stefan_Lang

                            *shrug* There was a time where I would contemplate other peoples programming styles in published media and maybe adapt some of it. But I have long since realized that everyone makes mistakes and just because something is published doesn't mean it's good. That said, I have to point out, again, that my argument was about language designers putting the goto command into a language, not programmers using what language designers gave them.

                            J Offline
                            J Offline
                            jschell
                            wrote on last edited by
                            #66

                            Stefan_Lang wrote:

                            There was a time where I would contemplate other peoples programming styles in published media and maybe adapt some of it. But I have long since realized that everyone makes mistakes and just because something is published doesn't mean it's good.

                            Which of course has nothing to do with what I said.

                            S 1 Reply Last reply
                            0
                            • J jschell

                              Stefan_Lang wrote:

                              There was a time where I would contemplate other peoples programming styles in published media and maybe adapt some of it. But I have long since realized that everyone makes mistakes and just because something is published doesn't mean it's good.

                              Which of course has nothing to do with what I said.

                              S Offline
                              S Offline
                              Stefan_Lang
                              wrote on last edited by
                              #67

                              That's what you said: There was an article/column in the C\C++ users Journal in that time period that was implementing printf (or maybe sprintf) which is part of the standard C library and it used goto quite a bit. Since you seemed to be basing your argumentation on the example of that article I was making a point that some old article is not a valid argument from my PoV.

                              J 1 Reply Last reply
                              0
                              • J jschell

                                Stefan_Lang wrote:

                                If you're so strained about performance, why do you even use C# to start with?

                                That statement of course makes no sense. The performance of an application or even an enterprise system might be dependent on a language choice. But of course it is even more dependent on requirements, architecture and design. Conversely this discussion related to goto would only be relevent to optimizing the performance of code. And of course one might wish to optimize any section of code regardless of language choice.

                                S Offline
                                S Offline
                                Stefan_Lang
                                wrote on last edited by
                                #68

                                jschell wrote:

                                That statement of course makes no sense.

                                Do I really have to point out the known facts about performance differences between C++ and C#? Or the consequences of having a garbage collection block vital threads in a real time system?

                                jschell wrote:

                                The performance of an application or even an enterprise system might be dependent on a language choice. But of course it is even more dependent on ....

                                You were the one who based your performance argument solely on the language, and more specifically on the availability of the goto command, not I. So you were assuming that to be a mandatory requirement as well. I think it's about time for me to step out of the discussion at this point. You seem capabale of countering your own arguments without my help just fine. ;P

                                J 1 Reply Last reply
                                0
                                • S Stefan_Lang

                                  jschell wrote:

                                  That statement of course makes no sense.

                                  Do I really have to point out the known facts about performance differences between C++ and C#? Or the consequences of having a garbage collection block vital threads in a real time system?

                                  jschell wrote:

                                  The performance of an application or even an enterprise system might be dependent on a language choice. But of course it is even more dependent on ....

                                  You were the one who based your performance argument solely on the language, and more specifically on the availability of the goto command, not I. So you were assuming that to be a mandatory requirement as well. I think it's about time for me to step out of the discussion at this point. You seem capabale of countering your own arguments without my help just fine. ;P

                                  J Offline
                                  J Offline
                                  jschell
                                  wrote on last edited by
                                  #69

                                  Stefan_Lang wrote:

                                  Do I really have to point out the known facts about performance differences between C++ and C#? Or the consequences of having a garbage collection block vital threads in a real time system?

                                  That of course has nothing to do with optimizing a method. Perhaps you are not aware that this same discussion can apply to C++ as well?

                                  Stefan_Lang wrote:

                                  You were the one who based your performance argument solely on the language,

                                  Wrong. I suggest you re-read what I posted and what I responded to.

                                  Stefan_Lang wrote:

                                  and more specifically on the availability of the goto command, not I.

                                  Wrong. I specifically responded to your comment that booleans and conditional checks were just as good as goto.

                                  S 1 Reply Last reply
                                  0
                                  • S Stefan_Lang

                                    That's what you said: There was an article/column in the C\C++ users Journal in that time period that was implementing printf (or maybe sprintf) which is part of the standard C library and it used goto quite a bit. Since you seemed to be basing your argumentation on the example of that article I was making a point that some old article is not a valid argument from my PoV.

                                    J Offline
                                    J Offline
                                    jschell
                                    wrote on last edited by
                                    #70

                                    Stefan_Lang wrote:

                                    That's what you said:

                                    That is not all I said. My point was that based on that article MY interpretation of it was that implementatino presented there was better than the possible alternatives.

                                    1 Reply Last reply
                                    0
                                    • J jschell

                                      Stefan_Lang wrote:

                                      Do I really have to point out the known facts about performance differences between C++ and C#? Or the consequences of having a garbage collection block vital threads in a real time system?

                                      That of course has nothing to do with optimizing a method. Perhaps you are not aware that this same discussion can apply to C++ as well?

                                      Stefan_Lang wrote:

                                      You were the one who based your performance argument solely on the language,

                                      Wrong. I suggest you re-read what I posted and what I responded to.

                                      Stefan_Lang wrote:

                                      and more specifically on the availability of the goto command, not I.

                                      Wrong. I specifically responded to your comment that booleans and conditional checks were just as good as goto.

                                      S Offline
                                      S Offline
                                      Stefan_Lang
                                      wrote on last edited by
                                      #71

                                      Ok, the way threads are displayed in this forum when trying to respond to a comment unfortunately hides most of the history. (is there a way to prevent it from folding? I've always found that very annoying, and never really helpful). It appears that while my memory served me right in that I wasn't the one to bring up the topic of performance, nevertheless it wasn't you, either. Sorry for bringing it to your door. Anyway, this is my last comment to this thread. I've made my points, you made yours. Obviously we disagree. Be that as it may.

                                      J 1 Reply Last reply
                                      0
                                      • S Stefan_Lang

                                        Ok, the way threads are displayed in this forum when trying to respond to a comment unfortunately hides most of the history. (is there a way to prevent it from folding? I've always found that very annoying, and never really helpful). It appears that while my memory served me right in that I wasn't the one to bring up the topic of performance, nevertheless it wasn't you, either. Sorry for bringing it to your door. Anyway, this is my last comment to this thread. I've made my points, you made yours. Obviously we disagree. Be that as it may.

                                        J Offline
                                        J Offline
                                        jschell
                                        wrote on last edited by
                                        #72

                                        Stefan_Lang wrote:

                                        Ok, the way threads are displayed in this forum when trying to respond to a comment unfortunately hides most of the history. (is there a way to prevent it from folding? I've always found that very annoying, and never really helpful).

                                        I agree with that.

                                        1 Reply Last reply
                                        0
                                        • S Stefan_Lang

                                          I still don't get why any modern language needs goto at all. goto is a first generation language command. It was already bad for procedural programming, worse for OO, and catastrophic for anything involving multithreading. Not to mention functional programming.

                                          T Offline
                                          T Offline
                                          Toyist
                                          wrote on last edited by
                                          #73

                                          In the end it's all goto's. The processor turns everything into a goto to a memory address or register. Contained within a procedural function a goto is much more efficent than a bunch of if-then-else's or cases. It is also much more readable to an experienced programmer when used properly. Goto's are not bad; misuse or no use is poor practice.

                                          S 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups