On Thu, Apr 16, 2015 at 2:07 PM, Blake McBride <blake1...@gmail.com> wrote: > I like a lot of what I've seen in Python, however, after 35 years and > probably a dozen languages under my belt, I very strongly disagree with the > notion of using white space to delimit blocks. Not wanting to beat what I > believe is probably a dead horse, I have one question. > > Is there a utility that will allow me to write Python-like code that includes > some block delimiter that I can see, that converts the code into runnable > Python code? If so, where can I find it? >
Python has a mechanic for handling syntax changes in a backward-compatible way: the __future__ module. Some handy reading: https://docs.python.org/3/library/__future__.html https://www.python.org/dev/peps/pep-0236/ https://docs.python.org/3/reference/simple_stmts.html#future To make use of this, put this line at the top of your program: from __future__ import braces Give it a try, I'll wait for you. Or paste that in at the interactive interpreter prompt. Done it? Okay. Now you understand how Python's developers feel about this kind of thing :) What you may want to consider is a Python-like language that uses a different syntax: Pike. It's semantically very similar to Python, but syntactically similar to C. Learn both, and then you'll understand a bit more of the debate. I used to be firmly on the side of braces, but not so much now; Python's use of indentation eliminates some redundancy (since, after all, you're probably going to be indenting correctly anyway). Yes, it's using something syntactically that you might think of as pure formatting (leading whitespace on a line), but it's not fundamentally illogical or anything. You can, of course, come up with a syntax for a "brace-blocked Python", and precompile it into actual runnable Python code. That'd be fairly straight-forward. But the question is, why do it? You wouldn't be able to take much advantage of it without making a whole lot of other changes, which would basically mean turning it into a completely different language, and then there's not a lot of point using Python behind the scenes. For instance, Python has declared mutable globals, whereas bracey languages usually have declared locals, or in the case of PHP, declared globals (mutable or read-only). Which way would you do it? And what about semicolons? If you're going to allow blocks of code to be defined by visible characters instead of whitespace, wouldn't it make sense to do the same with statements? In Python, for instance, you can't do this: if x==1: for i in range(3): print(i) but you can do this: if x==1: print(1); print(2); and they'll both be governed by the 'if'. I strongly recommend NOT doing a half-way change like this, just adding braces and nothing more. All you'll end up doing is wishing that Python were like C in some other way, and then another, and then another, and you'll find yourself hating Python. Learn Python the way Python is meant to be, and learn a different language if you like its semantics but not its syntax. And I'm happy to talk to you off-list about Pike. In my opinion, it and Python are the two best programming languages in the world. ChrisA -- https://mail.python.org/mailman/listinfo/python-list