The words “software engineer” is often an umbrella term when it comes to the different types of work one does. They may work with web development, gaming, mobile apps, robotics, data analytics, the possibilities are endless because of how ubiquitous software is in the world. All of these jobs require tools for problem solving and tools in this case would be programming languages. There are many languages all with their own unique strengths and weaknesses, with Wikipedia listing around 700 languages on their page. Now that’s an absurdly high number, and can be intimidating for a novice who is interested in diving into the field. With so many options, they may not know where to begin, and which languages would better align with their interests! In this blog post, I’d like to highlight some of the more commonly used languages and break them down at a high level so it will be easier for beginners to map out their approach to the massive world of software.
Python is also being commonly utilized for artificial intelligence, machine learning, and financial analysis as well. With dynamic typing, english-like readability, loose syntactical rules, and comparatively less code compared to other languages for performing identical tasks, it’s no wonder that Python has been on the rise. A few weaknesses are that Python is slow to execute, memory consumption, weaker in mobile computing, and lacking client-side compared to its robust functionality server-side. This should not be a deterrent as Python is still a very popular language and is used in sites such as Netflix, Spotify, and Instagram.
Java was designed to be a loosely coupled language, so that an app written in Java can run on any platform that supports it, known as Write Once Run Anywhere (WORA). Its conception stemmed from programmers trying to create an alternative to C++. They wanted a language that was easily portable, novice-friendly(perhaps not as much as Python), and had automated memory management. The end result was Java, which has current day strengths in enterprise computing for finance and the Android mobile OS.
Enterprise computing refers to business-oriented IT for a company’s operations. It includes database management, relationship management, analytics, and various functions a company may need. It’s usually seen as a collection of the software solutions to business problems such as resource management and streamlining processes. Java’s ability for distributed computing allows for multiple computers on the same network to work in unison for these tasks. It also has no explicit pointer and a built in security manager that many tout as an advantaged. Additionally, Java has multi-threading which allows for many tasks to be performed simultaneously.
It is considered slower and more memory intensive than natively compiled languages like C++. It uses a garbage collector for memory management, and the collector can take up a large portion of your processing power. In the above photo I have shown that Java requires an object to perform “Hello World” while Python can do it in just two lines, so it can be considered as verbose. However, this does not detract from the usefulness of Java, with LinkedIn, Android, Ebay, and almost all banking software built on Java.
Go is one of the younger languages on this list, being developed by software engineers at Google and released in 2009, with a very recent rise in popularity. It was designed to be an efficient, readable, and more secure language for systems programming (designing computer software). They based it off of C, retaining much of the same functionality but with a less steep learning curve. Being a compiled language, it has stronger performance, fast runtime, and utilizes resources of a processor more efficiently. It works well for distributed systems that are located on different networks and exchange information between each other. Go also has gained uses in machine learning and data pipelines, in part due to having such a powerful parent (Google) promoting and supporting its usage.
While Go has many standard libraries, it does not have its own for graphic user interface and will require more effort to connect a library with your own project. It also doesn’t support generic programming the way the previous 3 languages do so it will be difficult to reuse code in Go. I believe that with Google backing it, Go has a bright future and will continue its trending popularity. Examples of companies that use the language are Google, Uber, Twitch, and Soundcloud.
C is a language that first appeared in 1972, as a low-level procedural language, while C++ built upon those foundations to incorporate procedural and object-oriented programming. With derivations from one the older and more popular languages, C++ has many uses, being known as THE language to learn back in the day if you desired a program that would run smoothly. It has wide support, being released in 1983 and is a powerful compiled language with great runtime. It has many uses in high performance client/server applications, video games, device drivers, embedded software, and mathematical modeling to name a few. Being a multi-paradigm language, its 3 pillars are generic, imperative, and object-oriented. Generic refers to having a single idea that can be used for several purposes. Imperative explicitly tells a program through statements in order to change its state, compared to declarative that expresses the logic without describing the control flow.
C++ also gives the user total control over memory management through dynamic memory allocation with pointers(no garbage collector like Java) so there is more responsibility on the programmer. With greater responsibility, there is also finer control. It is compatible with C, therefore allowing it to be used for low-level programming as well as having great scalability for large projects. On the downside, C++ is not known for being very secure with its pointers (which can cause memory issues if used improperly) and friend functions. Additionally its syntax is more rigid and less forgiving especially for beginners, becoming quite complex in larger applications. Adobe systems, Microsoft products, Windows OS, MySQL, and Youtube have their foundations in C++
Swift is in a way similar to Go, it was created by Apple in 2014 and is used for iOS/mac OS applications. On the flip side of Apple we have Android, with Java being heavily used by Android, until they recently created their own language in 2017 called Kotlin, that is an alternative to Java. Since Apple is a huge leader in the tech industry, Swift is relevant for many products ranging from iPhones, iPad, Macs, Apple watches, and so far. The Apple Store has a large impact as well, with Apple estimating it being responsible for $519 billion in billings just in 2019, and $64 billion in gross sales in 2020.
This language was built for performance and security, with Apple boasting speeds 2.6x faster than Objective-C and 8.4x of Python. It has a simple syntax, concise in its code (less lines for similar tasks), and uses Automatic Reference Counting for all work tracking and memory management. For example, the Lyft app was redesigned with Swift, and only required about 1/3 of the original 75,000 lines of code. It also has a strong typing system and error handling system for safety during production. Since this language is only focused for Apple operating systems, all applications built for these purposes have lower memory usage due to specific libraries being pre-included. The cons of using a new language is that it still needs time to grow to compare with older ones, and there are less coders who understand the language at this moment. It also has a lack of support for any iOS before 7, so it cannot be used for any legacy projects. However, less than 5% of Apple devices run on iOS 6 or earlier and the possibilities of app development under Apple is endless. You can safely assume any newer applications under the Apple brand has its roots in Swift, and they will continue to increase its presence in the industry down the line.