6 years ago #3
    ## A Maelstrom of Links

    * Free Education
    ** http://www.udacity.com
    ** http://www.academicearth.org/
    ** http://www.khanacademy.org/
    ** https://www.coursera.org/
    ** https://www.edx.org/
    ** http://thenewboston.org

    * Programming
    ** http://stackoverflow.com
    ** https://projecteuler.net/
    ** http://www.bfoit.org/itp/ProgrammingScreencast.html
    ** http://www.pyschools.com/
    ** http://getpython3.com/diveintopython3/
    ** http://www.htmldog.com/

    * Graphics
    ** http://lazyfoo.net/SDL_tutorials/index.php
    ** http://www.sdltutorials.com/
    ** http://www.arcsynthesis.org/gltut/
    ** http://openglbook.com/
    ** http://msdn.microsoft.com/en-us/centrum-xna.aspx
    ** http://www.directxtutorial.com/

    * Game Development
    ** http://tigsource.com
    ** http://www.gamedev.net/page/index.html
    ** http://www.igda.org/
    ** http://flixel.org/
    ** http://unity3d.com/
    ** http://www.riemers.net
    ** http://www.rastertek.com/tutindex.html

    ## Languages

    The computer ultimately knows two words (1 and 0), but it’s rather inefficient to program in binary ;). Programming languages are essentially a shorthand for the most common things you’ll be telling the CPU to do. Everyone thinks they have their own way to solve the problems of the language and make the perfect "computer language.” Said perfect language has yet to emerge. Here are some of the more popular options.

    The Latin of programming, C is a minimalist language that was and continues to be tremendously influential. Although modern software development has gravitated towards higher-level languages that do more with less code, C continues to be used for drivers, robotics, and game consoles, as it is scary-fast, offers almost absolute control over the hardware and is is supported by just about every device known to man.

    C++ is, essentially, C with a huge amount of nifty features thrown in. Easy to learn, but difficult to master, C++ is like a box of legos with which you can build just about anything, but it's still best to stick to the instructions. For general-purpose programming, it's fallen somewhat out of favor in recent years, but has found a solid niche in the AAA game space.

    Perhaps one of the three most common high-level programming languages in use today. "Write once, run everywhere", as they say. Java is the English to C's Latin--it's a little weird, but almost everybody speaks it, and it continues to be quite popular for general-purpose and business software. It isn't particularly well-suited to games, but that didn't stop Minecraft from becoming a hit, making its creator a millionaire.

    Don't let the name fool you. JS is completely unrelated to Java, and is better described as [Scheme](http://en.wikipedia.org/wiki/Scheme_(programming_language) ) pretending to be C. It has become the de facto standard in web programming and has found some support among game devs, despite being generally too slow to power more complex games. With the advent of HTML5, it just might be the next wave in online games.

    An extremely flexible language, Python has as many features as C++, but they actually play nice together. It is capable of (but not limited to) functional programming, is well-supported on Windows, Mac and Linux, and even has an [antigravity module](https://xkcd.com/353/). Like JS, Python runs a bit slow for professional games, but it's great for smaller games and quick prototypes. It's found pockets of support in major projects, but has yet to really catch on in industry. Despite that, in my opinion, it's the best all-around choice for beginners.