I learned C from Programming Day 1 and here’s what I learned.
First Impression: It’s Hard
When I decided to learn programming, the most popular question among us was which language to start with. My university was beginning with Python — it’s easy to understand, offers numerous job opportunities, and has other benefits that can’t be covered in just one article. Another language people recommended was C programming. But why should I learn it first? Because it’s the mother of all languages. It’s old but powerful. However, “It’s difficult” people warned. So, in a moment of stubborn determination, I decided to start my programming journey with C. And what a journey it was.
Day One, Hour Zero:
When I set out to learn C, I enrolled in an independent course created by some CSE graduates and industry specialists. I thought if I started my programming journey with C on my own, it wouldn’t be a good start. I’d likely lose track after a few weeks and end up feeling discouraged. This course had a structured routine with daily video uploads and practice problems. If someone wants to compare something, they need to know the “something” first. My “something” was C. As a result, I couldn’t tell if C was easy or not — I was just doing my coding in Visual Studio Code. Yes, it started with HELLO WORLD. There I was, alone with the fuzzy concept of ‘int main()’ and constant alerts from VScode about missing semicolons. It was going somewhat well, I think.
Week 1, Hour 168:
After the first week, I had learned many lessons. In the first couple of days, I grasped what print and input are, how programming works, and what a header file is. The concept of a function? Variables and their types? Interesting stuff! It seems simple now, but at that time, it was tough — I had to learn everything from scratch.
On the third and fourth days, I learned about operators: Arithmetic, Relational, and Logical. It seemed easy at first because I’d studied these in school. However, applying them in code requires practice. Then, I tackled the most important lesson so far: Conditional Statements and if-else conditions. That was HARD! There were daily practice problems to complete, and using conditional statements in code with various operators in these practice problems nearly drove me to despair. Learning in a tutorial is one thing, but applying that knowledge to real-life problems adds an entirely new dimension.
I spent hours wrestling with syntax errors and segmentation faults. My code broke more times than I could count, but with each failure, I learned something new. I was forced to understand what was happening behind the scenes. What exactly occurs in memory when I declare a variable? C made sure I didn’t just know the answers — I understood them.
Month 1: The Consistency
I put my heart and soul into sticking with the routine. By the end of the first week, I had learned about loops — starting with for loops and while loops. I tackled a few practice problems that helped reinforce these concepts, and I began to feel a bit more comfortable with the syntax. I revisited conditional statements in the meantime. I also encountered an interesting topic: the nested for loop.
As I delved deeper, I tackled arrays, functions, and the notorious pointers. Each new topic presented its own set of challenges, but nothing prepared me for the mental gymnastics required by recursion. This concept seemed like a mystery. My computer crashed more times than I could count, each time testing my resolve. But with every frustrating failure, I gained a deeper understanding. It wasn’t just about writing code anymore — it was about developing resilience, patience, and the ability to see problems from multiple angles.
Final Thoughts
As I look back on my journey with C, I realize that the language did more than teach me to code — it taught me how to think. C pushed me to understand the fundamentals, grasp the inner workings of a computer, and develop a disciplined approach to problem-solving. After learning this language, I tried to learn C++ and Java. C helped me to understand C++ and Java better than I thought. The challenges were many, but each one brought with it a lesson that made me a better programmer.