https://buttondown.email/hillelwayne/archive/why-do-regexes-use-and-as-line-anchors/
Last week I fell into a bit of a rabbit hole: why do regular expressions use $ and ^ as line anchors?1
This talk brings up that they first appeared in Ken Thompson's port of the QED text editor. In his manual he writes: b) "^" is a regular expression which matches character at the beginning of a line.
c) "$" is a regular expression which matches character before the character (usually at the end of a line)
QED was the precursor to ed, which was instrumental in popularizing regexes, so a lot of its design choices stuck.
Okay, but then why did Ken Thompson choose those characters?
(Score: 2) by bzipitidoo on Thursday March 28 2024, @05:12AM (7 children)
I've been studying the history of computation, and I can say that the reason for many of the decisions is a desperate hurry. Just as soon as it's good enough, get that new tech out the door before the competition does.
What do you do when in a big hurry? You don't make up something completely new, you take whatever existing ideas there are that are familiar to you and that can be most easily and quickly adapted to the new need. This is why ASCII so slavishly follows the layout of that 19th century invention, the typewriter. Except that for the letters, it kept to a far, far older convention: alphabetic order, which goes back about 3800 years. And why not? You figure that the pioneers of typing worked out a decent choice and arrangement of symbols, why reinvent that wheel? EBCDIC on the other hand ultimately can trace its ancestry to another 19th century invention, the telegraph. The typewriter itself is no exception to this principle, having been inspired by pianos. That is why our computer keyboard is called a "key" board and not a button board or some other term. "key" comes from pianos, which comes from the musical notion of a "key" in which a piece of music is played.
As to programming languages, they borrowed heavily from mathematical notation. The hurrying was a little different in this case. With the success of FORTRAN in the mid 1950s, computer scientists realized people would all go off and do their own thing if they didn't come up with a standard, quick. They produced ALGOL 58, then ALGOL 60. ALGOL was very influential, but it didn't nip in the bud efforts to make more programming languages.
(Score: 2) by hendrikboom on Thursday March 28 2024, @01:24PM (2 children)
And, of course, Algol 68. Which introduced an algebra of types, which became the type system of C after some syntax changes that made it harder to understand.
(Score: 2) by hendrikboom on Thursday March 28 2024, @01:48PM
And some semantic changes that made it significantly less secure. And easier to implement.
(Score: 3, Informative) by bzipitidoo on Thursday March 28 2024, @08:12PM
And then, after ALGOL 68, the language just vanished. Did you ever wonder what happened to it? Pascal, that's what. ALGOL W was an alternate vision for the next version of ALGOL that was rejected in favor of what became ALGOL 68. ALGOL W was then used as the basis for Pascal.
(Score: 2) by ElizabethGreene on Thursday March 28 2024, @02:44PM (2 children)
How do you pronounce ASCII and EBCDIC? Mine are Ass-key and Ebb-ka-dick.
(Score: 2) by tangomargarine on Thursday March 28 2024, @06:01PM
Ebs-dick/Eb-stick
"Is that really true?" "I just spent the last hour telling you to think for yourself! Didn't you hear anything I said?"
(Score: 2) by cereal_burpist on Saturday March 30 2024, @03:45AM
(Score: 2) by krishnoid on Thursday March 28 2024, @09:32PM
Citations requested. There's a lot of value in being able to distinguish which decisions were made quickly [computer.org] from ones that were released after a careful design process, and how they anti/correlate to the quality of the result.