Live data from Hacker News

Edsger Dijkstra – The Man Who Carried Computer Science on His Shoulders

inference-review.com

81–90 of 206 posts

Re: Edsger Dijkstra – The Man Who Carried Computer Science on His Shoulders

#81
post #65
post #24

Earlier quoted context omitted.

People used to say of my alma mater that the teaching was decent but the facilities were amazing. There was a feel on campus that the people who were really going to 'make it' were only putting in B- or C+ work and spending the rest of their time working on side projects. There were very few days in a given year when more than half of the computer labs were full at the same time, and with Unix boxes you can always re…

> I'd be curious to know if Dijkstra had access to a similar embarrassment of riches. Dijkstra spent a good chunk of the latter part of his career at the University of Texas in Austin. There was plenty of access to facilities there, but that wasn't really what his research was about. He wrote longhand (scans here: https://www.cs.utexas.edu/users/EWD/ ) and didn't really use much technology directly in his work. This…

This is the difference between computer science and software engineering.

And the vast majority of people who graduate with a CS degree are going to work as software engineers, not as computer scientists. They are therefore being mis-educated to the degree that their CS program agrees with Dijkstra's philosophy. (Which doesn't mean that Dijkstra is wrong about CS. It just means that a CS degree shouldn't be the passport to a career in software engineering, or even a job as a grunt programmer.)

Re: Edsger Dijkstra – The Man Who Carried Computer Science on His Shoulders

#82
I read Dijkstra's goto considered harmful in college, circa 1970. I was a young programmer at the time, and it made me think and reconsider how and why big programs were often hard to understand.

Years later, in grad school, my research was on program verification. Dijkstra was a big influence on the field. I attended a lecture at UT Austin that he gave before moving to the US.

Dijkstra's approach to proving the correctness of programs is hard to apply in practice. Like a geometry proof, there are ways in which a proof of correctness can have mistakes that aren't obvious. Here's an example, prove that a sorting algorithm works. If the specification is that the output must be in sorted order, a proven program can still fail to sort correctly. The specification has an error, the output must not only be in sorted order, it must ensure that all of the input elements make it somewhere to the output. But this isn't good enough. A sort proven to meet this specification might leave out some duplicate values. Requiring that the output be the same length as the input still isn't good enough, multiple copies of one element might hide missing duplicate input values for another element. The specification requires that the output be a sorted permutation of the input.

Sorting is a well understood problem, but real verification must deal with the strange mathematics implemented by computers. The mathematical theories that we are accustomed to from school assume infinite precision and no overflow, real life hardware doesn't act this way.

All of this makes program verification hard, and my hope is that AI programming assistants will someday aid in the construction of meaningful specifications and work with the programmer to verify the correctness of programs or determine their safe operating boundaries. Progress has been slow, and the tools are still impractical for use by most programmers on most programs.

Re: Edsger Dijkstra – The Man Who Carried Computer Science on His Shoulders

#83
post #60

> ALGOL 60 included a series of novel features, such as recursion, which was supported in a much more complex manner than logicians had ever envisaged...Recursive procedures in ALGOL 60 are much more complex than in Lisp. Can anyone explain how this "much more complex" recursion works?

Early LISP implementations used dynamic scope. This means that non-local references in a function search for the variable's binding in the call chain: if A calls B then when B uses nonlocal variable x it refers to the x in A, not necessarily the x that belongs in the lexical parent of B as seen in the source code. (Unlike C, Algol/Pascal/LISP can all define functions inside of other functions. These nested function d…

Which reminds me of The Funarg Problem Explained by Joseph Weizenbaum https://www.computerhistory.org/collections/catalog/10272070.... I used its "diagrams" to understand the closure mechanism (definition vs invocation environments) during the course of a Scheme class in 1996.

Re: Edsger Dijkstra – The Man Who Carried Computer Science on His Shoulders

#84
post #69

My only beef against Dijkstra is that I applied for a fairly crappy job I was eminently qualified for in terms of experience and someone told me to code Dijkstra's shunting yard algorithm on a whiteboard (well not in so many words, but that was the solution). It's a good algorithm but way beyond the scope of what you should ask in a whiteboard interview. I didn't get the job.

I get the sense that Dijkstra would've agreed with you and perhaps had harsh words for that interview process.

Sometimes these interview stories sound like selecting a professor of mathematics by picking the one who can calculate the square-root-of-2 to 12 digits in their head the fastest.

Re: Edsger Dijkstra – The Man Who Carried Computer Science on His Shoulders

#85

Earlier quoted context omitted.

Not at all true. The Dutch are famously known to be blunt and direct which seems to be a national trait(eg: https://www.thrillist.com/travel/nation/dutch-culture-brutal... ). Think of Dijkstra as Sherlock Holmes thought of himself; viz. My dear Watson,” said he, “I cannot agree with those who rank modesty among the virtues. To the logician all things should be seen exactly as they are, and to underestimate one’s self…

I Northern European/Germanic trait in general. As a Norwegian living in the Netherlands I found Dutch people very easy to relate to but I know many of my other fellow foreigner had major problems with their direct communication. But you see the same with Linus Thorvalds. His tone offends a lot of people in particular Americans. But as a fellow Nordic I think the passive aggressiveness often observed in America or fak…

do you know of any media that has good depictions of this kind of culture? Ideally as part of the show, rather than a one-off foreigner in an American show. As an American this is how I sometimes wish our culture was like, but at the same time I realize I can't even imagine the reality of it since our culture can be rather extremely towards the opposite end of the spectrum

Re: Edsger Dijkstra – The Man Who Carried Computer Science on His Shoulders

#86

I wish seeing the name Dijkstra didn't immediately remind me of his oft-quoted BASIC comment: "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration." The problem is it's quoted regardless of how much the BASIC dialect being discussed resembles the one he was talking about [1]. There…

And there are a lot of people that dismiss his comment and the rest of his writings by ignoring what BASIC meant at the time of writing. Visual BASIC certainly wouldn't have been his favorite language, but had the features that BASIC at the time lacked and that he disliked it for (when you start digging into it: lack of recursion, non-reentrant functions, massive use of global variables, preference for goto versus structured control flow).

Re: Edsger Dijkstra – The Man Who Carried Computer Science on His Shoulders

#87
post #9

Earlier quoted context omitted.

I think this refers to making the implementation efficient. They wanted performance on par with existing languages that didn’t allow recursion, and could simply assign fixed addresses to all function arguments and local variables. Lisp didn’t have that. It allocated environments left and right. That meant that a function call allocated memory and potentially could trigger garbage collection. The major improvement was…

I'm not sure that's fair. If you have objects that escape downwards (so X calls Y, y creates some item i, i gets returned to X) then you can't have a stack. i may be overwritten at the next call of anything else, as the stack grows over it. I guess they do escape analysis and where items are provably local, stack allocate them. If not, plonk them on the heap. A call frame is an object like any other, so they go on th…

I got the stack reference from https://eprints.illc.uva.nl/383/1/PP-2010-04.text.pdf, which says:

“Dijkstra’s quest to generalize led him to use the well-known concept of a stack (i.e., a continuous portion of computer memory) as a run-time object, rather than a mere compile-time object as was the case in Samelson and Bauer’s ALCOR compiler.”

Digging deeper, I found https://www.illc.uva.nl/Research/Publications/Reports/MoL-20... (worth reading, IMHO) which indicates Samuelson and Baur used a stack to parse expressions and generate machine code for them, not for assigning memory locations.

So, I agree with you it can’t have been as simple als I implied.

I doubt they would have plonked anything on the heap, though, because languages of the time didn’t have a heap (FORTRAN certainly didn’t), and the language Samuelson and Baur wrote didn’t even allow functions to call other functions.

Re: Edsger Dijkstra – The Man Who Carried Computer Science on His Shoulders

#88

I wish seeing the name Dijkstra didn't immediately remind me of his oft-quoted BASIC comment: "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration." The problem is it's quoted regardless of how much the BASIC dialect being discussed resembles the one he was talking about [1]. There…

My first language was actually GWBASIC on an ancient hand-me-down computer, followed by QBASIC. When I saw that quote as a teenager I was terrified that I had killed my career before it had even started.

I've since become quite proficient in C, Ruby, Java, Kotlin, HTML, JS, shell scripting, and many many other languages and environments. So IMO there is very little modern merit to the idea that exposure to BASIC (or any other mocked language) is "mentally mutilat[ing]".

Re: Edsger Dijkstra – The Man Who Carried Computer Science on His Shoulders

#89
post #65

Earlier quoted context omitted.

> I'd be curious to know if Dijkstra had access to a similar embarrassment of riches. Dijkstra spent a good chunk of the latter part of his career at the University of Texas in Austin. There was plenty of access to facilities there, but that wasn't really what his research was about. He wrote longhand (scans here: https://www.cs.utexas.edu/users/EWD/ ) and didn't really use much technology directly in his work. This…

This is the difference between computer science and software engineering. And the vast majority of people who graduate with a CS degree are going to work as software engineers, not as computer scientists. They are therefore being mis-educated to the degree that their CS program agrees with Dijkstra's philosophy. (Which doesn't mean that Dijkstra is wrong about CS. It just means that a CS degree shouldn't be the passp…

Dijkstra is totally of the European tradition where if you don't belong to the guild it's flat out illegal for you to work in the field.

Re: Edsger Dijkstra – The Man Who Carried Computer Science on His Shoulders

#90

I wish seeing the name Dijkstra didn't immediately remind me of his oft-quoted BASIC comment: "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration." The problem is it's quoted regardless of how much the BASIC dialect being discussed resembles the one he was talking about [1]. There…

BASIC only ruins you if you have no intellectual curiosity. BASIC was my first language and with each new language I’ve learned since I’ve always been excited at the new possibilities and paradigms it opened up.
Post reply on HN