Go Language

Go Programming Language

Go is a programming language created in 2009 by Google employees Robert Griesemer, Rob Pike, and Ken Thompson. Go is a statically typed, compiled language in the tradition of C, with the added benefits of memory safety, garbage collection, structural typing, and CSP-style concurrency. The compiler, tools, and source code are all free and open source.

Why Go is Special?

Go created to overcome the difficulties in C. They want a fast language like C but it has lots of drawbacks like compiling speed, dependencies and run-time errors. Ruby is a good option but it is slow and has lots of dependencies. Also for Java it needs a virtual machine which slow down the program. JavaScript and NodeJS are fast but they are weakly typed, interpreted and unsafe to work with.

If we consider java it is too complex to handle and many keywords with can be guessed from the context of the language. JavaScript has so many drawbacks like maintenance issues, callback issues and async functions. JavaScript cannot be considered as safe language but there are some alternatives like TypeScript. But speed becomes the game changer.

From the initial stage of Go development they designed it for fast compiling. So it is hard to create a slow compiling program using Go.

We can list Go’s major features.

  1. Fast Results : It works like an interpreted language because of the fast compilation. You’ll not notice that it’s compiling. You’ll think that as if you’re working in an interpreted language like Ruby.
  2. Safe: Strongly and statically typed and garbage collected.
  3. Easy to Work With: It’s concise, explicit and easy to read.
  4. Modern: Built-in support in the language itself for multi-core networked distributed applications and more.

Go usage goes high in last few years.

Go Usage in Stack Overflow
Go Questions on Stack Overflow

Go Projects

  • Caddy, an open source HTTP/2 web server with automatic HTTPS capability.
  • CockroachDB, an open source, survivable, strongly consistent, scale-out SQL database.
  • Decred, a cryptocurrency with on-chain governance integrated into its blockchain.
  • Docker, a set of tools for deploying Linux containers
  • Hugo, a static site generator
  • InfluxDB, an open source database specifically to handle time series data with high availability and high performance requirements.
  • InterPlanetary File System, a content-addressable, peer-to-peer hypermedia protocol.
  • Juju, a service orchestration tool by Canonical, packagers of Ubuntu Linux
  • Kubernetes container management system
  • Lightning Network, a bitcoin network that allows for fast Bitcoin transactions and scalability.
  • OpenShift, a cloud computing platform as a service by Red Hat
  • Snappy, a package manager for Ubuntu Touch developed by Canonical.
  • Syncthing, an open-source file synchronization client/server application
  • Terraform, an open-source, multiple cloud infrastructure provisioning tool from HashiCorp.

Most notable companies are Google, Docker, Dropbox, Heroku, Medium, Lyft and Uber.

Disadvantages Of Go

  • Strongly typed. Extremely typed, rather. Ninety nine times out of a hundred this might seem like a nuisance. But that one time when the compiler catches a type-mismatched assignment, where say, there would have been loss of precision in a different language, you’ll be glad that Go has such strict typing.
  • Can be fully compiled and statically linked with all libraries into a single standalone executable binary.
  • Excellent concurrency patterns. Be sure to look up Rob Pikes talk on this topic on YouTube. I could go on and on on this topic but I don’t think anyone can better Rob’s talk.
  • To go along with the excellent concurrency patterns, Go offers several solutions to tackle the classical challenges of concurrent programming. E.g. there is automatic deadlock detection (a panic is issued.) Your application can be built using a race-condition detector, which is extremely useful during testing (can and should be disabled in production.)
  • Garbage collected. When all references to an object have gone out of scope, the memory that was allocated for it is marked for GC and the OS is free to reclaim it.
  • Offers pretty powerful profiling tools for CPU and memory utilization to easily fine tune your application.
  • Programmers tend to easily procrastinate and often never get around to coding activities like testing and documentation. Go offers plenty of ways to automate these activities in practice. With all these, there really can’t be any excuses for not writing unit tests and API documentation for your code.
  • There are a ton of programmers who have created production-worthy packages on top of the standard Go packages available on GitHub. E.g. drivers for MongoDB, Redis, MySQL, to name a few.

If you have a passion on Go Language, please follow this websites and tutorials.

Go Tour : https://tour.golang.org/welcome/1

Wiki : https://github.com/golang/go/wiki/Learn

Tutorials : https://www.tutorialspoint.com/go/

Youtube Playlist : https://www.youtube.com/playlist?list=PLQVvvaa0QuDeF3hP0wQoSxpkqgRcgxMqX

Happy coding..!

2 thoughts on “Go Programming Language

  1. Wow, this was usefull. Keep writing this kind of posts, you will get a lot of people to this blog if you continue working on this.

  2. You made some decent points there. I checked on the web for additional information about the issue and found most people will go along with your views on this web site.

Leave a Reply

Your email address will not be published. Required fields are marked *

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top