
Noah Stein wrote:
This makes them almost the same thing. You can treat vector as a point, and point as a vector. Besides, we are talking about R^2, which is a vector space.
Sure, there's an isomorphism between points and vectors; however, that doesn't make them the same. There's an isomorphism between the functions f(x)=x and f(x)=2x; however, that does not make those two equations the same.
This could be explained by analogy with C++, which more readers here might be familiar with: the difference between points and vectors is the same as the difference between C++ pointers and C++ ints. You can add a pointer to an int, or an int to a pointer, but you can't add two pointers. However, you can subtract two pointers to get an int. Likewise, it's not really meaningful to talk about the sum of two positions, but the difference between them is the vector from one to the other. Back on the subject of a GUI library: I understand the motivation - that's where wxWindows arose. And I realise that nowadays a GUI library could be done in a much more modern C++ style. But my question is: is C++ the right language? I don't want this to descend into a religious war - C++ is my favourite language, but it isn't the best language for every task. Would a higher-level, more dynamic language be more suitable for GUI work? In a perfect world, I'd do all my back-end stuff in C++ and all the front-end development in, say, Python. By doing all the GUI work in C++ instead of an interpreted language, you: a) spend a lot more time recompiling. b) can less easily tweak a running program to try out different ideas. c) have to spend a lot of effort to construct a domain-specific language (c.f Spirit; see (a)). d) probably end up with a bigger codebase. So what do you stand to gain, other than being able to write GUIs in your favourite language, as opposed to your second-favourite language? The only thing I can think of is that you don't have to worry about any bridge between languages. George