Date post: | 15-Dec-2015 |
Category: |
Documents |
Upload: | krystal-hurry |
View: | 217 times |
Download: | 0 times |
04/18/23 1
The Boost Software Process
Where Standardization meets the Chaos of Open Source
David Abrahams, Boost Consulting
copyright 2007 David Abrahams04/18/23 2
Why We Need High-Level Libraries Less code Real productivity
Less to writeLess to debug
More expressive codeNatural to writeMore self-documentingMore likely to be correct the first time
copyright 2007 David Abrahams04/18/23 4
Boost Is… A collection of C++ libraries that are:
Open-source Portable Peer reviewed Rigorously tested
A volunteer developer community A set of online resources:
http://www.boost.org Mailing lists / newsgroups Documentation Articles File Vault: http://www.boost-consulting.com/vault
copyright 2007 David Abrahams04/18/23 5
Boost Origins - 1998 C++ standard ratified Beman Dawes
considers the state of std::
And asks where the new libraries will come from (~2008)
OK, we’re a little late…
Beman
copyright 2007 David Abrahams04/18/23 6
Boost Goals Fill gaps in std:: Establish “existing practice” for
standard.
Develop best practices for C++ library design
Have fun building great libraries!
copyright 2007 David Abrahams04/18/23 7
Consequent Goals Adoption
Portability Licensing Testing Scrutiny Quality Documentation
Volunteer contribution Community Ownership Acknowledgement
copyright 2007 David Abrahams04/18/23 8
Committee Software Process
1. Write proposal2. Submit proposal3. Wait for it to reach committee members4. If serious, show up at next meeting5. Proposal goes through wringer6. Apply feedback7. Work on formal wording (or back to step 2)8. More meetings9. Standard is Released
copyright 2007 David Abrahams04/18/23 9
Boost Software Process1. Gauge community interest2. Apply feedback3. Show the community something4. Apply feedback5. Request formal review6. Library goes through wringer7. Apply feedback8. Integrate into Boost (or back to step 3)9. Another Boost release10. Apply feedback11. Back to step 9
copyright 2007 David Abrahams04/18/23 10
Where Are the Libraries?
Boost:
72 libraries and growing!
(10 in TR1)
83
copyright 2007 David Abrahams04/18/23 11
Why Boost Matters Free high-level libraries Cutting-edge C++ practiced here!
Generic Programming InnovationBest practices
High quality Unique peer review process Major contributor to C++ standard /
TR1 Does stuff you need!
copyright 2007 David Abrahams04/18/23 12
Which do you prefer?Imperative: Declarative:
if (line.compare(...) == 0){ std::size_t offset = ...; if (line.compare(...) == 0) offset += ...;}
"^Subject: (Re: )?(.*)"
Describes procedure Verbose Hard to maintain Temporal
Describes goal Concise Easy to maintain Timeless
copyright 2007 David Abrahams04/18/23 13
Infix Calculator Grammar In Extended Backus-Naur Form
group ::= '(' expr ')'fact ::= integer | group;term ::= fact (('*' fact) | ('/' fact))*expr ::= term (('+' term) | ('-' term))*
copyright 2007 David Abrahams04/18/23 14
group ::= '(' expr ')'fact ::= integer | group;term ::= fact (('*' fact) | ('/' fact))*expr ::= term (('+' term) | ('-' term))*
Infix Calculator Grammar In Boost.Spirit
rule<> group, fact, term, expr;
group = '(' >> expr >> ')';fact = integer | group;term = fact >> *(('*' >> fact) | ('/' >> fact));expr = term >> *(('+' >> term) | ('-' >> term));