Restarting your computer should be part of a user's daily habit. Whether you turn off the computer at the end of the day or you simply restart it at some point, this will reduce the amount of issues your computer may have. Any computer technician will try this first when resolving an unknown issue. Why?

1. Have you ever poured water from one cup to another?  After a few pours, you'll start to notice water splashing and rolling out.  Computers have the same problem with memory. As you load programs and preform tasks, it has to move around the massive amounts of information that goes with it.  Though computers are extremely good at keeping this data in tact, it only takes a few small errors to make create issues.  Rebooting gives the computer fresh information to work with.

2. For a similar reason to the above listed, memory can leak.  Leaving a computer on means the computer has to hold on to all its dynamic information.  Over time, though small and rare, memory leaks to the RAM from an open program.  This means that the program is slowly filling up all your working space.  It's like someone slowly piling papers on your desk while you're working, making it harder and harder to work. Rebooting refreshes the memory.

3. Rebooting lets the operating system update.  Windows and Macs both need to update.  This process can be annoying, but doing it regularly can decrease the wait times. Installing updates lets the programmers fix bugs they've found and improve the computer's performance.  Is it that important?  Yes.  Microsoft, Apple, and any other company of a program wouldn't release updates if it weren't so beneficial to their products.  Writing updates can be an expensive and time consuming process.  We are getting the updates for free, let's appreciate that.

Keep these items in mind as you end the day or run into computer issues.

If you would like a more technical explanation, here is one from the show The IT Crowd:

Hello, IT. Yeah-ha. Have you tried forcing an unexpected reboot?...

See. the driver hooks the function by patching the system call table, so it's not safe to unload it unless another thread's about to jump in and do its stuff, and you don't want to end up in the middle of invalid memory... Hello?

Moss, The IT Crowd:  Episode 1