Serious question, not a troll -- I've always felt like I'm missing some key point here.
Or getting the result of an expression into another expression, like
x = a+b
y = x*c
$300: $(A) $(B) ADD $(C) MUL
And the result would be at the top of the stack.
Not all assembly languages are created equal. ;-)
In the end, I wrote an incomplete Forth compiler for it, but I don't know where the floppies I wrote them to ended up.
C to C++: virtual methods, scope-delimited allocation, dynamic typing.
Of course, if a function definition is a pattern, does that mean that Lisp (chock-full of function definitions) is a lower-level language than Prolog (which doesn't need functions at all and therefore abstracts away that whole idea)?
There's a reason there's no way to express loops and varibles in HTML, for example. That's the principle (or rule) of least power at work:
Take for instance context management (Common Lisp's `unwind-protect`/python's `with`/C#'s `using`, it's also possible to express it using first-class functions which is the approach used by Smalltalk or Scheme or using your objects's lifecycles which is what C++'s RAII does). It's essential to ensure that resources you're using for a limited time (a lock, a file, a transaction, …) is cleanly released when you don't need it anymore, even if an error occurs during usage.
In java, most of the time this is done with stacks of try/except/finally blocks which you're going to write again and again and again.
How do you abstract it? You can't. Well you could use anonymous classes to emulate first-class functions in theory, but it has limitations of its own and it's not really supported by the wider Java community. And note that before Python introduced `with` or C# introduced `using`, they were pretty much in the same situation (theoretically, C# 3.0 could deprecate `using` since it has anonymous functions, Python on the other hand can't given its still crippled lambdas)