Building interpreters by composing monads
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
N degrees of separation: multi-dimensional separation of concerns
Proceedings of the 21st international conference on Software engineering
Structured Programming with go to Statements
ACM Computing Surveys (CSUR)
Exception handling: issues and a proposed notation
Communications of the ACM
Letters to the editor: go to statement considered harmful
Communications of the ACM
Composing crosscutting concerns using composition filters
Communications of the ACM
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
On research in structured programming
ACM SIGPLAN Notices
Aspect-oriented programming and modular reasoning
Proceedings of the 27th international conference on Software engineering
Information hiding interfaces for aspect-oriented design
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Modular Software Design with Crosscutting Interfaces
IEEE Software
The paradoxical success of aspect-oriented programming
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Open modules: modular reasoning about advice
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
MAO: ownership and effects for more effective reasoning about aspects
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Balancing language concerns: who decides?
Proceedings of the 2008 AOSD workshop on Software engineering properties of languages and aspect technologies
Hi-index | 0.00 |
Some in the aspect-oriented community view a programming language as aspect-oriented only if it allows programmers to perfectly eliminate scattering and tangling. That is, languages that do not allow programmers to have maximal quantification and perfect obliviousness are not viewed as aspect-oriented. On the other hand, some detractors of aspect-oriented software development view maximal quantification and perfect obliviousness as causing problems, such as difficulties in reasoning or maintenance. Both views ignore good language design and engineering practice, which suggests trying to simultaneously optimize for several goals. That is, designers of aspect-oriented languages that are intended for wide use should be prepared to compromise quantification and obliviousness to some (small) extent, if doing so helps programmers solve other problems. Indeed, balancing competing requirements is an essential part of engineering. Simultaneously optimizing for several language design goals becomes possible when one views these goals, such as minimizing scattering and tangling, not as all-or-nothing predicates, but as measures on a continuous scale. Since most language design goals will only be partially met, it seems best to call them "concerns."