You don't need to buy a new computer to learn programming. It's a common misconception that you need a powerful computer to program. This guide will give you some hints to guide you in the right direction.
Desktop, Laptop, or Mobile
Laptops are probably a better option, as you'll be able to take them with you to libraries, classes, or while you travel. Desktops are cheaper and less fragile in general. One thing to keep in mind if you want to learn to program is that mobile devices such as a tablet or especially a smartphone aren't ideal to learn to program on. I've never met a professional software developer who programs on a tablet or smartphone. The lack of a real keyboard and the small screen size is a large hinderance. Even developers who write mobile apps do so on a laptop or desktop.
Windows, macOS, or Linux are fine options for developing software. Any of these platforms can be used for web app development. Though if you want to write desktop applications for a particular operating system, you should program on that operating system: write Windows apps on a Windows machine, write macOS apps on a macOS machine, write Linux apps on a Linux machine.
If you want to do mobile app development, you can use any of these three operating systems for Android development, but it's best to use a macOS machine to write iOS apps for iPhones.
If you want to create video games, any operating system is fine but Windows has the largest share of gamers (especially games from indie or large corporate game companies).
Windows 7 or later is fine for programming. Windows XP is, at this point, may give you difficulty finding compatible software for.
Buying Used Computers
Here's a few used computers I found on craigslist or eBay with specs that are more than powerful enough for programming:
- "Dell OptiPlex 9010 i5 4GB 250GB Desktop SFF Tower PC w/Keyboard, Mouse" $99
- "Old Win7 desktop (500gb hd/4gb ram/intel E5400 @2.7ghz x2 cpu)" $45
- "HP Pavilion a6457c desktop with Acer monitor" $45
- " HP 15 Laptop 250GB SSD Core i5 12GB RAM" $240
- "Lenovo 15.6" Laptop Intel Core i3, 8GB RAM, 500GB SSD" $230
Any of these machines are more than powerful enough for programming. Working desktops can easily be found for $100 or less. Laptops are a bit more expensive, but workable laptops can be had for under $300.
Keep in mind that you should buy working computers. If a computer is being sold for cheap because it's missing a hard drive, memory, or some other component, it's unlikely to be worth your time to find a compatible part for it. Make sure to test the computer before accepting it. The computer should be able to turn on and let you, say, open a web browser or some other basic task. The main component of a used laptop that is likely to be faulty is the battery, which might not be able to keep charge for very long. And ideally, you should reinstall the operating system on the computer to wipe any previous malware or viruses that are inadvertantly installed.
For desktops, you'll need a monitor. Having a larger monitor makes a desktop far more useful than a slightly faster CPU or a little bit more memory. You can also get used monitors, but check for any "dead pixels" by opening a "dead pixel test" website such as this one and put the browser into full screen mode (often by pressing F11). Having a second monitor for your desktop or laptop is also a great help to your productivity, but make sure there is a second monitor port on the desktop to plug the second monitor into. Almost every laptop will have an additional monitor port to plug a second monitor into while you use the laptop's connected screen as the first monitor.
Every computer since around 2007 is a 64-bit computer. It's incredibly unlikely you'll find a still-functioning 32-bit computer, but before buying a very old machine make sure it is a 64-bit computer or else you may have problems running modern software on it.
If you are getting a Windows computer, I highly recommend checking out the Ninite.com website, which provides you with a no-hassle installer to install several common and free Windows applications.