Get Advice Icon

Need advice about which tool to choose?Ask the StackShare community!

Go
Go

6.6K
4.8K
+ 1
2.6K
Hack
Hack

79
55
+ 1
27
Add tool

Go vs Hack: What are the differences?

Developers describe Go as "An open source programming language that makes it easy to build simple, reliable, and efficient software". Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system enables flexible and modular program construction. Go compiles quickly to machine code yet has the convenience of garbage collection and the power of run-time reflection. It's a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language. On the other hand, Hack is detailed as "A programming language for HHVM that interoperates seamlessly with PHP". Hack provides instantaneous type checking via a local server that watches the filesystem. It typically runs in less than 200 milliseconds, making it easy to integrate into your development workflow without introducing a noticeable delay.

Go and Hack can be primarily classified as "Languages" tools.

"High-performance" is the primary reason why developers consider Go over the competitors, whereas "Interoperates seamlessly with php" was stated as the key factor in picking Hack.

Go is an open source tool with 60.4K GitHub stars and 8.36K GitHub forks. Here's a link to Go's open source repository on GitHub.

According to the StackShare community, Go has a broader approval, being mentioned in 901 company stacks & 606 developers stacks; compared to Hack, which is listed in 8 company stacks and 3 developer stacks.

- No public GitHub repository available -

What is Go?

Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system enables flexible and modular program construction. Go compiles quickly to machine code yet has the convenience of garbage collection and the power of run-time reflection. It's a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language.

What is Hack?

Hack provides instantaneous type checking via a local server that watches the filesystem. It typically runs in less than 200 milliseconds, making it easy to integrate into your development workflow without introducing a noticeable delay.
Get Advice Icon

Need advice about which tool to choose?Ask the StackShare community!

Why do developers choose Go?
Why do developers choose Hack?

Sign up to add, upvote and see more prosMake informed product decisions

    Be the first to leave a con

    Sign up to add, upvote and see more consMake informed product decisions

    What companies use Go?
    What companies use Hack?

    Sign up to get full access to all the companiesMake informed product decisions

    What tools integrate with Go?
    What tools integrate with Hack?

    Sign up to get full access to all the tool integrationsMake informed product decisions

    What are some alternatives to Go and Hack?
    Python
    Python is a general purpose programming language created by Guido Van Rossum. Python is most praised for its elegant syntax and readable code, if you are just beginning your programming career python suits you best.
    Rust
    Rust is a systems programming language that combines strong compile-time correctness guarantees with fast performance. It improves upon the ideas of other systems languages like C++ by providing guaranteed memory safety (no crashes, no data races) and complete control over the lifecycle of memory.
    Java
    Java is a programming language and computing platform first released by Sun Microsystems in 1995. There are lots of applications and websites that will not work unless you have Java installed, and more are created every day. Java is fast, secure, and reliable. From laptops to datacenters, game consoles to scientific supercomputers, cell phones to the Internet, Java is everywhere!
    Node.js
    Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.
    PHP
    Fast, flexible and pragmatic, PHP powers everything from your blog to the most popular websites in the world.
    See all alternatives
    Decisions about Go and Hack
    Sqreen
    Sqreen
    Node.js
    Node.js
    Ruby
    Ruby
    Python
    Python
    Java
    Java
    PHP
    PHP
    Go
    Go
    Slack
    Slack
    PagerDuty
    PagerDuty

    I chose Sqreen because it provides an out-of-the-box Security as a Service solution to protect my customer data. I get full visibility over my application security in real-time and I reduce my risk against the most common threats. My customers are happy and I don't need to spend any engineering resources or time on this. We're only alerted when our attention is required and the data that is provided helps engineering teams easily remediate vulnerabilities. The platform grows with us and will allow us to have all the right tools in place when our first security engineer joins the company. Advanced security protections against business logic threats can then be implemented.

    Installation was super easy on my Node.js and Ruby apps. But Sqreen also supports Python , Java , PHP and soon Go .

    It integrates well with the tools I'm using every day Slack , PagerDuty and more.

    See more
    Yshay Yaacobi
    Yshay Yaacobi
    Software Engineer · | 29 upvotes · 506.3K views
    atSolutoSoluto
    Docker Swarm
    Docker Swarm
    .NET
    .NET
    F#
    F#
    C#
    C#
    JavaScript
    JavaScript
    TypeScript
    TypeScript
    Go
    Go
    Visual Studio Code
    Visual Studio Code
    Kubernetes
    Kubernetes

    Our first experience with .NET core was when we developed our OSS feature management platform - Tweek (https://github.com/soluto/tweek). We wanted to create a solution that is able to run anywhere (super important for OSS), has excellent performance characteristics and can fit in a multi-container architecture. We decided to implement our rule engine processor in F# , our main service was implemented in C# and other components were built using JavaScript / TypeScript and Go.

    Visual Studio Code worked really well for us as well, it worked well with all our polyglot services and the .Net core integration had great cross-platform developer experience (to be fair, F# was a bit trickier) - actually, each of our team members used a different OS (Ubuntu, macos, windows). Our production deployment ran for a time on Docker Swarm until we've decided to adopt Kubernetes with almost seamless migration process.

    After our positive experience of running .Net core workloads in containers and developing Tweek's .Net services on non-windows machines, C# had gained back some of its popularity (originally lost to Node.js), and other teams have been using it for developing microservices, k8s sidecars (like https://github.com/Soluto/airbag), cli tools, serverless functions and other projects...

    See more
    Tim Abbott
    Tim Abbott
    Founder at Zulip · | 9 upvotes · 12.2K views
    atZulipZulip
    Python
    Python
    Go
    Go

    We've been a big fan of Python ever since we adopted it for my first startup, Ksplice. But it's been an absolutely ideal tool for Zulip, which is now one of the leading alternatives to Slack. Zulip is 100% open source software, with ~10K stars on GItHub. And being written in idiomatic Python has been really helpful for our open source project, because it's such an accessible language: Any programmer can learn Python quickly. And that means we're not restricted to e.g. "folks who are excited about contributing to Zulip and ALSO know Go".

    I've linked to a blog post I wrote on Python's awesome new static type system, which fixes the main complaint one might have about using Python for a large codebase, which has a lot more perspective, as well as some commentary on our Python 3 migration.

    See more
    Antonio Sanchez
    Antonio Sanchez
    CEO at Kokoen GmbH · | 13 upvotes · 144.3K views
    atKokoen GmbHKokoen GmbH
    PHP
    PHP
    Laravel
    Laravel
    MySQL
    MySQL
    Go
    Go
    MongoDB
    MongoDB
    JavaScript
    JavaScript
    Node.js
    Node.js
    ExpressJS
    ExpressJS

    Back at the start of 2017, we decided to create a web-based tool for the SEO OnPage analysis of our clients' websites. We had over 2.000 websites to analyze, so we had to perform thousands of requests to get every single page from those websites, process the information and save the big amounts of data somewhere.

    Very soon we realized that the initial chosen script language and database, PHP, Laravel and MySQL, was not going to be able to cope efficiently with such a task.

    By that time, we were doing some experiments for other projects with a language we had recently get to know, Go , so we decided to get a try and code the crawler using it. It was fantastic, we could process much more data with way less CPU power and in less time. By using the concurrency abilites that the language has to offers, we could also do more Http requests in less time.

    Unfortunately, I have no comparison numbers to show about the performance differences between Go and PHP since the difference was so clear from the beginning and that we didn't feel the need to do further comparison tests nor document it. We just switched fully to Go.

    There was still a problem: despite the big amount of Data we were generating, MySQL was performing very well, but as we were adding more and more features to the software and with those features more and more different type of data to save, it was a nightmare for the database architects to structure everything correctly on the database, so it was clear what we had to do next: switch to a NoSQL database. So we switched to MongoDB, and it was also fantastic: we were expending almost zero time in thinking how to structure the Database and the performance also seemed to be better, but again, I have no comparison numbers to show due to the lack of time.

    We also decided to switch the website from PHP and Laravel to JavaScript and Node.js and ExpressJS since working with the JSON Data that we were saving now in the Database would be easier.

    As of now, we don't only use the tool intern but we also opened it for everyone to use for free: https://tool-seo.com

    See more
    Nitzan Shapira
    Nitzan Shapira
    at Epsagon · | 12 upvotes · 151.7K views
    atEpsagonEpsagon
    Python
    Python
    Serverless
    Serverless
    npm
    npm
    Node.js
    Node.js
    Go
    Go
    Java
    Java
    GitHub
    GitHub
    AWS Lambda
    AWS Lambda

    At Epsagon, we use hundreds of AWS Lambda functions, most of them are written in Python, and the Serverless Framework to pack and deploy them. One of the issues we've encountered is the difficulty to package external libraries into the Lambda environment using the Serverless Framework. This limitation is probably by design since the external code your Lambda needs can be usually included with a package manager.

    In order to overcome this issue, we've developed a tool, which we also published as open-source (see link below), which automatically packs these libraries using a simple npm package and a YAML configuration file. Support for Node.js, Go, and Java will be available soon.

    The GitHub respoitory: https://github.com/epsagon/serverless-package-external

    See more
    Omar Mehilba
    Omar Mehilba
    Co-Founder and COO at Magalix · | 16 upvotes · 77.9K views
    atMagalixMagalix
    Kubernetes
    Kubernetes
    Microsoft Azure
    Microsoft Azure
    Google Kubernetes Engine
    Google Kubernetes Engine
    Amazon EC2
    Amazon EC2
    Go
    Go
    Python
    Python
    #Autopilot

    We are hardcore Kubernetes users and contributors. We loved the automation it provides. However, as our team grew and added more clusters and microservices, capacity and resources management becomes a massive pain to us. We started suffering from a lot of outages and unexpected behavior as we promote our code from dev to production environments. Luckily we were working on our AI-powered tools to understand different dependencies, predict usage, and calculate the right resources and configurations that should be applied to our infrastructure and microservices. We dogfooded our agent (http://github.com/magalixcorp/magalix-agent) and were able to stabilize as the #autopilot continuously recovered any miscalculations we made or because of unexpected changes in workloads. We are open sourcing our agent in a few days. Check it out and let us know what you think! We run workloads on Microsoft Azure Google Kubernetes Engine and Amazon EC2 and we're all about Go and Python!

    See more
    Conor Myhrvold
    Conor Myhrvold
    Tech Brand Mgr, Office of CTO at Uber · | 20 upvotes · 1M views
    atUber TechnologiesUber Technologies
    Jaeger
    Jaeger
    Python
    Python
    Java
    Java
    Node.js
    Node.js
    Go
    Go
    C++
    C++
    Kubernetes
    Kubernetes
    JavaScript
    JavaScript
    OpenShift
    OpenShift
    C#
    C#
    Apache Spark
    Apache Spark

    How Uber developed the open source, end-to-end distributed tracing Jaeger , now a CNCF project:

    Distributed tracing is quickly becoming a must-have component in the tools that organizations use to monitor their complex, microservice-based architectures. At Uber, our open source distributed tracing system Jaeger saw large-scale internal adoption throughout 2016, integrated into hundreds of microservices and now recording thousands of traces every second.

    Here is the story of how we got here, from investigating off-the-shelf solutions like Zipkin, to why we switched from pull to push architecture, and how distributed tracing will continue to evolve:

    https://eng.uber.com/distributed-tracing/

    (GitHub Pages : https://www.jaegertracing.io/, GitHub: https://github.com/jaegertracing/jaeger)

    Bindings/Operator: Python Java Node.js Go C++ Kubernetes JavaScript OpenShift C# Apache Spark

    See more
    Prometheus
    Prometheus
    Logstash
    Logstash
    nginx
    nginx
    OpenResty
    OpenResty
    Lua
    Lua
    Go
    Go

    At Kong while building an internal tool, we struggled to route metrics to Prometheus and logs to Logstash without incurring too much latency in our metrics collection.

    We replaced nginx with OpenResty on the edge of our tool which allowed us to use the lua-nginx-module to run Lua code that captures metrics and records telemetry data during every request’s log phase. Our code then pushes the metrics to a local aggregator process (written in Go) which in turn exposes them in Prometheus Exposition Format for consumption by Prometheus. This solution reduced the number of components we needed to maintain and is fast thanks to NGINX and LuaJIT.

    See more
    StackShare Editors
    StackShare Editors
    Python
    Python
    Go
    Go
    Kubernetes
    Kubernetes

    Following its migration from vanilla instances with autoscaling groups to Kubernetes, Postmates began facing challenges while “migrating workloads that needed to scale up very quickly.”

    The built-in Horizontal Pod Autoscaler (HPA) automatically scales the number of pods in a replication controller, deployment or replica set based on observed CPU utilization. But the challenges for Postmates is that there’s no way to configure the scale velocity of one particular cluster with an HPA.

    For Postmates, which runs at least three different types of applications with distinct performance and scaling characteristics, this proved problematic.

    To overcome these challenges, the team created and open sourced the Configurable Horizontal Pod Autoscaler, which allows for fine-grained tuning on a per-HPA object basis. The result is that “you can configure critical services to scale down very slowly, while every other service could be configured to scale down instantly to reduce costs.”

    See more
    StackShare Editors
    StackShare Editors
    Prometheus
    Prometheus
    Chef
    Chef
    Consul
    Consul
    Memcached
    Memcached
    Hack
    Hack
    Swift
    Swift
    Hadoop
    Hadoop
    Terraform
    Terraform
    Airflow
    Airflow
    Apache Spark
    Apache Spark
    Kubernetes
    Kubernetes
    gRPC
    gRPC
    HHVM (HipHop Virtual Machine)
    HHVM (HipHop Virtual Machine)
    Presto
    Presto
    Kotlin
    Kotlin
    Apache Thrift
    Apache Thrift

    Since the beginning, Cal Henderson has been the CTO of Slack. Earlier this year, he commented on a Quora question summarizing their current stack.

    Apps
    • Web: a mix of JavaScript/ES6 and React.
    • Desktop: And Electron to ship it as a desktop application.
    • Android: a mix of Java and Kotlin.
    • iOS: written in a mix of Objective C and Swift.
    Backend
    • The core application and the API written in PHP/Hack that runs on HHVM.
    • The data is stored in MySQL using Vitess.
    • Caching is done using Memcached and MCRouter.
    • The search service takes help from SolrCloud, with various Java services.
    • The messaging system uses WebSockets with many services in Java and Go.
    • Load balancing is done using HAproxy with Consul for configuration.
    • Most services talk to each other over gRPC,
    • Some Thrift and JSON-over-HTTP
    • Voice and video calling service was built in Elixir.
    Data warehouse
    • Built using open source tools including Presto, Spark, Airflow, Hadoop and Kafka.
    Etc
    See more
    Go
    Go
    Python
    Python
    PostgreSQL
    PostgreSQL
    TypeScript
    TypeScript
    JavaScript
    JavaScript
    NATS
    NATS
    Docker
    Docker
    Git
    Git

    Go is a high performance language with simple syntax / semantics. Although it is not as expressive as some other languages, it's still a great language for backend development.

    Python is expressive and battery-included, and pre-installed in most linux distros, making it a great language for scripting.

    PostgreSQL: Rock-solid RDBMS with NoSQL support.

    TypeScript saves you from all nonsense semantics of JavaScript , LOL.

    NATS: fast message queue and easy to deploy / maintain.

    Docker makes deployment painless.

    Git essential tool for collaboration and source management.

    See more
    Vishwa Bhat
    Vishwa Bhat
    Fullstack Developer at Sequoia · | 10 upvotes · 4.6K views
    atSequoia Consulting GroupSequoia Consulting Group
    Node.js
    Node.js
    Go
    Go
    Java
    Java

    Our new backend micro services are primarily written in Node.js and Go and legacy systems are written in Java. For our new stack decision, we aimed to achieve greater developer productivity, low IO latency and good community so we had couple of technologies in hand to choose but finally we concluded to go for Node.js for API layer and Go for CPU/IO intensive tasks. Currently the inter-services communication is happening via REST but soon to be moved to RPC-based communication.

    See more
    Robert Zuber
    Robert Zuber
    CTO at CircleCI · | 4 upvotes · 11.7K views
    atCircleCICircleCI
    CoffeeScript
    CoffeeScript
    Hubot
    Hubot
    Go
    Go