Program style analysis: a natural by-product of program compilation
Communications of the ACM
Typographic style is more than cosmetic
Communications of the ACM
Smalltalk scaffolding: a case study of minimalist instruction
CHI '90 Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Style: an automated program style analyzer
ACM SIGCSE Bulletin
CAP: an automated self-assessment tool to check Pascal programs for syntax, logic and style errors
SIGCSE '95 Proceedings of the twenty-sixth SIGCSE technical symposium on Computer science education
Implementing a set of guidelines for CS majors in the production of program code
ACM SIGCSE Bulletin
Addendum to the 1998 proceedings of the conference on Object-oriented programming, systems, languages, and applications (Addendum)
The Cornell program synthesizer: a syntax-directed programming environment
Communications of the ACM
Proceedings of the thirty-second SIGCSE technical symposium on Computer Science Education
Implementation of programming standards in a computer science department
ACM-SE 17 Proceedings of the 17th annual Southeast regional conference
Software Engineering: Facts and Fallacies
Software Engineering: Facts and Fallacies
DrScheme: A Pedagogic Programming Environment for Scheme
PLILP '97 Proceedings of the9th International Symposium on Programming Languages: Implementations, Logics, and Programs: Including a Special Trach on Declarative Programming Languages in Education
Aspect-Oriented Programming is Quantification and Obliviousness
Aspect-Oriented Programming is Quantification and Obliviousness
ProfessorJ: a gradual introduction to Java through language levels
OOPSLA '03 Companion of the 18th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Evaluation of subsetting programming language elements in a novice's programming environment
Proceedings of the 35th SIGCSE technical symposium on Computer science education
Static analysis of students' Java programs
ACE '04 Proceedings of the Sixth Australasian Conference on Computing Education - Volume 30
Effectively teaching coding standards in programming
Proceedings of the 6th conference on Information technology education
Language subsetting in an industrial context: A comparison of MISRA C 1998 and MISRA C 2004
Information and Software Technology
A minimalist approach to objects
Computer Languages, Systems and Structures
Unified selection from lists, arrays, and objects
Computer Languages, Systems and Structures
Hi-index | 0.00 |
Guy L. Steele Jr., in the paper "Growing a Language," makes a strong argument for languages that can be easily extended. Just as importantly, one should be able to shrink a language as well. Two important areas wherein one might wish to restrict language features are education and coding under style guidelines. There are a number of ways to implement restrictions, many of which depend upon reparsing the source code. An alternative approach exists if the language in question has a rich enough set of features for reflection and overloading. If so, these features can be used to detect violations, both dynamically and statically. The latter methodology has the advantage that restrictions are implemented in the very language that is being restricted and do not depend upon parsing source code. This paper explores using overloading and reflection to enforce restrictions in such a way that enforcement is turned on simply by including a library. An example library is developed that is suitable for students taking an introductory programming course.