Back to News
Advertisement
Advertisement

⚡ Community Insights

Discussion Sentiment

71% Positive

Analyzed from 784 words in the discussion.

Trending Topics

#bash#language#shell#why#something#script#argument#another#ruby#amber

Discussion (63 Comments)Read Original on HackerNews

awinter-pyabout 17 hours ago
I tried this or something similar a while ago and really wanted a better argument parsing experience

https://docs.amber-lang.com/0.6.0-alpha/basic_syntax/importi...

it seems like automatic `--help` + named args is still not a thing? if it were, I'd be all over this

ivanjermakovabout 21 hours ago
Any language is a shell script if you're brave enough: https://en.wikipedia.org/wiki/Shebang_%28Unix%29
b-kfabout 20 hours ago
Exactly

  #!/usr/bin/tcc -run
  
  #include <stdio.h>
  
  int main(int argc, char **argv)
  {
      printf("Hello from C!\n");
  
      for (int i = 1; i < argc; ++i)
          printf("argument %d: %s\n", i, argv[i]);
  
      return 0;
  }
And ready is your cscript :)

  $ chmod u+x cscript && ./cscript hello world
  Hello from C!
  argument 1: hello
  argument 2: world
(I can't even articulate why I love it so much that this works)
xixixaoabout 19 hours ago
Can you change the current working directory? If not, it's not a shell script.
onlyrealcuzzoabout 21 hours ago
Just wanted to say that I think you did a great job with your examples showing why someone might be interested in this language.
BadBadJellyBeanabout 21 hours ago
This looks great. We have a lot of bash tools because it's the only stable interpreter that we have readily available on all our systems. But bash is a pain to write so this might actually make things easier.
RodgerTheGreatabout 20 hours ago
How many places do you have Bash, but not AWK?
xixixaoabout 19 hours ago
1. From the docs: "In the the project it is production ready because it is already used in this context because the shell code generated is tested and confirmed that works, the language is evolving with the tooling set."

Hmm...

2. Support Fish too. Having one language that can generate zsh (macOS default), Fish (power users default), and bash would be really nice!

karma_daemonabout 21 hours ago
unclear use case imo - this sacrifices the ergonomics of actual bash scripting, and hides it behind another language

If your script is complex enough to need a higher level language you might as well just switch to python

Panzerschrekabout 9 hours ago
How does it achieve memory safety? Via garbage collection? Via runtime checks? Via some clever compile-time analysis?
zombiefromfoabout 3 hours ago
First of it's not compiled, it's transpiled

Second, just why?

xystabout 18 hours ago
I’ll give it a shot.

Side note: the image of project founder cosplaying as Steve Jobs on front page had me dying.

bbkaneabout 18 hours ago
I clicked the link to see this image and wasn't disappointed. It's fantastic!
wg0about 21 hours ago
Much needed. I have hard time understanding bash.
codingjoeabout 19 hours ago
Hm... But why not use Python
loboftaabout 18 hours ago
Because it's not preinstalled on every machine. Bash is a good target for portability reasons, but it's a shitty language to write in. If ever I get in the position again to have to write some bash, like for an installer or so, I'm going to be looking into Amber again.
throawayontheabout 15 hours ago
portability but not posix shell? tsk tsk
wpmabout 10 hours ago
Portability is dead now anyways. Something can have "sh" but all you can depend on are sh semantics and built ins. The whole point of a shell script is to compose a larger workflow out of the command line tools preinstalled on a system. I can't guarantee a sh script written on macOS is going to work on FreeBSD or Linux anyways, so there's zero reason to limit myself to sh.
Advertisement
ktimespiabout 18 hours ago
I'm a fan of this project. Great work!
gdevenyiabout 21 hours ago
> Typescript to bash

Literally the worst of both worlds.

classifiedabout 21 hours ago
Bash is great for orchestrating other Unix tools into an automated workflow. Only when that workflow requires stuff that Bash doesn't have is it time to break out Python. Integrate Shellcheck into your editor, and you get automated help for writing more reliable Bash.
Hammershaftabout 21 hours ago
Another alternative for writing Bash is Babashka, which is a Clojure dialect.
serious_angelabout 21 hours ago
Thank you, but... why not just write in Bash, or the shell you prefer? Why learn a yet another opinionated wrapper?

Yes, Bash or any shell is a very complex and utterly environment dependent language to approach with all due care for security and compatibility, yet hence the lack of wrapper that may not even be aware of these crucial cases at all.

threatofrainabout 21 hours ago
Your argument is down to the weights.

There are other communities where movement in the language came from outside tooling that built extensions on top of the language, such as Sass or TypeScript.

nicceabout 21 hours ago
It always comes to be a social problem. Sort of. I want to use X instead of Y, but maybe everyone does not want the same, or adaption of X is harder in technology wise. So I use wrapper Z that compiles to Y, and avoid some problems, but bring new problems. Maybe these problems are smaller ones than just keeping to use Y directly.
greekrich92about 21 hours ago
If you don't want to use it, don't use it
KerrAvonabout 21 hours ago
bash is really painful to use for anything beyond the most rudimentary logic. Bourne and Mashey were terrible language designers. (By contrast, Thompson's V6 shell is very elegant, if limited.)

That said, this should just be a shell itself and not something that generates into other shell dialects. Otherwise, why not use Ruby or something like it that has actual expressive power?

deathanatosabout 20 hours ago
> That said, this should just be a shell itself and not something that generates into other shell dialects. Otherwise, why not use Ruby or something like it that has actual expressive power?

I'm guessing the advantage here would be that the compiled "bytecode" (the resulting bash) can be distributed to systems that would then not need to have Amber installed. (And vs. a real binary from, e.g., Go/Rust/etc., it isn't tied to the platform, either.)

Vs. a Ruby script would require Ruby as a run-time dependency; Amber here is effectively a compile-time dependency.

Python 3 is available basically everywhere these days though, so I think there's still a lot of merit to just using a higher level language like you suggest. Even Ruby, while not available out of the box, is not exactly hard to get on most OSes.

namegulfabout 21 hours ago
In a world where AI can generate any code for any environment, is there a need for another language?

On the other hand, we're at a point for a binary language (or standard / framework) that one AI/LLM creates and another one validates.

What are we missing?

AlecSchuelerabout 20 hours ago
We're missing AI that doesn't still its hand held every step of the way.