top | item 20831063

(no title)

perigrin | 6 years ago

While it's true in human language that idiomatic expressions are a barrier to learners, they are also a means of enhancing communication between experienced users of the language. Take Jargon for example, I've not got deep experience in functional programming, category theory, or discrete mathematics (really anything much higher than college stats), so the phrase "constrain the input domain of functions" set me scratching my head a little. I'm still not exactly sure what you meant by it.

However, it's one of those phrases that I'm sure is immediately clear to your intended audience. One who has experience and understands that monads are simply endofuctors that map between two category spaces (I think I got that right, and if I didn't the main point was illustrated anyway). As a person gains experience their language usage become much more intentional and expressive. Idiomatic language is really only this expression of experience and an effort to communicate the full context and nuance as succinctly as possible.

The best Perl developers I know understand this and what you see as praise for arcane-ness is usually in my opinion just embracing the idea that jargon and idiomatic language is inescapable, and should be just another tool in the toolbox for expressive writing.

Also Perl does some weird shit, and sometimes you gotta hack around that.

discuss

order

jschwartzi|6 years ago

> While it's true in human language that idiomatic expressions are a barrier to learners, they are also a means of enhancing communication between experienced users of the language.

Except that this is a computer language. Computer languages don't have nearly the same range as a human language, and there are very specific formal rules to be followed. If I want to I can speak English without any idioms. Another difference between computer language and human language is that there is a huge amount of duplicated information in a human language, whereas a computer language like Perl is designed to be as terse as possible. So if I want to know what an idiom means in English, I can A) ask the speaker what they meant by it, B) infer what it means based on the context in which it was spoken which includes the time and place and the situation, or C) look it up on the internet.

In a computer language, A requires either direct access to the language designer, code comments, or dialogue with the user of the idiom. B requires context information, which is simply not present. There is no situational analogue to the scene and people involved in an English conversation. You're conversing with a compiler. C is made difficult by the terseness of the syntax. So really having idioms in a computer language doesn't work at all without having someone to decode those idioms for you. And in the end if we all have to decode idioms then we should just make the meaning explicit in the code. If you have too many idioms then your code becomes unreadable without some kind of codex.

> The best Perl developers I know understand this and what you see as praise for arcane-ness is usually in my opinion just embracing the idea that jargon and idiomatic language is inescapable, and should be just another tool in the toolbox for expressive writing.

While I think we can agree that Thomas Pynchon is a highly expressive writer, I also think we can agree that he is very obtuse at times. It's fun if you get it, but it's infuriating if you don't. There's a difference between being expressive and having so many facilities that casual users of the language can't remember how to do simple things because there's just so much syntax to learn and so few mnemonics with which to do so.