"""

Ada Lovelace is known for being the first computer programmer, which is cool, except 1) she never actually ran her programs, 2) the programs were for a machine that was never built, and 3) neither her program or the machine had any influence on modern CS.
[ . . . ]
Why not instead use Barbara Liskov? The "Liskov Substitution Principle", the 'L' in SOLID, is named after her. Her work on CLU has influenced almost all modern languages. She invented abstract data types. She invented ITERATORS!
[ . . . ]
Or Frances Allen? First woman to win the Turing Award. Major, *major* innovations in optimizing compilers that compiled high level languages into FAST bytecode. Without her we might still be stuck writing assembly for anything that needs performance.
[ . . . ]

"""

β€Œnitter.snopyta.org/hillelogram…
I'm glad that Margaret Hamilton has been receiving more recognition in the last few years.

She is receiving the wrong kind of attention, in my mind: People show that picture with the Apollo printouts as her achievement, and then you get nitpickers in the comments about how she didn't write all the code herself blahblah.

While it's cool that she led the Apollo software team, and that's what she received the Presidential Medal of Freedom for in 2016, her real historical contribution is that she founded software engineering as a discipline and coined the term (among others, possibly). She founded two software companies and through them and her work on the Apollo project before then did groundbreaking work on formal methods and software correctness.
Show thread
Grace Hopper does get almost the same level of name recognition as Ada Lovelace, at least in nerd circles. The Department of Information and Computer Science at LinkΓΆping University has e.g. had two conference rooms Ada and Grace for decades.

I think most people who know her name know that she was a military officer in the navy, but on the computer science side I'm not sure everyone knows more than "uh, she was involved in COBOL, I think?".

She wrote the world's first compiler and coined the word.
Show thread
Hopper *was* "involved in COBOL" as a technical consultant and later a committee member, but more importantly she (and the team she led) designed B-0 (FLOW-MATIC), the language that COBOL was standardizing.

A decade earlier, she had implemented the world's first "compiler" while on the Harvard Mark I team, basically a linker or macro assembler, taking machine code as both input and output. This was the work that she formalized as the A-0 language while on the UNIVAC team, which in turn led to A-1, A-2, A-3, AT-3 and finally B-0, which used text input.

en.wikipedia.org/wiki/Harvard_…
en.wikipedia.org/wiki/A-0_Syst…
en.wikipedia.org/wiki/History_…

#WomenInComputerScience
Show thread
Barbara Liskov and Stephen Zilles defined abstract data types (ADTs) in "Programming with abstract data types" (1974), doi 10.1145/942572.807045, web.archive.org/web/2016050806…

She defined what would later be called the Liskov Substitution Principle in "Data Abstraction and Hierarchy" (OOPSLA keynote 1987), doi 10.1145/62138.62141, www.cs.tufts.edu/~nr/cs257/arc…

In this OOPSLA 2009 keynote, "The Power of Abstraction", she looks back at ADTs, her language CLU (which unlike SmallTalk used early binding and compile-time checks and influenced C++), subtyping and inheritance, and takes a brief look at the future:

invidious.snopyta.org/watch?v=… (1h 18 min)
www.youtube.com/watch?v=qAKrMd…

(now watching)
Show thread
Follow

@clacke Looking in that 1974 ADT paper, for the examples they use some variant of PASCAL.

I remember coding in PASCAL. Takes me back to my early coding days, it was the second language I learned, after BASIC.

One really good thing in PASCAL that I saw now in that paper, is how you write assignments, to set x to 5 you write
x := 5
In my opinion that was much better than the x=5 that we write nowadays in these fancy-pancy new languages like C. πŸ™‚

Β· Web Β· 2 Β· 0 Β· 2
@eliasr > second language I learned, after BASIC

Same!

The := is intended as an ASCII representation of an arrow pointing left, the value goes into the reference.

Python has now revived that spelling of the operator for assignment expressions (normal assignments are statements), and they call it the "walrus operator".

I agree with you that := is better than =. It's much harder to accidentally type := when you mean = than it is to accidentally type = when you mean ==.

(don't get me started on == vs === in JS)
@eliasr @clacke > new languages like C

You don't read that kind of thing everyday πŸ˜„οΈ

@lanodan @clacke I had to look it up now, looks like PASCAL appeared in 1970 and C in 1972 so it's only 2 years difference. But C is a new language, compared to PASCAL. πŸ™‚

About the assignment operator, I was teaching C to beginners and there was always the question why we need to write == in if statements. I wanted to say to the students, "well, I often wonder that myself".

It is especially confusing for students who know a lot of math, then assignment with a simple = is really confusing.

@lanodan @clacke Because in C you can write in your program things like this:

x = 5;
y = 2;
x = y;

that is complete bogus for a mathematician, if we just established that x is 5 and y is 2, then how the hell can x suddenly be equal to y. Madness! πŸ™‚

Mathematicians understandably like the arrow or := much better.

@eliasr @lanodan I assume the single = in C comes from BASIC, where you originally had to say LET A=5, but later the LET keyword was made optional.

@clacke @lanodan Ah, they made it optional. Probably part of the effort to allow programs to be typed with as few characters as possible, seems to have been considered an important goal back then for some reason. Now I'm not so sure that being able to type short-and-cryptic code is good at all.

I think it would be good if we had non-optional LET syntax or similar in C, that would make our programs easier to understand, and then we could have skipped the double == in comparisons.

Sign in to participate in the conversation
Librem Social

Librem Social is an opt-in public network. Messages are shared under Creative Commons BY-SA 4.0 license terms. Policy.

Stay safe. Please abide by our code of conduct.

(Source code)

image/svg+xml Librem Chat image/svg+xml