I`m looking for alternatives programming languages (from assembly, C, C++ and basic) to embedded (microcontroller) programming.
Is it possible for example, to program microcontrollers in C# or Java? Maybe Ruby or Python?
If possible, please post development tools and hardware used.
From a kickstarter, Micro Python is now out and designed for embedded devices http://micropython.org/ https://mail.python.org/pipermail/python-list/2014-June/672994.html
"Supports almost full Python 3 syntax, including yield (compiles 99.99% of the Python 3 standard library)."
Here is a list of languages you can use with the 8-bit AVR microcontroller. It includes Basic, Java, Pascal, Python and Scheme. In particular, PyMite implements a subset of the Python interpreter.
I've used custom pcode interpreters on smaller machines to save code space.
Most embedded systems have some part which may be high performance, and a lot of stuff that runs rarely or for which performance doesn't matter.
I've implemented a number of applications in which the hard core fast stuff was written in assembler (because that's all I could get as a development tool), and then coded a pcode interpreter for my own private instruction set typically with stack machine orientation.
Pretty much all you need to get started are opcodes for PUSH/POP operand (of 8 or 16 bytes), ADD/SUB/MUL/DIV, CMP, IF/GOTO, and call, and these are easily coded even in ugly instruction sets. After that you try to write subroutines using CALL, and only add opcodes to do those things that the pcode can't otherwise do (device I/O), or that require some faster compuation.
Coding in such a pcode interpreter is pretty easy even with an assembler; you simply write "BYTE " assembler directives interspersed with "WORD " directives depending on what the opcode wants.
This answer is essentially the poor man's variation of the FORTH answer I gave earlier.
Few month ago started the project RubimC - Ruby compiler and framefork for microcontrollers with small memory.Current version is working but realizes far not all the features of Ruby.
If you count JavaCard as a microcontroller, then you can program it in Java.
I think there are (at least) two answers to this question. First I want to emphasize that if you are programming close to the hardware and with limited resource, you will find that C or C++ is the tools that will suite you best. High-level languages does not make it easy to do bit-level manipulation etc, but these things are easily done in C. Part of the solution is to figure out which tool is the best for the job, and for low-level stuff Python or Ruby is not what you want.
On the other hand if what you want to do is simply to write an application that run on a micro-controller, then you may have several options depending on the target you are working on. Many so-called embedded platforms are far more powerful than only a few year old workstations and therefore run stock Linux which gives you a large number of language options.