What to learn before starting the series?

Hello! I just found this project and instantly fell in love with it. It was exactly what I was looking for. However, I have really basic programming knowledge, and I don't know it it will be enough to get through this series.

Everything I've learned about programming comes from having made and published an infinite-runner game for android with Unity3d and c#, after following a tutorial that teached you how. And I also learned a little bit of Javascript while trying to -unsuccesfully- make scripts for RPG Maker MV (understanding the engine's code was a daunting task). I know that Casey made an introductory series to C, and I will for sure watch it, but I'm still wondering if it will be enough.

Is there a course, video series, etc. that you would recommend me to watch before starting the Handmade Hero series?

Edited by fredih on
How comfortable did you feel with writing the C# Unity game? Do you get programming?

If the answer is yes, then you may not need much more to watch the series starting from the C in Windows part.

But most likely the answer is no. So you can do 2 things. You can watch the show as is and learn the programmer thinking and mindset. This is actually more important than any language you can learn, and can be applied to any language. (This is akin to immersive learning, which is the best teaching method, on the job intensive training with an expert.)

The other is to take the time to write a few simple programs in C and find a series that will bring you up to date. Casey's beginning C tutorial is intended for programmers that already know a C like language and are comfortable with it. Not for beginners.

C is luckily much simpler than many other languages, and while pointers take some getting used to, most other things come naturally.

Here is an exhaustive C series I am using for reference.

https://www.youtube.com/watch?v=c...LfVsf4Bjg79CZ5kHTiQHcm-l2q8j06ofd
Ginger Bill also made an intro to C.

Edited by Simon Anciaux on Reason: typo
I also never finished it because it's time consuming. I may finish it eventually but I have other projects to do :P
Thank you guys! I don't think that I was specially comfortable with programming, so I think I'll learn to make a few simple programs to get started. I'm now in the the painfully slow process of downloading Visual Studio Express. Anyway, I think with those tutorials, plus the intro Casey made, I'll be ready to start.

Btw, gingerBill, congratulations on your course! I've just started watching it and I really liked it!
I think you should start his videos and see how you go. If you get stuck on something, use a search engine to help you through that part and keep going. Casey's way of programming is simpler and more to the point than you will find taught elsewhere. I'm here to unlearn a lot of nonsense I was taught, so you are lucky in that regard.

Edited by Mór on
fredih
Thank you guys! I don't think that I was specially comfortable with programming, so I think I'll learn to make a few simple programs to get started. I'm now in the the painfully slow process of downloading Visual Studio Express. Anyway, I think with those tutorials, plus the intro Casey made, I'll be ready to start.

Btw, gingerBill, congratulations on your course! I've just started watching it and I really liked it!


Casey uses VS Community edition in all the videos other than the one's that introduce you to C. It's also free for personal/small studio use. He uses the 2013 version. If you use a different version than him, then bugs he finds in VS may not be the ones you discover, and you may end up confused when something he tries to do a fails works for you, and things that work for him do't for you.

The C lessons are pretty much version agnostic, other than one option change you can easily spot in the new project wizard. And since the first thing Casey will teach you to do in the actual lessons is to eliminate that step, its of limited importance.

You can install multiple versions side by side, but the space it takes up is huge.
I know it sounds trite, but doing a bunch of programming on your own is paramount to developing competence.

I'd recommend watching the series until you feel like you have a good grasp of the language itself.

Then, you start making programs on your own. Not just videogame prototypes, but really boring stuff. My suggestions are:

1) A program that can replace every instance of a char in a string with a new string without overwriting the other parts of the string. For example, take the string "Then the hen began to eat", replace every 'e' with "googolplex" while keeping the character around intact. Use malloc() or equivalent and never allocate a single byte more than your program strictly needs.

2) Make a command line program. It should be able to read input, start programs and recall previous commands just like cmd can. See AllocConsole() and CreateProcess().

3) Make a preprocessor for C.

The important part here is to struggle on your own. I don't think it's possible to be a good programmer without suffering through tasks you find arduous/frustrating. I certainly improved because of it.

A bonus to this is that watching someone else program can actually be more rewarding when you have a fair bit of experience yourself, because you are able to contextualize and compare what you see with your own experience.

In summary, I'd recommend:

1) Watch tutorials/HMH until you get the basics.

2) Write programs on your own that you find challenging.

3) Continue watching HMH.
@brothir, your answer is the best.

Unfortunately C is very old and the standard library is very bad and error prone specially string functions.
And 99% of the tutorials on YouTube just does not understand this fact and keep teaching the standard library which will give a bad impression about the language. I hope @gingerbill will avoid that.
A lot of the general libraries out there are also not so good because of what they do with memory management.
Basically you have to write everything you need your self which is hard if you just started but you don't have to write them all at once.
The good news is writing things your self means you will have them forever and they still fast or even faster (which I absolutely love). And not like any other "high level" languages where if you didn't like something about their standard library and start writing things yourself the speed curve will start to go down which is absurd.

You can go ahead and learn C however you like. I really don't know any good tutorials that teaches native programming (the five HMH pre-streams are good but not enough) but at the end of the day if you like performance, complete control over you program and how it functions you will eventually reach your goal, the only thing is it would have saved you some time.

You can ask questions here on this forum if you found something weird, people here usually give good answers.