• Bim Job (unregistered) in reply to Eddie
    Eddie:
    recursive ClaudeSuck:
    ClaudeSuck.de:
    Not everybody knows recursion

    Not everybody knows recursion

    Not everybody knows recursion

    No! I know recursion!

    (Appropriately enough, it's at a stack depth of four, as well...)

  • Maboule (unregistered) in reply to Resuna
    Resuna:
    Not everybody knows recursion
    2. This doesn't actually need recursion, you can maintain a directory stack manually.

    Or you could just use a while loop and move the subdirs into the directory to delete. No recursion, no stack.

  • JV (unregistered)

    Samuel = hire FAIL

    Captcha: jumentum (a fast moving Jew)

  • fjf (unregistered) in reply to greg barton
    greg barton:
    2^128 is an arbitrary limit. It's higher than the number of atoms in the solar system
    According to http://www.madsci.org/posts/archives/may98/892502124.Ph.r.html not even that, though I admit I didn't count them myself. :)
  • fjf (unregistered) in reply to Maboule
    Maboule:
    Resuna:
    Not everybody knows recursion
    2. This doesn't actually need recursion, you can maintain a directory stack manually.

    Or you could just use a while loop and move the subdirs into the directory to delete. No recursion, no stack.

    But less efficient (additional move operations), and depending on the environment you may have to rewind/reopen the directory reader to make it get the newly moved files.
  • Zel (unregistered)

    Seriously now, all the people who mentioned recursion as a solution to this, should be fired on principle.

    If you don't expect that your framework provides a simpler way to do such a trivial task and you don't rtfm to find out what that way is, you better stay home tomorrow.

  • Some Guy (unregistered)

    The real WTF is th ehiring manager. Try and find the retarded cabbage that hired this developer, and get him to explain exactly why he deserves to keep his job having demonstrated that he is utterly incompetent to lead the team.

    Oh, wait, that would be the "I hired this guy and call him my best developer, and he's terrible, let's all laugh at him and ignore the fact that I consider him to be a 'strong' developer" guy.

  • Greg Barton (unregistered) in reply to fjf

    Of course it would run out of memory, so why are you saying this is the way to go?

    If you use the underlying INode, INode Pointing, tree structure of a filesystem to traverse and delete files then you never have to get a folders name, don't have to worry about string memory, you don't have to implement recursion, you don't have to emulate recursion with a stack, your routine will be generalized to any future limit increase on file names or nesting depth, and it won't be exploitable.

    I'm going to site a source: http://www.linux-tutorial.info/modules.php?name=MContent&pageid=278

  • Mr.'; Drop Database -- (unregistered) in reply to frits
    frits:
    Todd Lewis:
    ... if you want to think outside the box, ... Loop through the directory, deleting files as you find them. When you find a directory, move all the files and directories it contains to the top level, then delete the now empty sub directory. Repeat until there's nothing in the top directory. ...
    That's not thinking outside the box. This is thinking outside the box ...
    I wonder what is inside the box that is so important that people think inside of it all the time?
  • Alargule (unregistered)
    “Unfortunately,” he added, “outsourcing had gotten a bad rap lately...
    [image]
  • Undead (unregistered) in reply to Mr.'; Drop Database --
    Mr.'; Drop Database --:
    frits:
    Todd Lewis:
    ... if you want to think outside the box, ... Loop through the directory, deleting files as you find them. When you find a directory, move all the files and directories it contains to the top level, then delete the now empty sub directory. Repeat until there's nothing in the top directory. ...
    That's not thinking outside the box. This is thinking outside the box ...
    I wonder what is inside the box that is so important that people think inside of it all the time?
    BrAiNs
  • AA (unregistered) in reply to Greg Barton

    @GB: Are you suggesting that everyone should avoid using any system interface that involves names of files, just on the off-chance that someone introduces an unlimited-depth file system without also introducing a suitable compatibility layer for the thousands of applications that used the intuitive and reasonable "get file by name" interfaces instead of the arcane and unnecessarily awkward "get file by id" ones?

  • (cs) in reply to AA
    AA:
    "get file by id" ones?

    As any Freudian will tell you, getting a file via the ego or super-ego is far superior.

    According to Wikipedia:

    'uncoordinated instinctual trends are the "id"; the organised realistic part of the psyche is the "ego," and the critical and moralising function the "super-ego."'

    That sounds remarkably similar to this debate. Nodes are analogous to the id, filenames are analogous to the ego, and WTFers are the super-ego, criticising and moralising away.

  • John Cocksworth (unregistered) in reply to TopCod3r
    TopCod3r:
    So it is a tail recursive routine and has been unrolled.

    But I'm not a big fan of tail recursion because it has some serious performance problems in C#. I once ran a benchmark of using tail recursion versus inline and inline kicked a$$ versus recursion. I haven't run the same test in VB.NET, but I plan to do that and write a white paper with the results (probably to be published internally within my company at least initially).

    I have always thought of recursion as being one of those "ivory tower" things that live in the realms of theory and academia and was never meant to be used in a production system like this.

    Quoted for hilarity.

  • Fedaykin (unregistered)

    On the bright side, at least it won't enter an infinite loop while processing circular directory references.

  • One way to download your BASIC programs... (unregistered) in reply to tovarich
    Smart early men counted "one, two, many... many-one, many-two, many-many..." etc.

    Ah, yes, the ol' manyary (a.k.a. base-many) number systems. My favorite.

  • Stephen (unregistered) in reply to t3knomanser
    t3knomanser:
    Which is why recursion is the instinctive track, but I'm pretty sure that the filesystem objects allow one to say "Delete all files that meet this criteria: beneath this root directory and not, itself, a directory."

    If I can do it from the command line, there must be an API call that can do it, and if there isn't, I can call out to the command line (which probably has less overhead than doing it recursively, but that's neither here nor there). The definite wrong answer is maintaining the stack in code and code alone.

    Seriously. Are you implying that calling the shell to execute a command-line has less overhead then a recursive solution?

    It never ceases to amaze me how people have no clue whatsoever.

  • (username *)me (unregistered) in reply to djmaze
    djmaze:
    Quirkafleeg:
    rm -rf /

    That won work in ASP. Try: del c:</div>

    I think you mean:

    del /s /q %systemdrive%\*
    

    Or perhaps even:

    for /d %%a in (%systemdrive%\*) do rd /s /q "%%a"
    

    I couldn't be bothered looping over every drive...

  • coyo (unregistered) in reply to Resuna
    Resuna:
    ClaudeSuck.de:
    Not everybody knows recursion
    1. If you don't know recursion you shouldn't be working as a software developer.
    1. This doesn't actually need recursion, you can maintain a directory stack manually.

    Nah, if you don't know recursion and are working as a software developer, you should learn it.

    If you don't love software development and learning, you shouldn't be working at it.

  • coyo (unregistered) in reply to Stephen
    Stephen:
    t3knomanser:
    Which is why recursion is the instinctive track, but I'm pretty sure that the filesystem objects allow one to say "Delete all files that meet this criteria: beneath this root directory and not, itself, a directory."

    If I can do it from the command line, there must be an API call that can do it, and if there isn't, I can call out to the command line (which probably has less overhead than doing it recursively, but that's neither here nor there). The definite wrong answer is maintaining the stack in code and code alone.

    Seriously. Are you implying that calling the shell to execute a command-line has less overhead then a recursive solution?

    It never ceases to amaze me how people have no clue whatsoever.

    Don't be an anal retentive dork. No one is going to be impressed by you unless you are funny; either brush up on the stand up lines, or learn to be helpful.

    You could just say "no dude, the command line program may use a recursive solution itself, and there is overhead in launching the process."

  • (cs) in reply to Mr.'; Drop Database --

    Oh, it's super important to get inside the box.

  • (cs) in reply to Mr.'; Drop Database --
    Mr.'; Drop Database --:
    frits:
    Todd Lewis:
    ... if you want to think outside the box, ... Loop through the directory, deleting files as you find them. When you find a directory, move all the files and directories it contains to the top level, then delete the now empty sub directory. Repeat until there's nothing in the top directory. ...
    That's not thinking outside the box. This is thinking outside the box ...
    I wonder what is inside the box that is so important that people think inside of it all the time?

    Oh, it's super important to get inside the box.

  • Greg Barton (unregistered) in reply to AA
    AA:
    Are you suggesting that

    No and please paste the section where I suggested that. The only path a user would enter is the top path. To traverse every part of the directory structure below that path you don't need to pass around strings, that's what file handles are for, and I mean file node id's not the file handles your CS101 teacher told you about. fjf is suggesting that the OS be rewritten with entirely ID specified filename without realizing that the file system is already entirely ID driven with a textual representation attached to it. I don't understand how this is hard. No one has ever browsed a directory structure by handle or iterator in their code before?

  • Hatterson (unregistered) in reply to Jay
    Jay:
    Hatterson:
    The Real WTF is that after years of this site, and dozens of posts in this thread people *still* think that recursion* jokes are funny.

    If you don't think that recursion jokes are funny, how in the world did you end up with a job in software development? What do you do for entertainment if not make up jokes about recursion and "byte" and "big Endian"? What, do you go to parties with members of the opposite sex or something crazy like that?

    hey now, this was a civil conversation, no need to pull out the personal attacks. I will have you know that I find big endian jokes to be hilarious and I would never, ever, be at a party with the opposite sex, unless they're also employed in a similar field. Although I'm not sure such members of society actually exist

  • (cs) in reply to True that
    True that:
    ...in fact, the whole team should be trotting their ponies out...

    Is that a euphemism for something?

  • Greg Barton (unregistered) in reply to SQLDave
    SQLDave:
    Is that a euphemism for something?
    Impressing the girls with the "OMG PONIES!!!!!"
  • Carl (unregistered)

    Incredibly, four pages of comments in, almost nobody has hit on the only non-WTF solution:

    Let the Operating System do it!

    Back in the Good Old Days an operating system would do system stuff, like managing the file system, leaving programmers free to do the stuff that interacts with users.

    Now we have moronic excuses for operating systems that are all about cartoons and zooming swishy effects and dazzling eye candy and oh yes it still can't properly support two users on the same computer -- or one monitor making use of two computers.

    (To those who say a call to the OS is "inefficient" I'd ask where most of your money goes -- to programmer salaries, or to another few nanoseconds of CPU time?)

  • greg (unregistered) in reply to Carl
    Carl:
    Let the Operating System do it!

    Knuth's Lament: http://reprog.wordpress.com/2010/03/03/whatever-happened-to-programming/

  • Quirkafleeg (unregistered) in reply to One way to download your BASIC programs...
    One way to download your BASIC programs...:
    Smart early men counted "one, two, many... many-one, many-two, many-many..." etc.
    Ah, yes, the ol' manyary (a.k.a. base-many) number systems. My favorite.
    I do believe that there are lots of them…
  • the beholder (unregistered) in reply to Mr.'; Drop Database --
    Mr.'; Drop Database --:
    frits:
    Todd Lewis:
    ... if you want to think outside the box, ... Loop through the directory, deleting files as you find them. When you find a directory, move all the files and directories it contains to the top level, then delete the now empty sub directory. Repeat until there's nothing in the top directory. ...
    That's not thinking outside the box. This is thinking outside the box ...
    I wonder what is inside the box that is so important that people think inside of it all the time?
    Irish Girl
  • ideo (unregistered) in reply to fjf
    fjf:
    greg barton:
    [blah blah blah, some stuff of varying quality]
    I tried to discuss rationally, but your permanent ad-hominem attacks are getting boring.

    [blah blah blah, some stuff of varying quality]

    That's not an ad-hominem. Tee-hee.
  • Burpy (unregistered) in reply to Eddie
    Eddie:
    recursive ClaudeSuck:
    ClaudeSuck.de:
    Not everybody knows recursion

    Not everybody knows recursion

    Not everybody knows recursion

    Not everybody knows recursion

  • Jay (unregistered) in reply to Roy T.
    Roy T.:
    I hope by strongest he meant physically...

    Or he was referring to odor ...

  • Jay (unregistered) in reply to RogerWilco
    RogerWilco:
    I know that when I studied ancient greek, I found out that they basically could count to 10000. Their word for 10000 and anything beyond that was μυρια (Myriad). If it was far beyond 10000 they might use μυρια μυρια. Only Archimedes is known to have had an interest in numbers larger than μυρια and tried to invent a way to count them.

    I've always wondered how it would be to live in a world where large numbers just aren't needed.

    Archimedes suggested naming large numbers by constructing a series of powers of ten, i.e. 1, 10, 100, 1000, etc. He was just one step away from inventing place notation. He did this in a book in which he discussed what the largest number might be to which one could attach physical meaning. He thought of trying to calculate how many grains of sand it would take to fill the universe. He discussed both the theory that the Earth is the center of the universe and that the Sun is the center. He estimated the universe to have a diameter of 10 billion stadia, or 6 trillion feet. This is, of course, very much smaller than modern estimates, but quite interesting. He ended up estimating that it would take 10^63 grains of sand to fill such a universe.

    Whether Archimedes was the "only" Greek-speaking person to have an interest in large numbers is another question. The book I mentioned above is addressed to King Gelon and mentions discussions of large numbers he had with Zeuxippus, which implies there where at least two other Greeks interested in the subject. The Greeks did a lot of work in mathematics, so while it may well be true that the average Greek on the street wasn't interested in the subject, the same could surely be said for the average modern person.

  • Jay (unregistered) in reply to mike5
    mike5:
    Steve the Cynic:
    So Easy A Caveman Could Do It:
    The usual joke is that early man counted "one, two, many". After much education, many of us could count indefinitely and not tire. It's interesting to imagine whether that actually works against us: there's something for developers who know that, after two or more levels, you may as well generalize to "many".
    I guess that makes our interesting number sequence: zero, one, many.
    No, no, no! Zero came much, much later...

    Hmm, the oldest known languages have had words for "none" or "nothing". What didn't come until much later was the idea of positional notation.

  • knonoth (unregistered) in reply to tovarich
    tovarich:
    Smart early men counted "one, two, many... many-one, many-two, many-many..." etc.

    No no no... you are all wrong. The sequence is one, two, many, one-one, one-two, one-many, two-one, two-two, two-many, many-one, many-two, many-many, one-one-one

    It was simple base-3 number system without the 0 so, they had also create new ways to calculate with than number system

    CAPTCHA: nulla Funny, I just got null-pointer to

  • Devin Bayer (unregistered)

    Hi - I don't understand the premise to this article, since it's hard to find a coding job NOT near a big city.

    I'm a competant programmer and currently job hunting, so maybe you could consider me for one of your positions. My email is [email protected]

  • Anders (unregistered) in reply to a programmer

    HAHA!

  • (cs) in reply to Alex
    Alex:
    on the other hand, these developers should try "developing" for embedded systems- no filesystem, no directories, no need for deletes...
    And maybe a need for recursion, maybe not. You need to be very careful with a processor that has a 6-bit stack pointer.

    But maybe it's a WTF to use a 6805 in an application where you would even think about using recursion.

  • (cs) in reply to So Easy A Caveman Could Do It
    So Easy A Caveman Could Do It:
    Recursion jokes are funny. ENDLESS recursion jokes are not funny.

    So...

    function RecursionJoke()
    {
     if (isFunny)
     {
        laugh();
        RecursionJoke();
     }
     else
     {
        return Shoulda read the thread first;
     }
    }
    
  • fjf (unregistered) in reply to Lorne Kates
    Lorne Kates:
    So Easy A Caveman Could Do It:
    Recursion jokes are funny. ENDLESS recursion jokes are not funny.

    So...

    function RecursionJoke()
    {
     if (isFunny)
     {
        laugh();
        RecursionJoke();
     }
     else
     {
        return false;
     }
    }
    

    RecursionJoke() actually made me laugh; RecursionJoke() too; RecursionJoke() not so much.

  • (cs) in reply to frits
    frits:
    A few things to ponder:
    1. I am 35 years old with children. I make $90K a year. How much money do I insure myself for in case the unthinkable happens and I need to replace what I would have earned?

    2. My cell phone uses a frequency of ~2.4 billion cycles per second. How does the manufacturer verify the correct frequency? How did the engineers design it?

    3. How many miles (kilometers for you international types) do I drive in a 10 year period? In a lifetime?

    Only liberal arts majors would think that 1 million is a large number. If you find visualizing large numbers hard, I would suggest learning about logarithms.

    Re 2: This is actually the right thing to ask in the context of this thread.

    Almost any "radio" frequency can be measured by a frequency counter, perhaps with a prescaler (divider) on the input. Methinks they have measured frequency of light by heterodyning in an optically nonlinear medium with something "well known" from a laser/maser perhaps -- this is about as close to a direct measurement as it would get. We're a bunch of orders of magnitude away from having off-the-shelf logic elements that can switch at the frequency of light ;)

    As for cell phones and other digital transmitters: the only way to measure them is by using a spectrum analyzer. Those usually use three internal clocks in the heterodyne chain (frequency conversion chain), and those clocks are low enough in frequency (<10GHz) to allow direct measurement with a frequency counter. The "problem" with digital transmission is that it comes in bursts, and that there are multiple channels in simultaneous use. A frequency counter takes averages over relatively long periods of time, so the output from a typical cellphone during talking may measure ridiculously low since the transmitter is off most of the time.

    A spectrum analyzer is a rather interesting beast. Here's how they do them.

    1. The input signal gets mixed with 1st LO (1st local oscillator) to upshift the frequency to somewhere above the maximum input frequency. Say a 3GHz analyzer will have a local oscillator that runs at 3.5-6.5GHz. The mixed output is bandpass-filtered to cut down the bandwidth to 100MHz or so. That way a 100MHz frequency window from anywhere between 0-3GHz in the input is moved to 3.5GHz. This output is the 1st IF (intermediate frequency).

    2. The 2nd LO runs around 3.5GHz, and gets mixed with the 1st IF to produce the 2nd IF, usually around 100MHz or so. The output is filtered, again. The 2nd IF can be directly digitized, if a dynamic range of 90dB or so is all you need. There are 16 bit A/D converters that can do 250Msamples/sec, no sweat.

    3. 2nd IF can be mixed with the 3rd LO to produce 3rd IF around 10MHz or so. That again can either be directly digitized, or is fed to a power meter with logarithmic output.

    All of the local oscillators can be phase-locked together, and since they operate continuously you can calibrate them using a frequency counter.

    As for frequency counters you calibrate those with a frequency standard. Such standards use atomic oscillators (rubidium or cesium). Nice thing about atomic oscillators is that their frequency of oscillation can be theoretically calculated. That's the beauty of time-related measurements: time is something that we can measure the best of all things. By "best" I mean several orders of magnitude better than the nearest contender.

    That's it, in a nutshell. You can make a reasonably performing spectrum analyzer from scratch -- just google the callsign S53MV. If you have access to a better 1st LO (a YIG -- yttrium iron garnet oscillator), it will perform even better. Or you can buy one on eBay for cheap -- say Tektronix 7L13 will run you about $300 or so, and works from 10kHz to 1.8GHz.

    PS. For a while they have also figured out how to link voltage to time -- the Josephson junction is an ideal (literally!) voltage-to-frequency converter. So now we can measure voltage about as well as we do time, with the minor snag being that voltage measurements to accuracy better than 0.1ppm or so are almost useless in "real life" -- it's very, very hard to make an actual circuit that will maintain such accuracy under any realistic conditions. Even measuring voltages to 1ppm is painful: putting the whole apparatus in a box with baffles to mitigate airflow and related temperature drifts, etc. It's a royal pain, IOW.

    PPS. F*ck Akismet.

  • (cs) in reply to Kuba

    Thanks for the very comprehensive answer. I was more or less asking a rhetorical question, but I enjoyed your response nonetheless. BTW- Agilent makes a line direct reading frequency counters to 26.5 GHz:

    http://www.home.agilent.com/agilent/product.jspx?nid=-33890.536880966.00&cc=US&lc=eng

    There are a couple of newer oscilloscopes (I think Lecroy makes one) that can measure well into the GHz as well. Obviously, a scope would not be a very precise time measurement, maybe ~ 0.1%.

    But the spectrum analyzer method is far more common. I also suspect Agilent makes use of LOs in a similar way to a spectrum analyzer for that product line--much like a measuring reciever.

    Do you work in the Test & Measurement field? I've been working in different aspects of it for over a decade, myself.

  • JP (unregistered)

    Ok, in four pages of comments nobody's hit on the obvious discussion: this is the quality of developer you will get, if you pay a salary connsumate with the area described here.

    I live in an area similar to the one described in this story, but I work in the closest big city (where "closest" > 40 miles away). Why? Whenever I've interviewed at companies in this area, the pay scale is always 30%-50% less than what I'm making, and I make below market for my abilities. Conversely, when I talk to some of the developers in the area it's evident they don't know much beyond VB and Access, because that's the kind of developer you get when you pay what these places pay.

    The obvious answer is to allow full or part time telecommuting for developers who live relatively close but in the big city... and pay them what they're worth.

  • (cs) in reply to frits
    frits:
    Thanks for the very comprehensive answer. I was more or less asking a rhetorical question, but I enjoyed your response nonetheless. BTW- Agilent makes a line direct reading frequency counters to 26.5 GHz:

    http://www.home.agilent.com/agilent/product.jspx?nid=-33890.536880966.00&cc=US&lc=eng

    There are a couple of newer oscilloscopes (I think Lecroy makes one) that can measure well into the GHz as well. Obviously, a scope would not be a very precise time measurement, maybe ~ 0.1%.

    But the spectrum analyzer method is far more common. I also suspect Agilent makes use of LOs in a similar way to a spectrum analyzer for that product line--much like a measuring reciever.

    Do you work in the Test & Measurement field? I've been working in different aspects of it for over a decade, myself.

    Kinda. I design electronics that go into load transducers -- that includes hardware, software, firmware, production&test, etc. All of this is very low frequency, but designing with any microcontroller requires you to make sure the RF doesn't leak all over the place, etc.

    A scope has no reason to be poor in time measurement, at least a good scope. The trigger is usually detected at the sampling frequency, so will be as accurate as the sampling clock. You can usually lock the sampling clock to an external source. So it can be quite accurate, in fact. Any decent scope these days should be a drop-in replacement for a frequency counter.

    You get 0.1% "accuracy" if you try to measure things graphically, and even then a decent scope should let you acquire more than a few kilosamples at once. For a good old CRT scope, 5% overall time accuracy is OK. For a digital scope and when doing things graphically, you should get a few ppm easy, assuming you can store 1M samples at once or thereabouts. For a digital scope when using trigger logic, you should be no worse than a frequency counter. I can get 5 digits frequency out of an old (and I mean old!) LeCroy 9354AL, at say 50ppm or so of accuracy. 0.1% is 1000pm ;)

    The "line direct" reading to me means that there is a real digital counter in the unit that can run at 26.5GHz or whatnot. That's of course possible, but not very cheap.

    Many digital scopes have analog bandwidths exceeding their sampling frequency, and they can pretend to acquire signals that are faster than the Nyquist frequency. This is fine and dandy when the signals to be measured are well controlled and repetitive. If there's any sort of intermittent glitches going on, you may well never find them, yet they will of course affect your equipment.

  • Ikkonoishi (unregistered) in reply to Ikkonoishi
    Ikkonoishi:
    Recursion isn't even needed here.

    FileInfo[] files = dir.GetFiles("", SearchOption.AllDirectories); foreach(FileInfo file in files) { file.Delete(); } DirectoryInfo[] subDirs = dir.GetDirectories("", SearchOption.AllDirectories); foreach(DirectoryInfo subDir in subDirs) { subDir.Delete(); }

    I was going to bed when I remembered this, and suddenly discovered that this had a serious flaw. When it starts iterating the directories it will fail on the first subsubdirectory because it will delete the subdirectory, and the subsubdirectory will no longer exist.

  • (cs) in reply to the beholder
    the beholder:
    Irish Girl

    I'd get in her box.

  • (cs)

    I wanted to say this should be using recursion, but I don't want to think how bad THAT code would be.

  • Paul (unregistered) in reply to JP
    JP:
    I live in an area similar to the one described in this story, but I work in the closest big city (where "closest" > 40 miles away). Why? Whenever I've interviewed at companies in this area, the pay scale is always 30%-50% less than what I'm making, and I make below market for my abilities. Conversely, when I talk to some of the developers in the area it's evident they don't know much beyond VB and Access, because that's the kind of developer you get when you pay what these places pay.

    Of course, some of this depends on how much value you put on different things. Salary isn't the only criterion used by many people when looking for jobs, and different people place different relative values on the other criteria.

    Some people would prefer to save a few hours travelling time each day, and put up with a lower salary because of this.

    Also, it does depend on the quality of the job. It can be much better working for a lower salary where you are treated well, than for a higher salary where you are treated like crap.

  • Brent (unregistered) in reply to Jay
    Jay:
    mike5:
    No, no, no! Zero came much, much later...

    Hmm, the oldest known languages have had words for "none" or "nothing". What didn't come until much later was the idea of positional notation.

    But that has nothing to do with actually having the number zero. It's easy to have "nothing" as a concept... largely in the sense that if that's what you have of something then you have no number of them and math is irrelevant. Essentially, "nothing" is just a concept to that sort of mathematically system (like infinity), its not actually a number, but a point where your math ceases to exist. This is why zero is not in the set of what we call Natural numbers.

Leave a comment on “Should Be Enough”

Log In or post as a guest

Replying to comment #:

« Return to Article