Languages and Frameworks I Know

#2 - Object Oriented Languages

Posted by Solan Manivannan on September 4, 2016

Over the last couple of years, I have spent a huge chunk of time using object oriented languages. Indeed I have completed several small and large projects, some of which I am proud of from a software architecture viewpoint.

Java: is a language that non-technical people probably would have heard of, and consequently one that beginners would choose to learn. This was my first object oriented language, and I'm greatful for it. I learnt this through lectures and small/large exercises at university. It is now my go to language for solving software engineering interview questions. The mathematical computation project and WACC compiler project were both completed using Java, and they both raised my technical skills in this language to another level. After 6 months of experience, I read the Head First: Java book, which is a great summary of all the concepts Java has. However, the book is really suitable for beginners who aren't familiar with, or have heard of, some of the key concepts of object oriented languages.

C++: is a procedural and object oriented programming language, not to be confused with C, which is a just a procedural language. With knowledge of OOP using Java, and memory management using C, learning C++ did not require much effort. Again, for me this was a case of learning through university lectures and exercises. The biggest project I have done using this language has been the PintOS operating systems project, originally from Stanford University. I have probably had a few glances at the Head First C++ book as well, but haven't yet spent some time reading a textbook on the language.

Python: is a programming language whose design is focused on code readability. As a result, its syntax allows programmers to write fewer lines of code as opposed to other programming languages when producing programs that do the same thing. [There was a Quora post that illustrated a good example, may link it here.] I haven't had much experience with Python, especially in a large project. However, I did write a test-suite script for our WACC compiler project that would scrape results from the Imperial web test-suite and compare them with the output of our project. Furthermore, we did use Python in our Software Engineering Algorithms course as it was particularly useful, for example, in timing how long code took to run. However, in both these cases the software architecture was quite simplistic. Also spent some time helping GCSE information technology students using the language for their coursework, which was quite interesting, as they were developing a stock system for a shop. In contrast to the other languages above, I have hardly used resources to learn the language, and simply just dived in and used Google whenever I got stuck.

Swift: is a language created by Apple that includes many of the useful and popular features of other languages. In the summer of 2015, as part of the Silicon Valley Innovation Program, myself and a couple of others (Gokul and Charlie) used Swift to create our MVP for an anonymous group messaging app. We had very little time for development, but managed to follow some tutorials online to create an app that matched almost 100% of our design. This was probably the first time where I've built something from scratch at a very rapid pace - with the constraint of none of us knowing anything about iOS development. It was impressive for us to reach the final round of the Stanford Sharks, and be awarded the best pitch on the night. More recently, in the summer of 2016, I'm hoping to sharpen my skills in this area by following the CS193p lectures by Stanford.