What should I understand from "steep learning curve"? When a computer program (for example a translation program) has a steep learning curve, does it mean that it is not good at learning or it's hard for it to learn?
In informal usage, a "steep learning curve" means something that is difficult (and takes much effort) to learn. It seems that people are thinking of something like climbing a steep curve (mountain) — it's difficult and takes effort.
As it is technically used, however, a learning curve is not anything to be climbed, and is simply a graph plotting learning versus time. Thus, a steep learning curve would look like this (excuse the poor drawing):
One natural interpretation of such a curve, which was the predominant early usage (according to Wikipedia) and still exists in some technical circles, is that the thing being learnt is easy — a great amount of learning happens in a small amount of time. This is the opposite of the popular usage. Now there is also apparently an interpretation of the same curve in the negative sense — probably something about a large amount of learning existing, or that one never stops learning and keeps learning, but I'm not sure I understand how that's negative.
The popular meaning of "steep learning curve" is "difficult to learn"; the technical meaning is "quick to learn".
This phrase has a scientific basis (Wikipedia has information on its origin and scientific usage), but is most commonly used to indicate that something is difficult to learn. It refers to a person’s rate of progress in learning a new skill as it might be plotted on a graph. In this case it sounds like the computer program itself is difficult for beginners to use effectively, not that it is not good at learning. I have never heard the phrase used that way, though I suppose it could apply to a program that uses artificial intelligence.