Categories
Uncategorized

Technologies I’m Using for This Project

Technologies I’ve Been Introduced to

While I’m familiar with C++ , there were some aspects of using this language I was unaware of. I will talk about my experience with C++ in more detail below, but just know that I have a very surface level knowledge of the language. I was so used to creating simple programs and running them locally. Two things I was introduced to was CMake and G-Test. G-Test is of course a testing suite, similar to Pytest. I was able to get the hang of this pretty quickly, and there was no real friction when learning how everything worked. CMake is something I had never heard of, nor did I know it was even required. Luckily, a member of our group is familiar with CMake, so they were able to create those Make files for us. However, in the future I’m going to have to take a deep dive into Make files in general.

I Probably Should’ve Reviewed C++ Before Starting

I actually learned the very basics of programming with C++ about 8 years ago in my first ever programming course. The key words being “very basics”. All I really knew how to do was write some basic loops, and create some basic classes. I didn’t really dive into the specifics of C++ or its data types.

One thing I wish I had done was practice using C++ before we had started the project. As it turns out, it is quite difficult to create an emulator while simultaneously learning the language you are using to build it. While I’ve gotten the hang of it, I think it would’ve been more productive to spend a few weeks getting to know the language instead of having to learn as I go.

Did We Choose The Right Tool For The Job?

Even with my lack of experience with C++, I think we made the right choice. It has a good blend of low level functionality needed to create an emulator, while also having a nice layer of abstraction with its object oriented programming support. The ability to have objects and classes really makes organizing the emulator much easier.

In addition, C++ is such a versatile language that is used for a multitude of programming projects, so learning it will prove valuable even outside of this project.