Abstraction mechanisms and language design acm distinguished dissertation