- cross-posted to:
- programming@programming.dev
- cross-posted to:
- programming@programming.dev
New favorite tool 😍
Why not write… Bash?
This is glorious.
One day, someone’s going to have to debug machine-generated Bash. <shivver>
You can do that today. Just ask Chat-GPT to write you a bash script for something non-obvious, and then debug what it gives you.
For maximum efficiency we’d better delegate that task to an intern or newly hired jr dev
I’m a mathematician with very limited programming experience. Can someone explain the significance of this?
Basically dealing with abandoned-by-god syntax and limitations of bash. You can abstract them away!
Bash is one of the most used shell language, it’s installed on almost all Linux and Mac systems and can also be used on windows. Almost no one likes writing it as it is convoluted and really really hard to read and write. There are many replacement language’s for it, but using them is troublesome, because of incompatibilities. Amber is compiled which will solve problems with compatibility and it seems that language itself is very readable. On top of that it has most futures that modern programmers need.
Thank you, I think I understand now. 🙂
Cool website
Here’s a language that does bash and Windows batch files: https://github.com/batsh-dev-team/Batsh
I haven’t used either tool, so I can’t recommend one over the other.
If their official website isn’t https://batsh.it I’m going to be very sad.
Edit: ☹️
The only issue I have is the name of the project. They should have gone with a more distinct name.
I can’t believe they didn’t with go with BatShIt. it’s right there! they were SO close!
Why not compile it to sh though.
There is no sh shell. /bin/sh is just a symlink to bash or dash or zsh etc.
But yes, the question is valid why it compiles specifically to bash and not something posix-compliant
There is no sh shell.
lol
Yes, there was the bourne sh on Unix but I don’t see how that’s relevant here. We’re talking about operating systems in use. Please explain the downvotes
It’s relevant because there are still platforms that don’t have actual Bash (e.g. containers using Busybox).
sh
is not just a symlink: when invoked using the symlink, the target binary must run in POSIX compliant mode. So it’s effectively a sub-dialect.Amber compiles to a language, not to a binary. So “why doesn’t it compile to
sh
” is a perfectly reasonable question, and refers to the POSIX shell dialect, not to the/bin/sh
symlink itself.Thanks
The language idea is good, but:
THREE.WebGLRenderer: A WebGL context could not be created. Reason: WebGL is currently disabled
.Seriously? Why do I need WebGL to read TEXT in docs? :/
let
What are you talking about?
The Javascript style syntax
let
is also used to declare values in better languages than JavaScript, such as Haskell and ML family languages like OCaml and F#
About the
let
keyword, which is used to declare a variable.I thought so, but why do they object? Do they want Bash’s error-prone implicit variable declaration?
They, most probably, just didn’t like the name.
Compiling to bash seems awesome, but on the other hand I don’t think anyone other than the person who wrote it in amber will run a bash file that looks like machine-generated gibberish on their machine.
I disagree. People run Bash scripts they haven’t read all the time.
Hell some installers are technically Bash scripts with a zip embedded in them.
Compiling to bash seems awesome
See, i disagree because
I don’t think anyone other than the person who wrote it in amber will run a bash file that looks like machine-generated gibberish on their machine.
Lol I barely want to run (or read) human generated bash, machine generated bash sounds like a new fresh hell that I don’t wanna touch with a ten foot pole.
How is it using something like this vs just a bash alternative. Can you use this in the shell or only as a compiled language?
If you can use an alternative then do that. This is for situations where you can’t use an alternative or don’t want users to have to install anything else.
you still have to install this though
You don’t have to install it on the machine where the script is run. That’s the point.
with no support for associative arrays (dicts / hashmaps) or custom data structs this looks very limited to me
Does Bash support those? I think the idea is that it’s basically Bash, as if written by a sane person. So it supports the same features as Bash but without the army of footguns.
A language being compiled should be able to support higher-level language concepts than what the target supports natively. That’s how compiling works in the first place.
That depends on how readable you want the output to be. It’s already pretty bad on that front. If you start supporting arbitrary features it’s going to end up as a bytecode interpreter. Which would be pretty cool too tbf! Has anyone written a WASM runtime in bash? 😄
Honestly, wouldn’t it be great if POSIX eventually specified a WASM runtime?
it does, well at least associative arrays
There’s a joke here but I’m not clever enough to make it.
Pretty cool bug. Looks like a surreal meme
what browser are you using? It renders just fine on mobile and desktop to me
Whatever boost defaults to on a note9
As a long-time bash, awk and sed scripter who knows he’ll probably get downvoted into oblivion for this my recommendation: learn PowerShell
It’s open-source and completely cross-platform - I use it on Macs, Linux and Windows machines - and you don’t know what you’re missing until you try a fully objected-oriented scripting language and shell. No more parsing text, built-in support for scalars, arrays, hash maps/associative arrays, and more complex types like version numbers, IP addresses, synchronized dictionaries and basically anything available in .Net. Read and write csv, json and xml natively and simply. Built-in support for regular expressions throughout, web service calls, remote script execution, and parallel and asynchronous jobs and lots and lots of libraries for all kinds of things.
Seriously, I know its popular and often-deserved to hate on Microsoft but PowerShell is a kick-ass, cross-platform, open-source, modern shell done right, even if it does have a dumb name imo. Once you start learning it you won’t want to go back to any other.
I appreciate you sharing your perspective. Mine runs counter to it.
The more PowerShell I learn, the more I dislike it.As someone who spent 2 years learning and writing PowerShell for work… It’s… Okay. Way easier to make stuff work then bash, and gets really powerful when you make libraries for it. But… I prefer Python and GoLang for building scripts and small apps.
Do you write it for work?
I do. Currently I use it mostly for personal stuff as part of my time spent on production support. Importing data from queries, exporting spreadsheets, reading complex json data and extracting needed info, etc. In the past when I was on DevOps used it with Jenkins and various automation processes, and I’ve used it as a developer to create test environments and test data.
Just learn Bash lol
I’m trying but I’m shooting my own foot all the time 😢
It’s okay it’s filled with foot guns.