- Регистрация
- 9 Май 2015
- Сообщения
- 1,549
- Баллы
- 155
Bjarne Stroustrup posted a note on LinkedIn about his paper “Concept-Based Generic Programming in C++” saying “I wrote a new paper that I suspect might become significant”
Concept-Based Generic Programming in C++
Note: the technical details covered in the paper can be found in the and !!!
Bjarne’s paper abstract
We present programming techniques to illustrate the facilities and principles of C++ generic programming using concepts. Concepts are C++’s way to express constraints on generic code. As an initial example, we provide a simple type system that eliminates narrowing conversions and provides range checking without unnecessary notational or run-time overheads.
Concepts are used throughout to provide user-defined extensions to the type system. The aim is to show their utility and the fundamental ideas behind them, rather than to provide a detailed or complete explanation of C++’s language support for generic programming or the extensive support provided by the standard library.
Generic programming is an integral part of C++, rather than an isolated sub-language. In particular, key facilities support general programming as well as generic programming (e.g., uniform notation for types, lambdas, variadic templates, and C++26 static reflection).
Finally, we give design rationales and origins for key parts of the concept design, including use patterns, the relationship to Object-Oriented Programming, value arguments, notation, concept type-matching, and definition checking.
My comments after reading the paper
Thank you for this important and timely paper! Here are a few things in the paper that made me smile
Bjarne mentioned 6 important features of a programming language:
1) Generality
2) Uncompromised efficiency
3) Statically type-safe interfaces
4) Affordable
5) Teachable
6) A living language
I enjoyed reading that we can continue to move beyond Object-Oriented Programming (without leaving it behind)
I always have to laugh when I see a repeating programming language standards committee “Human Nature” pattern: “initially people ask for a LOUD syntax for novel constructs because they are seen as difficult or even dangerous. Later, the same people complain about verbosity.”
“Generic Programming”:
a) is “just” programming
b) is complementary to classical Object-Oriented Programming
c) using concepts is deeply integrated into C++, rather than being an isolated sub-language.
d) using concepts and other compile-time evaluation support enable us to build our own type systems on top of what C++ offers by default
One more thing to add:
This paper is more than just a discussion of the ISO C++ for concept-based generic programming. The paper also includes lots of code examples that you can try with your compiler.
Concept-Based Generic Programming in C++
Note: the technical details covered in the paper can be found in the and !!!
Bjarne’s paper abstract
We present programming techniques to illustrate the facilities and principles of C++ generic programming using concepts. Concepts are C++’s way to express constraints on generic code. As an initial example, we provide a simple type system that eliminates narrowing conversions and provides range checking without unnecessary notational or run-time overheads.
Concepts are used throughout to provide user-defined extensions to the type system. The aim is to show their utility and the fundamental ideas behind them, rather than to provide a detailed or complete explanation of C++’s language support for generic programming or the extensive support provided by the standard library.
Generic programming is an integral part of C++, rather than an isolated sub-language. In particular, key facilities support general programming as well as generic programming (e.g., uniform notation for types, lambdas, variadic templates, and C++26 static reflection).
Finally, we give design rationales and origins for key parts of the concept design, including use patterns, the relationship to Object-Oriented Programming, value arguments, notation, concept type-matching, and definition checking.
My comments after reading the paper
Thank you for this important and timely paper! Here are a few things in the paper that made me smile
1) Generality
2) Uncompromised efficiency
3) Statically type-safe interfaces
4) Affordable
5) Teachable
6) A living language
I enjoyed reading that we can continue to move beyond Object-Oriented Programming (without leaving it behind)
I always have to laugh when I see a repeating programming language standards committee “Human Nature” pattern: “initially people ask for a LOUD syntax for novel constructs because they are seen as difficult or even dangerous. Later, the same people complain about verbosity.”
“Generic Programming”:
a) is “just” programming
b) is complementary to classical Object-Oriented Programming
c) using concepts is deeply integrated into C++, rather than being an isolated sub-language.
d) using concepts and other compile-time evaluation support enable us to build our own type systems on top of what C++ offers by default
One more thing to add:
This paper is more than just a discussion of the ISO C++ for concept-based generic programming. The paper also includes lots of code examples that you can try with your compiler.
Источник: