"How do you remove an item from an array in Ruby? list.delete_at(i)...Pretty easy, yeah?"
"In Go it’s … less easy; to remove the index i you need to do:"
list = append(list[:i], list[i+1:]...)
So Go is simple in that it doesn't have shortcut functions for things. There's generally one way to do things, which is simple. But it's not easy, because it's certainly not intuitive that "append" is the way to remove an array element.Simple means uncomplicated, not a lot of pieces. A violin is arguably simpler than a guitar because of a lack of frets.
Easy means it is not difficult. A guitar is arguably easier than violin [0] because it has frets.
It's important to remember that "easy" is very subjective. What is easy for one person might be insurmountable to another.
tl;dr "simple" usually means "easy to understand" and "easy" usually means "easy to do". Both inherently assume some amount of prior knowledge or skill, so neither is entirely universal or objective.
[0]: I'm not trying to say one instrument is better or disparage and guitarists. It's an example.
(I am not entirely sure I agree with its thesis or its applicability to Go, but since nobody had actually linked you directly to the concept, I thought it would be worthwhile to do so.)
Ease is measured by how a language may be used to solve a problem. As an example, text-wrangling with Perl is easy - but you may have to do it using complex (i.e. not simple) representation.
Back to Go - channels are a simple concept, but are not (always) easy to work with if you do not put a lot of thought into your concurrency model.
Edit: I just thought of another way to express the difference between "simple" and "easy". The notation of adding "1+1=2" is simple, however proving that "1+1=2" is not easy (at least at the level of elementary students).
I often see this point here, but I always wonder what people mean by it. Could you elaborate on that point?