-
Notifications
You must be signed in to change notification settings - Fork 1
Introduction
The goal of this organisation is for it's members 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.
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 and GitHub 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. You don't have to be an expert, the goal should always be to facilitate learning and raise questions. Everyone is assumed to be able to fill voids with the help of Google and other means, you can help the group by sharing your findings.
Help the group by sharing your findings
Here are some basic prerequisites on how to best contribute to the well-being of this group.
- Be nice
- Be gracious
- Have patience
As an overarching rule and in the interest of learning from the ground up, the general knowledge of 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.
You'll notice that the words "C" and "C++" are used interchangeably in this Wiki. 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.