|
|
|
What should every programmer write?
|
|
15 points
by radious
5538 days ago
|
|
Is there any set of problems to solve and applications to write which will make a better programmer without a doubt? I'm thinking about classic apps, like compiler (for deeper understanding of compilation process), designing and implementing a programming language and writing simple OS. Have you other suggestions? (of course I'm not talking about rewriting gcc, but few days of work just to get more information about how computers work and implementing the knowledge) |
|
- Games are a LOT of work. Most hobbyist games are never finished. Sticking with one from start to finish is a great execise in discipline and perseverance.
- Games of any significant level of complexity require a lot of thinking about performance. Most programmer's first game looks something like this:
- Games require a wide knowledge of data structures and programming techniques, like kd-trees, pools, and (if you're really serious about performance) stuff like cache-aligned allocation and flywheels.- There are always tons of cool features you can add that will stretch your coding ability to the limit. Try adding a save-game feature and watch yourself pull your hair out designing a decent data model. Add 'instant replay' abilities without destroying memory performance, and build an AI to see why functional programming rocks your socks off. Add network play and learn how to write really performant network code. Add pixel shaders and learn the basics of GPU processing and how awesome it is.
- Games are the type of project that is 'never done' in the sense that there is almost always some improvement left to be made.
- Most decently built games separate the engine from the game itself. Learning to do this properly is a great way to learn good techniques for designing good abstraction layers.
- Games are fucking awesome. The first time you have code moving a lolcat around on the screen, you'll shit your pants with excitement (YMMV). Part of the fun of programming is building stuff, and being able to see what you're building is very rewarding, especially if people play what you're working on and (if you're really good) they like it.