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. while(true) is not fun

while(true) is not fun

Scheduled Pinned Locked Moved The Lounge
52 Posts 28 Posters 4 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.
  • H honey the codewitch

    Microsoft's CodeDOM renderer for C# spits out loops like that. I've also seen Microsoft code that does it this way in the reference source for the .NET BCL. As far as the while, I prefer:

    var done = false;

    while(!done) {
    // do work
    }

    But every C# dev should know how to write while(true) { }

    Real programmers use butterflies

    T Offline
    T Offline
    TheGreatAndPowerfulOz
    wrote on last edited by
    #4

    :-D

    #SupportHeForShe Government can give you nothing but what it takes from somebody else. A government big enough to give you everything you want is big enough to take everything you've got, including your freedom.-Ezra Taft Benson You must accept 1 of 2 basic premises: Either we are alone in the universe or we are not alone. Either way, the implications are staggering!-Wernher von Braun

    1 Reply Last reply
    0
    • T TheGreatAndPowerfulOz

      They have their place. OS's use them quite a bit. Otherwise your process would never get any time slot.

      #SupportHeForShe Government can give you nothing but what it takes from somebody else. A government big enough to give you everything you want is big enough to take everything you've got, including your freedom.-Ezra Taft Benson You must accept 1 of 2 basic premises: Either we are alone in the universe or we are not alone. Either way, the implications are staggering!-Wernher von Braun

      Greg UtasG Offline
      Greg UtasG Offline
      Greg Utas
      wrote on last edited by
      #5

      Yes, very common in daemons.

      Robust Services Core | Software Techniques for Lemmings | Articles
      The fox knows many things, but the hedgehog knows one big thing.

      <p><a href="https://github.com/GregUtas/robust-services-core/blob/master/README.md">Robust Services Core</a>
      <em>The fox knows many things, but the hedgehog knows one big thing.</em></p>

      1 Reply Last reply
      0
      • H honey the codewitch

        Microsoft's CodeDOM renderer for C# spits out loops like that. I've also seen Microsoft code that does it this way in the reference source for the .NET BCL. As far as the while, I prefer:

        var done = false;

        while(!done) {
        // do work
        }

        But every C# dev should know how to write while(true) { }

        Real programmers use butterflies

        Greg UtasG Offline
        Greg UtasG Offline
        Greg Utas
        wrote on last edited by
        #6

        Or

        var cowsHaveComeHome = false;

        But I just write

        while(true)...

        whose meaning is crystal clear.

        Robust Services Core | Software Techniques for Lemmings | Articles
        The fox knows many things, but the hedgehog knows one big thing.

        <p><a href="https://github.com/GregUtas/robust-services-core/blob/master/README.md">Robust Services Core</a>
        <em>The fox knows many things, but the hedgehog knows one big thing.</em></p>

        H G 2 Replies Last reply
        0
        • T TheGreatAndPowerfulOz

          They have their place. OS's use them quite a bit. Otherwise your process would never get any time slot.

          #SupportHeForShe Government can give you nothing but what it takes from somebody else. A government big enough to give you everything you want is big enough to take everything you've got, including your freedom.-Ezra Taft Benson You must accept 1 of 2 basic premises: Either we are alone in the universe or we are not alone. Either way, the implications are staggering!-Wernher von Braun

          H Offline
          H Offline
          honey the codewitch
          wrote on last edited by
          #7

          Definitely. I have no inherent problem with them. They have their place. :)

          Real programmers use butterflies

          1 Reply Last reply
          0
          • Greg UtasG Greg Utas

            Or

            var cowsHaveComeHome = false;

            But I just write

            while(true)...

            whose meaning is crystal clear.

            Robust Services Core | Software Techniques for Lemmings | Articles
            The fox knows many things, but the hedgehog knows one big thing.

            H Offline
            H Offline
            honey the codewitch
            wrote on last edited by
            #8

            if I truly need while(true); I'll use that. It's rare that I do though. Most of the time, I can get by with a done variable and setting it inside the loop instead of using break;.

            Real programmers use butterflies

            N 1 Reply Last reply
            0
            • Greg UtasG Greg Utas

              Or

              var cowsHaveComeHome = false;

              But I just write

              while(true)...

              whose meaning is crystal clear.

              Robust Services Core | Software Techniques for Lemmings | Articles
              The fox knows many things, but the hedgehog knows one big thing.

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

              I once had a code-reviewer change my code because I used a while(true). This was done on the principle that one should never use a while(true). The problem is, anyone looking at the code in future may see the condition he used and wonder why, as the condition can never be met. At least my original code is in the version history.

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

              ― Christopher Hitchens

              T 1 Reply Last reply
              0
              • B BillWoodruff

                for (;;)
                {
                Console.WriteLine("this, and while(true) loops, are an abomination ... as evil as using goto");

                // break; // oh, go on forever
                

                }

                but, writing this was fun :wtf: suggested reading: [^]

                «One day it will have to be officially admitted that what we have christened reality is an even greater illusion than the world of dreams.» Salvador Dali

                F Offline
                F Offline
                F ES Sitecore
                wrote on last edited by
                #10

                When I need an infinite loop I do this

                var False = true;

                while(False)
                {
                // code
                }

                N 1 Reply Last reply
                0
                • B BillWoodruff

                  for (;;)
                  {
                  Console.WriteLine("this, and while(true) loops, are an abomination ... as evil as using goto");

                  // break; // oh, go on forever
                  

                  }

                  but, writing this was fun :wtf: suggested reading: [^]

                  «One day it will have to be officially admitted that what we have christened reality is an even greater illusion than the world of dreams.» Salvador Dali

                  D Offline
                  D Offline
                  David ONeil
                  wrote on last edited by
                  #11

                  youAreWrong:
                  if (youThinkGotoIsEvil) goto youAreWrong;

                  ;P But seriously, goto is not intrinsically evil. But if it is the only thing you use in your codebase, you are evil!

                  The forgotten roots of science | C++ Programming | DWinLib

                  1 Reply Last reply
                  0
                  • H honey the codewitch

                    if I truly need while(true); I'll use that. It's rare that I do though. Most of the time, I can get by with a done variable and setting it inside the loop instead of using break;.

                    Real programmers use butterflies

                    N Offline
                    N Offline
                    Nelek
                    wrote on last edited by
                    #12

                    honey the codewitch wrote:

                    Most of the time, I can get by with a done variable and setting it inside the loop instead of using break;.

                    You are not the only one in that. I like this variation more too.

                    M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you Rating helpful answers is nice, but saying thanks can be even nicer.

                    1 Reply Last reply
                    0
                    • F F ES Sitecore

                      When I need an infinite loop I do this

                      var False = true;

                      while(False)
                      {
                      // code
                      }

                      N Offline
                      N Offline
                      Nelek
                      wrote on last edited by
                      #13

                      That's evil ... I like it :laugh:

                      M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you Rating helpful answers is nice, but saying thanks can be even nicer.

                      1 Reply Last reply
                      0
                      • B BillWoodruff

                        for (;;)
                        {
                        Console.WriteLine("this, and while(true) loops, are an abomination ... as evil as using goto");

                        // break; // oh, go on forever
                        

                        }

                        but, writing this was fun :wtf: suggested reading: [^]

                        «One day it will have to be officially admitted that what we have christened reality is an even greater illusion than the world of dreams.» Salvador Dali

                        N Offline
                        N Offline
                        Nelek
                        wrote on last edited by
                        #14

                        BillWoodruff wrote:

                        are an abomination ... as evil as using goto

                        Try to write Assembly or program a PLC in STL without using JMP or similars...

                        M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you Rating helpful answers is nice, but saying thanks can be even nicer.

                        B 1 Reply Last reply
                        0
                        • N Nelek

                          BillWoodruff wrote:

                          are an abomination ... as evil as using goto

                          Try to write Assembly or program a PLC in STL without using JMP or similars...

                          M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you Rating helpful answers is nice, but saying thanks can be even nicer.

                          B Offline
                          B Offline
                          BillWoodruff
                          wrote on last edited by
                          #15

                          suggested reading: [^] :)

                          «One day it will have to be officially admitted that what we have christened reality is an even greater illusion than the world of dreams.» Salvador Dali

                          H N F 3 Replies Last reply
                          0
                          • B BillWoodruff

                            for (;;)
                            {
                            Console.WriteLine("this, and while(true) loops, are an abomination ... as evil as using goto");

                            // break; // oh, go on forever
                            

                            }

                            but, writing this was fun :wtf: suggested reading: [^]

                            «One day it will have to be officially admitted that what we have christened reality is an even greater illusion than the world of dreams.» Salvador Dali

                            B Offline
                            B Offline
                            BillWoodruff
                            wrote on last edited by
                            #16

                            well, my peers, and mentors, i intended this post as a tongue-in-cheek jiggery-pokery i hoped would not be taken seriously ... back in the days some of us fossils can remember, languages, like Fortran, had simple control structures; you had to use 'goto to exit a DO loop; that, and BASIC, are the context in which Dijkstra's famous hyperbolic essay took aim [^]. in today's high-level languages, like C#, the underlying use of jumps/gotos is abstracted away for very good reasons. if i see a while(true) in C#, i call that sloppy code that lacks documentation, and, is less maintainable, because you've got to study the interior code to figure out what, if anything, makes it stop. and, it never returns? [^]

                            «One day it will have to be officially admitted that what we have christened reality is an even greater illusion than the world of dreams.» Salvador Dali

                            1 Reply Last reply
                            0
                            • B BillWoodruff

                              suggested reading: [^] :)

                              «One day it will have to be officially admitted that what we have christened reality is an even greater illusion than the world of dreams.» Salvador Dali

                              H Offline
                              H Offline
                              honey the codewitch
                              wrote on last edited by
                              #17

                              state machines are a good argument for gotos. It is impossible as far as I know, to implement every scenario possible for a deterministic finite automata based state machine without using either array based tables, or goto statements. while/for/etc don't cut it because the flow can become too complicated for those constructs. There was a Knuth paper you linked to earlier** that presented a defense of goto that is similar to my defense of it just above. ** here's the code from that paper (Example 1):

                              for i := 1 step 1 until m do.
                              if A[i] = x then go to found fi;
                              not found: i := re+l; m := i;
                              A[i] := x; B[i] := 0;
                              found: B[i] := B[i]+I;

                              rewritten without goto it's even worse (Example 1a):

                              i:=1;
                              while i < m and A[i] # x do i :-- i+1;
                              if i > m then ra := i; A[i] := x; B[i] ::= 0 fi;
                              B[i] := B[i]+I;

                              Real programmers use butterflies

                              B T G 3 Replies Last reply
                              0
                              • H honey the codewitch

                                state machines are a good argument for gotos. It is impossible as far as I know, to implement every scenario possible for a deterministic finite automata based state machine without using either array based tables, or goto statements. while/for/etc don't cut it because the flow can become too complicated for those constructs. There was a Knuth paper you linked to earlier** that presented a defense of goto that is similar to my defense of it just above. ** here's the code from that paper (Example 1):

                                for i := 1 step 1 until m do.
                                if A[i] = x then go to found fi;
                                not found: i := re+l; m := i;
                                A[i] := x; B[i] := 0;
                                found: B[i] := B[i]+I;

                                rewritten without goto it's even worse (Example 1a):

                                i:=1;
                                while i < m and A[i] # x do i :-- i+1;
                                if i > m then ra := i; A[i] := x; B[i] ::= 0 fi;
                                B[i] := B[i]+I;

                                Real programmers use butterflies

                                B Offline
                                B Offline
                                BillWoodruff
                                wrote on last edited by
                                #18

                                i think you just hoisted my attempt to play Hamlet on his own petard :omg:

                                «One day it will have to be officially admitted that what we have christened reality is an even greater illusion than the world of dreams.» Salvador Dali

                                H 1 Reply Last reply
                                0
                                • B BillWoodruff

                                  i think you just hoisted my attempt to play Hamlet on his own petard :omg:

                                  «One day it will have to be officially admitted that what we have christened reality is an even greater illusion than the world of dreams.» Salvador Dali

                                  H Offline
                                  H Offline
                                  honey the codewitch
                                  wrote on last edited by
                                  #19

                                  I'm all kinds of no fun today, sorry. :~

                                  Real programmers use butterflies

                                  1 Reply Last reply
                                  0
                                  • H honey the codewitch

                                    Microsoft's CodeDOM renderer for C# spits out loops like that. I've also seen Microsoft code that does it this way in the reference source for the .NET BCL. As far as the while, I prefer:

                                    var done = false;

                                    while(!done) {
                                    // do work
                                    }

                                    But every C# dev should know how to write while(true) { }

                                    Real programmers use butterflies

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

                                    Just a preference. But yes, guilty.

                                    var HellHasFrozen

                                    ..
                                    while (!HellHasFrozen)

                                    If you see it, good chance I wrote that code. Also (!MurlocsAttacking), used in handlers for multiple unknown exceptions. I WarCraft too much.

                                    Bastard Programmer from Hell :suss: "If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.

                                    H 1 Reply Last reply
                                    0
                                    • L Lost User

                                      Just a preference. But yes, guilty.

                                      var HellHasFrozen

                                      ..
                                      while (!HellHasFrozen)

                                      If you see it, good chance I wrote that code. Also (!MurlocsAttacking), used in handlers for multiple unknown exceptions. I WarCraft too much.

                                      Bastard Programmer from Hell :suss: "If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.

                                      H Offline
                                      H Offline
                                      honey the codewitch
                                      wrote on last edited by
                                      #21

                                      probably my silliest function name currently in use is _HasExtraNonsense() because the alternative (spelling out what "nonsense" means) would yield a function name as wide as the screen

                                      Real programmers use butterflies

                                      1 Reply Last reply
                                      0
                                      • B BillWoodruff

                                        for (;;)
                                        {
                                        Console.WriteLine("this, and while(true) loops, are an abomination ... as evil as using goto");

                                        // break; // oh, go on forever
                                        

                                        }

                                        but, writing this was fun :wtf: suggested reading: [^]

                                        «One day it will have to be officially admitted that what we have christened reality is an even greater illusion than the world of dreams.» Salvador Dali

                                        M Offline
                                        M Offline
                                        Member 4480474
                                        wrote on last edited by
                                        #22

                                        Essential in embedded coding. Pretty much every non-OS based embedded app will have a while(1) or similar in the main code. Ditto for an OS, you can't schedule the scheduler (well, you *can*, but...).

                                        1 Reply Last reply
                                        0
                                        • B BillWoodruff

                                          for (;;)
                                          {
                                          Console.WriteLine("this, and while(true) loops, are an abomination ... as evil as using goto");

                                          // break; // oh, go on forever
                                          

                                          }

                                          but, writing this was fun :wtf: suggested reading: [^]

                                          «One day it will have to be officially admitted that what we have christened reality is an even greater illusion than the world of dreams.» Salvador Dali

                                          M Offline
                                          M Offline
                                          Member_14866104
                                          wrote on last edited by
                                          #23

                                          Works better than any break point...

                                          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