typed-lambda calculus, regular expressions and any other language based on finite state automata (eg: lexx and yacc) and SQL are all programming languages which are not turing complete.
If these are not programming languages, then what are they?
Those are precisely the ones where I constantly find myself wishing that they were Turing-complete. (With the possible exception of regexes. I just wish those were context-free grammars.)
I'd also add configuration files to the list. I can't count the number of times I've wished I could tell some program to execute such-and-such closure of config settings under such-and-such runtime conditions. Of course, down that path lies madness (and sendmail.cf) if done incorrectly.
A GOOD MIX of declarative and T.C. is best in my opinion. Relational programming is an example of a powerful declarative metaphore; however, it usually cannot do the entire job by itself (at least not conveniently for the developer). (Also, SQL is not the pinnacle of possible relational languages, but that is another story). The skill is in getting the mix right.
Interestingly, Perl regexes are Turing complete...
Still, I agree with Tablizer, since constraints can be liberating. Creating semantic barriers at the edges of your design will let you branch it out more easily elsewhere.
Discussion (10)
I disagree with the description, but I do agree that not all programming languages are Turing complete.
In my experience, the ones that aren't Turing-complete just leave you yearning for replacements that are.
SQL? make? ant? regex?
they all have their places surely?
Those are precisely the ones where I constantly find myself wishing that they were Turing-complete. (With the possible exception of regexes. I just wish those were context-free grammars.)
I'd also add configuration files to the list. I can't count the number of times I've wished I could tell some program to execute such-and-such closure of config settings under such-and-such runtime conditions. Of course, down that path lies madness (and sendmail.cf) if done incorrectly.
Claims inspired by this comment
Most non-turing complete languages would benefit from a backticks like syntax featureA GOOD MIX of declarative and T.C. is best in my opinion. Relational programming is an example of a powerful declarative metaphore; however, it usually cannot do the entire job by itself (at least not conveniently for the developer). (Also, SQL is not the pinnacle of possible relational languages, but that is another story). The skill is in getting the mix right.
Interestingly, Perl regexes are Turing complete...
Still, I agree with Tablizer, since constraints can be liberating. Creating semantic barriers at the edges of your design will let you branch it out more easily elsewhere.
ANSI SQL has been found wanting. Hence T-SQL, PL-SQL, etc.
Misread the title. Pretty sure T-SQL and PL-SQL are not turing complete either.
Ok, it's 9 months old, but I'm laughing at "down that path lies madness (and sendmail.cf)".
Ermmm.... T-SQL PL-SQL are definitely turing complete. What makes you think they aren't?