Mosiac,
1) How fast the app can be produced?
That depends on the skill of the programmer. I think I can write as fast in Assembler using templates, procs, previous code, cut and paste, APIs, and a well stocked library of routines. In other words, it is not fair to give an identical task to a high level (HL) programmer and a Assembler programmer, especially two neophytes, and tell them to go at it while you compare the time to code. The HL already has those "helps" within it. But a well oiled Assembler shop should also have developed those aids and be competitive with respect to speed.
How much resources (ram, CPU speed, I/O) the app uses?
If you code in good assembly, you are doing the best that can be done. HL is bound to be slower.
3) How maintainable or portable is the code?
Now you have me in a pinch. No doubt about it, portability is easier with HL, but not as good as some claim. It all depends on the difference in platforms. If the high level program performs bit fiddling, then you will probably have to dig deep into the code to match the function on the destination machine.
4) Are you required to document the code.?
Always, always, always, and especially with Assembler. HL has a certain amount of documentation built into its syntax, but it still can be confusing looking at it cold.
Weigh in on those with a score and u can develop a matrix that guides the selection of the language type. Of course, if u are only comfortable with one you can always make do.
The difference here is if u only gonna know one it's best to go with asm as it is capable of more than a hi lvl language. Especially when it comes to microsecond sensitive applications and timing precision/response.
I already made my preference known. If I need to support several platforms, I would assign a coder, not a programmer, to translate the assembly code to another platform. Yes, assembly is the fastest that can be done, but sometimes HL fast is good enough. That has to be considered also when weighing the pros and cons.
Ratch