Why I am Learning C

A computer science degree is not the route I took to becoming a web developer. I self learned HTML, CSS and javascript, then got my first job. This is a common path nowadays and for me I found that some of the downside is not having some of those core computer classes under my belt. The computer hardware is operated with assembly code and each programming language is an abstraction of that. The front end web languages are ‘high level’ abstractions from the  assembly code at the base of computer hardware. 

Since I mostly develop for the web, the front end languages have served me well. But I have always felt like I am missing a deeper grasp of some programming concepts. Especially when starting to look to the backend with more projects and work assignments. Right now Java is the language I have mostly used on the backend. I can find my way around well, but even Java is a high level abstraction. 

It is interesting to me the kind of tasks I can do with java code, and working on the server side. Especially since I have gotten more familiar and use linux a lot more. I got into writing shell scripts which I think was the catalyst to learning C. I have always had an interest in that it seemed challenging and I see it suggested in a lot of places that C is a fundamental low level programming language. 

A lot of the current programming languages are abstractions of C, and my plan is that learning C would deepen my understanding of java and javascript. Most high level languages have automatic garbage collection and I want to understand more about that by learning C. What C allows, that I think is the most important, is full control over your program. You are closer to the hardware and can work on any type of program. I want to learn C in order to strengthen my foundation moving forward. This is coupled with my math learning that is building a stronger problem solving foundation.

The ultimate goal is to have a deep toolset for solving problems and providing value. I have already started writing some small programs and plan to post on github. I am brainstorming now on a larger C based project and will update here once that happens. 

©Larry Buffaloboy