Hacker News new | ask | show | jobs
by mej10 3212 days ago
readability is a function of familiarity

EDIT:

Sorry, I just don't like when people share shallow and negative thoughts about projects that take away from meaningful discussion.

Why is the OP comment shallow? Because obviously _some_ people find it readable which would suggest that it is familiarity that is the problem -- not some universal quality of the language.

5 comments

Thanks for the support. It's hard though, isn't it? We get the same arguments on a weekly basis. Folks categorically refuse to check out OCaml because of its syntax. At one point the Reason creator decided to just go and satisfy the familiarity aspect through syntax change (still ongoing; the above snippet will get better too).

It scales easier to settle the debate by just fulfilling the demand rather than encountering each such argument and spend literally years debating about them.

I think fulfilling the demand is the right approach. Elixir seems like a good example to follow in that regard. I mean sure, readability is a function of familiarity, but it's also true that some languages have syntax that is more intuitive than others, which means they are easier to become familiar with. If a language can be human-friendly and approachable like ruby or python without compromising on semantics, then why not try to have it both ways?
I had the impression you are the Reason creator, haha.

Are you more like a dev-advocat or something?

Nah I'm the Reason janitor. I declined joining the Reason team because I thought joining messenger was a better way to help Reason move in directions products folk understood; it paid off =)

Anyways, since I'm basically doing Reason 24/7 I kinda consider myself to be on the team.

Nice move!
Agreed. I'd argue that the classic `for (int i = 0; i < n; i++)` loop isn't very readable unless you have seen for loops several times, in which case it is pretty easy to read.
I had almost forgotten about this! But, now that you mention it: yes! I remember being completely mystified by that thing when I first saw it. "Which part does what, when now?" Took a long time to read naturally without conscious deconstruction.
I encourage everyone who thinks that is unreadable to try APL and read https://news.ycombinator.com/item?id=13565743 , or even just try learning a completely different human language --- anything east-Asian is probably going to be initially completely unreadable to those familiar with English and other Latin-family languages.
Readability is determined by more than familiarity.
Agreed, but that is quite readable to someone familiar with ML-based languages: Define a function get_internal which takes a map from objects of type 'a to type 'b, and an object of type 'a, and return a wrapper around objects of type 'b or "undefined"s. Action of get_internal is ""get" [@@bs.send]", which I don't recognize. I would guess it's a javascript interop syntax, which returns a function consistent with get_internal's type signature.

You're not constrained to use one-letter names for type variables, or to drop names of argument variables, but it turns out to be very handy, and it only takes reading a couple of hundred lines of code to get comfortable with this notation.

That's true, but since there are many people that find Reason (OCaml) readable I am going to say familiarity is the biggest problem here.
do you have examples in mind that are orthogonal to familiarity?
Language design. Even if you're very familiar with Malbolge, other languages are far more readable.
And, like it or not, familiarity leverages current experience.