Handmade Hero»Forums»Code
Ginger Bill
222 posts / 2 projects
I am ginger thus have no soul.
Would anyone want an Intro to C tutorial series?
Casey at the beginning gave a very brief introduction to C. It is not a comprehensive series but it was never intended to be.

There are a lot of video tutorials online for learning C but most of them are not good in the slightest. Many teach bad practices; out-dated versions; bad audio and bad video quality; assume you know many things already; etc.

I was wondering if people would be interested in a video tutorial series to learn C without any/little programming experience that was actually good.

Each video will have the code for that episode available and maybe a written version as well.

I will be doing this series on Windows as that is what most people will have and I will be using MSVC as the compiler (for numerous reasons).

The problem with MSVC is its C support is lacking. C99 isn't even supported properly as of MSVC 14 (2015). Should I teach a subset of C++ instead or just plain old C?

In Handmade Hero, Casey uses a subset or C++ as he uses operator overloading; function overloading; C++ zero initialization `= {}` vs `= {0}`; and more.

I personally prefer C99 with some C++(11) features:

  • Function & Operator Overloading
  • struct & union tags
  • Namespaces
  • References (mainly for const Type& in function passes)
  • using instead of typedef
  • Templates (only sparingly e.g. const T& max(const T& a, const T& b); Array<T>; HashMap<T>)

The other "problem" is that I prefer not to use an IDE. For a lot of beginners, an IDE can be very helpful but they are never as good as a text editor for editing text. I use sublime text as my text editor, use a batch/shell script to compile my code, and use MSVC as my debugger (on Windows).

I am also unsure as to how much I should cover and explain that is not to do with C(++) directly. E.g. what is a: compiler; linker; text editor; debugger; command line; batch file; tabs and spaces; etc.

I am currently working on the Dunjun Game Development Series. This is a series where I document and demonstrate the process of making a (3D) game from scratch. This series is by no means a tutorial series though as I constantly change my mind on things and how I should implement everything.

I would gladly appreciate any feedback and if anyone would enjoy and want a tutorial series like this.
Misu Popescu
6 posts
Would anyone want an Intro to C tutorial series?
IMO, people should teach C with a C compiler when they claim to teach C. Otherwise, things will just confuse a beginner.

What is called today *modern* C++ for e.g. is very different from what a C programmer will consider as the good parts of C++.

It is entirely possible to use a proper C99 or C11 compiler under Windows. GCC for e.g. can generate Windows executables and use Win32 functionality. Here is a list of GCC binaries for Windows:

http://nuwen.net/mingw.html
http://www.equation.com/servlet/equation.cmd?fa=fortran

both the above links have GCC 5.1.0 compiled for Windows.

Obviously, one can use MinGW or Cygwin but these are a bit heavy for a beginner.

As for a text editor Notepad++ or Sublime Text 2/3 should be enough.

(From my understanding VS 2015 has an almost complete C99 implementation, you should probably check if the missing parts are really needed for a beginner course. Personally, I would go with GCC though.)
Ginger Bill
222 posts / 2 projects
I am ginger thus have no soul.
Would anyone want an Intro to C tutorial series?
I personally prefer C99 over C11. C11 does add some nice features but not that much particularly.

The main reason for using MSVC is that Visual Studio is the only decent debugger on Windows, in my opinion. I have had numerous problems with GCC on Windows over the years (even now) and if you want to develop for Windows, MSVC is the only easy way to do it.

Cygwin is a big no as it this is not learning C on Windows. I don't want people to think that the only way to program is to install something to make not like Windows.

If I am to do this series, I think I should stick to C rather than a stripped down C++.
Misu Popescu
6 posts
Would anyone want an Intro to C tutorial series?
If I am to do this series, I think I should stick to C rather than a stripped down C++.

I completely agree with the above.

About C99 vs C11, personally I've used C99 and only tested some features from C11. For C99 Visual Studio 2015 Community is a good match.
Israel Fernández Angullo
16 posts
Would anyone want an Intro to C tutorial series?
I'm interested!
Peter
21 posts
Would anyone want an Intro to C tutorial series?
Yes, I'm interested too!
Ginger Bill
222 posts / 2 projects
I am ginger thus have no soul.
Would anyone want an Intro to C tutorial series?
In fact, I have already started the series!!!!

https://www.youtube.com/playlist?...L93bFkoCMJskfJncZRqbQEVLM0901XBGG

It contains Chapters 0 and 1. Chapter 2 will start this coming Monday (2016-03-14 (Pi Day)).
Israel Fernández Angullo
16 posts
Would anyone want an Intro to C tutorial series?
Thanks!
I'm starting now.
Peter
21 posts
Would anyone want an Intro to C tutorial series?
Great, I'm subscribing now
41 posts
Would anyone want an Intro to C tutorial series?
I'm interested!