Только высокий уровень абстракции. Например, должна быть возможность не выделять память вручную - как за счет контейнеров из стандартной библиотеки языка, уже содержащих в себе механику выделения и очистки памяти, так и за счет возможностей компилятораинтерпретатора. Исходя из этого C++ уже высокоуровневый язык, а Си нет. Интересная ситуация с ассемблером Smali - ответчики выше скажут, что он низкоуровневый, потому что работает только в JVM, однако он выше уровнем, чем Си, там в 1 строчку делается то, что в Си делалось бы 100 строчками, все портят другие моменты, например отсутствие поддержки циклов кроме goto/goto-like. Стандартная и другие библиотеки языка должны позволять простыми конструкциями делать достаточно сложные вещи, без необходимости программисту указывать те детали, которые могут быть заданы по умолчанию. Исходя из этого Android-овское API более низкоуровнево, чем Web-овская BOM (с alert() и прочими API), однако Android-овские виджеты более высокоуровневы, чем HTML и CSS, требующие задавать облик всех элементов с нуля и содержащие лишь малое количество примитивных элементов. HTML и CSS лежат почти на том же уровне, что и Сишный WinAPI. Во как!