Although my first encounter with a programming language happened with PHP, my first serious attempt to learn programming started with C. I was fourteen years old and already able to do basic web programming with PHP. I had always learned just enough to build whatever I wanted to build at that time. So I was missing a good chunk of basic programming knowledge such as variable types, certain loops and conditional statements, exceptions, etc. I wanted to move my craft further by learning from a professional. I lived in a populous city, Adana (in Turkey), however it wasn’t a metropolis. There were not many people or institutions that can teach me programming. I found one institution where I can learn C. I knew PHP was a C-based interpreted language. C was a compiled one. So I decided to go for it.

At first, I was super excited and attentive to the classes. They were 1:1 since there were not many students who were willing to learn C back in 2004 anyway. Covering familiar concepts in a different language was fun and educative. However, in time, things got complicated with pointers. Although I got the gist of it, I was a bit slow to follow and eventually got lost. I could possibly put at least some of the blame on the institution and on my instructor, because at times we were doing classes non-stop for hours and I was literally sleeping with my eyes open. Yet, my instructor kept going. Was it because I was the only student and he was to go fast and finish the whole course? Did he not understand I wasn’t following? Were there perhaps not enough opportunities to practice so that it feels like a monologue? I don’t know and don’t remember. What I know today is that my C education was cut halfway. I acquired a partial base on C-based programming concepts, I used my C skills in the National Computer Olympics (which got me a silver medal), but that’s it. I continued programming with PHP.

Last month, Shopify announced that the default systems programming language to use would be Rust. Rust was intriguing as well, but the hearing the importance of the concept of systems programming reminded me my C days. Back then when I first tried to learn C programming, I didn’t know a lot of things that today I know of. I now have more than a decade of professional programming experience. I thought that it would be fun to go back to my C days and learn more about the concepts I missed staring at my instructor while he’s talking about things I could not follow. So I got the book “Effective C” which covers C17 and C2X standards. I’m reading it slowly (as I also read other books at the same time) and absorbing the language. I can swear that I felt something warm inside me when I re-write my first C program. It was truly a nostalgic moment for me:

#include<stdio.h>
#include<stdlib.h>
int main (void) {
    puts("Hello world!");
    return EXIT_SUCCESS;
}