Hacker Newsnew | past | comments | ask | show | jobs | submit | mbauman's commentslogin

I'm still floored that Andres both found this and didn't ignore it. It's such a testament to an incredible engineer.

(But also, my conspiratorially-inclined mind is quite entertained by the thought of some sort of parallel construction or tip from a TLA.)


With the enormous budgets we allocate in the name of "national security", this is exactly the kind of work I expect TLAs to do.

Instead we have come to expect them to cowardly sit on exploits, or actively introduce them, rather than working to secure the general public from adversaries.

What a mess.


Wow when you put it like that it really hits hard.

> (But also, my conspiratorially-inclined mind is quite entertained by the thought of some sort of parallel construction or tip from a TLA.)

For sure you were/are not alone in this thinking. How fast the whole thing was exposed in decent enough details was... surprising.


This is such a classic example of online discourse in general. There are two options, and folks tribally cling to one or the other without realizing that both are legitimate and well-suited for different situations.

Yes, of course distances are measured starting from 0. But we count discrete things starting at 1. You can do mental gymnastics to enumerate from zero and many programmers are (unfortunately IMO) taught to do so. It's a hard thing to learn that way, so for the folks that have done so, it often becomes a point of pride and a shibboleth.

As a classic example, a four story building has four floors. But you only need to go up three flights to get to the top. You can legitimately call the top floor either 3 or 4, and folks are similarly tribal about their own cultural norms around this one, too.


> There are two options, and folks tribally cling to one or the other without realizing that both are legitimate and well-suited for different situations.

No I disagree entirely. One is simply better.

> It's a hard thing to learn that way, so for the folks that have done so, it often becomes a point of pride and a shibboleth.

It is not hard. It's not better because it's hard-won knowledge. It's better because it leads to simpler, more elegant code. Simple as.


Thanks for proving my point perfectly.

Fully agreed. I first struggled when switching from python to Julia, then ended up finding it slightly better for my use cases (which includes teaching scientists who are not programmers). But it's simply not a big deal either way. I am also reminded of the significant whitespace objections to python in the old days, before python took over everything...

@dang I think the link should go directly to this topic: https://www.rubyforum.org/t/ruby-newbie-is-joining-the-ruby-...


I've changed it now and put the submitted URL in the top text.

(Btw, @dang is unreliable - for reliable message delivery you (or someone) needs to email hn@ycombinator.com)


Right, the correct way here is to simply grant _everyone_ a license to _everything_ under the terms of the AGPL (or whatever). You can then separately license portions under other terms.

You don't need to note the commercial licensing option in the license itself; it's irrelevant to that grant. You just state that elsewhere.


> "by choice because of"

Goodness, that doesn't look like a choice to me.


Forget compilers, SSA is an immensely valuable readability improvement for humans, too.


Why have

    while (c < 10) { c *= 3; }
when you could have

  %2 = alloca i32, align 4
  %3 = alloca i32, align 4
  store i32 %0, ptr %3, align 4
  br label %4, !dbg !18

  4:
  %5 = load i32, ptr %3, align 4, !dbg !19
  %6 = icmp slt i32 %5, 10, !dbg !20
  br i1 %6, label %7, label %10, !dbg !18

  7:
  %8 = load i32, ptr %3, align 4, !dbg !21
  %9 = mul nsw i32 %8, 3, !dbg !21
  store i32 %9, ptr %3, align 4, !dbg !21
  br label %4, !dbg !18


The second code snippet doesn't use SSA. It just translates the first loop into IR and mangles the variable names. Here is an SSA version of that in the Scheme language.

  (let loop ((c c)) (if (< c 10) (loop (* c 3)) c))
Notice that this is stateless and also returns the final value of “c” from the loop. People who use the below style have tended to find that it is much easier to reason about for more complicated looping structures.


I intended it to be mostly a joke. Many people equate LLVM IR with SSA.

I might even argue that easy to read and easy to reason about are opposites.

For the most part, languages like Python and Ruby can be very easy to read but difficult to understand precisely what actually happens at runtime.

Things like LLVM IR are much more explicit, making it easier to reason about but extremely difficult to read.

Maybe somewhere between is "pure" side effect free functional programs.


Try mem2reg on that to get rid of the loads and stores.


That's quite the interesting perspective, but I'd say it gives "them" more organization and unified focus than is real. It's an open source language and ecosystem. Folks use it — and gripe about it and contribute to it and improve it — if they like it and find it valuable.

All I can say is that many of "us" live in that tension between high level and low level every day. It's actually going to become more pronounced with `--trim` and the efforts on static compilation in the near term. The fact that Julia can span both is why I'm a part of it.


Willison's razor: Never dismiss behaviors as either malice or stupidity when there's a much more interesting option that can be explored.


I side with Occam's razor here, and with another commenter in this thread. People are construing entire conspiracy theories to explain fake replies when asked for system prompt, lying in Github repos, etc.


OP (and I) can definitely distinguish the two. The trouble is that I can no longer find the humans who are actually posting valuable information.


A highly relevant must-watch here is Bret Victor's Computational Public Space:

https://www.youtube.com/watch?v=PixPSNRDNMU


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: