Go is Best for Enterprise Machine Learning Needs
“For a language to be ready to be used in Machine Learning, here are three things it needs:
- Linear Algebra library (like numpy).
Go has one.
- ML algorithm library (like scikit learn).
Go has one.
- Parallelization support (like PyCUDA/PyOpenCL).
Go seems to have some work done there."
(Muktabh Mayank, Data Scientist, CoFounder @ ParallelDots, BITSian for life, love)
Go is Easy to Learn and Deploy
Muktabh goes on to say there is a fourth requirement:
“Language should not be very hard, as algorithms are already complex enough to code. If this was not the case, C++ would never have had any rival (Python/R/Matlab are bad in performance, just that they are easier that they get to stay).”
Not only is Go well known for being easy to learn and write, but you can cross compile for any target computer from any other computer. I can make a Windows
.exe file on my Linux machine that won’t even run on the machine it was compiled on. Go was the first language to do so and remains the easiest and best at it.
Go is Supported Primary Cloud Language
Go has primary support on all the following major cloud providers. Python and Java do not.
Go Concurrency is Far Better Than Python
There are no less than four ways to achieve concurrency with Python. The latest
async/await cannot be used with TensorFlow currently because it requires Python 3.7. It’s been over a year and still no fix.
Go’s use of goroutines instead of promises significantly simplifies concurrency in ways that even beginning programmers can understand without much effort. Promises have been notoriously difficult to learn from the beginning.
The easier the language the faster the development process. These are enterprise business advantages that companies care about.
Go is Strictly Typed, Which Enterprise Needs
This is perhaps the least understood — yet main — reason Go wins on the machine learning enterprise front.
Data are the corporate jewels of enterprise. This is why six figure salaries for DB2 database administrators have existed since the 70s. ACID compliance is paramount to a company
Not so much for scientists.
Scientists made Python popular for machine learning because they personally prefer it. They can duct tape scientific models quickly. To them Python is like the world’s best scientific calculator. It’s a stateless tool that they use when they need to do a calculation.
Proof of this exists in the popularity of Jupyter (formerly iPython) notebooks. These things allowed academics to package up their little models in ways that could be shared as interactive academic papers.
Enterprise has different needs and priorities.
Because of this strictly typed languages and large SQL databases have been favored by corporations over Python from the beginning — even demanded. Companies are far less likely to adopt the flexibility and risks of a loosely typed language like Python that doesn’t even have constants.
By having an architecture with strict-typing requirements baked into it you can push your organization to produce as fast as possible with less fear of the risk of pushing them to cut-corners on things that could create catastrophic bugs that affect your data. The strict-typing acts like a safety barrier because developers must use it. This advantage is understood by only a very few CTO’s and architects — usually those who have risen from the ranks of hard-working developers to accept these constraints thankfully because of this protection. It is much like an experienced system administrator never wanting root access to a machine unless needed and always using
sudo over logging in as root. Experience is a good teacher, and wise enterprises have learned that these protections will save them in ways they may never know.
Go is the easiest strictly typed, compiled language in existence. It is far less likely to make any mistakes in Go than any other language except Rust.
Gig Economy and Failing Colleges Alter Developer Pipeline
It may be true that today’s enterprise data scientists use Python and even Jupyter notebooks for their corporate work, but this is probably because they have been plucked out of academia (which is happening a lot with corporations sniping PhDs out of universities). But as machine learning becomes a more mainstream skill — as evidenced by the number of “boot camps” popping up to teach it — the academic preference for Python and Jupyter notebooks will be superseded by the needs of the enterprise demanding things only Go can provide:
- strong data typing,
- strong data structures with method binding,
- strong native encryption and other libraries,
- easy packaging and distribution,
- procedural paradigm,
- compiled machine code run-time speeds,
- easy to grok concurrency,
- cross-platform compilation,
- DevOps integration,
- cloud serverless deployment.
This will lead to more and more machine learning developers never going to college fulfilling the need.
The pressures of the Gig Economy will further reinforce this influx of talent. And Gig developers who learn machine learning will prefer Go because it empowers them to develop on other gigs. It will be foolish for a Gig developer to learn only Python.
As colleges continue to crumble enterprises will turn more and more to Gig workers to fulfill their high demand for machine learning — workers who were not trained at a college and who do not have the same biases and bigotry for Python but who are personally motivated to learn skills and languages that will provide the most opportunity in the highly competitive Gig economy.
[One Harvard economist predicts that 50% of all universities will be gone by 2020.]
Object-Oriented Programming is Dead or Dying
The insanity of the 90s and Java’s demise have proven objectively that the rigidity and unnecessary verbosity of object-oriented programming has failed the industry and our world. Astute architects now openly acknowledge this and are moving their enterprises away from OOP approaches.
Go Has Incredible, Capable Momentum
I will never forget starting with Go and finding an entire GnuPG implementation as part of the core library. I would have done just about anything to have that when writing the systems at IBM that collected and stored compliance data from 52,000 servers. Instead the industry practice was to use the
gpg binary itself.
I tell that story because it illustrates the collective minds involved in Go community. They are serious developers creating code for larger enterprise needs and have been from the beginning — Go having been conceived to replace Python and C++ within Google to speed development, compilation, and run time execution.
Every time I wonder if a package is available for something I need it is. And after reading about machine learning libraries it seems this momentum exists as well for Go. Otherwise why would Facebook contribute the Go TensorFlow bindings (among other things).
Go is the Standard Back End Language
I’ve stopped counting how many large enterprises threw out Python and Node for their back end applications. Every single one replaced them with Go.
Python 3.7 Incompatible with TensorFlow
Now is the time to look at Go to replace your enterprise machine learning needs.
Go Supports Distributed Computing, Python Doesn’t
" Go also has support for distributed computing, for which Python needs to depend upon Spark/Hadoop etc."
Go Programmers are Increasing
Because of DevOps and cloud computing more and more developers are learning Go and becoming available for hire by the enterprise. Python programmers might be everywhere at the moment, but businesses have a unique opportunity to invest in their developers learning Go and benefiting their organizations in ways that go far beyond machine learning.
Moreover, having your existing developers learn Go is a great opportunity to weed out your bad developers who either can’t learn a new language or won’t because they don’t put the needs of your company first.