QUOTE(cygnusX @ 10 Jun, 2008 - 12:45 PM)

If i want to create small and simple programming language(object oriented language with general purpose) what would be better choice for implementing it - assembler or using other high-level language?
Well, most software is not implemented entirely in an Assembly language, if it's using any at all. If you choose C/C++, you can optimize the parts that need to be optimized with inline assembly, or with an external assembler. Using C/C++ makes the software have some degree of portability.
If you write a compiler that generates native code, the language the compiler is written in isn't a major concern. Granted, you probably would want to write it in a language compiled to native code, but since you only have to compile once before executing, the speed of the compiler is mostly a non-issue (unless the performance is horrible).
If you're compiling to byte-code, a JIT-enabled VM will probably be the best choice in terms of performance, except for small programs, where the overhead of the JIT compilation process outweighs the time it takes to interpret and execute the bytecode directly. Some JIT-enabled hosts will selectively JIT compile bytecode (such as the Sun Java Hotspot VM) based on how much a certain piece of code is being executed.
JIT-compiling byte-code is probably a rather complicated task, especially if it's selective.
If it's purely interpreted byte-code, then making portions in Assembly language may yield some benefit. Of course, writing highly optimized assembly is not easy, and the fastest way of doing something is often not the most obvious. A C compiler will have this kind of "knowledge" built in, where someone doing it manually will have to do research to figure out how quickly certain instructions execute.
If you want to make something that will work on multiple platforms without using a bytecode interpreter, you might want to study the design of the GNU Compiler Collection (GCC). It's design abstracts the machine details away from the parser and internal code generator. There is are Java, ADA, Fortran, Objective C, C, and C++ front ends that use the same core internal code generator, and it can produce native code for many platforms. Studying it would be a major undertaking though, as it's codebase is rather large.
This post has been edited by perfectly.insane: 13 Jun, 2008 - 03:56 PM