top | item 33160452

(no title)

zendist | 3 years ago

Thrilled to see Jared Parsons of the C# team pitch in and provide some perspective on how things were done for C#5 when a similar change was made. Kudos Jared!

discuss

order

int_19h|3 years ago

What's interesting is that C# 5 release (which made the breaking change) was back in 2012, and both the change and the reasons for it were very widely discussed at the time. This is right around the time when Go shipped its 1.0, and it's kinda surprising that they either didn't look closely at "near-peer" languages, or if they did, couldn't see how this problem was fully applicable to their PL design, as well.

(Note that C# at least had the excuse of not having closures in the first version, which makes scoping of "foreach" moot - the problem only showed up in C# 2.0. But Go had lambdas from the get-go, so this interaction between loops and closures was always there.)

pjmlp|3 years ago

Well, this isn't the only language feature where Go designers ignored the path trailed by other languages.

Still looking forward to the day they will discover Pascal enumerations.

pjmlp|3 years ago

Same here, DevDiv is now polyglot focused, so you will see regular comments from .NET folks on other languages as well (mainly Java and Go). David Fowler tends to tweet every now and then about them as well.

Cthulhu_|3 years ago

Yeah, it's often a joy to read these posts and the perspectives on it; this is how programming language development should be done.