Live data from Hacker News

A Science of Concurrent Programs [pdf]

lamport.azurewebsites.net

11–20 of 34 posts

Re: A Science of Concurrent Programs [pdf]

#11
post #6
post #3

Earlier quoted context omitted.

People often mistake software engineering, or IT with computer science. Those are not science.

Is computer science even science? It feels like we should have called ourselves computationally-applied mathematicians.

It is a side effect on how it is called in US and some other english speaking coutries I guess.

What people in US call computer science, in Portugal is a math degree major, mostly called something like Computing Applied Maths.

Computer related degrees are called Informatics Engineering, where computer science subjects are mixed with software engineering content, the degree is certficied by Engineerings Order, and is protected professional title.

Or you have Business Informatics, more tailored to current software being used in companies with little theory, more focused in management stuff.

Re: A Science of Concurrent Programs [pdf]

#13
post #6
post #3

Earlier quoted context omitted.

People often mistake software engineering, or IT with computer science. Those are not science.

Is computer science even science? It feels like we should have called ourselves computationally-applied mathematicians.

I like to call it non-material science :) Sure call it math, but studying information and computation gets into what is logically or combinatorically possible, the nature of chaos and symmetry. not just a little system of manmade manipulable symbols.

Re: A Science of Concurrent Programs [pdf]

#14
It's appropriate that this is appearing at the death of Niklaus_Wirth. He really was the first to get serious about formalizing concurrency. P and V, and all that.

This feels very retro. I used to work on this sort of thing, but that was back in the early 1980s. This reads like something from back then, when people were first figuring out how to think about concurrency.[1] That's how people thought about this back then.

There's been progress in the last four decades. There are completely different approaches, such as symbolic execution. The Microsoft Static Driver Verifier is an example. There's also a theory of eventually-consistent systems now, with conflict-free replicated data types. It's also more common today to think about concurrency in terms of messages rather than variable access, which is easier to reason about. There's also more of a handle on the tooling problem. Not enough of a handle, though. Proof of correctness software still hasn't really gone mainstream. (In IC design, though...)

There's a tendency in this area to fall in love with the notation and formalism, rather than viewing it as a means for making better software. In practice, most of the things you need to prove in program proving are trivial, and have to be mechanized or you never get anything done. Once in a while, a theoretically difficult problem shows up. You need some way to address those abstractly and feed the results back into the semi-automated system.

The main concurrent problem addressed in this paper is the Paxos algorithm. That's similar to the earlier arbiter problem.[2] The arbiter problem is also about resolving who wins access to a shared resource in a parallel system. It's down at the hardware level, where two processors talk to one memory, and has to be resolved in nanoseconds or less. There's no sound way to select a winner in one round. But, for each round, you can tell if the algorithm has settled and produced a winner. You have to iterate until it settles. There's no upper bound on how many rounds it takes, but it is statistically unlikely for it to take very many. Arbiters were the first hardware device to have that property, and it was very upsetting at the time. Multiprocessor computers were built before the arbiter problem was solved, and they did indeed have hardware race conditions on access to memory. I used to debug operating systems for those things, and we did get crashes from that.

Good to see someone is still plugging away on the classics.

[1] https://archive.org/details/manualzilla-id-5928072/mode/2up

[2] https://en.wikipedia.org/wiki/Arbiter_%28electronics%29

Re: A Science of Concurrent Programs [pdf]

#16
post #14

It's appropriate that this is appearing at the death of Niklaus_Wirth. He really was the first to get serious about formalizing concurrency. P and V, and all that. This feels very retro. I used to work on this sort of thing, but that was back in the early 1980s. This reads like something from back then, when people were first figuring out how to think about concurrency.[1] That's how people thought about this back th…

> He really was the first to get serious about formalizing concurrency. P and V, and all that.

The computer science of concurrency began with Dijkstra, not Wirth. And it was Dijkstra who introduced the P and V semaphore operations [1].

[1] https://www.cs.utexas.edu/users/EWD/transcriptions/EWD01xx/E...

Re: A Science of Concurrent Programs [pdf]

#17
post #11
post #6

Earlier quoted context omitted.

Is computer science even science? It feels like we should have called ourselves computationally-applied mathematicians.

It is a side effect on how it is called in US and some other english speaking coutries I guess. What people in US call computer science, in Portugal is a math degree major, mostly called something like Computing Applied Maths. Computer related degrees are called Informatics Engineering, where computer science subjects are mixed with software engineering content, the degree is certficied by Engineerings Order, and is…

Very similar in Italy as well, where the math side is just called Informatics and the engineering side Informatics Engineering. The former is typically part of the hard maths department, the latter of Engineering. There is significant overlap of course, and both degrees allow being professionally certified by the Engineering Order.

Re: A Science of Concurrent Programs [pdf]

#18
post #6
post #3

Earlier quoted context omitted.

People often mistake software engineering, or IT with computer science. Those are not science.

Is computer science even science? It feels like we should have called ourselves computationally-applied mathematicians.

There are plenty of parts of CS that qualify as a science, like HCI, empirical aspects of networking and systems research, empirical parts of ML, etc.

Re: A Science of Concurrent Programs [pdf]

#19
post #7

Section 1.2 has an essential warning for many Hacker News readers! "You probably belong to one of two classes of people who I will call scientists and engineers. Scientists are computer scientists who are interested in concurrent computing. If you are a scientist, you should be well-prepared to decide if this book interests you and to read it if it does. "Engineers are people involved in building concurrent programs.…

There's a line between the discovered stuff and the invented stuff. I always love to see it spelled out in different ways. I tell my students that you can understand And rediscover the science part by understanding basic principles, by applying mathematical logic. While the engineering part you need to learn , as the engineering decisions are full of conventions and constraints of the time of invention and the people…

Is there? When it comes to math and abstract concepts such as these I can see no such line. To me it seems e.g. the real numbers were invented about as much as they were discovered. Same goes for the semaphore.

(Of course the exact syntax and semantics of let’s say semaphores in POSIX belong to a different category. But I’m not sure I’d want to call it an “invention”.)

Re: A Science of Concurrent Programs [pdf]

#20
post #14

It's appropriate that this is appearing at the death of Niklaus_Wirth. He really was the first to get serious about formalizing concurrency. P and V, and all that. This feels very retro. I used to work on this sort of thing, but that was back in the early 1980s. This reads like something from back then, when people were first figuring out how to think about concurrency.[1] That's how people thought about this back th…

> He really was the first to get serious about formalizing concurrency. P and V, and all that. The computer science of concurrency began with Dijkstra, not Wirth. And it was Dijkstra who introduced the P and V semaphore operations [1]. [1] https://www.cs.utexas.edu/users/EWD/transcriptions/EWD01xx/E...

Geez, he did that too? I'm on a concatenative language chat server (you know, Forth, Joy, Factor, Kitten and the like), and someone recently realized one of his earliest papers from 1962 is one of the first to highlight the generality of stack-based languages. Like it's already halfway there towards a proper Forth.

[0] https://www.cs.utexas.edu/users/EWD/transcriptions/EWD00xx/E...

Post reply on HN