r/ProgrammingLanguages • u/Alert-Neck7679 • 4d ago
Discussion Linux-like IO API
I'm building my own interpreted language.
I had an idea, to base my I/O API on the linux terminal commands, that many developers already know, so a user wouldn't need to learn an entire new API.
This is a basic example:
using io
// create a directory
mkdir("notes")
cd("notes")
// create files with content
echo("Do my math.", "A note about homework.txt")
echo("Buy milk and bread.", "shopping list.txt")
const currentCD = pwd()
const allFilesAndSubDirs = ls()
debug(cat("shopping list.txt")) // prints "Buy milk and bread."
but I'm not that sure that this is a good idea, maybe some techniques are good for terminals but bad for programming, and some of the function names might be confusing (like pwd() which is "print working directory" but in my language it does not exactly PRINT anything, but just returns a string value).
What do you think?
4
Upvotes
6
u/koflerdavid 3d ago
You are likely overestimating the effort it would take to learn an IO API. What you would design by necessity has to look a lot like what existing programming languages do; you would have to actively go out of your way to end up with something truly alien-looking.
Regarding using Unix shell commands for names: I think those are not necessarily the best inspiration for an API. They are acronyms, which you already recognize to not fit your use cases well. Are you also going to copy the horrible syntax of
find,ps, and friends? Do consider that the shell has a problematic heritage regarding separators (spaces, lines, \0) and tools likexargsto deal with those. Also, each of these commands supports a lot of option arguments, and a lot of them are crucial; are you also going to support them? Where do you draw a limit?Unless you're actually implementing a shell, I don't think it's overall a good idea to support these names since you can easily come up with something way better.