castironpi at gmail.com
Sat Jan 17 10:09:40 CET 2009
On Jan 15, 7:02 pm, The Music Guy <music... at alphaios.net> wrote:
> Just out of curiousity, have there been any attempts to make a version
> of Python that looks like actual English text? I mean, so much of Python
> is already based on the English language that it seems like the next
> natural step would be to make a programming language which is actually a
> spoken one.
> For example, the following code...
> >>> import os
> >>> def list_files(dirname):
> >>> for p in os.listdir(dirname):
> >>> print p
> >>> list_files("some_dir")
> ...might be translated as...
> >>> Import the operating system module.
> >>> Define a new function as "list files" which accepts
> "a path" and does the following:
> For every item in the list returned by the operating system's
> directory listing of the given path, do the following:
> Print the item.
> >>> List files from "some_dir".
> Obviously, creating a parser capable of handling such "code" would
> require a very good understanding not only of the English language but
> also of how ideas expressed in spoken languages are represented in terms
> that a computer can understand.
> A language like this would, of course, blow a lot of staple coding
> coding concepts like "variables," "objects," etc. right out of the
> water. I think, however, that it could be done, and wouldn't necessarily
> have to be any slower than any other scripting language as any text/code
> could be cached as bytecode, just like Python.
> I know it's sort of silly but I think something like this would be very
> interesting, maybe even useful. ^_^
I'm actually moderately interested in this idea. I was pursuing it a
while back, but didn't find anyone else interested. You want to avoid
requiring an understanding, since English syntax doesn't always
guarantee its semantics. Even a trivial transformation from non-
delimited English can cause an AmbiguityException.
The basics started like this:
'a= open "file1.py"' --> 'a= open( "file1.py" )'
append 0 to a
append 1 to a
a.append( 0 )
a.append( 1 )
However, as you can see, 'open a' can map to both 'a.open()' and 'open
( a )'. If 'open' is both a method on 'a', and a callable defined in
current scope, the expression is ambiguous and raises an
If you're willing to constrain yourself to a subset of English which
the language will understand, you open a lot of doors; that is, if you
will accept a 'more natural Python' instead of 'true natural Python'.
More information about the Python-list