The Internet, personal devices and multicore computers have greatly changed and enhanced our lives by allowing us to access information and entertainment ondemand anytime, anywhere. While these technologies are great on their own merit, the reality is that in order to reap the benefits, someone has to program these devices to develop useful applications. Historically, text-based high-level pr…