Live data from Hacker News

Edsger Dijkstra carried computer science on his shoulders (2020)

inference-review.com

101–110 of 229 posts

Re: Edsger Dijkstra carried computer science on his shoulders (2020)

#101

Earlier quoted context omitted.

3 WPM really shook me as well. Today we complain about not having enough time to work on our projects, but back in the good old days, as successful as Dijkstra was, got time to spend 3 WPM and still produced close to 7k articles! Astonishing.

At least as I see my colleagues who buy special keyboards to type code faster and still being hellishly unproductive, deleting and rewriting while I prefer to think before typing and have a solution that works when I type it in instead of iterating over solutions that cannot work in the first place. When I type it's fast, I just don't do it so much compared to my peers, but I am more productive delivering working cod…

People buy special keyboards because they enjoy using them, not because they’re faster to type on.

Re: Edsger Dijkstra carried computer science on his shoulders (2020)

#102
post #79

Earlier quoted context omitted.

don't conflate 'Objects' with 'Object Oriented Design', if you split your data Structures from you algos then your just using an OOP-language to do programming not doing OOP. strong typing has nothing to do with OOP. static variable are replaced by singletons and other similar in spirit objects. OOP today is a 'No true Scotsman' concept much like communism, agile, and other vague by design terms. You can't argue agai…

Aren't you then just attacking a programming style that nobody actually uses or advocates? One of the most influential books about OOP - "Design Patterns: Elements of Reusable Object-Oriented Software" - talks about composition, separating interface from implementation etc - not about hierarchies ( other than to prefer composition ).

Composition and "separating interface from implementation" are not specific to OOP languages.

Composition has been used since LISP I and ALGOL 60 in almost all programming languages.

"Separating interface from implementation" is also the main feature of the programming languages based on abstract types, starting with Alphard and CLU, which are not OOP languages and which predate the time when Smalltalk has become known to the public, launching the OOP fashion.

An abstract type is defined by an interface, i.e. by a set of functions that have arguments of that type and this is a programming language feature that is completely independent of the OOP features like member functions, virtual functions and inheritance.

All OOP languages have some kind of abstract types, though with a different point of view on the relationships between individual objects and types a.k.a. classes and the functions that operate on them, but there have been many languages with abstract data types without the OOP features.

Moreover "separating interface from implementation" has also been the main feature of all programming languages based on modules, starting with Mesa, Modula and Ada.

The features that identify an OOP language are the idea that the functions belong to individual objects, not to types, hence the member functions, the substitution of the union types (of the right kind, like in Algol 68, not of the pathetic kinds encountered in Pascal and C and derived languages) with virtual functions (to provide an alternative form of dynamic polymorphism, which is preferable for closed-source software, by allowing changes without recompilation, unlike with tagged unions where there are select/case/switch statements that must be recompiled when the union is extended), and the inheritance in a class hierarchy.

There are many languages that are multi-paradigm, like C++ or D, where you can choose whether to write a program in an OOP style or in a totally different style, but there are also languages where it is difficult to avoid using the OOP features, or even impossible, because all the available data types may be derived from some base "object" type, inheriting its properties.

Re: Edsger Dijkstra carried computer science on his shoulders (2020)

#103

Earlier quoted context omitted.

whats wrong with object oriented programming?

Most real world problems don’t fit into neatly into hierarchical structures. OOP pushes you towards trying to model everything in the world an objects with strictly defined operations that can be performed on, where those actions are determined by the data type itself. You end up being forced to co-mingle your data structure design, with your data processing design. Which tends to be rather unhelpful. Keeping your da…

So can you tell me which programming paradigm actually solves these problems that OOP has?

And also, can you give me a huge non-OOP codebase that shows in practice how it is better than the potential OOP implementation?

Re: Edsger Dijkstra carried computer science on his shoulders (2020)

#104

Earlier quoted context omitted.

Why? Seems completely correct and good. You either have an empty range be -1 .. 0, which is ugly, or 0 .. -1, which is also ugly. Thus, start-inclusive, end-exclusive.

"That is ugly" is what separates math (1-indexing in Fortran, R, SAS, SPSS, Matlab, Mathematica, Julia) from the apes This and column-major order for matrices (a vector is a column, not a row)

Those languages are made for writing throwaway code that sometimes is made to suffer in agony for years, when it wasn't written to be revised more than a week later.

We can be thankful that this applied physicist in particular decided to dedicate time to think carefully about the needs of who would be his colleagues and successors, when he was pretty much inventing programming as a profession; he told of the anecdote of when he got married, and he wasn't able to write in "programmer" as his occupation in the Dutch paperwork, because it didn't exist as a job category yet.

Re: Edsger Dijkstra carried computer science on his shoulders (2020)

#105

Earlier quoted context omitted.

I'm not sure if it's due to having come across this quote long ago, but this idea is ingrained in my bones. Except I think people have often overly focused on "lines of code" as the unit for this metric, leading many to overrate terse code, even when it is very dense. But I'm not sure what wording would capture this idea succinctly enough to include it in a pithy quote.

There's a benefit to terseness. Go's naming conventions are superior to Java's. APL (and it's many cousins) is a bridge too far for me, but I can see the appeal to having the entire program on a single screen.

Dijkstra on APL: https://www.jsoftware.com/papers/Dijkstra_Letter.htm

In one short letter he makes an insightful critique yet misses the the point so hard I can practically hear the woosh 42 years later.

Re: Edsger Dijkstra carried computer science on his shoulders (2020)

#106

Ok, the first thought reading the title was "ah, surely this is about Dijkstras." The immediate second thought that came was the famous quote “I don't know how many of you have ever met Dijkstra, but you probably know that arrogance in computer science is measured in nano-Dijkstras”, from Alan Kay should I believe https://www.goodreads.com/quotes/69528-i-don-t-know-how-many...

I always wonder if he was so different in person than he was on his essays and interviews.

We are talking about the person that institutionalized the "we people aren't smart enough to do X" line of thinking from software engineering.

Of course, he was also quick to call a spade a spade, but I haven seeing any case of him denouncing something that wasn't obviously bad.

Re: Edsger Dijkstra carried computer science on his shoulders (2020)

#107
I was a grad student in Austin in the 1990s. If Dijkstra showed up for one of the regular department-wide "lunch and learn" type talks, there was a bit of a buzz among the grad students in the room... you knew he was going to pop off with a total left-field question and the results would be pretty entertaining. Free cookies AND comic humiliation from a giant in the field! It was standing-room-only.

Re: Edsger Dijkstra carried computer science on his shoulders (2020)

#108

Earlier quoted context omitted.

OP does say mobile phone. But you're wrong according to Wikipedia.. some 5-10 years of overlap depending on what qualifies as smart

OP said smartphone tho

OP in this case was referring to the author of the article, where the term mobile phone was used.

Re: Edsger Dijkstra carried computer science on his shoulders (2020)

#109
post #85
post #16

Dijkstra is a wonderful source of memorable quotes and hot takes from the early days of software. A sampling: > “The competent programmer is fully aware of the limited size of his own skull. He therefore approaches his task with full humility, and avoids clever tricks like the plague.” (Dijkstra, 1972) > “The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense.” (Dijkstra…

I will get downvoted for that bur I will ask anyway. So what exactly are his achievements? After reading the article it seems that he mostly produced hot takes, while others did the actual heavy lifing. Goto considered harmful? And some algorithm that would probably be found by someone else? Will Linus get a monument made of pure gold when he dies?

For one thing, he invented semaphores (https://www.cs.utexas.edu/~EWD/translations/EWD35-English.ht..., https://en.wikipedia.org/wiki/Semaphore_(programming))

Re: Edsger Dijkstra carried computer science on his shoulders (2020)

#110
post #43

> "Whether written using a fountain pen or typewriter, Dijkstra’s technical reports were composed at a speed of around three words per minute. “The rest of the time,” he remarked, “is taken up by thinking.”9 For Dijkstra, writing and thinking blended into one activity. When preparing a new EWD, he always sought to produce the final version from the outset." > "He also never purchased a computer. Eventually, in the la…

There’s no other way to do it for this type of a brain. I know because I have the same type of brain.

I spend 90% of my time formulating descriptions of the problem and the desired end state

Hallucinating futures where the state of the world is in a state that I either wanted to be or that somebody’s asking me to build

Once you know your final end state, then you need to evaluate the current state of the things that need to change in order to transition to the final state

Once you have your S’ and S respectively then the rest of the time is choosing between hallucinations based on sub-component likelihood of being able to move from S to S’ within the time window

So the process is to basically trying to derive the transition function and sequencing of creating systems and components that are required, to successfully transition from state S to state S'

So the more granular and precise you can define the systems at S and S' then the easier it is to discover the likelihood pathway for transitional variables and also discover gaps, where systems don't exist, that would be required for S'

Said another way: treat everything - both existing and potential futures- as though they are or within an existing state machine that can be modeled. Your task is to understand the markov process that would result in such a state and then implement the things required to realize it.

The religious call this "Prayer"

Others call it "Manifesting"

Post reply on HN