As a novice in Ruby, I love its elegance and consistence; it’s now one of my favorite languages. One of my favorite features is the practice of ending the names of mutating methods with an exclamation point to distinguish them from similar accessor methods, like “reverse” vs. “reverse!” I’m curious, though, about an apparent inconsistency with this rule in Array: push, pop, shift, and unshift. All
![Why are "Array#push" and "pop" not "push!" and "pop!"?](https://cdn-ak-scissors.b.st-hatena.com/image/square/7e713d87868cfe4de85dd9761761c116d8094ba2/height=288;version=1;width=512/https%3A%2F%2Fwww.ruby-forum.com%2Fuploads%2Fdefault%2Foriginal%2F1X%2F8a5e8e853d54c2948e021a2e1c15b7bc1b378978.png)