Python
Python as a programming language is a powerhouse, and no one is contesting that. It’s an easy-to-setup language with many developers creating newer projects and use cases every day. A quick look at PyPI, the official Python package index for third party modules lists 270000 projects and counting, ranging from web development to data science and now quantum programming.
But as a programmer, we should learn about the limitations of a language, and be open to accept other languages that perform a certain job better. Python was originally developed to teach programming, making it easy to learn and use.
But the features that make it attractive to beginners is exactly why it is often outperformed by other low-level languages:
- Python is a dynamically typed language, which leads to slower times and increased memory consumption.
- Lack of a fixed format provides room for confusion and more complexity.
- Lack of concurrency implies huge differences in request times.
Golang – Built for scale
Golang is a relatively new programming language, introduced to the public in 2009. It was developed by Google to solve Google-sized problems. Enough said. Scalability is a “big” issue faced by companies worldwide. Go developers built inbuilt support for concurrency, which has led to its acceptance among the cloud computing frameworks. If we test server response times for Go and Python for the three simplest tasks – insertion, updation and deletion, then Go outperforms Python every time by >3 milliseconds.
Even though this may seem small, if we consider the fact that AWS is currently used by large companies to handle API requests and Amazon charges per 1000 requests per port, the amount quickly stacks up.
Go is also static in its nature, which leads to a more uniform structure. Designed on the foundations of C, it is more safe and simple.
Go is like a system language, web development language, anything we want to scale – anything we want to be super efficient, but might not want to write in C++.
There are many websites on the internet today used by millions of users, that are built in Python using Flask. These websites could benefit a great deal by switching to Golang as a back end, as it would mean >100 ms speed gains per user. These gains cascade to processing costs on both server and client sides, and result in a much better user experience.
Golang vs Python Performance
In fact, in a test by benchmarksgame-team on three separate complex problems, the difference in performance is astonishing and definitive.
Drawbacks to Go
Go being static-typed needs each variable to be specified a type. It does have a combined declaration/initialisation operator :=
, but it will interpret the variable only ONCE. This may cause problems if we try to assign a different datatype to that variable, say for example:
package main
import "fmt"
func function_name(x int32){
...
}
func main(){
x := 15
function_name(x)
}
This is because at x:=15
, Go fixes the datatype of x to be int64 by default.
Go is also not a generic language, however it is quite easy to learn once you start.
There is a lack of library support for some applications currently, but many developers are working hard to meet those needs.
Golang vs Python
Go | Python |
Procedural, concurrent language. Does not have classes like OOP but has structs which are similar. | Procedural but not concurrent. It rather supports Object Oriented programming. |
Static,compiled language – the datatype of a variable is fixed and need not be interpreted. | Dynamic,interpreted language – the datatype is inferred by interpreter at runtime. |
Provides high degree of memory management and garbage collection | Provides no memory management. |
Has minimal errors at runtime (since it is compiled) | Has a lot of runtime errors(drawbacks of being an interpreted language) |
Faster and more efficient for web applications and rapid requests. | Has a lot of all-round library support, especially for data science. |
Conclusion
Python is not going anywhere anytime soon, especially as an easy to pick up and use programming language for the masses. However, for companies looking to build for scale and concurrency maybe its time to look towards a few alternatives in Golang.
References
- https://go.dev/
- https://pypi.org/
- https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/go-python3.html