Strategic directions in software engineering and programming languages. - Gunter, Carl (ACM computing surveys.)