Patai Gergely /
June 24, 2011
> Jon, your main points might even contradict each other in certain contexts.
> For instance, there are situations when the general solution is easier to implement
> than the specific one. Or there is an off-the-shelf well-tested clever data structure
> that takes less work to incorporate in your code than to create even the simplest
> viable solution from scratch
One of my lecturers put it that way: “Computer Science is not hard science. It consists of half-truths, that have limited appliability dependent on context. ” So yeah, there were some specific examples in the lecture, and a few people found them counter-productive in some cases. Those examples were there to illistrate “Do the simple thing that works good enough. do it fast, and move on. You can refactor later if needed” line of thought rather than presented as absolute truths. Its OK to use stuff like std, boost, and other libraries rather than implement linked lists and trees from scratch. School teaches us rules, so we know when and how to break them. We are taught all the rules just so we will know when and how to break them.
It seems to me, that the biggest obstacle in using simplistic data structures and algorithms as good enough is that optimized, clean and well structured code is, well how should I put it, way easier to mentally masturbate to. For example I really like the alborate data structure I came up for my program to test algorithms form my CS master.
I’m not into game development, but I can do some graphics when I need it. My advice to Kevin: After learning basics of programming learn to use a widget library next. They all use similar concepts, so once you know one, you’ll have easier time learning another if you need it. Stick to language you know. QT is pretty and widely used for C++, Swing for Java. Something like tic-tac-toe or minesweeper made with buttons on a grid layout seems like a good excercise. It won’t be time wasted, you’ll need to know how buttons, menus, labels, etc. work anyway. Plus you’ll be able to make a gui with input fields and “Compute” button for your projects at school rather than pure console interface. After that I’m not sure, I’m not there yet, but learning some SDL and OpenGL (for C++ programmer) seems like the next step.