On Jan 15, 7:02 pm, The Music Guy <music...@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") > > foo > bar > etc > > ...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". > > foo > bar > etc > > 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" )' ''' a= nat_list() append 0 to a append 1 to a sort a ''' --> ''' a= nat_list() a.append( 0 ) a.append( 1 ) a.sort() ''' 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 AmbiguityException. 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'. -- http://mail.python.org/mailman/listinfo/python-list