On Wed, Apr 17, 2013 at 7:04 PM, Mark Janssen <dreamingforw...@gmail.com> wrote: > On Wed, Apr 17, 2013 at 5:33 PM, Ian Kelly <ian.g.ke...@gmail.com> wrote: >> On Wed, Apr 17, 2013 at 5:40 PM, Mark Janssen <dreamingforw...@gmail.com> >> wrote: >>> Rercursion the "bedrock" of language-design. I don't think so. From >>> what I know, a well-defined language ends at its symbols. It makes no >>> use of "infinities". >> >> From what I know, you can't have a Turing-complete language without >> some form of recursion. So yeah, it's pretty damn important in >> language design. > > A Turing-complete language generally has items that are defined in > terms of other, simpler items, but this is not called recursion in any > C.S. paper I know. > In C.S. of my world, recursion is a specific term that is related to > functional calculii. This type of recursion is sometimes often found > in imperative/iterative languages, but is rooted in the fomer.
You are thinking of recursive procedures. Recursion is the more general concept of self-repetition. In a programming language, it can be implemented by recursive procedures, or it can equivalently be implemented by looping constructs. Incidentally, in computability theory (also known as "recursion theory"), "recursive" is basically a synonym for "computable", which relates back to my point that recursion is necessary for Turing-completeness; a Turing-complete language is one that can compute any computable (i.e. recursive) function. >>> Conflating a programming >>> language ("an infinite object such as python language") with a program >>> written in that language ("there are an infinite number of python >>> programs"). These two are entirely separate (at least anything >>> implemented on a real computer). >> >> Mathematically, a language (e.g. a programming language) is a set of >> well-formed strings (i.e. programs) constructed from the symbols of an >> alphabet (i.e. tokens). > > Mathematically, perhaps, but from C.S. theory, a language is a > fully-specified set of expressions and tokens which are considered > valid -- it's grammar. Sorry, but as computer science *is* math, the computer science definition is the same as the mathematical one. See for example this CS paper which formally defines "language" as I described: http://www.cs.ucr.edu/~jiang/cs215/tao-new.pdf >> For most languages, this set is infinite; > > This set is always finite, as you can see on the specification for > Python's language. No, the set of valid Python programs is not finite. >> saying "the Python language is infinite" is equivalent to saying >> "there are an infinite number of Python programs". > > I don't think Guido would agree that "the Python language is > infinite", but then perhaps he doesn't care either. > >> A finite, non-recursive grammar can only hope to accept a finite >> number of strings. > > Is the language we're speaking in now one with a finite, non-recursive > grammar? No, English is also recursive. -- http://mail.python.org/mailman/listinfo/python-list