C is not a good choice for a first language. Stop asking.
Every time I tune into this channel there are several people asking if C is the right language to learn for one's first programming experience.
No.
Who am I?
I taught myself C in high school. From a xerox copy of "The C Programming Language" and a bootleg of Boreland Turbo C.
But before that I spent 6 years programming in BASIC. I taught myself in 4th grade. Like kids that age, I was trying to write video games.
By age 16 I finally exhausted what I could do in BASIC, that is when I turned to C. "Learning" C at that point wasn't learning to code. It was learning to code in C. On
DOS.
Back in those days, learning to code in C was learning to code on a single user, single-task machine. I had complete control of the interrupt channels, all of the memory, and the peripherals could only speak to one program at a time.
But that was after 6 years of programming in the supportive environment of the BASIC interpreter.
If I was to recommend and environment today, I would pick Tcl/Tk. It's a friendly environment to work in. You can get a quick and dirty app going in a page of code. When you are tired if its limitations (or performance) you can start writing extensions in C.
The tcl API is a great way to see how competent software engineers use every feature in the C programming language. Up to and including:
* Pointers to functions
* Memory allocation
* Reference Counting
* Object systems
Put to wrap up: learn to program first. And after you yearn for something a little more low level, then learn C.