pdimitar 1 day ago

Thanks for sharing. I would reach for Golang or even Rust if I was you.

I work with Elixir for 9 years now (& love it) and I agree what you describe is not a good fit for it.

Elixir is a general-purpose language in the meaning of Turing-completeness. I never once felt tempted to write a CLI tool with it though.

2
dnautics 1 day ago

I wrote a custom bioinformatics pipeline (CLI) in Elixir the other week. Not a terrible experience. Being able to save annotations to a binary and unpickle using term_to_binary was amazing.

pdimitar 1 day ago

If that CLI tool integrates with a bigger ecosystem (like connect to a cluster and reuse data / services) that's already written in Elixir, then that would make it an even bigger no-brainer to use.

Also hi, haven't seen you active in ElixirForum in a long time.

bryanrasmussen 1 day ago

css is Turing complete, XSL-T is Turing complete, so I don't think Turing completeness is a good measure of if something is a general purpose programming language. I would argue for environmental completeness - does the language have the possibility of accessing everything in the operating system it runs in? If so, it is environmentally complete and usable as a general purpose programming language.

Despite something being a general purpose programming language there are some tasks it may be better at than others. Visual Basic is a general purpose programming language but really you would most often use it for a particular subset of purposes. Elixir it seems is not good for writing a CLI.

pdimitar 1 day ago

I was mostly clarifying what most people I've met believe is a "general-purpose language". I agree with your take on telling it like it is for the practical needs of the commercial programmers / users of a language.

And again, as a guy who loves Elixir, it absolutely is not suited for writing CLI tools. Many would say it can be easily done, the community even has a few really good libraries for it as well, but the BEAM VM startup time absolutely kills its utility for tooling for me.

And, as others also said, Erlang / Elixir simply excel at orchestrating a lot of runtime micro-agents, each with their own small responsibility. And they do this better than any other language I've seen. But, for one-offs / scripts / CLI tools, Golang / Rust are very difficult to dethrone. We could also add Zig / D / V and others, I suppose, but I am not familiar with them.

bryanrasmussen 1 day ago

yeah sorry, I've just got some trauma from people claiming that languages can be used for stuff they can't really be used for just because of Turing completeness.