-
Notifications
You must be signed in to change notification settings - Fork 1
Introduction

The goal of this organisation is to be able to produce useful software that aid in the production of next generation film and games.
The way to get there is to learn by example and complete small projects, one at a time, together, on-line and document our progress in GitHub issues, wikis and chat rooms along with hosting and attending live screencasts.
To participate in this organisation, you are assumed to have touched source-code before - be it in Python, Lua or any other higher level language. If you haven't, I recommend having a look at Learn Python the Hard Way to get you started.
To join, either follow the assignments at your own pace, or join the chat-room and share insights and ask questions.
Someone will add you to the organisation once you've shown interest, and from there you can add your own projects and share your progress with others.
There are currently two streams of learning in this group.
- Mini Projects
- Live Screencasts
Each mini-project is meant to be completed together, here on GitHub, which is why some basic understanding of Git is preferred. We collaborate on the project and document each step of the way, so as to facilitate for new members who would like to follow in our footsteps.
Documentation takes the form of [Wiki pages][wiki] and [GitHub Issues][issues].
Live Screencasts are hosted on [Twitch][] and may cover either the currently running project, or something else that is of interest to the group. Each broadcast is archived and stored on the learnclang YouTube channel (soon).
If you have some experience with C or C++, you are most welcome to host a broadcast yourself, to speak about any topic you find fascinating.
As an overarching rule and in the interest of learning from the ground up, the general knowledge as a group must be assumed to be what has been completed in existing projects, and nothing else.
This means that, if we haven't covered pointers anywhere yet, it is safe to assume that we don't know how they work. On the flipside, it does mean that once pointers have been covered in a project, or screencast, it is safe to assume that we all know of them and can build upon that knowledge in future projects, screencasts and conversations.
Here are some basic prerequisites on how to best contribute to the well-being of this group.
- Be nice
- Be gracious
- Have patience, we all have other things to do during the day
You'll notice that I use C and C++ interchangeably. That's because, as I understand it, C++ is (almost) a superset of C and that most of what you learn through C is applicable to C++, but not much the other way around. But perhaps more importantly, C is smaller and might provide an easier transition into thinking like a programmer than C++; although this seems to have been argued both ways if you go Google about it.
In any case, if you're questioning your own motivation for learning either C or C++ - especially when you already know Python, Lua, Javascript or some other high-level langauge - take a moment to read through the following articles.
- I don't know C, why should I learn it?
- Why C? (cprogramming.com)
- Why learn C? (O'Reilly)
- Why learn C? (wikibooks)
Why am I personally doing it? Put simply, I'd like to manipulate and generate:
- Geometry
- Motion
- Sound
- Images
And harness the available and distilled expertise available on-line, such as these:
There are newer and more modern languages that accomplish the same thing in less code. Why not learn those instead? My primary motivation can be summarised in one word; resources. The C-family of languages have a long history and the internet and bookshops are filled with resources to get you familiar with how the computer works in ways that resources of newer languages simply cannot match.
By learning C/C++, you give yourself the advantage of getting up to speed in Computer Science quicker and can then move onto more modern, specialised languages like Go and Rust.