>Meanwhile, Go has implicit semicolons and boasts about a compiler hack from, none other than, BCPL.So does Haskell, albeit merged with Python's off-side rule, such that specifically aligned whitespace inserts semicolons and braces in constructs like "do", making both
take m ys = case (m,ys) of
(0,_) -> []
(_,[]) -> []
(n,x:xs) -> x : take (n-1) xs
and
take m ys = case (m,ys) of {
(0,_) -> [];
(_,[]) -> [];
(n,x:xs) -> x : take (n-1) xs;
}
equally acceptable; in fact the former renders to the latter. Haskell isn't exactly ALGOL-family.
Also, I wouldn't say Go *brags* about borrowing the trick from BCPL, but rather gives credit where credit is due. There, you could indeed deduce a specific link, but it's not like the feature is a specific mark of the ALGOL family, as seen in the Haskell example.
>I was primarily talking about all of the reserved keywords and other syntax one must learn. It's rather strange to me.Inflexibility to one person is consistency to somebody else, and consistency is key in large-scale development. Imagine the chaos that would ensue if choice of keywords were up to a *style guide* in a large project. Go is built for development in the large. However, unlike Java, Go was not built explicitly for people dumber than the creators, otherwise Rob et al. would still be using C. In fact, they wrote a language *they* wanted to use.
>Just now that I find it strange to look at a language like Go, where you can't mess with the compiler on a whim (Unless I'm wrong?), and I call that less powerful. It's alien to me to look at a language where you have to be so redundant and verbose.See above, although the compiler's mechanics are mostly found in the standard library. For instance, gofmt (pretty prints to the vetted format) is a relatively trivial application that uses the standard library's built-in resources for manipulating the language's AST. It parses, but does not lex, then spits out the AST pretty-printed. This isn't accessible at run time on the code itself, since it's compiled, sure, but the language is far easier to manipulate itself with, than, say C. At the cost of being even less syntactically flexible than C, the grammar *is* much simpler, and as a result, it's remarkably easy to write utilities of this style.
>I would like to know why you like Go, if you'll tell me.You'll find a lot of reasons in what I just typed. There are probably others.
The most important, I suppose, is that I actually enjoy writing code in it, and going back to Python, Ruby, Java, C++, or GNU/POSIX/BSD C just feels depressing. The only languages that I *enjoy* as much as Go are probably Plan 9 C and R5RS Scheme.