3 ms·
This is not actually a natural distinction. It's an historical error dating back to OS/360 and JCL (Job Control Language). Fred Brooks, who ran that project, ha
by madhadron 7y ago
This is not actually a natural distinction. It's an historical error dating back to OS/360 and JCL (Job Control Language). Fred Brooks, who ran that project, has since claimed it was a mistake.
For examples of languages that excel at quick interaction without the failures of shells, look at Rexx and Rebol. Or power up Smalltalk.
- chubot 7y agoYup, I've noticed that: 1) It's pretty natural to morph shell (OSH) into something like Python. bash already has anemic arrays and dicts -- might as well give them proper syntax and semantics. 2) Python pretty naturally morphs into something like Java (or even ML / OCaml) with MyPy. I statically typed the whole OSH front end recently and it worked well. I don't believe in the artificial barriers between interactive and "compiled" languages. Those two things aren't mutually exclusive. Langauges like C++, Zig, and Jai have Turing-complete interpreters in their compilers. OCaml is normally compiled but it also has a nice REPL that people often use in practice (the type inference helps). So there is really no reason to think of interpreters vs. compilers as separate. Both of them should be interactive. Your compiler should be infinitely fast. ----- I probably won't get to this for years, but I can definitely see a path toward making Oil an efficient compiled language. It almost falls naturally out of the odd "bootstrapping" I'm doing.
- madhadron 7y ago> I don't believe in the artificial barriers between interactive and "compiled" languages. Absolutely. Corman Common Lisp was a great example of this. The REPL compiled to efficient x86 machine code.
- chubot 7y agoYup, I forgot to mention the nice new example of Julia, which is used interactively, dynamically typed, compiles to machine code, and has introspection just like Lisp (e.g. SBCL afaik): http://www.jlhub.com/julia/manual/en/function/code_native http://www.jlhub.com/julia/manual/en/function/code_native It's basically a Lisp with syntax, being bootstrapped with femtolisp for its Lisp-like macro system. https://docs.julialang.org/en/v1/manual/metaprogramming/index.html https://docs.julialang.org/en/v1/manual/metaprogramming/inde...
- lispm 7y agoMany Common Lisp implementations interactively compile to native code.
- burnte 7y ago"This is not actually a natural distinction" Doesn't have to be, they overlap a lot, but what I described I feel are two incredibly important distinctions.