Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Math and CS are close enough that I think they should be nice neighbors and respect one another's terminology. I use the mathematical term "isomorphism" daily almost hourly while programming.


> should [...] respect one another's terminology

I see your point, but IMHO isomorphic is a word, not math terminology. Math borrows words from regular languages, but it can't expropriate words!

The first thing I think when reading "isomorphic" is "same shape" even though I know what a math isomorphism is.

Just notice how function means something completely different in programming and math, but we're so used that nobody nitpicks on HN.

Math permeates everything, borrows and loans words. More examples:

- Electrical Engineers use finite ground planes even if a plane is by definition infinite and has no thickness.

- Music is pretty much math, but their chords are not segments inside circles.

- We use braces {} to delimit blocks, not sets.

- We flip bits in a non-geometrical sense.

- The DOM has events even though there are no statistics involved.

- We compress files even though they're not geometric objects.

- We use domain names.

And so on. It's the beauty of language! Our libraries are full of functions instead of books. If there's no chance of ambiguity, who cares?


While this is sort of a silly argument to continue, I'll suggest that "function" is probably the closest example you've given in terms of how "isomorphic" is a technical word over a common use word.

And the use of "function" in computer science for things which are hardly at all functions is a source of massive confusion and pain in the interface between the two fields. I believe personally that it leads to an enormous amount of improper education and broken intuition.

Let me provide another example—variable. This one is far worse than "function" in the confusion caused by its poor appropriation into computer science. The concept of variable is extremely well-designed in mathematics crafted over hundreds of years of philosophical and mathematical debate... and then it also become a mutable slot in Algol and stuck to every mathematician's chagrin.

It's not a good idea to copy technical words and abuse them in similar fields. It'd be as though people in the airplane industry started calling propellers "rockets" all over. Rocket comes from Italian "rocchetto" meaning bobbin/cylinder and so the shape of a propeller engine fits that definition and words are just words right?

Certainly, but that's just unnecessarily confusing. The person who popularized that terminology would be rightfully considered a fool.


> While this is sort of a silly argument to continue

So you love silly arguments too! :P

Perhaps our "disagreement" stems from how used we are to isomorphic as a common word. My mother language is full of greek and latin loanwords/particles in common speech. If I had to guess it's not as pervasive in yours. Or maybe you've been exposed to a lot more math than me! Who knows.

I still can't help but read iso+morph separately (as equal+shape) in "isomorphic javascript".

New words are not a common occurrence, especially when existing words fit the concept (such as isomorphic = same shape; variable = its value can vary; etc.) or parallels can be drawn (function = takes arguments and computes a value; chord = probably because there is a _circle_ of fifths in music where you can draw literal chords).

I see how it can be confusing on tech fields though, but that's just how language works. You could argue there are better alternatives to "isomorphic JavaScript", but to date it's been the only proposal.

That said, I'll try to keep my linguistic creativity to a minimum in tech ;)


Yeah... It's Wadler's Law. I accept it.

I think there's a lot of room for creativity in technical fields (étale morphism comes to mind) but typically once a word has a technical definition it is made off-limits within relevant fields. Terminological blurriness is nice sometimes, but often technical terms are incredibly concrete.

To me "isomorphism" means exactly "a pair of arrows, called witnesses, (f, g) in a category such that fg = id and gf = id" and it confers many properties. If you find a category where {Server Javascript} and {Client Javascript} are two objects and exhibit an isomorphism then I will gladly let you call that object "isomorphic javascript" all day long. Frankly I'm already feeling "isomorphism" fails to capture the nature of this relationship, though.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: