Touch of class typos
Typos for "Touch of Class" draft
How to report a typo
Report it under the appropriate chapter title below. Make sure the extract is easy to find (often locating the place of a correction is the most time-consuming part). If you copy-paste the relevant text, highlight the faulty word(s), for example by **...**.
As errors get corrected I strike them out.
Preface etc.
from Draft 22.02, 23 August 08 19:15 (Santa Barbara) page v, section Preface. in the 'note' clause of the class PREFACING. replace: "] by: ]" -- Eric Bezault, 12 December 2008
from Draft 22.02, 23 August 08 19:15 (Santa Barbara)
page xiii, section student_preface/Abstraction. middle of second paragraph. replace: you'll been encouraged by: you'll be encouraged -- Eric Bezault, 12 December 2008
from Draft 22.02, 23 August 08 19:15 (Santa Barbara)
page xv, section instructor_preface. second paragraph, third bullet. text: Eiffel and Design by Contract action: put the last letter of "Contract" in bold. -- Eric Bezault, 12 December 2008
from Draft 22.02, 23 August 08 19:15 (Santa Barbara) page xxi, section student_preface/OUTSIDE-IN: THE INVERTED CURRICULUM/The supporting software. middle of second paragraph. replace: In the seond week by: In the second week -- Eric Bezault, 12 December 2008
from Draft 22.02, 23 August 08 19:15 (Santa Barbara) page xxv, section student_preface/TECHNOLOGY CHOICES/Eiffel and Design by Contract. right margin. replace: at tinyurl.com/cq8gw.. by: at tinyurl.com/cq8gw. action: remove extra dot. -- Eric Bezault, 12 December 2008
from Draft 22.02, 23 August 08 19:15 (Santa Barbara)
page xxix, section student_preface/TECHNOLOGY CHOICES/Why not Java?. replace: university context,it is meant by: university context, it is meant action: space after comma. -- Eric Bezault, 12 December 2008
from Draft 22.02, 23 August 08 19:15 (Santa Barbara)
page xxxiv, section student_preface/TOPICS COVERED. paragraph starting with "Part III" text: It makes no attempt at action: missing end of sentence. -- Eric Bezault, 12 December 2008
1 The industry of pure ideas
page 5, section 1.1: Computers and related devices are called hardware, indicating that — although they are getting ever
lighter — computers are the kind of machine that will hurt your feet. Programs **and all that relates to them** are by contrast called software, a word made up in the 1950s when programs emerged as topic of interest. Comment: one may argue that hardware may relate to hardware (depending on the definition of the relation). As the point is to separate the two concepts, to avoid confusion I would drop **and all that relates to them**. -- MP, 8/2/2009
page 11, picture caption: **(d) GPS navigation system**. For consistency with the iPhone, you may consider adding that it is a Garmin gps. -- MP, 8/2/2009
page 13, towards the end: This book emphasizes throughout, along with practices that **make your programs good for the computer** — for example, designing programs so that they will run fast enough —, practices that make them good for human readers. Remark: The way in which the sentence is formulated is not smooth and crystal clear to me. A suggestion could be: This book emphasizes throughout, along with programming practices that put to good use a computer processing power, practices that make programs understandable by human readers. -- MP 8/2/2009
page 14, at the end of box Touch of folk history: This did not deter **the programmer**: “See the holes? They are the software.” Could be: This did not deter one of the programmers: “See the holes? They are the software.” -- MP 8/2/2009
page 16, exercise 1-E.3, third bullet point: The exact set of letters does not**,** matter but Comment: Move the comma after the word matter. -- MP 8/2/2009
2 Dealing with objects
page 18, second line: The book**,** applies systematic typesetting conventions
Comment: comma should be dropped
-- MP, 15/2/08
page 18, in box Touch of style: (sometimes bold or italics according to precise rules**)
Comment: I would add: (sometimes bold or italics according to precise rules that will be specified)
-- MP, 15/2/08
page 18, line after box on class Preview: The first line says you are looking at a **small** “class”
Comment: as the first line does not say that the class is "small", I would drop the word "small":
The first line says you are looking at a “class”
-- MP, 15/2/08
page 19, box title "**Magic?". Did you considered the title "Touch of magic?"?
-- MP, 15/2/08
page 25, after the first code box: Paris.display
Comment: you use the term "object", and then again many times in the same page. As you will define it on page 27, I would put a reference here, or give an informal definition,
especially because you use it in the Touch of Semantics box (page 25) to define a feature call.
-- MP, 15/2/08
page 27, sub-section "Objects you can and cannot kick", first bullet point, two lines before the end: ...your foot. **(Buying this book does not
entitle you to a refund of medical expenses.)**.
Comment: punctuation before and after the parentheses (or parentheses themselves) is (are) misplaced. Suggestion: ...your foot. Please be aware of the fact that buying this
book does not entitle you to a refund of medical expenses..
-- MP, 15/2/08
pages 27 and 28: Comment: there are many references to "**Notre-Dame**" (I counted 5), but the figure on page 27 shows "Saint-Michel" as metro station. I would keep Saint-Michel
everywhere to avoid confusion (not everybody may know that the real stop is "Saint-Michel Notre-Dame")
-- MP, 15/2/08
page 28: last bullet list: first bullet "**or any other specified by its index**"
Comment: you did not defined an index of a leg. Here you could drop the sentence fragment above without conceptually losing anything: Remove the first leg of the route, or the
last leg, or any other.
-- MP, 15/2/08
page 28: last bullet list: second bullet: **for example a metro leg from Notre-Dame to Jussieu (4 stations, see map on the previous page); the route will be changed to involve 3
legs, 3 metro lines, and 8 stations; the result now starts at Louvre and ends at Jussieu.**
Comment: where is Jussieu? The "map on the previous page" does not help, nor the one on page 24.
-- MP, 15/2/08
page 28: last bullet list: third bullet: For example we can make Route1 start with a leg going from Opéra to Louvre;
Comment: It would be nice to locate on a map Opéra.
-- MP, 15/2/08
page 29: line 3: **With a remove query**, it would be one less.
Comment: It should be something like: "If you remove a leg, the same query above would report one less."
-- MP, 15/2/08
page 31: box "Definitions: Feature, Query, Command", second bullet: A feature that may **modify** an object is called a command
Comment: you don't define "modify". At the bottom of page 28 there was a definition of "change" of an object. I would use the same word in both cases,
or put a reference here to the previous definition, or repeat the definition.
-- MP, 15/2/08
page 31, 4 lines before the end: are **defined** for you
Comment: as how to "define" an object has not been defined, I would use are created for you instead.
-- MP, 15/2/08
page 33, first line: "**Palsis**" should be "Palais"
-- MP, 15/2/08
page 34, Exercise 2-E.2, 3 lines before the end. There is a parenthesis to drop.
-- MP, 15/2/08
page 35, 3rd bullet; **If either of the previous two relations holds between two terms “relies on” also holds**
Comment: a comma is missing: If either of the previous two relations holds between two terms, “relies on” also holds
-- MP, 15/2/08
page 35, exercise 2-E.3, point 2. **my_paragraph_remove_last**.
Comment: my_paragraph_remove_last_word is a better name
-- MP, 15/2/08
page 36, exercise 2-E.3, point 5. **my_paragraph.character_count (i)** seems a bit confusing example to me.
Comment: looking at the semantics, I would suggest my_paragraph.word (i), to get the i-th word in a paragraph; then we can apply to the resulting word feature
character_count, a query that should be a feature of class WORD.
-- MP, 15/2/08
page 36, exercise 2-E.4 **Assume that you are building an MP3 player entirely software.** I am confused by the phrasing.
Comment: "Assume you are building a software model of a MP3 player." looks better to me.
-- MP, 15/2/08
from Draft 22.02, 23 August 08 19:15 (Santa Barbara)
page 31, section 2.3 WHAT IS AN OBJECTS/Objects: a definition. second paragraph. replace: It is also s good by: It is also good -- Eric Bezault, 12 December 2008 I don't see this, so I assume the sentence was removed.
3 Program structure basics
page 39, line 5 of section 3.3: "...natural languages, like English or French, that we use for ordinary communication."
Comment: some readers may not be using French for ordinary communication, not even English (in spite of the fact
that they are reading a book written in English). I would suggest not to commit to any language:
"...natural languages that we use for ordinary communication."
Marco P, 23/2/2009
page 40 line 2: "In English or French you do not invent". Comment: again, I would choose a language-neutral approach:
In a natural language you do not invent..."
Marco P, 23/2/2009
Page 40, box Touch of style: title. Same issue as above ("English"). I suggest:
"Putting some natural language into your programs"
Marco P, 23/2/2009
Page 40, box Touch of style: line1. "Natural language has a place in programs: in comments").
Comment: maybe is also worth mentioning that natural language has a place also in class and feature names?
Marco P, 23/2/2009
Page 46, section "Levels of language description". In bullets 2 and 3 you use the terms "syntax rules", but in the picture
you use "syntactic rules".
Marco P, 23/2/2009
Page 46, picture: the picture of a tree on the right is not clear to me. It would be preferable to explain it or remove it altogether.
Marco P, 23/2/2009
Page 47, box Touch of style, line 5: " ...; the few seconds that you might save by omitting**a letter**..."
Comment: this could be interpreted as: "a few seconds to type a single letter? I am not that slow!", so maybe it could be rephrased as:
" ...; the few seconds that you might save by omitting one or more letters in one or more identifiers..."
Marco P, 23/2/2009
Page 47, section Break and Indentation, line after the third bullet: "It makes no difference to the syntax..."
Comment: "It makes no difference to the Eiffel syntax..."
Marco P, 23/2/2009
Page 47, line 5 of the part in smaller font before the end of the page: "The “carriages” in question are not the horse-and-buggy kind,
although today they seems almost as old** — **a delightful and nostalgic reminder of the time when we typed our programs on typewriters.
The print head was lodged in a little mechanical “carriage”, which at the end of a line we would “return” to the leftmost
position to start typing the next line."
Comment: the sentence does not flow smoothly to me. A possibility could be: "... almost as old. They are instead a delightful and nostalgic remainder..."
Marco P, 23/2/2009
from Draft 22.02, 23 August 08 19:15 (Santa Barbara)
page 43, section 3.5 NESTING AND THE SYNTAX STRUCTURE. in the gragh. replace: -- Show city info including a monument.. by: -- Show city info including a monument. action: remove one dot. -- Eric Bezault, 12 December 2008
from Draft 22.02, 23 August 08 19:15 (Santa Barbara) page 48, section 3-E.1 Vocabulary. in right margin. text: The definition of "class" may be less precise than the others. action: remove this text. It's copy/pasted from 2-E.1 -- Eric Bezault, 12 December 2008
4 The interface of a class
from Draft 22.02, 23 August 08 19:15 (Santa Barbara) page 52, section 4.2 CLASSES. in sixth paragraph, second bullet. text: there some names such as Paris and Route1 action: The 's' in 'such' should not be in italic. -- Eric Bezault, 12 December 2008
5 Just Enough Logic
6 Creating objects and executing systems
7 Control structures
Corrections by Raphaël Meyer
Page 142: the four bulletpoints are not parallel. bulletpoint 3 refers to its while the first two start with "the". the fourth one is completely different than the first 3.
Page 143: addition box towards the top. there is an error in the calculation. the sum of the two numbers should be 729 (not 29)
Page 144: paragraph underneath heading "Precision and explicitness: algorithms vs recipes": The word "follow" on the third line should be "following".
Page 145: First paragraph that starts with "In German and French": At the end of the first sentence, I would say "heat the thing up at some point" rather than "heat up the thing at some point".
The final sentence of the first paragraph is not grammatically correct: "Only the Italian version mentions this detail — 'cook according to the times given' — without which the pictures would be meaningless." I would say "Only the Italian version mentions this detail - cook according to the times given - which gives meaning to the pictures."
Page 145: The paragraph that starts with "For algorithms, as opposed to informal recipes": The second clause should read "as opposed to for informal recipes"
Page 147: In the first bulletpoint: The final sentence is a little long and confusing. I would change the second half of it to the following: "... software elements, this book tends to use the word system rather than the word 'program' (which may still suggest the idea of doing just one task)'"
Page 147: The second bulletpoint: The first sentence is confusing. I would say "The description of the data structure—in the object-oriented approach of this book, the object structure — to which processing steps apply is as important to a program as the steps themselves."
Page 148: Under the "sequence" bulletpoint, final sentence: "would executed" should be "would execute" or "would be executed"
Page 150: final paragraph, bottom of the page, first sentence: "not any more get" should be "no longer receive" or "no longer be given"
Page 151: Textbox with "Touch of Style" as its header: the bulletpoints are formatted strangely. Shouldn't the first line be aligned with the second line for each bullet?
Page 152: Paragraph beginning with "Even on separate lines ...": "put two version of the same ..." should be "put two versions of the same ..."
Page 153, first paragraph starting with "Note that the syntax ...": The sentence "but it is useful to allow it for when a sequence appears as part of a larger structure." is unclear. REvise the first part to clarify between "it" and "it".
Page 154, textbox entitled "Correctness": the word "compound" in the second bulletpoint should be capitalized.
Page 154, bottom of the page, final 3 lines: the formatting seems incorrect. The final sentence should all be on one line.
Page 155, paragraph starting with "A typical example of loop": the sentence should read "A typical example of a loop ..."
Page 155, middle of the page: There appears to be a diagram or picture missing next to the tagline "Highlighting a station"
Page 157, first paragraph that starts with "This ensures that ...": the clause "the third step to I2 for i = 3" should read "the third step to I3 for i = 3 ..."
PAge 158, last sentence of the paragraph starting with "the 'maximum' example ...": The last sentence reads "and the invariant INV (s), where s is a subset N1, N2, ..., Ni of DS, is that we have found the maximum of s." This should be reworded since it is not clear grammar.
Page 158: first bulletpoint under "Note - in the general case ...": Typo: "sufficently" should be "sufficiently"
Page 163: second bulletpoint underneath the paragraph starting with "The loop postcondition principle ... ": The fist part of the sentence reads "Sufficiently flexible to let us extend it from ..." I think it would be clearer if it read "Sufficiently flexible that we can extend it from ..."
Page 164, textbox entitled "Loop Variant": Typo: "Afterexecution" should be "After execution"
PAge 165, final paragraph that starts with "You may well feel ...": The third sentence reads "If you have ever try ..." but should read "If you have ever tried ...". Further, the sentence then reads "it might very well be the result of such ..." but should read "it might very well have been the result of such ..."
Page 168, final paragraph starting with "... for successive values of i ...": The second sentence reads " ... used for iterating over object structures such as list." Is this correct grammar? Should it not be " ... used for iterating over object structures such as lists."?
8 Routines, functional abstraction and information hiding
9 Variables, assignment and references
Corrections by Annie Meyer
Page 234
We saw in the discussion of creation that an object, as it exists at run time in the
memory of your computer, consists of a number of fields, some references,
some expanded:
some referenced, non?
Page 242
The principle shields client software from the these changes:
retirer le the
Page 243
Itisnot OK, however, to let clients assign directly to it, as in the illegal Line8.index := new_value, since (among other problems) this would reveal it is an attribute.
... this would reveal that it is ....
Page 244
A procedure such as set_a or go_ith which has as its principal effect to set the value of an attribute is called a setter procedure (or setter command).
Rajouter un peu de ponctuation. ... which has, as its principal effet, to .....
Why would ever need something like this since we clients can simply use index is the attribute is exported?
Rajouter mots et punctuation
Why would we ever ...... since we, clients, can
Page 245
Exporting an an attribute is legitimate and lets clients access (but not modify) the corresponding field values.
Retirer un des an au debut de la phrase.
To client authors, both
kinds simply appear as queries
Ajouter un . après queries
Page 260
and should handled in classes that deal with object structures in general.
Should be handled non?
Page 262
that an operation that an operation that does not name a variable cannot affect associated properties.
Retirer that an operation puisque c'est la deux fois.
Page 263
Fin de la page
any manipulations that could cause sneaky aliasing and produce surprising effects.
Pourquoi un s à manipulation?
Page 264
But the effect would probably worse,
be worse
Page 266
make things more difficult since you cannot assign
to a formal routine argument,
Je ne comprends pas. Question de punctuation peut-être
PART II: HOW THINGS WORK
10 Just enough hardware
Corrections by Raphaël Meyer
page 269, final paragraph, first sentence: typo: "formating" should be "formatting"
page 270, middle of the page: it seems like there should be a diagram or drawing next to the left-caption "A bit (low-tech version)", but there is nothing there.
page 271, second to last paragraph starting with "Early on, the ...": is this formatting correct? Shouldn't this paragraph have the same formatting as the one below it? (or at least the bulletpoint above it?)
page 272, second bulletpoint under "For the basic units:": "... is on the order of four billions" should read "is on the order of four billion"
page 272, next paragraph: "For example if" should read "For example, if"
page 272, same paragraph, sentence starting with "256 possibilities ...": "on your keyboard — ~, !, @ etc. —, the ..." should read "on your keyboard —, ~, !, @, etc., the ..."
page 272, paragraph starting with "For languages ...": "such a Cyrillic, ..." should read "such as Cyrillic, ..."
page 272, same paragraph: this does not make sense to me: "which uses two or more commonly four bytes for a character" ... consider revising/clarifying
page 273, paragraph starting with "The starting position ...": "(in these cases one byte, four bytes and eight)" sounds awkward. It should either be written as "(in these cases one byte, four bytes and eight bytes)", or (worse) "(in these cases one byte, four and eight)"
page 274, table: "4 billions" should be "4 billion"
page 275, paragraph starting with "Having a binary interpretation ...": "1.44 megabyte" should read "1.44 megabytes"
page 275, paragraph starting with "In most practical cases ...": "what’s a few millions?" should be "what’s a few million?"
page 276, first bulletpoint under the paragraph starting with "These properties affect ...": "it reads it" ... I would specify at least one of the "it" to make the sentence more clear.
page 278, paragraph starting with "Some programmers ...": "but this not necessarily true" should read "but this is not necessarily true"
page 279, first paragraph, final sentence: it currently reads "Let’s see what memories can do for us.", but shouldn't it read "Let’s see what memory can do for us."?
page 279, first paragraph under the "Persistence" heading: "powering off the memory unit will lose the data." is not correct. It should read something to the effect of "powering off the memory unit will result in a loss of data."
page 279, second sentence of the paragraph that starts with "Words like ...": the sentence "As rough estimates in technology that is current at the time of writing:" is very confusing. Consider rewording.
page 279, first bulletpoint underneath aforementioned sentenced: "The time to access a character might around 50 nanoseconds, ..." should read "The time to access a character might be around 50 nanoseconds, ..."
page 280, paragraph underneath the "RAM" bulletpoint, final sentence: "such as disks presented below" should read "such as the disks presented below"
page 280, "Core memory" bulletpoint, first sentence: "This term to points back ..." should read "This term points back ..."
page 280, there is no photograph or diagram next to the caption "A memory chip" underneath the paragraph starting with "The photograph below ..."
page 281, first bulletpoint starting with "Others are meant ...": The final sentence ends with a close parentheses that was never opened: "'Storage' is just a synonym for memory.)"
page 281, next paragraph: "all rotating a speed of" should read "all rotating at a speed of"
page 281, same paragraph: "If power is switched off the heads ..." should read "If power is switched off, the heads ..." for clarity.
page 283, paragraph starting with "Computer operations ...": "Most architecture offer at most a few dozen registers" should read "Most architecture offers at most a few dozen registers"
page 281, paragraph about halfway down the page: "The order of magnitude of typical access times at the time of writing are" should read "The orders of magnitude of typical access times at the time of writing are"
page 284, paragraph starting with "The reason this policy ...": "... is that program typically use, ..." should read "is that programs typically use, ..."
page 284, next paragraph: "each programs sees a" should read "each program sees a"
page 284, same paragraph, same sentence: "contiunous" should be spelled "continuous"
page 285, halfway down the page: "Computers offers instructions of three main kinds:" should read "Computers offer instructions of three main kinds:"
page 285, final paragraph, final sentence: I believe "PowerPC" should read "Power PC" (it shows up 2 other times on page 285 as "Power PC")
page 286, first paragraph, third sentence: "at much higher level of abstraction." should read "at a much higher level of abstraction."
page 286, same paragraph, next sentence: once again, "PowerPC" should read "Power PC"
page 286, first paragraph: since we are talking about hardware power (a thing) and not a person, I think the following sentence "hardware power, whose most popular formulation was first presented" should be changed to "hardware power, the most popular formulation of which was first presented"
page 287, paragraph starting the "The basic Moore's Law": "as this is its the last section):" should read "as this is the last section):"
page 288, first paragraph: "(turning off the computer loses the values)." should read "(turning off the computer results in a loss of values)."
page 288, under "Further Reading": "John Markoff, has for many years covered ..." The comma (,) after "Markoff" is unnecessary.
11 Describing syntax
All of chapter 11 done by Raphael Meyer
page 293, bottom of the page on the right: the blurb starting with "We'll see an example ..." gets cut off at the end of the sentence, i.e. you can't tell what page number it is referring to.
page 297, first paragraph, first sentence: "of specimens of each the constructs" should read "of specimens of each of the constructs"
page 303, towards the top of the page: "we have to apply to another construct B" should read "we have to apply it to another construct B"
page 304, Second bulletpoint underneath "Applying the same process again ...": "heads tail stop" should read "heads tails stop" to be consistent with the other bulletpoints
page 314: underneath the "Touch of History" textbox: There is a sentence ("Another recent text, up to date on many important compiler techniques.") that is a bit out of place since it should come before the textbox, immediately underneath the Muchnick's book. Consider reformatting in some way.
Finished on 3 Feb 2009 at page 316.
13 Programming languages and tools
Corrections by Annie Meyer
Page 318
Section manquante
Survey of programming language styles
Page 329
The following figure shows a typical state of the EiffelStudio debugger.
Je trouve cela genant que la figure soit a la page suivante.
This dynamic view does not
replace careful static analysis, since an execution is only one of a myriad possibilities, but complements it by giving you a practical, concrete feel for what happens at run time.
A myriad of possibilities, non?
Page 330
To enter program modules and other software elements (such as design documents and other documentation), upi may use text editors—the programs that enable us to type and format documents.
What is upi?
Page 336
Version control tools help you keep track of successive versions of an individual module: in our three-dimensional picture, it corresponds to a horizontal plane as shown, or in the case of a single developer to a horizontal line.
A horizontal plane or an horizontal plane?
...................................... Line?
PART III: ALGORITHMS AND DATA STRUCTURES
13 Fundamental data structures, genericity, and algorithm complexity
[I don't know by whom the following corrections are, would the author please identify himself or herself?]
p. 353, "naming conventions for features of reusable components" does not really belong under the bullet "Algorithm complexity"
p. 357, "safety and flexibility," --> "safety and flexibility."
p. 359, "non -generic" --> "non-generic".
p. 360, "and hash tables —, all" --> "and hash tables — all"
p. 361 top, "find if a part" --> "determine if a part" or "find out if a part"
p. 361 middle, "G will denotes" --> "G will denote" or "G denotes"
p. 369, "complexity. assessing" --> "complexity. Assessing"
Continue on p. 370.
Corrections by Annie Meyer
Page 358
so are validity rules
(also called static semantics) are defined for syntactically correct texts.
Retirer un des deux are
(Original figure on page 46.)
Mettre sur deux lignes
Page 361
Many of their basic operations are the same: insert or remove an item, find if a particular item if present, find the number of items¼.
............... item is present, .......
One of the operations will we need for each kind of container is to find out whether a a container is empty (has no items).
2 fois a
Page 365
Computers have big memories; there are few more stupid program events than hitting a fixed limit and not being able to reallocate the structure.
Even our arrays will be resizable.
Cette phrase me semble bizarre.
Page 366
It is not enough to measure concrete performance on specific examples and report that “on average item took 10 nanoseconds for arrays and 40 nanoseconds for linked lists”:
On or an ? ou on average item X took ?
Cette phrase n'est pas claire pour moi.
Page 373
For cases such as
simple_array the choice of 0 or 1 as starting index is partly a matter of taste If you are like me you think of your thumb as the first finger on your hand, not the zeroth, and of your middle finger as the third, not the second.
Il manque un point après taste et avant If de If you are like me
Page 376
To change the value of
an item, the default mechanism is put (v, i) with the precondition we’ve seen:
valid_index (i).
with the precondition that we have seen serait mieux je pense.
If you misestimate, you may be the
algorithm will fail.
Retirer you may be
Unlike put, procedure force has no precondition and so is always applicable. If i falls outside of the interval lower..upper, it will call resize to accommodate the requested entry.
Pourquoi lower n'est-il pas en bleu dans lower..upper et pourquoi n'y a-t-il que .. et pas ...
Page 378
An array of type ARRAY [G] represents a total function from the integer interval lower..upper to G.
.. ou ... ?
Page 391
Deuxième boite. Il y a un x en noir au lieu de bleu
Below is a picture of how class LINKED_LIST implements the command put_right, which as specified earlier must add an element to the right of the cursor without moving the cursor. For a linked list, it suffices to create a new LINKABLE cell and update the linking:
Which, as specified earlier, must
Les virgules manquent
Tu pourrais aussi en rajouter une avant, without moving the cursor
Page 396
You should test your understanding of the reversal algorithm by writing its variants for other implementations studied next: arrayed lists and two-way lists
. le point final manque.
The complexity is O (1) for operations that need only perform operations at the cursor position: put_right, remove_right.
... operations that need only to perform ....
Le to manqué
Operations that may need to traverse the list are O (count). This is the case, as we already saw independently of the choice of implementation, for search and has.
...independently of the choice of implementation ...
Pourquoi of the choice?
The procedure reverse as just seen is also O (count). This is also the complexity of general cursor movement, go_i_th, as well as finish (implemented as go_i_th (count).
Deux fois also. Retire celui de la deuxième phrase
Page 397
which is O (n) (with a a previous attribute you can perform one back in O (1), but only one, invalidating the value of previous, so this not very useful).
Deux fois a with a a previous
Page 398
The manager (Roger Osmond) asked a senior developer to check the code, uncovering that it was performing back operations again and again — on instances of LINKED_LIST. Replacing this by TWO_WAY_LIST yielded an instant speedup factor of 23 (that is, the code ran twenty-three times faster). The programmers lived happily ever after, and never a single time did they raise their voices again about the speed of the generated code.
Pourquoi mentionner le nom du manager? Ce n'est pas comme si c'était Tony Hoare ou Knuth que tout le monde connait.
Page 399
ARRAY such as item and put. Internally, as shown in the figure, lower is 1, so as a result of the array invariant capacity = upper –- lower + 1 the upper bound lower is capacity.
upper –- lower Il y a un problème avec le trait entre ces deux mots.
Page 400
Then an arrayed list provides the benefits of arrays both in space (no need for reference fields such as right and left in the earlier solutions) and also speed if some random access will be needed;
both in space ..... and in speed plutot que also ou also in speed
Page 404
You may use it form example to declare a hash table of objects representing persons, indexed by their names, as
For example le m est en trop.
Page 405
If
you are too far below the real need, you will just pay for one more resizing (automatic, of course) at run time
Ajoute un . après time
Page 408
then to retrieve an item you have no any influence on which one you will get; the basic query is
Je ne comprends pas cette phrase
Page 409
The next two sections covers stacks and queues.
Retirer le s a covers
Page 410
Figure manquante ?
Page 411
the –
operators applies to the previous two operands,
Retirer le s a operator
Page 412
Consider a programming language, Eiffel or any other, where a routine can call a routine, which can call a routine, which ¼.; at execution this yields a call chain:
Pourquoi ajouter ...., Eiffel or any other, ?
Page 415
In class ARRAY the number of items is known as both count and capacity, with an invariant stating they are equal.
Stating that they are equal, non?
This should not be confused with the count of stacks, which gives the number of stack items—in the arrayed implementation, the number of array positions occupied by stack elements.
Cette phrase me semble bizarre.
Of course, the available memory is limited in the end, so you still have to ensure the total size of your data structures remains within control.
.... to ensure that the total size of your ....
Je trouve que c'est mieux de mettre that. Je trouve que ca rend la phrase plus facile à lire.
Page 418
a assembly line producing cars from parts,
n missing an assembly line
(with the obvious implementation of remove as out_index := out_index + 1 and put (v) as in_index := in_index + 1; rep [in_index] := v, where rep is an array), since we would quickly run out of space after a few put even if, as a result of one or more remove space remains unused at the beginning of the array:
ajouter une , après remove sur la dernière ligne.
When we increment in_index in the highlighted instruction, we do it modulo capacity: i \\ j is the integer remainder of i by j, as i // j is their integer quotient.
Après capacity faut-il : ou ; ?
Page 421
As we have seen, a common need on such structures, it to apply a certain operation repeatedly to all these objects.
.....structures, it ??? to apply ....
Il manqué un mot.
Page 422
Apply an to all items until the first one that satisfies, or does not satisfy, a certain condition.
Apply an ????? to all items
Il manque un mot.
Page 423
Dispensers let you access, insert and remove elements at only one place. A Last-In First-Out policy yields stacks, First-In First-Out yields queues.
Peux-tu verifier que c'est bien cela que tu veux dire. Ce n'est pas une critique mais comme c'est important et que je ne comprends pas assez pour juger je veux juste être sure.
14 Recursion and trees
The following notes are from Raphaël Meyer
page 427, paragraph starting with "For our immediate purpose ...": "and Conditional, in turn involves ... " should read "and Conditional in turn involves ..."
page 428, "Touch of History" textbox: "played the key role" is generally stated this way: "played a key role"
page 440, second paragraph, first sentence: "Any node C other than the root fall into" should read "Any node C other than the root falls into"
page 443, top of the page, first paragraph: "an assigner command for the the corresponding" should read "an assigner command for the corresponding"
page 443, final paragraph: it would be clearer and easier to read if commas were added, like so: rather than "Traversals such as preorder which always go as deep into a tree before trying other nodes are also known as depth-first." ... instead it should read "Traversals such as preorder, which always go as deep into a tree before trying other nodes, are also known as depth-first.
page 445, paragraph starting with "Our example binary ...": the final clause of this sentence doesn't make sense to me nor does it seem complete. "... all the values in the left subtree are less than the root value, 35, all those in the right subtree are greater, and again recursively in every subtree." Consider revising the final clause.
page 447, middle of the page: it seems to me that the O in "O (h)" should be bolded instead of italicized, right?
page 454, first paragraph underneath "Minimax" heading: "of backtracking algorithm," should read "of the backtracking algorithm,"
page 454, paragraph starting with "A primitive evaluation": "to be worth three as much" should read "to be worth three times as much"
page 455, paragraph starting with "Each player uses": "alternatively represent moves" should read "alternatively represent the moves"
page 455, paragraph starting with "In the figure": "choose, among the moves available from the current position (three in the figure) the" should read "choose, among the moves available from the current position (three in the figure), the"
page 455, M2: "The value of an internal node from which the moves are Maxi’s are the maximum" should read "The value of an internal node from which the moves are Maxi’s is the maximum"
page 458, final paragraph: "the adversary, which uses ..." should read "the adversary, who uses"
page 460, paragraph in the middle of the page: "Each player now stops exploring its alternatives whenever it finds" should read "Each player now stops exploring his alternatives whenever he finds"
page 460, paragraph starting with "Minimax and alpha-beta": "defined by a large search spaces" should read "defined by large search spaces"
page 462, paragraph starting with "We have seen": "Others such hanoi" should read "Others such as hanoi"
page 464, bulletpoint starting with "the body of Hanoi": "first argument. and also" should read "first argument, and also"
page 466, paragraph starting with "The value for ...": "Yet it has not obvious variant" should read "Yet it has no obvious variant"
page 471, paragraph starting with "here and in subsequent steps": "and each Fi+1 for i > 0, is defined as h (Fi)" should read "and each Fi+1 for i > 0 is defined as h (Fi)"
page 472, first paragraph starting with This immediately justifies": "never gets any more pair," should read "never gets any more pairs,"
page 475, second paragraph: "notion of recursion variant." should read "notion of a recursion variant."
page 480, third bulletpoint towards the bottom of the page: "activation record at top of the stack" should read "activation record at the top of the stack"
page 480, final paragraph: "of recursion in a high-level language we have learned" needs a comma. it should read "of recursion in a high-level language, we have learned"
page 481, paragraph starting with "(Instead of a full-fledged ...": "the context of a call: number of disks" should read "the context of a call: the number of disks"
page 483, point 2: "exclusively on the local." should read "exclusively on the local variable."
page 486, paragraph starting with "This simplification applies": "in the first case you must pop the other values (count, x, y, z), in the second you don’t." should read "in the first case you need to pop the other values (count, x, y, z), in the second you don’t."
page 487, second bulletpoint. The first sentence is a run-on. Consider revising.
page 489, point H3: there is an open parentheses "(" but it is never closed.
page 490, fourth bulletpoint: "Any loop can be expressed into an equivalent recursive form" should read "Any loop can be expressed in an equivalent recursive form"
page 493, problem 14-E.9: "This exercise requires a mathematical analysis," can be written "This exercise requires mathematical analysis,"
page 494, problem 14-E.12: the problem ends with a closed parentheses ")" that was never opened.
page 494, problem 14-E.13: "(Only you have solve the previous exercise.)" should read "(Only if you have solve the previous exercise.)" or "(Only when you have solve the previous exercise.)"
page 494, problem 14-E.15: "This exercise requires a basic knowledge of linear algebra" should read "This exercise requires basic knowledge of linear algebra"
page 494, problem 14-E.15: "and B a vector." should read "and B is a vector."
Comments by Annie
Page 425
... still doing very well thank you, is an example of a structure defined recursively, in the following sense:
Je retirerais le "thank you"
L'exemple est vraiment bien trouve c'est très spirituel mais le thank you gache un peu les choses.
Page 427
as in a Laughing Cow scheme.
Pourquoi a et pas the ?
Page 429
A man put a pair of rabbits in a place surrounded on all sides by a wall.
How many pairs of rabbits can be produced from that pair in a year if every month each pair begets a new pair which from the second month on becomes productive?
A man put or puts?
Page 430
There are indeed many such problems. One that concentrates many of the interesting properties of recursion with the least irrelevant detail arises from an attractive puzzle: the Tower of Hanoi.
Trop de many tu peux remplacer le deuxième par plenty
Page 431
When all is over, the tower
and the Brahmins will fall, and it will be the end of the worlds.
... the end of the worlds ou the end of the world
Page 434
send an SMS to the cell
phone of the appropriate priest or an email to her Blackberry, directing her to move a disk from source to target. For the rest of us you can write move as a procedure that displays a one-disk-move instruction in the console:
Ton histoire de pretre, pretresse avec le her me parait bizarre.
Page 436
Recursion also shares
properties with a loop solution, since it approximates the solution to the whole problem by solutions covering part of the data, but it is more general, since each step may combine more than one such partial solution.
Deux fois since. Tu peux remplacer le deuxième pas as
Page 443
In practice it is convenient to specify replace as an assigner command for the the corresponding query, by changing the declarations of this query to
item: G
making it possible to write bt.item := x rather than bt.put (x).
Retirer le deuxième the a la fin de la première ligne.
Page 454
• It is a two-player game. We assume two players called Minnie and Maximilian, the latter familiarly known as Maxi.
• To evaluate the situation at any time during a game, you have an evaluation function with a numerical value, devised so that a lower value is better for Minnie and a higher one for Maxie.
C'est Maxi pas Maxie
Page 455
Each player uses the minimax strategy to choose, from a game position, one of the legal moves. The tree model represents possible games; successive levels of the tree alternatively represent the moves of each player.
This assumption of symmetry is essential to the minimax strategy, which performs a depth-first traversal of the tree of moves to assign a value to every node:
Tu es sur de vouloir utiliser le mot "minimax" sans le mettre en bleu dans le texte.
M2 The value of an internal node from which the moves are Maxi’s is the maximum of the values for the node’s children.
????? Je ne comprends pas cette phrase. Il manque quelque chose mais je ne sais pas quoi.
Page 457
The auxiliary functions worst and better are there to switch between Minnie’s and Maxie’s viewpoints: the player is minimizing for any odd level l and maximizing for any even l.
un e en trop a Maxi, devrait etre Maxi's
Dans la marge
To avoid the repeated
use of the TUPLE
type,you may instead
define a small class
GAME_RESULT with
integer attrbutes value
and choice.
Ajouter un espace après la , et devant you
Ajouter un i a attributes
Page 489
Il y a une marque noire dans la marge de gauche.
Page 491
Our litte language is called WASO (acronym for With Abstract Syntax
Only) and has the following properties:
Ajoute un l pour little
From this class and the rules [] and [13] defining the function graph in the bottom-up interpretation of recursion, write a program that produces the i-th approximation of the graph, Hi, for any i. The algorithm may use loops, but it may not use recursion.
Est-ce normal que après the rules [] soit vide.
15 Devising and engineering an algorithm: Topological Sort
In section 16.1, just after the first figure: Money, Pass, Map, Louvre, Orsay Money, Pass, **Louvre, Map**, Orsay Money, Map, Pass, Louvre, Orsay The second one is wrong. -- Luchin Doblies, 1.12.2008.
Section 16.3, topic "Cycles in the constraints", line 4-5: "A topological sort program gets its input **in the form individual ordering constraints**, ..." Missing "of": "in the form of" -- L.D., 1.12.2008
Section 16.4, topic "The Loop", second last line of the code-square: if “Any elements remain” then-- Report cycle: cycle_found := True “Insert these elements into **cyclist**” end I believe cyclist should be plural, "cyclists". -- L.D., 1.12.2008
Section 16.4, topic "The Candidates", second page, line 4: "What concrete **date** structure should we use for candidates?" "date structure" instead of "data structure". -- L.D., 1.12.2008
Section 16.7, second line: "..., such as the "<“ relation on numbers." The quotes do not match in font. -- L.D., 1.12.2008
Corrections by Raphaël Meyer
page 499, in the "Definition: Relation" text box: (unnecessary dash): "set A (short for binary relation)—is a set of" can simply be written "set A (short for binary relation) is a set of"
page 505 first paragraph starting with "The relation ...": (extra s) "Our relations on points" should be "Our relation on points"
pages 508 and 509, entire pages: (formatting): it seems like there is excessive space in between paragraphs on these pages. is that normal?
page 512, bottom of the page: (missing word "the") "As new exit condition, we’ll simply have" should be "As the new exit condition, we’ll simply have"
page 514, in the code, feature "Access", sorted "List": (missing word "be") "the elements that can ordered in that way" should read "the elements that can be ordered in that way"
page 517, paragraph starting with "For our first attempt": (missing word "do") "(declared secret, as all .." should read "(declared secret, as do all ...)"
page 519, bottom of the page: (missing comma) "For example the" should read "For example, the"
page 520, formatting: why is there so much white (empty) space on this page?
page 522, paragraph starting with "we must also": (the "do" is unnecessary) "if you do want to do that" should read "if you want to do that"
page 523, paragraph starting with "There remains T1": (need to add "that" to sentence for clarity) "or report there isn’t any" should read "or report that there isn’t any"
page 525, towards the top: (formatting) shouldn't there actually be a piggy bank here, rather than just text saying that there should be a piggy bank?
page 533, "Touch of Heuristics" textbox: (need to remove the "s" on "structures") "into an internal data structures carefully" should read "into an internal data structure carefully"
PART IV: OBJECT-ORIENTED TECHNIQUES
16 Inheritance
Corrections by Raphaël Meyer
page 541, paragraph starting with "Order is what science ...": I think that "seek" here should be "seeks", since you are essentially talking about "science": therefore, "that science, and with it engineering, seek systematic" should be "that science, and with it engineering, seeks systematic"
Page 545, middle of the page: (missing diagram) there should be a diagram here but there isn’t.
Page 545, paragraph starting with “If the class”: (“do” should be “does”) “If the class do not exist” should read “If the class does not exist”
Page 546, paragraph starting with “From now on”: (missing comma) “from its parents if any.” Should read “from its parents, if any.”
Page 546, paragraph starting with “How then can”: (awkward wording) “(let the tooltip guide you to find it):” should read either “(let the tooltip help you find it):” or “(use the tooltip as a guide while finding it):”
Page 546, paragraph starting with “the result looks like”: (“comments” needs to be “comment”) “note a new kind of comments, here” should read “note a new kind of comment, here”
Page 547, paragraph starting with “Accumulating features”: (extra s needs to be removed) “inheritance mechanisms’s” should read “inheritance mechanisms’”
Page 548, bottom of the page, small paragraph starting with “Remember that”: (typo) “(atrributes, local variables)” should read “(attributes, local variables)”
Page 548, bottom of the page, paragraph starting with “’Polymorphism’ is the …”: (awkward wording) “with dynamic binding to be studied next” should read “with dynamic binding (to be studied next)” or alternatively “with dynamic binding, to be studied next.”
Page 549, paragraph starting with “As the definition notes”: (missing word in sentence) “not only from assignment but from argument passing” should read “not only from assignment but also from argument passing.”
Page 549, last sentence of the paragraph starting with “where the actual”: (wording needs to be changed and typo) “that have not be devised yet” should read “that have not yet been devised”
Page 549, paragraph starting with “In spite of its”: (awkward wording) “meaning, from its Greek roots, ‘ability’” should read “in Greek, ‘ability’”
Page 549, same paragraph: (awkward wording) “polymorphism involves neither any run-time change of objects nor any creation of objects with different types.” Should read “polymorphism involves neither run-time object changes nor the creation of objects with different types.”
Page 549, paragraph starting with “As a matter of fact”: (bad wording) “As a matter of fact you” should read “In fact you”
Page 550, paragraph starting with “We will not explore”: (bad wording) “ambiguity over” should read “ambiguity regarding”
page 550, paragraph starting with "But then plymorphism": (bad wording) "possibility of my_vehicle_for_today itself being polymorphic" should read "possibility that my_vehicle_for_today is polymorphic"
page 551, paragraph starting with "is of type Vehicle": (awkward sentence structure that leaves the sentence unclear) "vehicle type, and you don’t know. Nor do you need to know, since" should be divided differently. I would write "vehicle type. You don’t know which particular type it is, but don't need to know since"
page 551, paragraph starting with "Just calm down": (add the word "to" for clarity and sentence structure) "if it is, subject it to" should read "if it is, to subject it to"
page 553, paragraph starting with "As you have probably": (missing word "of") "to the type flexibility" should read "to the type of flexibility"
page 554, paragraph starting with "A consequence of the": (rewording: it is better to suggest that you have used descendant, rather than the chapter, therefore this needs to be rewritten) "(which has enabled this chapter to use just “descendant” so far)" should read "(which has enabled me to only use “descendant” so far in this chapter)"
page 554, paragraph starting with "All this just to": (typo, I don't know what "sas" means, I can't recommend another word): "it is the one we sas, but"
page 555, bottom half of the page underneath "Looking up the list of features": missing diagram.
page 556, paragraph starting with "We say that": (missing s on "features") "two kinds of feature" should read "two kinds of features"
page 557, towards the bottom of the page: (add the word "that" for clarity): "The reason move_next is" should read "The reason that move_next is"
page 558, paragraph starting with "This prohibits us": (add comma for clarity) "or VEHICLE, for example in create my_vehicle_for_today with the" should read "or VEHICLE, for example in create my_vehicle_for_today, with the"
page 558, paragraph starting with "Because creation", end of second sentence: (typo: the comma should be a semicolon, and "This" should not be capitalized) "view), This" should read "view); this"
page 558, paragraph starting with "Eiffel allows you": ("feature" is missing an s) "any deferred feature." should read "any deferred features."
page 558, bulletpoint starting with "the EiffelBase library": (missing word) "LINEAR (structures that can traversed one-way)" should read "LINEAR (structures that can be traversed one-way)"
page 558, bulletpoint starting with "The Eiffelvision graphics library": ("feature" should be plural) "concrete kinds of figure" should read "concrete kinds of figures"
page 558, very bottom of the page: (offers should be offer) "notably Java and C#, offers a language" should read "notably Java and C#, offer a language"
pages 558-559, sentence starting with "It is like a class": (tense is wrong) "It is like a class where all features would be deferred (and would not have any contracts)" should read "It is like a class where all features are deferred (and do not have any contracts)"
page 565, paragraph starting with "All this discussion": (clarity/style issue) "It does not address well the" should read "It does not effectively address the"
page 566, paragraph starting "Such references": (missing the word "the") "the concept of stored-program computer:" should read "the concept of the stored-program computer:"
page 567, paragraph starting with "You can trace in the figure": The second sentence in this paragraph ("Following the ...") is not a complete sentence. Please revise.
page 567, bottom paragraph starting with "Explanation:" : (period should be a comma) "C routine. which we apply" should read "C routine, which we apply"
page 568, paragraph starting with "The time overhead": ("bound" should be "bind"): "to bound it by a" should read "to bind it by a"
page 569, paragraph starting "The above code": ("an" should be "a") "than an starting address" should read "than a starting address"
page 570, paragraph starting with "In these cases": (wrong word order) "programmer mistakenly to assume" should read "programmer to mistakenly assume"
page 570, paragraph starting with "The rule to remember": (formatting) "is that dynamic binding" should read "is that dynamic binding" i.e. the "d" needs to be bolded as well.
page 570, paragraph starting with "These observations complete": (typo: "into" should be "to") "if you want to get into the" should read "if you want to get to the"
page 571, paragraph starting with "You will also": (sentence missing a "that" or a "the" to make it complete) "This will also reveal that heir may" should read "This will also reveal that that/the heir may"
page 573, towards the bottom of the page: (incomplete sentence; revision needed because the sentence does not end coherently) "In other words, T, as a subcontractor, is breaching the contract to which the original contractor S, the only known to clients such as C."
page 575, final sentence of paragraph starting with "When writing a deferred": (unnecessary comma that distorts meaning of the sentence) "which descendants may refine, but never contradict." should read "which descendants may refine but never contradict."
page 576, paragraph starting with "The Contract": (sentence missing "as") "specify, broadly or narrowly as you wish," should read "specify, as broadly or narrowly as you wish,"
page 578, paragraph starting with "Inheritance is specialization": (I think you should add an "a" to this sentence since you are writing in language here without any mention of code): "vehicles specialize the notion of moving object," should read "vehicles specialize the notion of a moving object,"
page 578, same paragraph, same sentence: (I think you should add an "a" to this sentence since you are writing in language here without any mention of code): "taxis specialize the notion of vehicle." should read "taxis specialize the notion of a vehicle."
page 581, paragraph starting with "but not,": (add a "with" for clarity and correctness) "but not, of course, a1.first_f, since" should read "but not, of course, with a1.first_f, since"
page 581, paragraph starting with "but not,": (reorder words for clarity) "the above two calls would" should read "the two calls above would"
page 582, paragraph starting with "Apart from": (incorrect wording) "renaming is useful to get" should read "renaming helps you get"
page 585, second bulletpoint: (replace "itself" with "it too") "A list is a special kind of “chain”and itself has more" should read "A list is a special kind of “chain”and it too has more"
page 586, paragraph starting with "Sorting algorithms": (add "that" for clarity) "assuming what we are" should read "assuming that what we are"
page 588, bulletpoint starting with "If you define": (shouldn't "operation" be plural here?) "it provides all the required operation" should read "it provides all the required operations"
page 588, paragraph starting with "to specify that": ("parameters" should be singular) "an actual generic parameters," should read "an actual generic parameter,"
page 589, paragraph starting with "constrained genericity": (wrong word order) "Other language approaches are possible to the problem discussed here" should read "Other language approaches to the problem discussed here are possible"
page 590, first bulletpoint: (sentence missing the word "at") "you cannot introduce it a higher level" shuold read "you cannot introduce it at a higher level"
page 593, first bulletpoint: (add comma for clarity and flow) "if the object test appears as the condition of an if the scope" should read "if the object test appears as the condition of an if, the scope"
page 596, paragraph starting with "In such cases": (add comma for clarity) "If you are discriminating between a whole range of types you are" should read "If you are discriminating between a whole range of types, you are"
page 596, paragraph starting with "Assume for example": (sentence missing the word "the") "with facility for flashing" should read "with the facility for flashing"
page 597, two bulletpoint at the top of the page: revision needed - they should both speak of "can" or both speak of "could", but should not be left as they are right now (i.e. the first bulletpoint speaks of "can" and the second of "could")
page 597, paragraph starting with "As another example": (typo) "a program formater," should read "a program formatter,"
page 598, paragraph starting with "The features are not": (missing words) "better collect them in a" should read "it is better to collect them in a"
page 602, first small paragraph at the top of the page: (add word "but" to make the sentence complete) "comments, not relevant" shuold read "comments, but not relevant"
page 603, last bulletpoint: (consider revising this sentence; it does not seem to make grammatical sense) "the type of any object to which a variable may be come attached at run time"
page 603, same bulletpoint: (add a comma for clarity) "This ensures that in any assignment or argument passing the type" should read "This ensures that in any assignment or argument passing, the type"
page 606, bulletpoint starting with "A conditional": (unclear sentence, consider revising) "A conditional if the form" should read "A conditional is of the form"
page 606, step 1 at the bottom of the page: (Capitalize first word) "1. using" should read "1. Using"
page 606, step 1 at the bottom of the page: (replace the comma with a "but") "not using multiplication, using Euclid’s algorithm" should read "not using multiplication but using Euclid’s algorithm
page 607, paragraph starting with "Check the output": there is an open-parenthesis that is not closed anywhere. Please close it. ====End corrections by Raphaël Meyer"
End corrections by Raphaël Meyer
18 Operations as objects: agents and lambda calculus
(Comments by Annie Meyer)
Page 653
It has been particularly successful for Graphical User Interfaces (GUI), which we’ll use as our primary example.
Tu avais dit que tu voulais retirer toutes les contractions.
Page 654
Welcome to the modern world. If you write a program with a GUI, you let users choose, at each step, what they want to do, out of many possibilities — including some unrelated your program, since a user may go to another window, for example to answer an email.
Unrelated to your program ? le to manque
Page 655
Figure à ajouter
but this suffers from all the problems we have seen with multiple-choice algorithm structures (as part of the justification for dynamic binding): it’s big and complex, and highly sensitive to any change in the setup.We want a simpler and more stable architecture, which we won’t have to update each time there is a new control.
Ajouter un espace apres setup. et We
Page 656
Such a system might have sensors monitoring temperature, pressure, humidity; any new recording, or just those exceeding some preset values, may trigger an event which some elements of the software are prepared to handle.
Deux fois some
Tu peux remplacer le deuxième par other
Page 657
Usually there’s more: when and where did Columbus sail? What were the cursor coordinates? But in some cases all that matters is that the event occurred, as with a timeout event indicating that a previously set deadline has passed.
it’s an operation that makes information (the arguments a, b, c) available to a software element (the feature f ).
Page 658
The term “argument” highlights the similarity with routines. Pushing this similarity further, we’ll assume that the arguments are grouped in an ordered list, like the arguments in a call x.f (a, b, c).
The notification model is more flexible and we’ll assume it from now on.
before it’s triggered the event does not exist, and afterwards it’s too late to subscribe to it!
after you’ve spotted the headline on
Page 659
Although we might define an event type for each key on the keyboard, it’s more attractive to use a single “key press” event type of signature [CHARACTER], where the argument is the key code.
As always when you are hesitating about introducing a class, the criterion is “is this a meaningful data abstraction, with a set of well-understood operations applicable to all instances?”. Here:
Il y a un point en trop avant Here:
If we decided to build a class to represent a particular event type, its instances would be events of that type; but they have no useful features. True, each event has its own data (the arguments), but there’s no meaningful operation on the event other than accessing such data.
Page 660
E3 At any time, a publisher can trigger an event. This will cause execution of actions registered by subscribers for the event’s type. These actions will can use the event’s arguments
c'est will ou can? La phrase est terminée ou pas?
Page 661
E2 A subscriber is any element that needs to handle such GUI events; it registers the routines it wants to execute in response For example you may register, for the mouse click event type on a button that says “OK” in a file saving dialog, a routine that saves the file.
Il manqué un point avant For example
the other way around it’s more a matter of methodology, and we will see how various architectural solutions fare against this criterion.
Page 662
It is not possible (points 1, 5) to subscribe to an event; as we have seen, the event does not exist until it has been raised, and when it has been raised that’s too late. (Nice idea, though: wouldn’t you like to subscribe retroactively to the event “IBM’s shares rise by at least 5%”?) A subscriber subscribes to an event type — to declare that it wishes to be notified of any event of that type raised during execution.
“A subscriber can handle multiple events from multiple publishers” (point 2): this might seem to suggest some sophisticated concurrent computation scheme, where a subscriber catches events from various places at once, but
in reality is just a mundane observation: a given subscriber may register for
several event types, and several publishers may trigger events of a given type.
In reality it is just ......, le it manque non?
Point 5 states that when “an event” has multiple subscribers, each will handle it synchronously (meaning right away, blocking further processing) when “an event” is raised. Read literally, this would suggest that two
“events” are involved! That’s not the idea: the sentence is simply trying to
say that when multiple subscribers have registered for a certain event type, they handle the corresponding events synchronously. It uses a single word, in the same breath, with two different meanings.
Je continue à te signaler les contractions si tu veux les retirer.
Page 663
Definition: Context In event-driven design, a context is a boolean expression specified by a subscriber at registration time, but evaluated at triggering time, such that the
registered action will only be executed if it the evaluation yields True.
Un mot en trop "it"?
Page 665
you’ll have to add some program text, often called “glue code”; the less of it the better. The last requirement is critical to the quality of a system’s architecture, especially when the goal is to build user interfaces: you shouldn’t have to design the core of an application differently because of a particular interface.
Page 671
it’s easy to ease the restrictions later if you find that new classes need the features.
Page 672
We’ll call such descendants “subscriber classes” and their instances “subscribers”.
Page 673
With handle as written above you woll only find them at run time, through the tests
Will?
on the size and element types of args; that’s too late to do anything serious about the issue, as reflected by the rather lame “Do nothing, or report error” above: doing nothing means ignoring an event (is that what we want, even if the event is somehow deficient since it doesn’t provide the right arguments?); and if we report an error, report it to whom? The message should be for the developers — us! — but it’s the poor end user who will get it.
Pourquoi "poor" end user? Je trouve ce mot inutile.
Page 674
The only missing part of the Observer pattern’s implementation is the body of the publish procedure in PUBLISHER, although I hope you have already
composed it in your mind. It’s where the pattern gets really elegant:
Subscribers directly subscribe to publishers. This causes undesirable coupling between the two sides: subscribers shouldn’t have to know which
Page 676
it’s also much simpler. The key boost comes from the agent and tuple mechanisms.
We won’t have PUBLISHER or
SUBSCRIBER classes any more, but just one class — yes, a single class solves the entire problem — called EVENT_TYPE.
Page 677
Of course we’ll explore the implementation too, as I am sure you’ll want to see it. (It will actually be more fun if you try to devise it yourself first.)
One of the advantages is that you don’t need to worry about when to create the object; whichever part of the execution first uses left_click will (unknowingly) do it. We’ll see in just a moment where this declaration of the event type should appear; until then let’s assume that subscriber and publisher classes both have access to it.
Page 678
Whenever the context is relevant — subscribers don’t just subscribe to an event type as in [41], but to events occurring in a context, as in [42]—the proper architectural decision is to declare the relevant event types in the corresponding context classes.
For events that are relevant independently of any context information, declare the event type in a generally accessible class.)
Parenthèse ou pas? Ou une en trop ou une manquante.
Page 680
In an environment with manual memory reclamation (C, C++), it’s even worse. In either case we have a source of “memory leak”: as execution fails to return unneeded space, memory occupation continues to grow.
Page 682
MVC revisited One of the consequences of the last design is to simplify the overall architecture suggested by the Model-View-Controller paradigm. The Controller part is “glue code” and it’s good to keep it to the strict minimum.
Page 683
This solution achieves complete uncoupling between model and view; in a typical application the controller will still be still a small component, achieving
still 2 fois
(So from the order of events it’s really the “Subscribe-Publish” paradigm.)
Page 685
you shouldn’t use client elsewhere if the conditions are the same. Consistency is also particularly important for an API, to ensure that once programmers have learned to use a certain group of classes they can expect to find similar conventions in others. Such tasks can be carried out to improve existing designs, an activity known as refactoring. It’s indeed a good idea always to look at existing software critically, but prevention beats cure.
Touch of Methodology:
Assessing software architectures
When examining possible design solutions for a given problem, discuss alternatives critically. The key criteria, are: reliability, extendibility, reusability, and simplicity.
Pourquoi une , avant are?
18.8 FURTHER READING
Il n'y a pas de consistence dans les espaces entre les articles ou livres cites et les commentaires que tu ajoutes.
Le plus simple serait de rajouter des espaces plutôt de d'en retirer car sinon cela va modifier la pagination puisque la page 688 est blanche.
19 Event-driven design
20 Program correctness and proofs
PART V: TOWARDS SOFTWARE ENGINEERING
21 Introduction to software engineering
PART VI: APPENDICES
A Using the EiffelStudio environment
B Eiffel syntax specification
C An introduction to C++ (material by Nadia Polikarpova)
p. 770, Section "Derived types": "since it is possible to assigned a dereferenced" --> "since it is possible to assign a dereferenced" -- Stephan 18/2/2009
p. 777, "a::x" --> "A::x" -- Stephan 18/2/2009
p. 780, "trying to access a non-existen object" --> "trying to access a non-existing object" -- Stephan 18/2/2009
p. 782, in "exception through throw ()).", the full-stop should be black (not blue) -- Stephan 18/2/2009
p. 783 top, "If no matching try block" --> "If no matching catch block" -- Stephan 18/2/2009
p. 789 bottom, "assert b" --> "assert b;" -- Stephan 18/2/2009
p. 793 top, "Blocks correspond to Eiffel compound and consists of" --> "Blocks correspond to Eiffel compounds and consist of" or "Blocks correspond to Eiffel compound statements and consist of" -- Stephan 18/2/2009
p. 794, top box: "for (init_statement expression;" --> "for (init_statement; expression;" -- Stephan 18/2/2009
p. 798 top, in "a fraction part, an e symbol, followed by an optionally signed": the e symbol is also optional. -- Stephan 18/2/2009
D An introduction to Java (material by Marco Piccioni)
E An introduction to C# (material by Benjamin Morandi)
p. 742, 4th line from the bottom: "reclaims an object;." --> "reclaims an object." -- Stephan 16/2/2009
p. 743, 2nd line from the top: "No overloading here;" --> "There is no overloading here" or "Destructors may not be overloaded" -- Stephan 16/2/2009
p. 743, Last line of text: "use at your own risk" --> "use them at your own risk" -- Stephan 16/2/2009
p. 744, Get consistency among "One-dimensional array" and "Two dimensional arrays", i.e. use "Two-dimensional array" -- Stephan 16/2/2009
p. 746, There is a black line in the margin next to the top box. -- Stephan 16/2/2009
p. 746, "C [G, H –> T create make end" --> "C [G, H –> T create make end]" -- Stephan 16/2/2009
p. 748, in "do {statements} while (condition)", the first curly brace should be blue. -- Stephan 16/2/2009
p. 748, "Typical causes of exception" --> "Typical causes of exceptions" -- Stephan 16/2/2009
page 756: Title of "INHERITANCE" section should be de-capitalized like in "Inheritance" for consistency with other section titles. -- MP 14/2/2009
p. 757, Just before B.5: "if (exp is T)" --> "if (exp is U)" -- Stephan 16/2/2009
p. 760, "The rest as before ...]" --> "The rest as before ...}" -- Stephan 16/2/2009
p. 761, "returns into an array" --> "returns in an array" or "returns an array of attributes" -- Stephan 16/2/2009
New appendix D - From C++ to C
p. 801 bottom, "compilers, including for Eiffel" --> "compilers, including Eiffel compilers" or "compilers, including ones for Eiffel" -- Stephan 18/2/2008
Typos reported by Ernst Leisi (no chapter numbers given)
(Second version [the one with 910 pages])
s. 51 - What this tells us is that the objects our programs manipulate classify ... sounds kind of strange... the objects our programs
themselves naturally into certain classes
s. 59 - Line8.i_th (2) is “La_Motte” and so on. ... there is no La_Motte on the picture
s. 61 - Line8.remove_all_remove_all_segments ... why two times remove_all ?
s. 69 - invariant (where * denotes multiplication: ... missing " ) "
s. 84 - (a = b) or (c and ((not d) = e))) ... the last " ) " is one too much or there should be one at the beginning ( " ( " )
s. 97 - Line8.i_th (2)).is_exchange ... " ) " in both examples
s. 98 - mathematicians often use a period “.” or a comma “,”; ... the last -> " <- is not written with normal "style" :O
s.100 - {3, 7, 911, 13, 15}: ... missing " , " between 9 and 11
s.111 - The first thing we need in our class is a feature representing the line to be built. ... "We call it (the feature) fancy_line... but the feature is " build_a_line " i guess
We call it fancy_line.
s.121 - line_exists: s /= Void ... line_exists: l /= Void
s.125 - instruction as executed by clients is jot just create stop1 ... jot ? ^^
s.125 - line_exists: s /= Void ... line_exists: l /= Void
s.128 - 1 • he precondition of its creation procedure. ... missing " T "
s.132 - One immediate question is how > you will you < specify the root class and root creation procedure of a system.
s.134 - This is true of unqualified calls: ... true for ?
s.136 - made of components to be developed autonomously and combined in may different ways. ... many
s.141 - 687 + 42 = 29 ... 729
s.146 - It is the control structure we have been using implicitly in all the examples so far, ... they would be executed (i guess)
since we have been writing instructions under the assumption that they would executed in the order given.
s.151 - full.extend (metro_1)] ... " ] "
s.152 - this is true in both its “” and its “”. ... its what?
s.162 - Afterexecution ... After execution
s.163 - If you have ever try to use a program only to see it “hang”, it might very ... tried
s.171 - Of course this convention is not there by accident, but intended ... to ensure ?
precisely ensure that the typical iteration scheme on a list
s.183 - chosen by the programmer, who lets the compiler maps them to memory ... lets the compiler map them
locations.
s.192 - part of the loop, The loop correctness rules ... , T
s.195 - interations ... (maybe iteration?)
s.195 - In the discussion of data structures.we will see that it is possible, without ... " . " ... " constrol " ... " to to " new constrol constructs, to to define powerful iterators applicable to a wide range of object structures.
s.197 - In addition, as yo may have ... you
s.199 - The rationale for this policy—which may appear surprising at first—is that a ... " lists " maybe ?! Multi-branch explicitly list a set of expected cases and their desired treatment.
s.208 - The last example of our study of conditionals provide a good case for defining ... " provides "
a “functional abstraction” in the form of a routine.