Python 3 Types in the Wild

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

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • cligen

    Nim library to infer/generate command-line-interfaces / option / argument parsing; Docs at

  • Nim is a systems programming language^1 just with very decent ergonomics. Interfacing to C/C++ is trivial (just a declaration) and to others (e.g. Rust) is possible. E.g., there is code that interfaces to a custom Linux kernel module for fast file tree walking.^2

    You can also export Nim impls to Python easily, though I very much agree Python's time in the Sun is over. It now seems more a generator of problems than of solutions. Nim can also compile to Javascript letting you do both front- & back-ends in Nim.

    Science is an almost unbounded fractal set of human investigations. Nim is usable for science^3, but the ecosystem is undeniably much smaller than Julia or Python's. (Julia's is much smaller than Python's, and for some things R can be much bigger, actually.) So, a "depends what you need" caveat just has a much stronger "caveat force" here.

    What "large, multi-dev" needs is honestly harder to say/more subjective/maybe manager-subjective. If it is "cheap, just out of school programmers with which to replace expensive, departing mess-makers", I think Java may have always had more plentiful options. ;-) This is closer to a human-organization-complete kind of concern. I just didn't want to ignore it.

    [1] https://nim-lang.org/

    [2] https://github.com/c-blake/cligen/blob/master/cligen/dents.n...

    [3] https://app.element.io/#/room/#nim-science:envs.net

  • 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 is a systems programming language^1 just with very decent ergonomics. Interfacing to C/C++ is trivial (just a declaration) and to others (e.g. Rust) is possible. E.g., there is code that interfaces to a custom Linux kernel module for fast file tree walking.^2

    You can also export Nim impls to Python easily, though I very much agree Python's time in the Sun is over. It now seems more a generator of problems than of solutions. Nim can also compile to Javascript letting you do both front- & back-ends in Nim.

    Science is an almost unbounded fractal set of human investigations. Nim is usable for science^3, but the ecosystem is undeniably much smaller than Julia or Python's. (Julia's is much smaller than Python's, and for some things R can be much bigger, actually.) So, a "depends what you need" caveat just has a much stronger "caveat force" here.

    What "large, multi-dev" needs is honestly harder to say/more subjective/maybe manager-subjective. If it is "cheap, just out of school programmers with which to replace expensive, departing mess-makers", I think Java may have always had more plentiful options. ;-) This is closer to a human-organization-complete kind of concern. I just didn't want to ignore it.

    [1] https://nim-lang.org/

    [2] https://github.com/c-blake/cligen/blob/master/cligen/dents.n...

    [3] https://app.element.io/#/room/#nim-science:envs.net

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • anaconda-issues

    Anaconda issue tracking

  • A scientist typically wouldn't write web backend, a sysadmin doesn't do a lot of statistical stuff, etc.

    A small startup might do well to make their MVP in Python, but as the code grows the implicit costs (of using Python) do too.

    - - - -

    In re: Rust, sorry I wasn't clear above. I don't mean that Rust is a glue language, I mean that people write e.g. grep replacements in it and things like that. Python does systems programming by being glue, Rust does it by being, well, Rust. It makes sense to me that Rust libs would get Python wrappers, but it also seems to me that that adds to my argument: Python is good for small glue, but crunchy things (like grep) should be written in e.g. Rust or Go or something.

    - - - -

    One other things about Python is that the packaging & distribution "story" is ridiculous now. The people in charge of that call themselves the Python Packaging Authority (which name, given what they're doing, reminds me of Brazil the movie) and they seem to me to be running amok, cargo-culting the crap out of what should be a pretty simple and straightforward problem. I could go on but I feel a rant brewing, so I'll cut it off there.

    It's not just the PyPA folks that are having problems packaging and distributing Python. The Conda folks ship Tkinter in a broken state for five years now: https://github.com/ContinuumIO/anaconda-issues/issues/6833 That's the default GUI system that ships with the Python Standard Library.

    Compare and contrast with Rust's Cargo, or Nim's Nimble, or Erlang's Rebar, etc.

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