Не очень понятно сочетание - "уровень используемого языка"- это эквивалент "дополнительных конструкций языка" общего плана в задачах, где это не является необходимым? крайний случай ( I=I+++J )?
Уровень языка, это наличие механизмов построения абстракций из предметной области. Чем больше возможностей, простора, язык нам предоставляет для введения терминов из нужной нам предметной области (где предметная область -- произвольная), тем выше уровень оного языка.
У каждого языка есть некий диапазон уровне на котором программист там может работать. Например у С++ этот диапазон больше чем у Java, причем явовский диапазон, по моему скромному мнению, полностью поглощается С++. Т.е. С++ и более высокоуровневый язык нежели Java и более низкоуровневый одновременно.
Но у С++ есть проблема -- там абстракции страшно протекают, они дырявые получаются. Т.е. забравшись в самые заоблачные высоты абстракций мы можем внезапно напороться на порчу памяти (кто-то из команды где-то вдруг решил с указателями поиграть). В D2 эта проблема решена.