Advanced Programming Techniques for Construction of Robust, Generic and Evolutionary Programs
Zhenjiang HU,Shin-Cheng MU,Stephanie WEIRICH
DOI: https://doi.org/10.2201/niipi.2013.10.1
2013-01-01
Progress in Informatics
Abstract:In computer science, the way that we investigate computation is with programming.Programming is more than just writing programs to instruct the computer to do something, it seeks formal and reliable means of ensuring that programs possess crucial properties.Therefore, developers must be concerned with many issues such as robustness, reliability, adaptability, and maintainability, while meeting program specifications.Advanced programming techniques, such as dependently typed programming, generic programming and bidirectional programming, have been developed to deal with these issues.Programming languages with static type systems have had great success in ensuring that data and control structures are used in appropriate ways.Dependently typed programming is a powerful programming mechanism based on the dependent type system.By allowing types to refer to data, programmers can define more fine-grained program behaviors which is often dynamic in practice, being able to communicate the design of software to computers and negotiate their place in the spectrum of precision from basic memory safety to total correctness.Generic programming techniques have been a specific focus of research in the functional and objectoriented programming communities.They make programs more adaptable by embodying non-traditional kinds of polymorphism; ordinary programs are obtained from them by suitably instantiating their parameters.In contrast with normal programs, the parameters of a generic program are often quite rich in structure, which could be other programs, types or type constructors, class hierarchies, or even programming paradigms.Generic programming has been gradually spreading to more and more mainstream languages, and