In honor of resurrecting my blog (and while waiting for a long compile to finish), I'm going to repost some old, still relevant, Google+ posts that not a heck of a lot of people have read (given how Google+ isn't exactly the most popular social network out there), on here. I'm only going back in time about a year, though. I'm also only going to post long, "thoughtful" (at least I think so) stuff. Reposts of amusing pictures or links to articles by others will not be showing up here.
Second, by claiming that Python and Ruby do ASI (their exact words!), it shows that you don't know Python and (probably) Ruby that well either. Python does NOT do ASI. The Python standard explicitly defines the newline as the statement terminator. If you want to continue a statement across multiple lines, you either need to escape the newline with a '\' character or have the statement enclosed within parentheses, brackets, etc. Newlines are all that matter and the interpreter doesn't give a rat's booty about semicolons when it comes to statement termination. I don't know Ruby that well, but I think it's standard also states more or less the same thing (though I think you can use the semicolon to combine multiple statements on a single line – but that's the only case where semicolons between statements matter). Making this argument is akin to arguing that you should use line numbers in all your programs because that's how BASIC did it on your Commodore 64. FWIW, those old BASICs allowed you to combine multiple statements on a single line with a colon (':'), but nowhere in their documentation did they say anything about doing "automatic colon insertion" (that sounds kinda wrong, doesn't it, now that I think about it?) between different lines of code.
Admittedly, there are some funky issues that ASI brings up even if you do use semicolons (such as inserting a semicolon on lines that contain solitary return statements before the newline), but the fact remains that the standard defines the semicolon as the proper statement terminator. I also admit that there may be an aesthetic reason to prefer writing semicolon-free (though I don't see what the big deal is – properly working code looks just as good to me with or without semicolons), but hey, the language says you should use them, so use them already. Personally, I've got no issue in general with a language using semicolons or newlines to separate statements, so long as programmers use the proper way as defined in the language's standard to separate their statements.
Maybe some future version standard will clean this up. I think the only way to do so would be to explicitly make the newline, and not the semicolon, the primary statement terminator and reserve the semicolon for multiple statements on a single line (semicolons at the end of a line would just parse as empty statements). I think this could be done without breaking existing code, but hey, I'm just a language user, not designer, so what do I know?