Good afternoon. I was thinking about the following question an the answer was less clear than I was originally thinking.
What is the fundamental difference between a Repl and a Shell? In my opinion there is very little, the main differences seem to be what systems they are plugged into. i.e. a shell is plugged into the os and a repl is language specific. Also if we add the nice feature of being able to change previous expressions do both end up looking effectively like a code notebook.
So the final feeling is just that a code notebook is just a fancy Repl.
In which case are code notebooks the future of Repl's/shells. Would you like a code notebook that was able to read your os processes and replace the sell?
Or another way to put it is that a shell is a very lightweight and fast notebook
If I could only have one, I'd go for the speed, footprint, robustness, and accessibility of a shell. it would be fun to look at an infographic of shells and repls and notebooks, showing what's similar and what's different
(so I have nothing to add really, but definitely following as its a way to look at these 3 important UIs I havent thought of before)
Notebook vs. shell: (1) different visual presentation, with notebooks emphasizing history, (2) most notebooks support graphical output display.
Shell vs. REPL: what we call "shell" is both a REPL and a language designed for a REPL interface to the OS (plus OS scripting).
I have seen many attempts to replace the shell by some other language's REPL, by providing a more concise interface to OS services in that other language. LISPers seem particularly tempted by this.
I'd say the critical property of a shell is the ability to run programs written in a variety of languages. It's not just a syntax for an interpreted language but the ability to load arbitrary code from a PATH and give it whatever runtime its shebang/etc. says.
I'm intrigued by this question, and I've been working on a prototype: github.com/topshell-language/topshell