# Why not adopt "Python Style" indentation for Ruby?

**URL:** <https://www.ruby-forum.com/t/why-not-adopt-python-style-indentation-for-ruby/104458>\
**Category:** Ruby\
**Created:** [May 18, 2007, 9:26am UTC](https://www.ruby-forum.com/t/why-not-adopt-python-style-indentation-for-ruby/104458 "2007-05-18T09:26:28Z")\
**Posts on this page:** 3\
**Page:** 8

<div class="post-metadata">

**Author:** ![chrisdwan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/7feea3/32.png) [@chrisdwan](https://www.ruby-forum.com/u/chrisdwan)\
**Post date:** [July 29, 2013, 9:24pm UTC](https://www.ruby-forum.com/t/why-not-adopt-python-style-indentation-for-ruby/104458/141 "2013-07-29T21:24:58Z")

</div>

Darryl Pierce wrote in post #1117038:

> How does additional indentation rather than using braces make for less  
> typing or more compact code? It would seem to me to be the opposite,  
> using spaces to define a code block makes for longer source files. I’m  
> talking about the code that _I_ write, as opposed to the code that’s  
> generated by some code processor.

Well, have you used haml before? It is the same thing; instead of  
writing all the HTML tags, you used some convention, and the convention  
is based on indentation besides other things. I think the proponents of  
indentation (and the removal of “end” keyword) want a different way to  
input the code, but the end result is the same. Just like haml code  
will be transformed to HTML code, the proponents want to be able to  
write

if condition  
exec1  
exec2  
exec3

and it will be transformed to

if condition  
exec1  
exec2  
end  
exec3

Of course, the original syntax is still there, and a person can choose  
which method to input the code, probably with different file suffix if  
the end keyword is to be made optional. I proposed this in 2002 and I  
created for myself a simple translator.

> > We can  
> > also think about Groovy and Java, and to different extent, Dart and  
> > JavaScript.
> 
> Can you explain this part to me, please?

Groovy and Java are fundamentally the same, because all Groovy code will  
be compiled to JVM. But in Groovy a lot of things are optional, such  
as declaration of variables, so the code is more concise. Similarly,  
all Dart code will be translated to JavaScript code. You can just  
Google Groovy and Dart to get more information.

Best regards,

Bill

---

<div class="post-metadata">

**Author:** ![chrisdwan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/7feea3/32.png) [@chrisdwan](https://www.ruby-forum.com/u/chrisdwan)\
**Post date:** [November 30, 2013, 11:38am UTC](https://www.ruby-forum.com/t/why-not-adopt-python-style-indentation-for-ruby/104458/142 "2013-11-30T11:38:43Z")

</div>

What I dislike about indent is that you need to satisfy the parser in  
order to make the program run.

It’s like an additional control element, like ‘;’.

I do not think a language should care about indentation.

With that having said, I concur with the initial statement - “end” does  
not give me, as a programmer, meaningful information. I only have to use  
it to satisfy the ruby parser - in python, you can omit that, but you  
(a) must then indent properly (which is, again, to satisfy the parser)  
and (b) you have to use the strange ‘:’, which is annoying.

What I would love to have, however, would be a per-file option that  
would allow me to omit end for a given .rb file. Just like shebang or  
encoding lines could be used.

I could then write specific classes in a single .rb file (one class per  
file) and they would be more readable too.

---

<div class="post-metadata">

**Author:** ![chrisdwan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/7feea3/32.png) [@chrisdwan](https://www.ruby-forum.com/u/chrisdwan)\
**Post date:** [November 30, 2013, 7:13pm UTC](https://www.ruby-forum.com/t/why-not-adopt-python-style-indentation-for-ruby/104458/143 "2013-11-30T19:13:48Z")

</div>

It’s interesting the terminators in ruby which are end, }, ||, && are  
all  
basic syntax sugar for semi colon ;

The colon in python reveals that it’s actually a syntax tree where the  
colon probably saves the interpreter a single pass.

Both Ruby and Python have different philosophies. Pythonists enjoy the  
concept of “one way” style which probably makes it easier to study other  
programmers code simply because it looks the same as yours where  
Rubyists  
enjoy the various programming styles which lack such restriction i.e. it  
can look like anything which opens up many contexts which can be useful.

OP if you like the concept of restriction within ruby you are correct it  
wouldn’t be difficult to make simply because it won’t stop you from  
doing  
so but it may be difficult in getting your idea adopted simply because,  
as  
I mentioned, ruby programmers enjoy having a programmable programming  
language over just a general purpose one.

FWIW I helped a friend once with a simple hack to allow them to write  
python with 2 spaces. Also nothing more than a small quick one-line hack  
to  
make it work.

[Previous page](https://www.ruby-forum.com/t/why-not-adopt-python-style-indentation-for-ruby/104458.md?page=7)
