From: Michal Suchanek Date: 2011-04-14T19:06:54+09:00 Subject: Re: functional paradigm taking over On 14 April 2011 09:28, Mike Stephens wrote: > Longest post for at least a year. > > It would appear people are comfortable with discussing details but once > you stray into challenging their worldviews, you see quite different > behaviour patterns. > This is not about world views, it's about term borders nitpicking, really. On 14 April 2011 01:44, Kevin wrote: > Ah yes, the old "Oh look specific context" therefore stop reading > definition.  You cannot properly understand the phrase "programming > language" without understanding both terms.  The most important term in this > case being language.  The entire reason the phrase programming language > works is because language is recognized as an expressive system.  In reality > definition twelve takes for granted the kind of input that could be used to > deliver instructions to a machine, it assumes that the method used to > deliver the instructions is of a symbolic nature.  What happens if you are > dealing with a computer that is not digital such as one that functions with > gears?  What happens if some genius manages to use specific frequencies of > sound to deliver instructions to the machine?  Is the system of sounds that > the instructions take the form of not to be considered a language? > > You say I shot myself in the foot but here is something that might interest > you: By your own logic Ruby is not a programming language.  Here's why.  You > wish to separate the Excel environment from the macro system or interpreter > that it contains.  Ruby and all other programming languages can > theoretically be separated in this way as well, the problem here is that if > you separate these things your input is meaningless because the system is > incomplete.  How could you give instructions with Ruby style input without > something that can tell the machine what all those instructions mean?  The > interpreter or compiler allows the computer to understand the directions you > give it in a particular language.  In other words a unit of a system is not > the system.  You cannot separate the Excel environment from the interpreter > and retain results that are meaningful to a computer.  By the same token C++ > or Ruby code cannot be separated from the compiler or interpreter and remain > meaningful to a computer. This distinction was made because earlier somebody said that "true S# programmers use the macro language only as the last resort". Indeed, the macro language(s) that can be used from excel are definitely programming languages but VBA is not funtional or otherwise interesting in any way. The expressions you put into the cells are kind of functional with a solver which might somewhat remind one of Prolog and constraint solving systems based off it but I have no idea how it works internally and how formulating problems to be solvable in Excel compares to formulating problems to be solvable in constraint solvers. As for Turing completeness, game of life or x86 machine code is Turing complete and nobody in their right mind would call it a programming language. Calling something a programming language does in my book imply that - it is meant to be used by humans - it is meant to give instructions to some system, such as a computer, an application, etc. This implies that Excel is not a programming language but the expressions in its cells or VBA which can be used from Excel might, meaning that Excel is an application that includes or integrates one or more languages. Since this is further strengthened by the fact the same or similar expressions can be used in other applications (VBA in other parts of MS office, cell expressions in OpenOffice Calc) I would say Excel is not the language but an implementation or a runtime or a development environment for it. Note that a language can be defined eg. in mathematical sense as a set of words which in turn are defined as succession (or string if you want) of symbols of an alphabet which in turn is defined as a set of symbols While this definition is useful for analyzing properties of programming language grammar it is not the definition which makes something a programming language. Regards Michal