r/ProgrammingLanguages 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

8 comments sorted by

View all comments

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 like xargs to 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.