A "scripting language" is a subcategory of "programming languages", which generally refers to interpreted languages, as opposed to compiled languages. A compiled language is something which you compile to machine readable code, which is either straight up assembly code, or byte code, which has a closer correspondence to machine code, thus making it easier for the virtual machine to optimize either during compilation or during run time using a JIT (Just In Time) compiler.