4 ms·
As one of few authors of an implementation of `dc` and `bc`, but one who never actually met Lorinda Cherry, perhaps I have a slightly different perspective of h
by ghoward 5y ago
As one of few authors of an implementation of `dc` and `bc`, but one who never actually met Lorinda Cherry, perhaps I have a slightly different perspective of her work.
I've read the closest thing we have to the original sources of `dc` and `bc`: the source bundled with Plan 9. It didn't take me long to read the entirety of the source because they were simple and concise. That immensely impressed me.
However, I hate to say that my youth (compared to Ms. Cherry, at least) caused me to look at the source with disdain, mostly from a lack of handling errors caused by user mistakes.
It took several days for me to think more carefully about the context. She was writing for herself and other programmers, who would probably be able to recognize when they made a mistake and fix it.
The code has a simple elegance that mine will never have. Sure, you might call mine "industrial strength," but I think a quote by ** Gabriel sums up the difference between Ms. Cherry's code and mine:
"I'm always delighted by the light touch and stillness of early programming languages. Not much text; a lot gets done. Old programs read like quiet conversations between a well-spoken research worker and a well-studied mechanical colleague, not as a debate with a compiler. Who'd have guessed sophistication bought such noise?" [1]
And that says nothing of the design of her software.
`dc` was, and in many ways still is, the simplest calculator that could ever exist. It was the simplest shell too, with the `!` command. I personally believe that it was for this reason that `dc` was the first program Bell Labs made run on the PDP-11. [2] `bc`, while more complicated, is also a great design (for the time).
In short, Ms. Cherry was a master of her trade, and I only recognized that from afar.
One of the items I had in my bucket list was to meet Ms. Cherry; because of her work on `dc` and `bc`, I felt a kinship to her having written my own. It is sad to know that item will never happen. Oh, well.
[1]: https://people.csail.mit.edu/alinush/6.824-spring-2015/l07-go.html https://people.csail.mit.edu/alinush/6.824-spring-2015/l07-g...
[2]: https://youtu.be/EY6q5dv_B-o?t=1767 https://youtu.be/EY6q5dv_B-o?t=1767
- muizelaar 5y agoHere's a copy of dc: https://github.com/dspinellis/unix-history-repo/blob/Research-V7-Snapshot-Development/usr/src/cmd/dc/dc.c https://github.com/dspinellis/unix-history-repo/blob/Researc...
- ghoward 5y agoThank you. It does look familiar.
- abrookewood 5y agoThat's a very insightful quote.
- atdrummond 5y agoShe would be the first to tell you that you have met her, by using her programs. Her programming style, which you've done a superb job of relaying, highly reflected her personality and the values she held dear. It sounds like you two would have gotten along splendidly had you met physically, from what I know from the time I spent working with her (albeit mostly virtually).
- ghoward 5y agoThank you for your kind words. I hope you are right.
- graderjs 5y agoThat's a pretty awesome tribute. Thank you for sharing!
- zozbot234 5y ago> I'm always delighted by the light touch and stillness of early programming languages. Not much text; a lot gets done. Old programs read like quiet conversations between a well-spoken research worker and a well-studied mechanical colleague Much of this was of course due to the lower performance of computing at the time - compilers just weren't highly sophisticated, and it made sense to code simply so as to leverage them as much as possible. That same attitude also extends to old-style "system design", which was often bespoke in a way that would not be very well regarded today. A hardware-portable compiled system like early Unix, designed for practicality and real use, was a huge novelty back then.
- dboreham 5y agofwiw the original dc/bc source was on the V7 tape and can still be found there: https://www.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/dc https://www.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/dc https://www.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/bc.y https://www.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/bc...