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

    K Offline
    K Offline
    Keith Barrow
    wrote on last edited by
    #5

    gggustafson wrote:

    Generics, LINQ, and so forth have been added

    IIRC Correctly, generics were always supposed to be part of the language spec, but could not be developed in time for the for 1.0 & 1.1 versions of the framework, following the usual .net pattern of being over-aggressive about what can be achieved per release. This is not a correction. Generics / Template classes were the thing I missed most when I moved from c++ to c# As for LINQ, assuming it is the syntax you object to, you don't have to use it. You can even use the underlying methods (such as Select, Where etc) as methods. So I fail to see why this is a bad thing. Saying that adding features that were not part of the original language is bad, is the same as saying the language should not change.

    gggustafson wrote:

    What I liked the most with the original C# language were the ArrayList

    You are kidding right? Again ArrayList is still there (sadly) so you can still use it. I can't work out why, in effect List<object>, which is pretty much equivalent to ArrayList, is better than List<type> because we then need to spend time type-checking and I'd much rather get compile time errors than run-time ones. What is more interesting are the features that have been added that are I'd say are more controversial that you haven't mentioned. I know people who have stopped .net development because of things like dynamic typing, anonymous types and even implicit typing. I at least understand their position, even if I don't agree with it. We can still churn out v1.0 / v1.1 code using the v4.0 compiler (mod any breaking changes to classes) but it is simply harder. As for the increasing arrogance of the Microsoft employees, I don't know, I don't have to deal with them.

    Sort of a cross between Lawrence of Arabia and Dilbert.[^]
    -Or-
    A Dead ringer for Kate Winslett[^]

    D 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

      C Offline
      C Offline
      CPallini
      wrote on last edited by
      #6

      I think the C# nature of 'evolving language' is a design choice, not a flaw. If you like only the C# original features, then why don't use just them?

      Veni, vidi, vici.

      J J 2 Replies 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

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

        gggustafson wrote:

        What I liked the most with the original C# language were the ArrayList and garbage collection

        Garbage collection is still there. What makes you think it's disappeared. As for ArrayList - you honestly like your code to perform badly? Do the terms boxing and unboxing mean anything to you? 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. They aren't in there for the benefit of some ivory towered academics who don't do this for a living, they are for people who have applications to write for customers quickly and easily. I'm sorry, but I find your arguments specious. Now, if you'd picked on the var keyword, I'd have had to agree, or the lack of full templating support.

        *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

        C L J 3 Replies Last reply
        0
        • P Pete OHanlon

          gggustafson wrote:

          What I liked the most with the original C# language were the ArrayList and garbage collection

          Garbage collection is still there. What makes you think it's disappeared. As for ArrayList - you honestly like your code to perform badly? Do the terms boxing and unboxing mean anything to you? 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. They aren't in there for the benefit of some ivory towered academics who don't do this for a living, they are for people who have applications to write for customers quickly and easily. I'm sorry, but I find your arguments specious. Now, if you'd picked on the var keyword, I'd have had to agree, or the lack of full templating support.

          *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

          C Offline
          C Offline
          CPallini
          wrote on last edited by
          #8

          Pete O'Hanlon wrote:

          Now, if you'd picked on the var keyword, I'd have had to agree

          But I would disagree, then. :)

          Veni, vidi, vici.

          P G 2 Replies Last reply
          0
          • C CPallini

            Pete O'Hanlon wrote:

            Now, if you'd picked on the var keyword, I'd have had to agree

            But I would disagree, then. :)

            Veni, vidi, vici.

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

            I knew that the OP's name rang a bell[^].

            *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

            C J 2 Replies 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

              L Offline
              L Offline
              leppie
              wrote on last edited by
              #10

              I have tried arguing with Eric Lippert that some of the new C# decisions were wrong (in terms of consistency*), but that man can never be wrong... :| * Specifically the lack of lexical scoping when dealing with anonymous delegates/lambdas.

              IronScheme
              ((λ (x) `(,x ',x)) '(λ (x) `(,x ',x)))

              1 Reply Last reply
              0
              • P Pete OHanlon

                gggustafson wrote:

                What I liked the most with the original C# language were the ArrayList and garbage collection

                Garbage collection is still there. What makes you think it's disappeared. As for ArrayList - you honestly like your code to perform badly? Do the terms boxing and unboxing mean anything to you? 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. They aren't in there for the benefit of some ivory towered academics who don't do this for a living, they are for people who have applications to write for customers quickly and easily. I'm sorry, but I find your arguments specious. Now, if you'd picked on the var keyword, I'd have had to agree, or the lack of full templating support.

                *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

                L Offline
                L Offline
                leppie
                wrote on last edited by
                #11

                Pete O'Hanlon wrote:

                As for ArrayList - you honestly like your code to perform badly? Do the terms boxing and unboxing mean anything to you?

                If you exclude value types, all the assumptions are invalid. Casting a reference type is as cheap as it gets.

                IronScheme
                ((λ (x) `(,x ',x)) '(λ (x) `(,x ',x)))

                P 1 Reply Last reply
                0
                • C CPallini

                  I think the C# nature of 'evolving language' is a design choice, not a flaw. If you like only the C# original features, then why don't use just them?

                  Veni, vidi, vici.

                  J Offline
                  J Offline
                  Jan Steyn
                  wrote on last edited by
                  #12

                  Agree, one can still target their beloved old Framework in Visual Studio. Leaving no option to stray and use any of this new garbage :sigh:

                  1 Reply Last reply
                  0
                  • P Pete OHanlon

                    I knew that the OP's name rang a bell[^].

                    *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

                    C Offline
                    C Offline
                    CPallini
                    wrote on last edited by
                    #13

                    Bingo! As matter of fact, in my opinion, his last sentence there (programming as discipline), makes sense.

                    Veni, vidi, vici.

                    1 Reply Last reply
                    0
                    • P Pete OHanlon

                      I knew that the OP's name rang a bell[^].

                      *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

                      J Offline
                      J Offline
                      Jan Steyn
                      wrote on last edited by
                      #14

                      Well spotted!

                      1 Reply Last reply
                      0
                      • OriginalGriffO OriginalGriff

                        ArrayList was an abortion which should never have seen the light of day - particularly in a language that may be used for teaching. The generic List construct was a vast improvement. Personally, I would rather have seen goto restricted to unsafe blocks to make it harder for lazy people to use it...

                        Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water

                        J Offline
                        J Offline
                        Julien Villers
                        wrote on last edited by
                        #15

                        OriginalGriff wrote:

                        ArrayList was an abortion which should never have seen the light of day

                        Nice slip there mister! :laugh:

                        'As programmers go, I'm fairly social. Which still means I'm a borderline sociopath by normal standards.' Jeff Atwood 'I'm French! Why do you think I've got this outrrrrageous accent?' Monty Python and the Holy Grail

                        1 Reply Last reply
                        0
                        • L leppie

                          Pete O'Hanlon wrote:

                          As for ArrayList - you honestly like your code to perform badly? Do the terms boxing and unboxing mean anything to you?

                          If you exclude value types, all the assumptions are invalid. Casting a reference type is as cheap as it gets.

                          IronScheme
                          ((λ (x) `(,x ',x)) '(λ (x) `(,x ',x)))

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

                          leppie wrote:

                          If you exclude value types

                          And there's the rub. How much code do you have lying around that just targets reference types?

                          *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

                          L 1 Reply Last reply
                          0
                          • P Pete OHanlon

                            leppie wrote:

                            If you exclude value types

                            And there's the rub. How much code do you have lying around that just targets reference types?

                            *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

                            L Offline
                            L Offline
                            leppie
                            wrote on last edited by
                            #17

                            Pete O'Hanlon wrote:

                            How much code do you have lying around that just targets reference types?

                            I think you rather mean, how much code you have lying around that does not use value types in non-generic containers? Big difference in the meaning. Anyways, in .NET 1.x, we all used type-safe arrays (when boxing/unboxing was costly), no problems there.

                            IronScheme
                            ((λ (x) `(,x ',x)) '(λ (x) `(,x ',x)))

                            P 1 Reply Last reply
                            0
                            • L leppie

                              Pete O'Hanlon wrote:

                              How much code do you have lying around that just targets reference types?

                              I think you rather mean, how much code you have lying around that does not use value types in non-generic containers? Big difference in the meaning. Anyways, in .NET 1.x, we all used type-safe arrays (when boxing/unboxing was costly), no problems there.

                              IronScheme
                              ((λ (x) `(,x ',x)) '(λ (x) `(,x ',x)))

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

                              leppie wrote:

                              I think you rather mean, how much code you have lying around that does not use value types in non-generic containers?

                              Fair point, well made.

                              *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

                              L 1 Reply Last reply
                              0
                              • OriginalGriffO OriginalGriff

                                ArrayList was an abortion which should never have seen the light of day - particularly in a language that may be used for teaching. The generic List construct was a vast improvement. Personally, I would rather have seen goto restricted to unsafe blocks to make it harder for lazy people to use it...

                                Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water

                                G Offline
                                G Offline
                                GuyThiebaut
                                wrote on last edited by
                                #19

                                Exactly the List construct is definitely the way to go! I started using arraylists etc and nowadays everything goes into a List and if I can I will make it a list of objects and unbox at the other end...

                                “That which can be asserted without evidence, can be dismissed without evidence.”

                                ― Christopher Hitchens

                                1 Reply Last reply
                                0
                                • P Pete OHanlon

                                  leppie wrote:

                                  I think you rather mean, how much code you have lying around that does not use value types in non-generic containers?

                                  Fair point, well made.

                                  *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

                                  L Offline
                                  L Offline
                                  leppie
                                  wrote on last edited by
                                  #20

                                  Pete O'Hanlon wrote:

                                  Fair point, well made.

                                  The answer is 'a lot'. Every time you use the ASP.NET, (pretty much) every value type gets boxed (specifically session, application states and request and response variables). The performance impact is minimal at best. To answer you previous question (pedantically): LOTS, everything in IronScheme is a reference type. All value types are boxed. Some of them like symbols and booleans and numbers from 1 - 1000 are also interned (so that makes equality simply a reference check). As for performance, I have not seen better options where boxing can be avoided. The extra indirection is more costly than unboxing.

                                  IronScheme
                                  ((λ (x) `(,x ',x)) '(λ (x) `(,x ',x)))

                                  P 2 Replies 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

                                    B Offline
                                    B Offline
                                    BobJanova
                                    wrote on last edited by
                                    #21

                                    Generics are awesome and were a fairly bad omission from the original release, imo. The C# implementation is very good and they make it much easier to write type safe, efficient, clean code. LINQ, lambdas etc are just syntactic sugar and as long as you can read them, you don't have to bother learning how to write them, but they can increase elegance markedly when used appropriately. I don't agree with you at all, really, I think that the evolution of C# has been positive and made it an easier language to use.

                                    T 1 Reply Last reply
                                    0
                                    • L leppie

                                      Pete O'Hanlon wrote:

                                      Fair point, well made.

                                      The answer is 'a lot'. Every time you use the ASP.NET, (pretty much) every value type gets boxed (specifically session, application states and request and response variables). The performance impact is minimal at best. To answer you previous question (pedantically): LOTS, everything in IronScheme is a reference type. All value types are boxed. Some of them like symbols and booleans and numbers from 1 - 1000 are also interned (so that makes equality simply a reference check). As for performance, I have not seen better options where boxing can be avoided. The extra indirection is more costly than unboxing.

                                      IronScheme
                                      ((λ (x) `(,x ',x)) '(λ (x) `(,x ',x)))

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

                                      leppie wrote:

                                      Every time you use the ASP.NET, (pretty much)

                                      And yet another reason for me to rejoice that I don't write ASP.NET applications.

                                      *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
                                      • L leppie

                                        Pete O'Hanlon wrote:

                                        Fair point, well made.

                                        The answer is 'a lot'. Every time you use the ASP.NET, (pretty much) every value type gets boxed (specifically session, application states and request and response variables). The performance impact is minimal at best. To answer you previous question (pedantically): LOTS, everything in IronScheme is a reference type. All value types are boxed. Some of them like symbols and booleans and numbers from 1 - 1000 are also interned (so that makes equality simply a reference check). As for performance, I have not seen better options where boxing can be avoided. The extra indirection is more costly than unboxing.

                                        IronScheme
                                        ((λ (x) `(,x ',x)) '(λ (x) `(,x ',x)))

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

                                        leppie wrote:

                                        LOTS, everything in IronScheme is a reference type.

                                        OK, I know you're being pedantic here, but replace IronScheme with C# - as this thread is about C# and not IronScheme.

                                        *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

                                        L 1 Reply Last reply
                                        0
                                        • P Pete OHanlon

                                          leppie wrote:

                                          LOTS, everything in IronScheme is a reference type.

                                          OK, I know you're being pedantic here, but replace IronScheme with C# - as this thread is about C# and not IronScheme.

                                          *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

                                          L Offline
                                          L Offline
                                          leppie
                                          wrote on last edited by
                                          #24

                                          Pete O'Hanlon wrote:

                                          as this thread is about C# and not IronScheme.

                                          40% of IronScheme is written in C#. Same rules apply :)

                                          IronScheme
                                          ((λ (x) `(,x ',x)) '(λ (x) `(,x ',x)))

                                          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