I'm James Hague, a recovering programmer who has been designing video games since the 1980s. This is Why You Spent All that Time Learning to Program and The Pure Tech Side is the Dark Side are good places to start.
Where are the comments?
It's Like That Because It Has Always Been Like That
At a time when most computers could only display phosphorescent screens of text, the first GUI calculator app was a bold experiment. It looked like an honest-to-goodness pocket calculator. No instruction manual necessary; click on keys with the mouse. And that it could be opened while working within another application was impressive in itself.
Of course now the interaction design mistakes of having a software calculator mimic the real-life plastic device are well-understood. Why click on graphical buttons when there's a computer keyboard? And if keyboard input is accepted, then why waste screen space displaying the buttons at all? Isn't it easier and less error prone to type an expression such as "806 * (556.5 / 26.17)" than to invisibly insert operators within a series of separately entered numbers?
That a literal digitization of a physical calculator isn't a particularly good solution is no longer news. What's surprising is how long the design mistakes of that original implementation have hung on.
If I were teaching a class, and I gave the assignment of "mock-up the interface for a desktop PC calculator app," I'd fully expect to get back a variety of rectangular windows with a numeric display along the top and a grid of buttons below. What a calculator on a computer is supposed to look like is so ingrained that all thought of alternatives is blocked.
This kind of blindness is both easy and difficult to discover. It's easy because all you have to do is stop and give an honest answer to the question "What problem am I trying to solve?" and then actually solve that problem. It's difficult because there are many simple, superficial dodges to that question, such as "because I need to add a calculator to my application."
A better problem statement is along the lines of "a way for users to compute and display the results of basic math operations." The solution is in no way locked into a rectangle containing a numeric display with a grid of buttons below it.
(If you liked this, you might enjoy If You're Not Gonna Use It, Why Are You Building It?)