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. Mark Chu-Carroll on Go (programming language)

Mark Chu-Carroll on Go (programming language)

Scheduled Pinned Locked Moved The Lounge
csharpc++phpcom
90 Posts 18 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 Jim Crafton

    Nemanja Trifunovic wrote:

    For some purposes, such as GUI. However, Go is intended to be a system language, and OOP is much less useful there.

    I completely disagree. There are many things in a "system" (whatever that means) that you might model using OO. I'm not saying you have to embrace any of the GOF pattern design horsecrap. Just because you have the ability to inherit behavior doesn't mean you have to have 16 levels of it. Do you have any concrete cases where claiming that OOP is much less euseful than plain old procedural programming? For example, if you're designing an OS for a desktop system, how is plain procedural programming any better than using a combination of procedural and OOP where appropriate?

    Nemanja Trifunovic wrote:

    Not sure I agree - D makes C++ look simple, plus Andrei Alexandrescu is now working on it and that is not good Smile

    I agree with the latter, not so much with the former. The D syntax can actually be parsed, unlike the massive syntactic migraine that is C++. A mortal programmer could actually write some sort of parser tool that could do useful things given D syntax within his or her lifetime. D does have a lot of features, but you don't have to use them all. And many of them are not very difficult to pick up (from what I've read).

    ¡El diablo está en mis pantalones! ¡Mire, mire! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! Personal 3D projects Just Say No to Web 2 Point Blow

    N Offline
    N Offline
    Nemanja Trifunovic
    wrote on last edited by
    #37

    Jim Crafton wrote:

    Do you have any concrete cases where claiming that OOP is much less euseful than plain old procedural programming?

    I don't believe class hiearchies have much use when abstracting low level resources such as files, threads, sockets, handles, etc. I've seen cases when there is a base steam class subclassed by istream and ostream but that did not result in anything useful (yes, I am talking about C++ standard io library :) ) Anyway, as I said earlier, I think explicit implementation inheritance as a concept is flawed. Structural subtyping + interfaces offer the same benefits (polymorphism) without the inheritance mess.

    Jim Crafton wrote:

    The D syntax can actually be parsed

    Don't get me started with D syntax :)

    utf8-cpp

    modified on Thursday, November 12, 2009 2:40 PM

    J 1 Reply Last reply
    0
    • J Jim Crafton

      If it weren't for your constant joking I would have left a long time ago!

      ¡El diablo está en mis pantalones! ¡Mire, mire! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! Personal 3D projects Just Say No to Web 2 Point Blow

      D Offline
      D Offline
      Douglas Troy
      wrote on last edited by
      #38

      :-O CP, my home away from home. But I'm not supporting any of you no-good free loaders ... now stop slacking and go play your XBOX. :-\


      :..::. Douglas H. Troy ::..
      Bad Astronomy |VCF|wxWidgets|WTL

      R 1 Reply Last reply
      0
      • P PIEBALDconsult

        Yeah, but while I like not having to in C#, I also don't want to forget how to in C.

        D Offline
        D Offline
        Dan Neely
        wrote on last edited by
        #39

        I've done C# almost exclusively over my professional career. If I need to do C/++ for something at some point in the future, I'll need an industrial size sandblaster to remove the rust...

        3x12=36 2x12=24 1x12=12 0x12=18

        1 Reply Last reply
        0
        • N Nemanja Trifunovic

          Jim Crafton wrote:

          Do you have any concrete cases where claiming that OOP is much less euseful than plain old procedural programming?

          I don't believe class hiearchies have much use when abstracting low level resources such as files, threads, sockets, handles, etc. I've seen cases when there is a base steam class subclassed by istream and ostream but that did not result in anything useful (yes, I am talking about C++ standard io library :) ) Anyway, as I said earlier, I think explicit implementation inheritance as a concept is flawed. Structural subtyping + interfaces offer the same benefits (polymorphism) without the inheritance mess.

          Jim Crafton wrote:

          The D syntax can actually be parsed

          Don't get me started with D syntax :)

          utf8-cpp

          modified on Thursday, November 12, 2009 2:40 PM

          J Offline
          J Offline
          Jim Crafton
          wrote on last edited by
          #40

          Nemanja Trifunovic wrote:

          C++ standard io library

          Yeah, that's a disaster, I agree. However I still don't see that as a reason to *completely* drop it from the language.

          ¡El diablo está en mis pantalones! ¡Mire, mire! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! Personal 3D projects Just Say No to Web 2 Point Blow

          N 1 Reply Last reply
          0
          • J Jim Crafton

            Normally I'd ignore this, and bitch to myself, but I'm going to try and take the time to respond to this, so I suppose this will end up being a mini-rant. First this smells suspiciously of unix-like laziness. When I start to hear things like "minimalism" and "simple as possible", my bullshit meter starts to go off. Why? Because this is frequently bandied about in regards to *nix type systems as being a feature. In practice what it means (in my experience) is that the developers of said system (or library) want to do as little work as possible in implementing the system, so they make things simple for themselves, which is convenient for them, but usually makes it a total pain in the ass to use or develop with. X-Winblows is a great example of this. It's a lowest common denominator approach that's a total pain to program under and has held back unix GUI's for *decades* (at this point). Other things like this are unix's approach to data (everything's a file!), security, etc. Writing software is hard. Writing *good* software is harder. Implementing details that help the user and/or developer and ensure a certain clarity in the system is a lot of work. But when done properly you end up with great results and powerful tool. Unfortunately people don't like to hear this. Just looking at one of the first examples:

            func fib(n) (val int, pos int) {
            if n == 0 {
            val = 1;
            pos = 0;
            } else if n == 1 {
            val = 1;
            pos = 1;
            } else {
            v1, _ := fib(n-1);
            v2,_ := fib(n-2);
            val = v1 + v2;
            pos = n;
            }
            return;
            }

            Huh? I've got "=", "==", *AND* ":="? WTF? First of all "==" is the bane of peoples existence. How many bugs have been caused by the accidental use of this? It's stupid and should be gotten rid of. That leaves us with, apparently (I haven't read the language spec yet, so I'm going on this guys article and one other one I glanced at) two ways to assign values? Grody. Seriously grody. No OO. None whatsoever, despite the "basic object-oriented features" claim. This seems ridiculous. OO is an incredibly useful tool when used correctly. Just because there are a large number of clueless dolts out there who can't be bothered to learn their craft properly and screw things up, doesn't mean you need to drop it from the language. Make it optional. You don't need to force it down peoples throats (like Java does), but you don't need to take it away either. "There's an allocation operator, "new" - but it doesn't initialize values. You can't p

            P Offline
            P Offline
            PIEBALDconsult
            wrote on last edited by
            #41

            Hear hear! All that and generics -- if they really intend to have them, put them in now(!), don't wait for version 2 like C# did. I don't think they have a deadline or fear of another competitor coming to market before them, so I see no reason not to have all the features they plan on having right from the start. I liked the way D was presented in the pre-1 days: "Here's a language I'm working on. I'd like to get some feedback on what I have so far." rather than: "Here's our new language! Start using it! Oh by the way, we're not done yet."

            J 1 Reply Last reply
            0
            • D Douglas Troy

              :-O CP, my home away from home. But I'm not supporting any of you no-good free loaders ... now stop slacking and go play your XBOX. :-\


              :..::. Douglas H. Troy ::..
              Bad Astronomy |VCF|wxWidgets|WTL

              R Offline
              R Offline
              ragnaroknrol
              wrote on last edited by
              #42

              Can't. Boss took it out of the cubicle. Muttered something about interns and if it weren't for my wife I'd be in trouble...

              1 Reply Last reply
              0
              • M Member 96

                Interesting, what type of software do you write? This is the sort of thing that leads to disagreements here, everyone approaches things from their own perspective. In my world my customers want the code fast and they want a *lot* of functionality and they want to never lose their data and as far as performance goes as long as they don't notice anything taking a long time they don't care about it.


                "Creating your own blog is about as easy as creating your own urine, and you're about as likely to find someone else interested in it." -- Lore Sjöberg

                N Offline
                N Offline
                Nemanja Trifunovic
                wrote on last edited by
                #43

                John C wrote:

                This is the sort of thing that leads to disagreements here, everyone approaches things from their own perspective.

                Yes!!!! And, believe it or not, there are much more than 0.00001% of developers who don't live in your world.

                John C wrote:

                In my world my customers want the code fast and they want a *lot* of functionality and they want to never lose their data and as far as performance goes as long as they don't notice anything taking a long time they don't care about it.

                In my world, customers' number one wish is to make faster running programs. As for the features, they mostly complain we have too many of them :)

                utf8-cpp

                M 1 Reply Last reply
                0
                • N Nemanja Trifunovic

                  John C wrote:

                  This is the sort of thing that leads to disagreements here, everyone approaches things from their own perspective.

                  Yes!!!! And, believe it or not, there are much more than 0.00001% of developers who don't live in your world.

                  John C wrote:

                  In my world my customers want the code fast and they want a *lot* of functionality and they want to never lose their data and as far as performance goes as long as they don't notice anything taking a long time they don't care about it.

                  In my world, customers' number one wish is to make faster running programs. As for the features, they mostly complain we have too many of them :)

                  utf8-cpp

                  M Offline
                  M Offline
                  Member 96
                  wrote on last edited by
                  #44

                  And....? What type of software do you write?


                  "Creating your own blog is about as easy as creating your own urine, and you're about as likely to find someone else interested in it." -- Lore Sjöberg

                  N R 2 Replies Last reply
                  0
                  • J Jim Crafton

                    Nemanja Trifunovic wrote:

                    For some purposes, such as GUI. However, Go is intended to be a system language, and OOP is much less useful there.

                    I completely disagree. There are many things in a "system" (whatever that means) that you might model using OO. I'm not saying you have to embrace any of the GOF pattern design horsecrap. Just because you have the ability to inherit behavior doesn't mean you have to have 16 levels of it. Do you have any concrete cases where claiming that OOP is much less euseful than plain old procedural programming? For example, if you're designing an OS for a desktop system, how is plain procedural programming any better than using a combination of procedural and OOP where appropriate?

                    Nemanja Trifunovic wrote:

                    Not sure I agree - D makes C++ look simple, plus Andrei Alexandrescu is now working on it and that is not good Smile

                    I agree with the latter, not so much with the former. The D syntax can actually be parsed, unlike the massive syntactic migraine that is C++. A mortal programmer could actually write some sort of parser tool that could do useful things given D syntax within his or her lifetime. D does have a lot of features, but you don't have to use them all. And many of them are not very difficult to pick up (from what I've read).

                    ¡El diablo está en mis pantalones! ¡Mire, mire! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! Personal 3D projects Just Say No to Web 2 Point Blow

                    C Offline
                    C Offline
                    Chris Losinger
                    wrote on last edited by
                    #45

                    Jim Crafton wrote:

                    the GOF pattern design horsecrap

                    i'll 5 ya, just for this

                    image processing toolkits | batch image processing

                    1 Reply Last reply
                    0
                    • M Member 96

                      Interesting, what type of software do you write? This is the sort of thing that leads to disagreements here, everyone approaches things from their own perspective. In my world my customers want the code fast and they want a *lot* of functionality and they want to never lose their data and as far as performance goes as long as they don't notice anything taking a long time they don't care about it.


                      "Creating your own blog is about as easy as creating your own urine, and you're about as likely to find someone else interested in it." -- Lore Sjöberg

                      S Offline
                      S Offline
                      Single Step Debugger
                      wrote on last edited by
                      #46

                      John C wrote:

                      In my world my customers want the code fast and they want a *lot* of functionality and they want to never lose their data and as far as performance goes as long as they don't notice anything taking a long time they don't care about it.

                      In my world there are four major types of applications/solutions. System programs, Small Programs, Medium Business - Applications, Monstrous Corporate-Applications. From all these only the second kind is not always performance critical. And except for the system programs, the choice of the particular language has nothing to do with the performance.

                      The narrow specialist in the broad sense of the word is a complete idiot in the narrow sense of the word. Advertise here – minimum three posts per day are guaranteed.

                      M 1 Reply Last reply
                      0
                      • M Member 96

                        And....? What type of software do you write?


                        "Creating your own blog is about as easy as creating your own urine, and you're about as likely to find someone else interested in it." -- Lore Sjöberg

                        N Offline
                        N Offline
                        Nemanja Trifunovic
                        wrote on last edited by
                        #47

                        "A desktop application designed for document collaboration in teams with members who are regularly off-line or who do not share the same network security clearance."

                        utf8-cpp

                        M 1 Reply Last reply
                        0
                        • S Shelby Robertson

                          C vs C++, i couldn't care less i like them both. (c || c++) vs c# depends on what you want to do with them they all have a purpose. (c || c++ || c#) vs java is where I have a problem. Java is shitty, and so are (most) Java developers.

                          Ennis Ray Lynch, Jr. wrote:

                          Unpaid overtime is slavery.

                          Trollslayer wrote:

                          Meetings - where minutes are taken and hours are lost.

                          S Offline
                          S Offline
                          Single Step Debugger
                          wrote on last edited by
                          #48

                          Amen brother!

                          The narrow specialist in the broad sense of the word is a complete idiot in the narrow sense of the word. Advertise here – minimum three posts per day are guaranteed.

                          1 Reply Last reply
                          0
                          • J Jim Crafton

                            Nemanja Trifunovic wrote:

                            C++ standard io library

                            Yeah, that's a disaster, I agree. However I still don't see that as a reason to *completely* drop it from the language.

                            ¡El diablo está en mis pantalones! ¡Mire, mire! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! Personal 3D projects Just Say No to Web 2 Point Blow

                            N Offline
                            N Offline
                            Nemanja Trifunovic
                            wrote on last edited by
                            #49

                            Jim Crafton wrote:

                            However I still don't see that as a reason to *completely* drop it from the language

                            But it is not "completely" dropped out. They have interfaces and structural subtyping - you just don't explicitelly put the ineritance relashionship in the code. If a type implements all methods declared in an interface, than it is allowed to be used wherever the interface is expected, without the need to explicitely mark it as derived from the interface. Sure, it prevents you from making deep hierarchies, but I salute that.

                            utf8-cpp

                            J 1 Reply Last reply
                            0
                            • P PIEBALDconsult

                              Hear hear! All that and generics -- if they really intend to have them, put them in now(!), don't wait for version 2 like C# did. I don't think they have a deadline or fear of another competitor coming to market before them, so I see no reason not to have all the features they plan on having right from the start. I liked the way D was presented in the pre-1 days: "Here's a language I'm working on. I'd like to get some feedback on what I have so far." rather than: "Here's our new language! Start using it! Oh by the way, we're not done yet."

                              J Offline
                              J Offline
                              Jim Crafton
                              wrote on last edited by
                              #50

                              PIEBALDconsult wrote:

                              Start using it! Oh by the way, we're not done yet

                              It's the *nix tradition. And anyone who dares to offer constructive criticism will be met with outrage that people "demand" something from the developers, or that they feel the developer "owe" them something. Which then devolves into a mind numbing pissing contest the likes of which Cro-Magnon man would shudder at. Just looked at the "Go-nuts" mailing list, and one of the posters equates the ability of Java's stack trace function to spitting out some random string via fprintf(stderr, "..."), in defense of the error code only approach. How is the ability to get a complete stack trace comparable to printing out some nonsensical string that may or may not be relevant to the actual error code that was returned?!

                              ¡El diablo está en mis pantalones! ¡Mire, mire! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! Personal 3D projects Just Say No to Web 2 Point Blow

                              1 Reply Last reply
                              0
                              • N Nemanja Trifunovic

                                Jim Crafton wrote:

                                No OO. None whatsoever, despite the "basic object-oriented features" claim. This seems ridiculous. OO is an incredibly useful tool when used correctly.

                                For some purposes, such as GUI. However, Go is intended to be a system language, and OOP is much less useful there.

                                Jim Crafton wrote:

                                Personally I think D is a *much* better, more pragmatic choice

                                Not sure I agree - D makes C++ look simple, plus Andrei Alexandrescu is now working on it and that is not good :)

                                utf8-cpp

                                S Offline
                                S Offline
                                Single Step Debugger
                                wrote on last edited by
                                #51

                                Nemanja Trifunovic wrote:

                                For some purposes, such as GUI. However, Go is intended to be a system language, and OOP is much less useful there.

                                You can’t be serious! Try some time to create network communication server, protocol parser or connection puling without using OOP – the code will triple. Unless if under system programming you mean opening one TSP socket and reading 7 bytes of data.

                                The narrow specialist in the broad sense of the word is a complete idiot in the narrow sense of the word. Advertise here – minimum three posts per day are guaranteed.

                                N 1 Reply Last reply
                                0
                                • N Nemanja Trifunovic

                                  Jim Crafton wrote:

                                  However I still don't see that as a reason to *completely* drop it from the language

                                  But it is not "completely" dropped out. They have interfaces and structural subtyping - you just don't explicitelly put the ineritance relashionship in the code. If a type implements all methods declared in an interface, than it is allowed to be used wherever the interface is expected, without the need to explicitely mark it as derived from the interface. Sure, it prevents you from making deep hierarchies, but I salute that.

                                  utf8-cpp

                                  J Offline
                                  J Offline
                                  Jim Crafton
                                  wrote on last edited by
                                  #52

                                  But I can't inherit behavior, right? Isn't that one of the compelling things about OOP, again, when used/designed properly? It seems goofy, to me at least.

                                  ¡El diablo está en mis pantalones! ¡Mire, mire! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! Personal 3D projects Just Say No to Web 2 Point Blow

                                  N 1 Reply Last reply
                                  0
                                  • S Single Step Debugger

                                    Nemanja Trifunovic wrote:

                                    For some purposes, such as GUI. However, Go is intended to be a system language, and OOP is much less useful there.

                                    You can’t be serious! Try some time to create network communication server, protocol parser or connection puling without using OOP – the code will triple. Unless if under system programming you mean opening one TSP socket and reading 7 bytes of data.

                                    The narrow specialist in the broad sense of the word is a complete idiot in the narrow sense of the word. Advertise here – minimum three posts per day are guaranteed.

                                    N Offline
                                    N Offline
                                    Nemanja Trifunovic
                                    wrote on last edited by
                                    #53

                                    Deyan Georgiev wrote:

                                    You can’t be serious! Try some time to create network communication server, protocol parser or connection puling without using OOP – the code will triple

                                    Just to be on the same page - by OOP, I mean the classic definition with class hierarchies. I don't see how the code "will triple" if you don't use them.

                                    utf8-cpp

                                    1 Reply Last reply
                                    0
                                    • J Jim Crafton

                                      But I can't inherit behavior, right? Isn't that one of the compelling things about OOP, again, when used/designed properly? It seems goofy, to me at least.

                                      ¡El diablo está en mis pantalones! ¡Mire, mire! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! Personal 3D projects Just Say No to Web 2 Point Blow

                                      N Offline
                                      N Offline
                                      Nemanja Trifunovic
                                      wrote on last edited by
                                      #54

                                      Jim Crafton wrote:

                                      But I can't inherit behavior, right? Isn't that one of the compelling things about OOP

                                      Not in my book, except in very specific cases such as GUI libraries. Implementation inheritance is one of the worst ways to reuse code.

                                      utf8-cpp

                                      Steve EcholsS J 2 Replies Last reply
                                      0
                                      • M Member 96

                                        :sigh: 2000 called; it wants it's argument back.


                                        "Creating your own blog is about as easy as creating your own urine, and you're about as likely to find someone else interested in it." -- Lore Sjöberg

                                        P Offline
                                        P Offline
                                        PIEBALDconsult
                                        wrote on last edited by
                                        #55

                                        I'm still trying to figure out what this is in response to. :~

                                        M 1 Reply Last reply
                                        0
                                        • M Member 96

                                          And....? What type of software do you write?


                                          "Creating your own blog is about as easy as creating your own urine, and you're about as likely to find someone else interested in it." -- Lore Sjöberg

                                          R Offline
                                          R Offline
                                          Rajesh R Subramanian
                                          wrote on last edited by
                                          #56

                                          I work for an animation company in their research team. We write software components for 3d rendering, we have a home grown high performance graphics library, our own multicasting library, etc., I'm currently working on a high performance server (MFC for UI and C++ otherwise), and on a thread pool in C. Most of our code works extensively with other applications (other application API) like Maya, Quicktime, etc., Performance is very important here and C#, Java and other things stay outside the gate.

                                          “Follow your bliss.” – Joseph Campbell

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