Languages, Libraries, and Frameworks…Oh My!

Since I first began my venture into coding, first as a CS student, then as a general interest, the one thing that has spent more time driving me nuts was a what think of as “what the hell is this and what does it do?” Sure I could distinguish HTML and CSS, and I knew that JavaScript was used to make websites more than just a pretty face. Beyond that, I might as well be trying to read the names of prehistoric tribes off a cave wall. And what was worse is that I didn’t know the difference between a language, a library, and a framework, especially not by a name alone.

I’ll be honest, it still evades me a bit, why have so many different languages? I suppose the best guess I can venture is somewhat like my toolbox. I have tools in there that are generations old and don’t serve much of a practical function these days save for nostalgia. Then I have tools that I have picked up in the past few years that are fantastic for the jobs that I need them for on a regular basis and they look all shiny and new, especially when compared to the tools my great-grandfather made while working with Henry Ford (true story). But still I would never dream of throwing out the ones that I don’t use anymore, they are a piece of history and they remind us of where we have come from. Very similar to photos I will see randomly of a single flash drive sitting next to a stack of a dozens of floppy disks.

Tools handmade by my grandfather
Tools handmade by my grandfather

Maybe I’m framing this whole thing way off base, and if so just let me know, but it’s the best I can come up with. I remember when I was taking my Fundamentals of Programming course (which was taught using Java), that Java had about as much in common with JavaScript as a car had in common with carpet. So I went along under this assumption for quite sometime assuming that the basic ideas and syntax of both languages were as different as say English and Japanese, not even using the same alphabet. Then one day as I had moved on through freeCodeCamp’s HTML and CSS sections, right into my first taste of JavaScript I thought to myself, “well, now I’m to see something far separated from any code I’ve ever seen before.

Low and behold I began the first sections talking about comments and declaring variables and I was stunned. I knew this stuff. Granted it was a bit simplified but the same basics ideas were all there. I felt like I was learning a less complicated version of Java. Now, don’t get me wrong, I was actually pretty happy to stumble onto some familiar territory, but I felt like I’d been lied to a bit. This wasn’t Japanese to my native English, it was more like a different dialect of the same language, more user friendly if you will.

Having said all that, I will say that I have seen more than just Java and JavaScript languages. I can identify the C languages as such, not saying I could differentiate C, C#, and C++ at a glance but I could tell that were all C based after reading a programming concepts book that used C++ as it’s native tongue. I was glad that I had been exposed to Java at the time because I could see where it came from and sort through it enough to extrapolate the basic ideas and lessons it was trying to convey.

Before all that I even took a free online intro to Python, I believe this was my first “Hello, World!” experience. That was probably the language that sticks out the most as “different”, not that I remember much of it, as I took the class at least 4 years ago and haven’t looked at it since. And working on electrical systems as my day job for the past 6 years I have been taught at least how to decipher the basics of binary, by no means am I an expert here either. But that about sums up the few different languages that I have been exposed to.

But I think that when it comes down to it, I remember back to what my cousin’s husband said to me when I first toyed with the idea of learning how to code. He told me that “once you learn that first language, and get good at it, you can pick up others pretty quickly”, meaning that the basic programming concepts and ideas are fairly similar across the board, with some syntactical differences thrown in. He also told me that learning that first one is not easy, but it’s absolutely worth the struggle and eventually the fun of coding out-weighs the amount of pain killers you need. That seems to be the overwhelming consensus from all the YouTubers, podcasters, and article writers that I have come across. Coding is so vast and expanding that it’s foolish to think that it will be easy to get good at it. But, on the flip side of that same coin, it’s also foolish to think that it will ever get boring, there is just too much out there to learn and create.

I’m still not as clear as I would like to be when it comes to differentiating languages, libraries, and frameworks, but at this point I’m a little more concerned with learning a language at a time, right now that language is JavaScript (if it’s good enough for Stanford to virtually abandon Java over, should work for me right?). I feel like after having put together a few sites composed of 99% HTML and CSS I’ve got a decent enough handle on it to move on and start making them interactive. As for deciphering the seemingly never ending list of languages, libraries, and frameworks, I have had to kind of sit back and ask myself, I will just figure that out when I get to it, even if I get to it. It’s only going to make my head spin even more than it already does.

Any who, that is not at all where I expected this post to go but thus far it hasn’t gone where I thought it would, but as usual I think we ended up in a good place.

~Until Next Time, Squatch Out~

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s