Live data from Hacker News

Ada, its design, and the language that built the languages

iqiipi.com

241–242 of 242 posts

Re: Ada, its design, and the language that built the languages

#242
post #227

Earlier quoted context omitted.

Here's an opaque type wrapping numbers, in JavaScript: class Age { #value; constructor(value) { if(typeof value != "number") throw new Error("Not a number"); this.#value = value; } }

That field is opaque, but the entire type isn’t, no matter what you do. E.g., let x = new Age(); x.notSoOpaque = 42; console.log(x.notSoOpaque); We can all agree to layer conventions on top of the language so we just don’t do stuff that violates the opacity. But the same is true of assembly language.

Assigning to `notSoOpaque` (or any other) property on an object in this case doesn't modify its behaviour, because the property isn't structurally part of the interface -- there's no code defined by the creator / owner of the object (e.g. through the class) that uses it. So it doesn't violate the contract. Private fields are inaccessible, everything else is accessible and is thus part of the interface. I am not saying (and never did) this is the same level as Ada, but your example looks contrived to me -- I don't get the relevance.
Post reply on HN