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. C++ is love

C++ is love

Scheduled Pinned Locked Moved The Lounge
csharpc++
86 Posts 24 Posters 11 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.
  • honey the codewitchH Offline
    honey the codewitchH Offline
    honey the codewitch
    wrote on last edited by
    #1

    I needed some garbage-collector like advantages without the overhead so I wrote a 123 line file to give me exactly that. I love C++, and right now I don't know why I ever messed with .NET. :thumbsup::thumbsup::thumbsup: I'm usually not one to holy roll about technology but this language absolutely rules. The only downside with it is it hides nothing (and it doesn't parse properly**), but hiding nothing is just as big an advantage as a liability. Oh how I missed you, C++. ** C++ should really be parsed with a GLR parser so you don't have to worry about incomplete types being a thing.

    Real programmers use butterflies

    W raddevusR L J C 14 Replies Last reply
    0
    • honey the codewitchH honey the codewitch

      I needed some garbage-collector like advantages without the overhead so I wrote a 123 line file to give me exactly that. I love C++, and right now I don't know why I ever messed with .NET. :thumbsup::thumbsup::thumbsup: I'm usually not one to holy roll about technology but this language absolutely rules. The only downside with it is it hides nothing (and it doesn't parse properly**), but hiding nothing is just as big an advantage as a liability. Oh how I missed you, C++. ** C++ should really be parsed with a GLR parser so you don't have to worry about incomplete types being a thing.

      Real programmers use butterflies

      W Offline
      W Offline
      W Balboos GHB
      wrote on last edited by
      #2

      Back in the days of yore, when I did my C programming, I discovered alloca(). Used inside of functions, instead of malloc() (for example), it would free allocated memory when you left the function. I didn't look into the workings but I'd presume it used the stack for memory. Update: Quick Search [^] and it's in C++, too - and it does use the stack for allocatons.

      Ravings en masse^

      "The difference between genius and stupidity is that genius has its limits." - Albert Einstein

      "If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010

      D honey the codewitchH 2 Replies Last reply
      0
      • honey the codewitchH honey the codewitch

        I needed some garbage-collector like advantages without the overhead so I wrote a 123 line file to give me exactly that. I love C++, and right now I don't know why I ever messed with .NET. :thumbsup::thumbsup::thumbsup: I'm usually not one to holy roll about technology but this language absolutely rules. The only downside with it is it hides nothing (and it doesn't parse properly**), but hiding nothing is just as big an advantage as a liability. Oh how I missed you, C++. ** C++ should really be parsed with a GLR parser so you don't have to worry about incomplete types being a thing.

        Real programmers use butterflies

        raddevusR Offline
        raddevusR Offline
        raddevus
        wrote on last edited by
        #3

        How much can you sell it for? And/or can you get 1 million (or more) devs to use it? That's our modern (cynical) measure for success so get on board. :rolleyes:

        honey the codewitchH S 2 Replies Last reply
        0
        • W W Balboos GHB

          Back in the days of yore, when I did my C programming, I discovered alloca(). Used inside of functions, instead of malloc() (for example), it would free allocated memory when you left the function. I didn't look into the workings but I'd presume it used the stack for memory. Update: Quick Search [^] and it's in C++, too - and it does use the stack for allocatons.

          Ravings en masse^

          "The difference between genius and stupidity is that genius has its limits." - Albert Einstein

          "If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010

          D Offline
          D Offline
          den2k88
          wrote on last edited by
          #4

          W∴ Balboos, GHB wrote:

          I'd presume it used the stack for memory.

          Yep, exactly. I had the habit of making objects "stackable" whenever possible, for example strings had fixed size straight into the struct, so the whole object was a single contiguous dataspace easily allocatable in the stack and passed around with a memcpy. Of course it isn't alwasy the best option but I like it when it is.

          GCS d--(d+) s-/++ a C++++ U+++ P- L+@ E-- W++ N+ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++*      Weapons extension: ma- k++ F+2 X

          W K 2 Replies Last reply
          0
          • D den2k88

            W∴ Balboos, GHB wrote:

            I'd presume it used the stack for memory.

            Yep, exactly. I had the habit of making objects "stackable" whenever possible, for example strings had fixed size straight into the struct, so the whole object was a single contiguous dataspace easily allocatable in the stack and passed around with a memcpy. Of course it isn't alwasy the best option but I like it when it is.

            GCS d--(d+) s-/++ a C++++ U+++ P- L+@ E-- W++ N+ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++*      Weapons extension: ma- k++ F+2 X

            W Offline
            W Offline
            W Balboos GHB
            wrote on last edited by
            #5

            Some of the references warn against its use. So far as I can tell, it's based upon usage and gotcha's that are common in C - in other words, C is for grownup who take responsibility for their actions. Simply put - know what you're doing when you do it. Don't free() it - well, duh! That's the point of using it. Beware of stack overflows. Always keep your wits about you with memory usage. Don't use in recursive functions or loops. In a loop, index the allocations into an array of pointers, or, if you want to reuse the same one, allocate it before the loop . . . just like the other memory functions. Seems standard enough - for the grownups in the room

            Ravings en masse^

            "The difference between genius and stupidity is that genius has its limits." - Albert Einstein

            "If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010

            honey the codewitchH U 2 Replies Last reply
            0
            • honey the codewitchH honey the codewitch

              I needed some garbage-collector like advantages without the overhead so I wrote a 123 line file to give me exactly that. I love C++, and right now I don't know why I ever messed with .NET. :thumbsup::thumbsup::thumbsup: I'm usually not one to holy roll about technology but this language absolutely rules. The only downside with it is it hides nothing (and it doesn't parse properly**), but hiding nothing is just as big an advantage as a liability. Oh how I missed you, C++. ** C++ should really be parsed with a GLR parser so you don't have to worry about incomplete types being a thing.

              Real programmers use butterflies

              L Offline
              L Offline
              Lost User
              wrote on last edited by
              #6

              honey the codewitch wrote:

              I needed some garbage-collector like advantages

              Now all you need to do is add heap compacting[^] and maybe heap compression[^]. :-D

              honey the codewitchH 1 Reply Last reply
              0
              • honey the codewitchH honey the codewitch

                I needed some garbage-collector like advantages without the overhead so I wrote a 123 line file to give me exactly that. I love C++, and right now I don't know why I ever messed with .NET. :thumbsup::thumbsup::thumbsup: I'm usually not one to holy roll about technology but this language absolutely rules. The only downside with it is it hides nothing (and it doesn't parse properly**), but hiding nothing is just as big an advantage as a liability. Oh how I missed you, C++. ** C++ should really be parsed with a GLR parser so you don't have to worry about incomplete types being a thing.

                Real programmers use butterflies

                C Offline
                C Offline
                CodeWraith
                wrote on last edited by
                #7

                Blasphemy! Quick, fall on your knees and repent, or you will see hordes with torches and pitchforks gathering. While the .Net guys are not as fanatically religious as Holy Order of the Javaites, they could still burn you like their steaks at a stake (*). (*) FTMS - fixed that myself.

                I have lived with several Zen masters - all of them were cats. His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.

                1 Reply Last reply
                0
                • honey the codewitchH honey the codewitch

                  I needed some garbage-collector like advantages without the overhead so I wrote a 123 line file to give me exactly that. I love C++, and right now I don't know why I ever messed with .NET. :thumbsup::thumbsup::thumbsup: I'm usually not one to holy roll about technology but this language absolutely rules. The only downside with it is it hides nothing (and it doesn't parse properly**), but hiding nothing is just as big an advantage as a liability. Oh how I missed you, C++. ** C++ should really be parsed with a GLR parser so you don't have to worry about incomplete types being a thing.

                  Real programmers use butterflies

                  J Offline
                  J Offline
                  Jorgen Andersson
                  wrote on last edited by
                  #8

                  Sounds like you're in regression. Next year you'll be hot for C and after that you'll start a club with Codewraith doing 1802 assembler for your own Zwölf.

                  Wrong is evil and must be defeated. - Jeff Ello Never stop dreaming - Freddie Kruger

                  C D 2 Replies Last reply
                  0
                  • honey the codewitchH honey the codewitch

                    I needed some garbage-collector like advantages without the overhead so I wrote a 123 line file to give me exactly that. I love C++, and right now I don't know why I ever messed with .NET. :thumbsup::thumbsup::thumbsup: I'm usually not one to holy roll about technology but this language absolutely rules. The only downside with it is it hides nothing (and it doesn't parse properly**), but hiding nothing is just as big an advantage as a liability. Oh how I missed you, C++. ** C++ should really be parsed with a GLR parser so you don't have to worry about incomplete types being a thing.

                    Real programmers use butterflies

                    Sander RosselS Offline
                    Sander RosselS Offline
                    Sander Rossel
                    wrote on last edited by
                    #9

                    Ok, now give it a name that references literature, something like "Quixote Garbage Collector". Then make a slogan that's inspired by LOTR, maybe "I am Gandalf the White and I've come to collect your garbage" or "There is no curse in Elvish, Entish, or the tongues of Men for this garbage collector." Now live out your life as Facebook, Google, Microsoft or Apple buys you out for quintagazillions$$$ and share some with me :D (For those who miss the joke, read post below)

                    Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript

                    honey the codewitchH C 2 Replies Last reply
                    0
                    • J Jorgen Andersson

                      Sounds like you're in regression. Next year you'll be hot for C and after that you'll start a club with Codewraith doing 1802 assembler for your own Zwölf.

                      Wrong is evil and must be defeated. - Jeff Ello Never stop dreaming - Freddie Kruger

                      C Offline
                      C Offline
                      CodeWraith
                      wrote on last edited by
                      #10

                      Or you could run in circles, like poor Sander. He hasn't noticed yet because he's still on his first lap. :-)

                      I have lived with several Zen masters - all of them were cats. His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.

                      1 Reply Last reply
                      0
                      • Sander RosselS Sander Rossel

                        Ok, now give it a name that references literature, something like "Quixote Garbage Collector". Then make a slogan that's inspired by LOTR, maybe "I am Gandalf the White and I've come to collect your garbage" or "There is no curse in Elvish, Entish, or the tongues of Men for this garbage collector." Now live out your life as Facebook, Google, Microsoft or Apple buys you out for quintagazillions$$$ and share some with me :D (For those who miss the joke, read post below)

                        Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript

                        honey the codewitchH Offline
                        honey the codewitchH Offline
                        honey the codewitch
                        wrote on last edited by
                        #11

                        It doesn't really do garbage collection as such. As an analogy imagine the garbage man came once a week and burned your house down. It's much more time and space efficient than taking out the trash. You can't actually delete objects in my scheme, only allocate to pools. You can recycle entire pools though, manually, freeing (invalidating) all pointers (or objects) therein. Doing it that way makes it fast fast fast and it works on constrained memory environments. Also it was easy to code.

                        Real programmers use butterflies

                        Sander RosselS pkfoxP 2 Replies Last reply
                        0
                        • W W Balboos GHB

                          Some of the references warn against its use. So far as I can tell, it's based upon usage and gotcha's that are common in C - in other words, C is for grownup who take responsibility for their actions. Simply put - know what you're doing when you do it. Don't free() it - well, duh! That's the point of using it. Beware of stack overflows. Always keep your wits about you with memory usage. Don't use in recursive functions or loops. In a loop, index the allocations into an array of pointers, or, if you want to reuse the same one, allocate it before the loop . . . just like the other memory functions. Seems standard enough - for the grownups in the room

                          Ravings en masse^

                          "The difference between genius and stupidity is that genius has its limits." - Albert Einstein

                          "If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010

                          honey the codewitchH Offline
                          honey the codewitchH Offline
                          honey the codewitch
                          wrote on last edited by
                          #12

                          Yeah which is why i don't use it. I have StaticMemoryPool<C> which can allocate a fixed amount of data from the heap or the stack (capacity C known at compile time) and DynamicMemoryPool which allocates a capacity specified at runtime, but always from the heap. using dynamic stack allocations is messy because its intertwined with scope. Plus it goes out of scope with the function ends making wrapping it not a thing. Maybe that's why it's warned against. *shrug* I really don't know.

                          Real programmers use butterflies

                          W 1 Reply Last reply
                          0
                          • raddevusR raddevus

                            How much can you sell it for? And/or can you get 1 million (or more) devs to use it? That's our modern (cynical) measure for success so get on board. :rolleyes:

                            honey the codewitchH Offline
                            honey the codewitchH Offline
                            honey the codewitch
                            wrote on last edited by
                            #13

                            I gave it away under the MIT license. It was just a little bit of code anyway.

                            Real programmers use butterflies

                            raddevusR 1 Reply Last reply
                            0
                            • L Lost User

                              honey the codewitch wrote:

                              I needed some garbage-collector like advantages

                              Now all you need to do is add heap compacting[^] and maybe heap compression[^]. :-D

                              honey the codewitchH Offline
                              honey the codewitchH Offline
                              honey the codewitch
                              wrote on last edited by
                              #14

                              Then that would be an actual garbage collector, which I'm trying to avoid. :-D Actually what I'm doing is kind of clever. I allow you to allocate a "MemoryPool" on the heap or the stack, and then allocate memory from that pool. It does not allow you to delete. However, all allocated segments are always contiguous and sequential, leading to a number of performance advantages. Instead of deleting single allocations you can freeAll() to reset/recycle the entire pool and invalidate the memory therein. It's actually quite nice for a lot of basic processing scenarios. it's just inefficient for mutable data where sizes can change - which it's not designed for.

                              Real programmers use butterflies

                              J 1 Reply Last reply
                              0
                              • Sander RosselS Sander Rossel

                                Ok, now give it a name that references literature, something like "Quixote Garbage Collector". Then make a slogan that's inspired by LOTR, maybe "I am Gandalf the White and I've come to collect your garbage" or "There is no curse in Elvish, Entish, or the tongues of Men for this garbage collector." Now live out your life as Facebook, Google, Microsoft or Apple buys you out for quintagazillions$$$ and share some with me :D (For those who miss the joke, read post below)

                                Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript

                                C Offline
                                C Offline
                                CodeWraith
                                wrote on last edited by
                                #15

                                You don't simply collect Garbage in Mordor! :-)

                                I have lived with several Zen masters - all of them were cats. His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.

                                J 1 Reply Last reply
                                0
                                • honey the codewitchH honey the codewitch

                                  Yeah which is why i don't use it. I have StaticMemoryPool<C> which can allocate a fixed amount of data from the heap or the stack (capacity C known at compile time) and DynamicMemoryPool which allocates a capacity specified at runtime, but always from the heap. using dynamic stack allocations is messy because its intertwined with scope. Plus it goes out of scope with the function ends making wrapping it not a thing. Maybe that's why it's warned against. *shrug* I really don't know.

                                  Real programmers use butterflies

                                  W Offline
                                  W Offline
                                  W Balboos GHB
                                  wrote on last edited by
                                  #16

                                  It's only scope, certainly how I used it, was within the function - scope was never a problem. Memory wasn't humongous, then, so allocations were done with care, anyway. There was expanded and extended memory.* It's built in (usually) and automatic. About the only complaint I found really valid is that it's existence in a compiler is not (or was not) guaranteed as it was an official standard. It happened to be everywhere I was (QuickC, MS-C, Wacom-C) on DOS and NT, manly; Now I live in a stateless world of web development. I will say, however, that with the 400 users, an occasional server request gets an out-of-memory error. I increased it in php.ini a couple of times, but for the most part, the DBA and I share info and he forces filters them to not ask for a million records. A better long-term solution. *I made a page-swapper so I could access lots of it smoothly beyond the 64K in the original page frame.

                                  Ravings en masse^

                                  "The difference between genius and stupidity is that genius has its limits." - Albert Einstein

                                  "If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010

                                  1 Reply Last reply
                                  0
                                  • C CodeWraith

                                    You don't simply collect Garbage in Mordor! :-)

                                    I have lived with several Zen masters - all of them were cats. His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.

                                    J Offline
                                    J Offline
                                    Jorgen Andersson
                                    wrote on last edited by
                                    #17

                                    Garbage shall not pass.

                                    Wrong is evil and must be defeated. - Jeff Ello Never stop dreaming - Freddie Kruger

                                    C 1 Reply Last reply
                                    0
                                    • J Jorgen Andersson

                                      Garbage shall not pass.

                                      Wrong is evil and must be defeated. - Jeff Ello Never stop dreaming - Freddie Kruger

                                      C Offline
                                      C Offline
                                      CodeWraith
                                      wrote on last edited by
                                      #18

                                      I reserve that one for some unit test. "YOU ! Shall! Not! Pass!" :-)

                                      I have lived with several Zen masters - all of them were cats. His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.

                                      1 Reply Last reply
                                      0
                                      • raddevusR raddevus

                                        How much can you sell it for? And/or can you get 1 million (or more) devs to use it? That's our modern (cynical) measure for success so get on board. :rolleyes:

                                        S Offline
                                        S Offline
                                        Slacker007
                                        wrote on last edited by
                                        #19

                                        raddevus wrote:

                                        How much can you sell it for?

                                        That's capitalism, and htcw does not believe in that. :)

                                        honey the codewitchH 1 Reply Last reply
                                        0
                                        • honey the codewitchH honey the codewitch

                                          I needed some garbage-collector like advantages without the overhead so I wrote a 123 line file to give me exactly that. I love C++, and right now I don't know why I ever messed with .NET. :thumbsup::thumbsup::thumbsup: I'm usually not one to holy roll about technology but this language absolutely rules. The only downside with it is it hides nothing (and it doesn't parse properly**), but hiding nothing is just as big an advantage as a liability. Oh how I missed you, C++. ** C++ should really be parsed with a GLR parser so you don't have to worry about incomplete types being a thing.

                                          Real programmers use butterflies

                                          S Offline
                                          S Offline
                                          Slacker007
                                          wrote on last edited by
                                          #20

                                          Sure, C++ is love, but at what price does this "love" cost? your soul, I am sure. We are talking about C++ here. :laugh:

                                          honey the codewitchH 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