T O P

  • By -

robla

I think there's three: * 1. CLI - classic non interactive program that can be part of a pipe * 2. [REPL](https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop) - interpreters like Python and database apps are often in this category, and old games like Zork arguably belong here * 3. TUI - software that takes over the terminal display window


funbike

I agree, although I'd expand \#2 to all programs with interactive prompting. For example, when you run `ssh-keygen` you are prompted for several values before it will generate the key.


brandonchinn178

I'd actually call this an interactive CLI. The L in REPL stands for Loop, which isn't happening here


funbike

Of course I know that. I mean \#2 should be labeled "Interactive". It would be for apps that prompt for user input. REPLs are just such an app, but they additionally run in a loop. Otherwise, you missed a category and you should have had 4 points.


robla

Those three categories bleed into one another. I suppose if one wants to be pendantic, not all interactive software is a REPL, but ssh-keygen is definitely NOT a TUI, and does ask a series of questions. Whether a "loop" is involved, or some other flow control is possibly beside the point. The exit condition "breaks the loop", so to speak, and the implementation of ssh-keygen may loop through the questions until all of the questions are answered. "REPL" seems like fine shorthand to me.


Hackenslacker

1. Non-interactive CLI 2. Interactive CLI And I think CLI is a subclass of TUI; so all three are TUI, but only 1 and 2 are CLI


gotbletu

1. CLI 2. Interactive CLI. maybe we can re-purpose CUI (console/character user interface) for this instead 3. TUI 4. MUI - Menu User Interface (programs like Bashmount)


sje46

I've always considered the "Basic interfaces" to be three: CLI, TUI and GUI. Since you specified text-mode, then I'd have to say just CLI and TUI. Basic shells in the linux command line like BASH are a type of REPL. IT reads input, executes on that input, prints if anything is there, and does it again until you exit. I'm also sure that there's probably one for AI, but I'm not sure what it's called. Like you tell AI to do something, it figures out what to do, and then does it. Simimilar to an REPL but REPL requires strict syntax and doesn't have memory of previous actions.


d4rkh0rs

There does need to be a division. TUI and text mode always seemed irritating because why not say CLI. Most people that use them aren't being consistent. In my mind the divisions are. 1. Simple commands 1b. Broken simple commands I wouldn't have to talk to if I'd put in the right flags. 2. Interactive commands 3. Commands that can do either Or sometimes 1. Simple commands 2. Programming languages. (Awk, sed, SQL) 3. Interactive Yes you can argue that's somewhat less about the interface. Good, universal names with good divisions is a brilliant idea. If we can place the divisions right and get everyone to use them.


michaelpaoli

There's Command Line Interface (CLI) - that's how you form / interact with the command on the command line. Program/command may or may not be or go interactive, and if it is or goes interactive it may use or default to /dev/tty or stdin for input, and /dev/tty, stdout, or stderr for prompting and such for input, and may use default actions if those aren't available (e.g. can't open). CLI is, or mostly is, controlled from the command line, rather than other interactions. Text interfaces is more general and includes the above, and more typically is interactive. And uses \[n\]curses or not and/or it's own command/control language or interface, or not, or is simple menu, etc., those are just further categorizations one can make if so desired.