Learning Go as a Python Developer: The Good and the Bad

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • go

    The Go programming language

  • goimports seems an endless source of absolute bizarre bugs unless your packages' terminal path element exactly matches the package name (even sometimes if it does e.g. https://github.com/golang/go/issues/29041).

    These do get addressed over time but also seems to break in a new way at least a couple times a year.

  • cli-aws

    cli and go library for aws

  • i dragged my feet on go for a long time. i also thought that skipping go and moving to rust was the play. a few years later, i still write python often, but i don’t build systems with it. python i now use like bash, to glue things together and automate random things. it’s a fantastic language and i will never drop it.

    the verbosity of go is the biggest hurdle for a pythonista. the thought of giving up context managers, decorators, iterators, comprehensions, exceptions, coroutines, it’s unthinkable. in comparison go is ugly. your aesthetic mind screams in protest.

    write go full time. dive in. as months pass, not only will those aesthetic objections fade, your mental model from python cleanly transforms to go. go is what mypy tried to be. the cost was aesthetic changes. the benefit is worth it.

    the zen of python says if it’s easy to explain it might be a good idea. this is go, and it is.

    i rebuilt a reasonably sized project from python[1] to go[2] over the last few years. i also have a system that i maintained both python[3] and go[4] implementations for, sharing a test suite in python.

    go, like python, is fantastic. use both in whatever amount works for you. don’t read about them, build with them. you won’t regret it.

    1. https://github.com/nathants/cli-aws/tree/bb78e529e7d1d3f95ac...

    2. https://github.com/nathants/libaws

    3. https://github.com/nathants/s4/tree/python

    4. https://github.com/nathants/s4

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • libaws

    aws should be easy

  • i dragged my feet on go for a long time. i also thought that skipping go and moving to rust was the play. a few years later, i still write python often, but i don’t build systems with it. python i now use like bash, to glue things together and automate random things. it’s a fantastic language and i will never drop it.

    the verbosity of go is the biggest hurdle for a pythonista. the thought of giving up context managers, decorators, iterators, comprehensions, exceptions, coroutines, it’s unthinkable. in comparison go is ugly. your aesthetic mind screams in protest.

    write go full time. dive in. as months pass, not only will those aesthetic objections fade, your mental model from python cleanly transforms to go. go is what mypy tried to be. the cost was aesthetic changes. the benefit is worth it.

    the zen of python says if it’s easy to explain it might be a good idea. this is go, and it is.

    i rebuilt a reasonably sized project from python[1] to go[2] over the last few years. i also have a system that i maintained both python[3] and go[4] implementations for, sharing a test suite in python.

    go, like python, is fantastic. use both in whatever amount works for you. don’t read about them, build with them. you won’t regret it.

    1. https://github.com/nathants/cli-aws/tree/bb78e529e7d1d3f95ac...

    2. https://github.com/nathants/libaws

    3. https://github.com/nathants/s4/tree/python

    4. https://github.com/nathants/s4

  • s4

    super simple storage service + data local compute + shuffle (by nathants)

  • i dragged my feet on go for a long time. i also thought that skipping go and moving to rust was the play. a few years later, i still write python often, but i don’t build systems with it. python i now use like bash, to glue things together and automate random things. it’s a fantastic language and i will never drop it.

    the verbosity of go is the biggest hurdle for a pythonista. the thought of giving up context managers, decorators, iterators, comprehensions, exceptions, coroutines, it’s unthinkable. in comparison go is ugly. your aesthetic mind screams in protest.

    write go full time. dive in. as months pass, not only will those aesthetic objections fade, your mental model from python cleanly transforms to go. go is what mypy tried to be. the cost was aesthetic changes. the benefit is worth it.

    the zen of python says if it’s easy to explain it might be a good idea. this is go, and it is.

    i rebuilt a reasonably sized project from python[1] to go[2] over the last few years. i also have a system that i maintained both python[3] and go[4] implementations for, sharing a test suite in python.

    go, like python, is fantastic. use both in whatever amount works for you. don’t read about them, build with them. you won’t regret it.

    1. https://github.com/nathants/cli-aws/tree/bb78e529e7d1d3f95ac...

    2. https://github.com/nathants/libaws

    3. https://github.com/nathants/s4/tree/python

    4. https://github.com/nathants/s4

  • Nim

    Nim is a statically typed compiled systems programming language. It combines successful concepts from mature languages like Python, Ada and Modula. Its design focuses on efficiency, expressiveness, and elegance (in that order of priority).

  • Nim operates in the same space as Go, but with a syntax very much in the spirit of Python.

    https://nim-lang.org/

  • PDM

    A modern Python package and dependency manager supporting the latest PEP standards

  • one more that supports the latest standards: https://pdm.fming.dev/

  • deno

    A modern runtime for JavaScript and TypeScript.

  • I like TypeScript + deno [1] a lot these days for similar reasons... It's got the same thing going for it, a solid standard library on top of something like JS but sucks less.

    [1] https://deno.land/

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  • pytago

    A source-to-source transpiler for Python to Go translation

  • Similarly helpful, pytago is a source to source transpired for python to go

    https://pytago.dev/

  • pip-tools

    A set of tools to keep your pinned Python dependencies fresh.

  • Piptools [1] resolved this by having a requirements.in file where you specify your top level dependencies, doing the lookup and merging of dependency versions and then generating a requirements.txt lock file. Honestly it’s the easiest and least complex of Python’s dependency tools that just gets out of your way instead of mandating a totally separate workflow a la Poetry.

    [1] https://github.com/jazzband/pip-tools

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Create a Custom GitHub Action in Rust

    3 projects | dev.to | 28 Apr 2024
  • Love

    5 projects | /r/rust | 28 Mar 2022
  • Serverless Framework example for Golang and Lambda

    3 projects | dev.to | 28 Mar 2022
  • Using Go inside Wren CLI

    4 projects | dev.to | 28 Apr 2021
  • One Letter Programming Languages

    8 projects | /r/programming | 13 Apr 2021