Languages come in two versions: Compiled and Interpreted. Whats the difference?
A compiled language takes the stuff that you type in and generates the machine code for the target processor. The resultant machine code will not work on any other processor (since it has a different 'machine language'). However, by telling the compiler to generate code for a different target processor then it will do this for you. So: your source code be it C, Basic, Java etc doesn't need to change but you tell the compiler to generate the code for the correct target micro-controller. This code, say a hex file, is then tied in to the controller that you generated it for and so you need to re-compile your unchanged source code to generate new code for a different controller. Once you have compiled onto 'machine code' then your hardware does know, and doesn't care, what programming language you wrote it in.
An interpreted language doesn't generate any machine language at all !! Instead it saves your program in an intermediate format and requires your board to have a chip that understands this format. So for Java (and some BASICs) you have an on-board 'interpreter chip' that takes your program and works out how to make it run. Hence the 'BASIC Stamp' has a chip that knows how to make sense of your BASIC code. This is why, in the computer world, a Java program can be run on Windows, Mac, Unix etc - by having a copy of the relevant Java runtime for the target platform you are running on. Whereas a compiled program normally works stand alone without any other bits'n'pieces.
Slightly simplistic response - but hope it makes sense
So if you want to use BASIC with ATMega8 then you will need to find a BASIC compiler that compiles your BASIC source code into ATMega8 machine code. Don't know of one, off hand, and if you can find one then it may cost you. Most folk will advise you to use C with Atmel AVR processors since there are free tools for the Atmel processors like AVR Studio.