Skip to content

Commit 21e761a

Browse files
authored
Merge pull request #1178 from gusthoff/content/ada_idioms/review/editorial/structure/20250125
Editorial change: replace plain footnotes by references using bibtex
2 parents c0d4f6e + 5732f4d commit 21e761a

File tree

10 files changed

+117
-62
lines changed

10 files changed

+117
-62
lines changed

content/courses/ada-idioms/chapters/abstract_data_machines.rst

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ Singletons can be expressed easily in Ada
4949
but there is an alternative in this specific situation.
5050

5151
This idiom entry describes the alternative, known as the Abstract Data
52-
Machine (ADM). The Abstract Data Machine was introduced by Grady Booch [1]_
52+
Machine (ADM). The Abstract Data Machine was introduced by
53+
Grady Booch :footcite:p:`1983:booch`
5354
as the Abstract State Machine, but that name, though appropriate,
5455
encompasses more in computer science than we intend to evoke.
5556

@@ -360,8 +361,8 @@ But if one can know with certainty that only one thing is ever going to be
360361
represented, as in the hardware rotary switch example, the ADM limitations are
361362
irrelevant.
362363

363-
Bibliography
364-
------------
364+
.. only:: builder_html
365365

366-
.. [1] Booch, G. (1983). Software Engineering with Ada, Benjamin/Cummings
367-
Publishing Company.
366+
.. rubric:: Bibliography
367+
368+
.. footbibliography::

content/courses/ada-idioms/chapters/abstract_data_types.rst

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,9 @@ potentially very expensive, perhaps prohibitively so. Worse, our *fixes* will
6666
likely introduce new bugs.
6767

6868
These disadvantages argue for an alternative. That is the purpose of this next
69-
idiom, known as the Abstract Data Type (ADT) [1]_, [2]_.
69+
idiom, known as the Abstract Data Type (ADT)
70+
:footcite:p:`1983:booch`, :footcite:p:`1974:liskov`.
71+
7072

7173
Implementation(s)
7274
-----------------
@@ -96,7 +98,7 @@ to manage complexity because at any given layer we can focus on *what* is being
9698
done, rather than how.
9799

98100
Therefore, an abstract data type is a type that is abstract in the sense that
99-
[2]_:
101+
:footcite:p:`1974:liskov`:
100102

101103
- It is a higher level of abstraction than the built-in programming
102104
language types.
@@ -391,8 +393,10 @@ Notes
391393

392394
2. The Ada Rationale document did not introduce the concept of Abstract Data
393395
Types. The ADT concept had already been introduced and recognized as
394-
effective when the first version of Ada was being designed [2]_. The Ada
395-
language requirements document, *Steelman* [3]_, uses the term
396+
effective when the first version of Ada was being designed
397+
:footcite:p:`1974:liskov`.
398+
The Ada language requirements document, *Steelman*
399+
:footcite:p:`1978:HOLWG`, uses the term
396400
"Encapsulated Definitions" and describes the information hiding to be
397401
provided. Steelman does not specify the implementation syntax because
398402
requirements documents do not include such directives. The language
@@ -402,15 +406,8 @@ Notes
402406
3. The ADT is the conceptual foundation for the *class* construct's
403407
visibility control in some class-oriented languages.
404408

409+
.. only:: builder_html
405410

406-
Bibliography
407-
------------
408-
409-
.. [1] Booch, G. (1983). Software Engineering with Ada, Benjamin/Cummings
410-
Publishing Company.
411-
412-
.. [2] Liskov, B. and S. Zilles (1974). Programming with Abstract Data Types.
413-
ACM SIGPLAN symposium on Very high level languages.
411+
.. rubric:: Bibliography
414412

415-
.. [3] HOLWG (1978). Department of Defense Requirements for High Order Computer
416-
Programming Language "STEELMAN".
413+
.. footbibliography::

content/courses/ada-idioms/chapters/essential_idioms_for_packages.rst

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ way to use packages when designing an application, the language just specifies
1515
what is legal. However, some legal approaches are more advisable than others.
1616

1717
Specifically, packages should exhibit high cohesion and loose coupling
18-
[1]_. Cohesion is the degree to which the declarations within a module are
18+
:footcite:p:`1979:yourdon`.
19+
Cohesion is the degree to which the declarations within a module are
1920
related to one another, in the context of the problem being solved.
2021
Unrelated entities should not be declared in the same module. This allows
2122
the reader to focus on one primary concept, which should be the subject of
@@ -31,8 +32,10 @@ Implementation(s)
3132

3233
Three idioms for packages were envisioned when the language was first designed.
3334
They were introduced and described in detail in the Rationale document for the
34-
initial language design [2]_ and were further developed in Grady Booch's
35-
book *Software Engineering with Ada* [3]_, a foundational work on design with
35+
initial language design :footcite:p:`1986:ichbiah`
36+
and were further developed in Grady Booch's
37+
book *Software Engineering with Ada* :footcite:p:`1983:booch`,
38+
a foundational work on design with
3639
the (sequential part of the) language. Booch added a fourth idiom, the Abstract
3740
Data Machine, to the three described by the Rationale. These four idioms have
3841
proven themselves capable of producing packages that exhibit high cohesion and
@@ -222,15 +225,8 @@ Notes
222225
iron-clad; hybrids are possible but should be considered initially
223226
suspect and reviewed accordingly.
224227

225-
Bibliography
226-
------------
228+
.. only:: builder_html
227229

228-
.. [1] Yourdon, E. and L. L. Constantine (1979). Structured Design:
229-
Fundamentals of a Discipline of Computer Program and System Design,
230-
Prentice-Hall.
230+
.. rubric:: Bibliography
231231

232-
.. [2] Ichbiah, J., J. Barnes, et al. (1986). Rationale for the Design of the
233-
Ada Programming Language.
234-
235-
.. [3] Booch, G. (1983). Software Engineering with Ada, Benjamin/Cummings
236-
Publishing Company.
232+
.. footbibliography::

content/courses/ada-idioms/chapters/inheritance_idioms.rst

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ Using Building Blocks to Express Inheritance Idioms
88
Motivation
99
----------
1010

11-
Betrand Meyer's magisterial book on OOP [1]_ includes a taxonomy of inheritance
11+
Betrand Meyer's magisterial book on OOP :footcite:p:`1997:meyer`
12+
includes a taxonomy of inheritance
1213
idioms. Two especially well-known entries in that taxonomy are
1314
:wikipedia:`Subtype Inheritance <Subtyping>` and
1415
:wikipedia:`Implementation Inheritance <Inheritance_(object-oriented_programming)>`.
@@ -50,7 +51,8 @@ entities.
5051

5152
Although the derived child type is distinct from the parent type, the child is
5253
the same *kind* as the parent type. Some authors use *kind of* as the name for the
53-
relationship between the child and parent. Meyer uses the term *is-a* [1]_, a
54+
relationship between the child and parent. Meyer uses the term *is-a*
55+
:footcite:p:`1997:meyer`, a
5456
popular term that we will use too. For example, a cat *is a* mammal, and also is
5557
an animal.
5658

@@ -571,12 +573,10 @@ so we are using private types throughout. That includes the child type, and, as
571573
we saw, allows us to control the compile-time visibility to the parent type.
572574

573575

574-
Notes
575-
-----
576576

577577

578+
.. only:: builder_html
578579

579-
Bibliography
580-
------------
580+
.. rubric:: Bibliography
581581

582-
.. [1] Meyer, B. (1997). Object-Oriented Software Construction, Prentice-Hall.
582+
.. footbibliography::

content/courses/ada-idioms/chapters/interrupt_handling.rst

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -856,9 +856,6 @@ Notes
856856
urgent priorities.
857857

858858

859-
Bibliography
860-
------------
861-
862859
.. todo::
863860

864861
Ravenscar Guide??? Surely there is some document that first introduced

content/courses/ada-idioms/chapters/introduction.rst

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ what is the most elegant implementation approach?". Elegant software is
1616
comprehensible, efficient, concise, reliable, and, as a result,
1717
maintainable, so elegance is an economically and technically desirable characteristic.
1818

19-
Design patterns [1]_ are intended to answer that question, and indeed
19+
Design patterns :footcite:p:`1995:gamma`
20+
are intended to answer that question, and indeed
2021
some would equate idioms with design patterns. But what we have in mind
2122
is more general in scope.
2223

@@ -36,7 +37,7 @@ Those are the kinds of situations and solutions we focus upon.
3637
That said, we may refer to a design pattern to illustrate an idiom's
3738
purpose and/or implementation. For example, in the idiom for controlling
3839
object creation and initialization, the implementation approach happens
39-
to be the same as for expressing a Singleton [1]_.
40+
to be the same as for expressing a Singleton :footcite:p:`1995:gamma`.
4041

4142
In addition to language-independent situations, we also include
4243
solutions for situations specific to the Ada language. These idioms are
@@ -99,7 +100,8 @@ supplier to the client that instantiates it, but instantiation is the only
99100
possibility in that narrow case. Only the routines in the instances can be
100101
called.)
101102

102-
Betrand Meyer's book on OOP [2]_ limits these terms specifically to the case of
103+
Betrand Meyer's book on OOP :footcite:p:`1997:meyer`
104+
limits these terms specifically to the case of
103105
a type used in an object declaration. Our definitions cover that case but
104106
others as well.
105107

@@ -238,13 +240,8 @@ default.)
238240
For further details about type views, please refer to that
239241
:ref:`specific section of the Advanced Ada course <Adv_Ada_Type_View>`.
240242

243+
.. only:: builder_html
241244

242-
Bibliography
243-
------------
245+
.. rubric:: Bibliography
244246

245-
.. [1] Gamma, E., R. Helm, et al. (1995), pp. 127. Design Patterns: Elements of
246-
Reusable Object-Oriented Software. Reading, MA, Addison-Wesley
247-
Publishing Company.
248-
249-
.. [2] Meyer, B. (1997), pp. 182. Object-Oriented Software Construction,
250-
Prentice-Hall.
247+
.. footbibliography::

content/courses/ada-idioms/chapters/programming_by_extension.rst

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,8 @@ private part or the package body is reasonable, but only one of the two is
101101
amenable to future requirements.
102102

103103
Specifically, placement in the private part of the package allows
104-
*programming by extension* [1]_ via hierarchical *child* packages. Child
104+
*programming by extension* :footcite:p:`1998:barnes`
105+
via hierarchical *child* packages. Child
105106
packages can be written immediately after the *parent* package but can also be
106107
written years later, thus accommodating changes due to new requirements.
107108

@@ -241,7 +242,9 @@ library units, some declarations in existing package bodies tended to
241242
"percolate up" to the package declarations' private parts.
242243

243244

244-
Bibliography
245-
------------
245+
.. only:: builder_html
246+
247+
.. rubric:: Bibliography
248+
249+
.. footbibliography::
246250

247-
.. [1] Barnes, J. (1998). Programming In Ada 95, Addison-Wesley.

content/courses/ada-idioms/chapters/type_punning.rst

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ spoken.
4646

4747
Ada is accurately described as "a language with inherently reliable features,
4848
only compromised via explicit escape hatches having well-defined and portable
49-
semantics when used appropriately." [1]_ The foundation for this reliability is
49+
semantics when used appropriately." :footcite:p:`1993:taft`
50+
The foundation for this reliability is
5051
static named typing with rigorous enforcement by the compiler.
5152

5253
Specifically, the Ada compiler checks that the operations and values applied to
@@ -474,8 +475,8 @@ potential problem. For that reason, the GNAT implementation issues a warning in
474475
such cases.
475476

476477

477-
Bibliography
478-
------------
478+
.. only:: builder_html
479479

480-
.. [1] S. Tucker Taft, 1993, post in Comp.Lang.Ada,
481-
https://groups.google.com/g/comp.lang.ada/c/9WXgvv8Xjuw/m/JMyo9_P7nxAJ
480+
.. rubric:: Bibliography
481+
482+
.. footbibliography::
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
[DEFAULT]
22
title=Ada Idioms
33
author=Patrick Rogers
4+
bibtex_file=references.bib
45

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
@Book{1983:booch,
2+
author = {Booch, G.},
3+
title = {Software Engineering with Ada},
4+
publisher = {Benjamin/Cummings Publishing Company},
5+
year = {1983}
6+
}
7+
8+
@Book{1974:liskov,
9+
author = {Liskov, B. and Zilles, S.},
10+
title = {Programming with Abstract Data Types},
11+
publisher = {ACM SIGPLAN symposium on Very high level languages},
12+
year = {1974}
13+
}
14+
15+
@Book{1978:HOLWG,
16+
author = {HOLWG},
17+
title = {Department of Defense Requirements for High Order Computer Programming Language "STEELMAN"},
18+
publisher = {Department of Defense},
19+
year = {1978}
20+
}
21+
22+
@Book{1979:yourdon,
23+
author = {Yourdon, E. and Constantine, L. L.},
24+
title = {Structured Design: Fundamentals of a Discipline of Computer Program and System Design},
25+
publisher = {Prentice-Hall},
26+
year = {1979}
27+
}
28+
29+
@Book{1986:ichbiah,
30+
author = {Ichbiah, J. and Barnes, J. and others},
31+
title = {Rationale for the Design of the Ada Programming Language},
32+
publisher = {},
33+
year = {1986}
34+
}
35+
36+
@Book{1997:meyer,
37+
author = {Meyer, B.},
38+
title = {Object-Oriented Software Construction},
39+
publisher = {Prentice-Hall},
40+
year = {1997}
41+
}
42+
43+
@Book{1995:gamma,
44+
author = {Gamma, E. and Helm, R. and others},
45+
title = {Design Patterns: Elements of Reusable Object-Oriented Software},
46+
publisher = {Reading, MA, Addison-Wesley Publishing Company},
47+
year = {1995}
48+
}
49+
50+
@Book{1998:barnes,
51+
author = {Barnes, J.},
52+
title = {Programming In Ada 95},
53+
publisher = {Addison-Wesley},
54+
year = {1998}
55+
}
56+
57+
@Book{1993:taft,
58+
author = {Taft, S. Tucker},
59+
title = {Post in Internet Relay Chat on Comp.Lang.Ada channel},
60+
publisher = {https://groups.google.com/g/comp.lang.ada/c/9WXgvv8Xjuw/m/JMyo9_P7nxAJ},
61+
year = {1993}
62+
}

0 commit comments

Comments
 (0)