some languages are compiled, some interpreted - it is usually a performance issue, a flexibility problem
there is no reason why a language should not choose to be both
it, generally, has no affect on structure or syntax, nor at libraries
in certain occasions a program will not exibit the same behaviour under an interpreter, but quite unrelated, merely a side effect of translation process
on the other hand, a language can be a low level one or not - a matter of focus: what is programmer's primary concern, the algorithm, or the implementation
you can leave the tiny little details to the translator, or you can handle them yourself
if you do so, speed is what you are after
and in that case, it is natural to pick a compiler
(but you could not ..)
whatever your language, once the source has been compiled, is then in binary, hex
your delicate objects have crambled into bits
your gentle abstractions exist no more, figments of your imagination
you have no place to hide, no place to sleep
a ruthless machine is traversing through your code
splitting arrays in half, jumping through gotos
hunting down pointers in virtual memory planes
eventually, it may spit out a core (memory leak)
a language is a means to expression
an illusion that you have someone to talk to
that it understands you
but it does not
the trickster is the interpreter, or compiler
if you narrow your vocabulary to a certain syntax,
they'd be happy to carry your messages
what you imply by someList().reverse(),
in c will be represented by some sort of construct,
structures with function pointers perhaps
and i dont want to know how it will in assembly ...
libraries arent that important (agree ?)
if they do exist, all is swell
else, somebody writes them (dont look at me!..)
syntax is what defines a language
hiding its limitations
suggesting its strengths
hardly perfect, never complete
current trade is, for a proccess to "run" on the proccessor
that is, the kernel taking a step aside,
letting it do whatever has to do,
paying little attention,
apart from when requesting its help (system calls)
another scenario would be the proccess treated as data (as if it wasnt ..)
with the kernel proccess the only real one,
switching tasks on a single proccessor
here, the kernel acts as an interpreter,
lets you define a syntax other than the one is written in
powerfull feature some might say ..
write the kernel itself in such a style ?!
perhaps if it were built on top of a microkernel (-
which, in turn, would be built on top of another one..
and the list goes, and goes, till you feel getting sea sick
in which case, you return to ordinary assembly, and take a big breath
http://www8.informatik.uni-erlangen.de/ ... tlit1.html (look for "bugs")