Yes, the mechanisms are completely different, but from a programmer who hasn't yet had the Lisp revelation, they appear similar. The goal here is to write higher-level code to more clearly describe your solution to a problem. Ruby lets you get part of the way there, which is often good enough, but it hits a wall that macros cross without even glancing back.