Turing-completeness, of course. After that, it's all a matter of allowing you to stay as focused as possible on the task at hand: some reasonable way to express your chosen paradigm, library support for things ancillary to your actual task, and some measure of support in the tools you find useful.
It actually can have some benefits -- a language without any unbounded loops or recursion isn't Turing-complete, but you do get a static guarantee of termination. NASA, for example, writes much of their C code only with bounded recursion. So they can't compute some things, but they can be sure that the Mars lander never gets stuck in an infinite loop.
"some measure of support" like a way of interacting with the outside world. The pure SKI calculus is Turing complete, but no amount of library code (also written in the pure SKI calculus) or syntactic sugar for expressing your favorite paradigm will let you write cat(1) in it.
If you're soft real-time so that performance is a correctness issue you need more than Turing-completeness. I don't know off the top of my head if there's a name for a constant-slowdown universal computer or if such a thing is possible.
Comments
Turing-completeness, of course. After that, it's all a matter of allowing you to stay as focused as possible on the task at hand: some reasonable way to express your chosen paradigm, library support for things ancillary to your actual task, and some measure of support in the tools you find useful.
> Turing-completeness, of course.
Lots of useful programs can be written without turing completeness. It can be useful, but only for a limited problem domain.
It actually can have some benefits -- a language without any unbounded loops or recursion isn't Turing-complete, but you do get a static guarantee of termination. NASA, for example, writes much of their C code only with bounded recursion. So they can't compute some things, but they can be sure that the Mars lander never gets stuck in an infinite loop.
have you got any sources telling about this? I can't seem to find any. Would be a nice read
Here's the official NASA JPL C coding standard
http://lars-lab.jpl.nasa.gov/JPL_Coding_Standard_C.pdf
Page 10 describes loop bounds and recursion limitations.
"Lots of useful programs can be written without turing completeness."
Including Bitcoin transactions - I learned this from elsewhere on HN today.
FYI: https://en.bitcoin.it/wiki/Script
Fascinating. What is this?
I saw a reference to Bitcoin transactions embedding executable content in another thread and was slightly taken aback:
https://news.ycombinator.com/item?id=5496740
"some measure of support" like a way of interacting with the outside world. The pure SKI calculus is Turing complete, but no amount of library code (also written in the pure SKI calculus) or syntactic sugar for expressing your favorite paradigm will let you write cat(1) in it.
If you're soft real-time so that performance is a correctness issue you need more than Turing-completeness. I don't know off the top of my head if there's a name for a constant-slowdown universal computer or if such a thing is possible.