Turing Tarpit
en.wikipedia.org
en.wikipedia.org
A FRACTRAN program is a list of fractions, rational numbers. You input an integer and then you find the first fraction that gives you an integer when multiplied by your input. That process is repeated with the new, multiplied number until there is no fraction that produces an integer when multiplied.
Conway wrote a program that generates primes, there's others that mathematical sequences, but my favorite is just the addition program:
3/2
Given an input 2^x * 3^y, it will stop at 3^(x+y), which adds x and y together.Is the second language really worse than the first? They can both be used the same way, but the second one can allow for some shortcuts in configuration by abusing turing completeness.
I'd guess the arguments would be: the 2nd language is better, it can create an identical configuration in less lines. Alternatively: the 1st language is better as should allow for easier parsing and is simpler to verify for correctness.
A simple macro or syntax sugar could save you the same lines. A good language will give you a good, terse syntax for representing common configurations, and enough flexibility for clearly denoting the uncommon ones. If your configuration is particularly obscure, it should need more lines to express.
It is not worth sacrificing verifiable correctness to induce this kind of gain when there are better ways of doing it.
> It is not worth sacrificing verifiable correctness to induce this kind of gain when there are better ways of doing it.
It's also important to remember it's not always worth sacrificing power to gain verifiable correctness. Not every class of problems needs it.
"Freedom for security", something something. ;).
WARNING: TeX is Turing complete. Proceed with caution!
(Obviously not entirely specific to non-Turing-complete environments but they tend to be the worst offenders and the hardest to work around for obvious reasons.)
One thing I find is that novices are creating rule bases that form infinite loops and that the CS community has been paralyzed by the fear of infinite loops and poor scaling for particular reasoning chains.
Working with mainstream languages, however, I don't find infinite loops (or Turing's Halting Problem) to be all that relevant and the big reason is that the mainstream languages that people like to complain about already have structures built in that make infinite loops less likely to happen.
In other words, there's not much in that article to discuss.
I hope one day we will be able to mathematically formulate what is "unnecessary complexity".. but so far, no idea.
I also apply it to improvisation. :)
Which common task could you not perform with Lisp?And if you are stressing on the `Little or no support`,then thats true any of the lesser popular languages isn't it?