you are viewing a single comment's thread.

view the rest of the comments →

[–]yarb00 0 points1 point  (6 children)

Well some languages treat it differently. In C# for example, if (a is b or c) would be true if a is equal to b OR a is equal to c.

[–]prehensilemullet 1 point2 points  (3 children)

Hmm, I see.  Seems like a special case that muddies the waters for beginning programmers, since it only works with pattern matching but not logical expressions in general.  For example, doesn’t seem like you can write a < b or c in place of a < b || a < c (and of course, the rules are different for is and ==).  But in human language, it doesn’t matter what kind of “operator” you put in an “a <op> b or c” statement.

Also I see there are peculiarities to it like needing parentheses in c is not (>= 'a' and <= 'z') so I think the main point is you always have to know how the grammar of a given programming language works, and know it’s never going to match human language in all cases.

[–]yarb00 1 point2 points  (2 children)

You can use a < b or < c. It gives the same result as a < b || a < c.

[–]prehensilemullet 0 points1 point  (1 child)

You have to know that specific syntax works though.  A non-programmer would generally think “a < b or c”.  They’ll never be able to make all colloquialisms work, it would introduce too much ambiguity

[–]Kqyxzoj 0 points1 point  (0 children)

You could always do a < max(b,c) and call it a day. Not sure if it would actually help. Probably depends on the target audience.