# Random: On Generality

When I was in second grade Mrs. Hesse tried to teach me basic geometry. The shapes we covered were the trapezoid, the parallelogram, the rectangle, the square, the rhombus, and the triangle. And all of them had their own ways to determine area. A square involved multiplying a side by itself, a rectangle involved multiplying a height by a width —

“But that’s what a square is. It’s just the height is the width,” I said.

Mrs. Hesse was emphatic. Squares and rectangles were different things, and that meant they had to be treated differently. And then we have parallelograms, which are also height times width —

No, they’re different things, and that means they have to be treated differently.

“But we’re not treating them differently.”

Stop being so stubborn, Robert! Now, moving on: a trapezoid—

“That’s a cool word!”

Yes it is. A trapezoid is anything that has a pair of parallel sides. And we compute trapezoids like so:

“That’s awesome!” I exclaimed.

And on to triangles, which are —

“One half the base times the height! Just like a trapezoid!”

No, Robert. It’s okay, this is very confusing, I know. A trapezoid is half the sum of the bases times the height. A triangle is half the base times the height.

“But a triangle is a trapezoid!” I pleaded.

No, Rob. A triangle has three sides and three angles. A trapezoid is a quadrilateral. It has four sides and four angles.

“A triangle is a trapezoid where one of the bases is zero length. One half the sum of the bases, the first base plus zero, is the first base. So it’s half the base times the height!”

Rob, listen, this is very important: different things are different and must be treated differently. A triangle isn’t a trapezoid. I don’t know where you’re getting this.

I sat there in frustrated silence for a moment. “Mrs. Hesse, I know I’m just seven, but — are you sure you understand this stuff?”

I was sent to the principal’s office for my stubbornness.

There are three lessons here for programmers.

First, be careful in strongly-typed languages. Just because two things are of different types does not mean they are actually different in any meaningful way.

Second, be careful in object-oriented design. The hierarchies which make the most sense in formalism (“a triangle is a special case of a trapezoid”) may be completely at odds with the end-user’s expectation of the hierarchy (“triangles are different from quadrilaterals”).

Third, be very careful when you’re telling the person in charge they don’t know what they’re doing. It never goes well, and it goes twice as badly if you can prove you’re right.

1. Dave

Darn, now that’s interesting. I never would have thought of a triangle as a special case of a trapezoid.

2. Michael Carman

Ha! I learned lesson #3 at the same age and in essentially the same way. In my case I corrected my teacher on the definition of a word. I don’t remember the word but I *do* remember that my definition was correct and that it did *not* go over well. She loathed me for the rest of the year.

3. nonblanche

I think introducing kids around that age to basic geometry, instead of the whole linear First You Must Pass Algebra 1 (and/or 2) THEN We Will Allow You To Apply The Formless Numbers And Letters To Shapes idea so important to my schooling years is the BETTER way to get kids into mathematic learning.

I learned more about algebra in OCC’s early Computer Graphics class for art students (we used the New! Amazing! Apple IIe computers, it was the only community college at the time with a real CG program in the country) than the years of trying to sort out numbers and letters and what it all meant in junior high, high school, and college. I’ll never forget watching that screen draw a circle, radial line by radial line, and having that epiphany of Pi being a magical number that exists in its own reality.