Mathematica is one language environment among many that features what is called a "Read-Eval-Print Loop" (or REPL), which allows the user to interact with the system by evaluating individual expressions and printing the results. The Mathematica REPL is actually a fairly bare-bones thing, and if you want to experience it for yourself, you can use it from a DOS window (on Windows) or a shell prompt (on Mac OS X or Linux). It's really not so different from the REPLs provided by many other language environments, including Python, Haskell (with it's GHCi interpreter) and Common Lisp (my personal favorite, with too many implementations to list).
At this point, I feel compelled to note that some people call REPLs "interpreters", which can sometimes be misleading because it makes people think only interpreted languages can have them. This is not the case: though Mathematica and Python are interpreted, Haskell is compiled, as are most Common Lisp implementations. There are many tradeoffs between compilation and interpretation, but this isn't one of them. Indeed, one reason I keep emphasizing the phrase "language environment" is that a REPL is not a feature of a language itself, but rather a specific tool that can be provided for a language, much like a debugger (indeed, the line between debugger and REPL can be pretty thin). Though the languages I've listed are all pretty-to-very high level, you can evidently find REPLs for C, though I've never used one myself.
While, like many Mathematica users, I find the use of a REPL to be very helpful, and prefer it to the edit-build-run cycle common to many other environments, Mathematica goes well beyond what a REPL usually provides in its "notebook" front-end. The ability to generate and display graphics, styled text, formatted tables (or Grid
s), decent-looking mathematical notation and even inline GUI interfaces alongside code is something that very few environments provide. Mathematica goes even further than that, in providing a powerful (if perhaps under-documented) set of tools for programmatically parsing, analyzing and creating notebooks.