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

For the programmers out there, it's a bit like the difference between writing code which takes concrete data types ('n-tuple of floats', 'n by m matrix of floats'), and writing more generic code which takes abstract datatypes (roughly: 'thing supporting addition and scalar multiplication' and 'function on said things which happens to satisfy a linearity property').

The abstraction brings some benefits, but also has some conceptual overhead for those new to the area.

In a sense the abstraction isn't technically necessary, at least for finite-dimensional vector spaces: every finite-dimensional real vector space is isomorphic to some R^n, so you can express all the results of finite-dimensional linear algebra in purely concrete terms (vectors, matrices) if you really want to. In particular, if you're only interested in doing geometry in R^2 and R^3, the abstract vector space treatment adds relatively little.

But (again perhaps analogously to programming) hiding away the lower-level details can make things clearer and more elegant if one invests some time in getting comfortable with the abstractions involved. It allows you to use whichever representation comes most naturally for your vectors, rather than tying you to representing in terms of some particular basis. And it does add some generality, especially when it comes to infinite-dimensional spaces, which turn out to be pretty useful things.



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

Search: