Central technical issues in programming language design