I agree with everything you wrote except this. After 3 years in a job where I had to use Ruby on Rails, I am utterly tired of "magic" and I regret the many hours of my life I have wasted debugging issues that were created/concealed by it. Lack of magic is a feature in my opinion. But as you said, that's all this is - opinions.
They can, but that doesn't necessarily mean they do.
For example, the usage of Elixir macros, which are the primary metaprogramming tool in Elixir, is discouraged in the docs:
http://elixir-lang.org/getting-started/meta/macros.html#fore...
And actually, this is another place Go shines. Refactoring Go code is easy because the compiler helps you along. There's even standard tooling that automates some of it. Amazing.
Agreed, and I'd further argue:
1) most people driving Ferraris aren't skilled enough to drive them properly
2) most people driving Ferraris have no need to corner at 120 MPH
3) most people driving Ferraris are just trying to show off
4) most people driving Ferraris are more likely to hurt themselves and others than to save the day through the car's performance and handling
(To be clear: I think we're in agreement, but the metaphor is worth explaining in depth)
Level 1: let interns use Go(-karts), like their parents did with Basic.
Level 2: most languages. Proper training required and you still have to be careful.
Level 3: C, C++, critical code, kernels, crypto code. Training a commercial airline pilot takes years; and while this stuff is not hip enough for some, there's plenty of demand.
Now of course everybody makes mistakes, but if you deliberately choose C when there are better options available then you should pay out of pocket for your buffer overflows and 0-day exploits.
Go is the most fun language I've been using. On the contrary, I don't understand how some people can enjoy Java.
The language itself makes it easier to figure out what large code written by somebody else was mean to do - not that everything would be readable nor anything like that, but easier then say ruby or javascript.
The only problem with this argument is that everywhere - even in this thread - there are people saying that Go is a joy to program in. It's not lacking magic, it's magical in its own right.
A better car analogy would be that Go is a Lotus Elise. It's nowhere near as powerful as your friend C++'s Mustang or Rusty's McLaren. But to C++ and Rusty's dismay Go's little Elise still gets around a racetrack crazy fast. It may have a smaller engine but it's just taken a really different approach to going fast which works really well. And Go has a much more pleasant time getting to his destination than C++ and Rusty do.
>>The only problem with this argument is that everywhere - even in this thread - there are people saying that Go is a joy to program in.
Not sure why it's a "problem". I love driving my 2004 Honda Civic, and prefer it to newer, fancier cars. It's fuel-efficient, drives very well, and has not given me an ounce of trouble. So yeah, the comparison to Go seems very apt.
E.g. it won't let you overload your engine by using a very special feature that lets you get away with it, but it'll let you fly fast and enjoy afterwards how trouble free the experience was.
OK, I think I'll stop with the mataphors now :)
https://warisboring.com/stop-disrespecting-the-turboprop-c00...
Go, however, is like a Toyota Corolla or a Honda Civic. It's dependable, but relatively plain. It's not necessarily a joy to drive but there's not much of a learning curve. It lets you go fast, but not so fast you'd hurt yourself. It's designed with safety in mind, so much so that it can feel a little over-bearing at times.
It's not a language that draws you in with one clear feature or philosophy. I've used it very successfully and I still find myself rolling my eyes at "go-isms." Lines of "ok, err = ...", rewriting extremely similar data structures, careful channel management, etc. In a list of dependencies, the go dependency will need the least maintenance time and tuning, but what you do need will often be drudgery.
Go is a useful language, but it's a language that has purposefully stripped out all the magic. People like magic, they miss it.