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
(a+b)*c
You have to write that as x = a+b
y = x*c
In C# people regularly play the human compiler when defining getters&setters (or maybe their IDE does it, but you still have the noise code on your screen). Or when mentioning types everywhere when the compiler could infer it (although it's better now with the var keyword).$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:
http://www.w3.org/2001/tag/doc/leastPower.html
Also see:
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)