1. Для аппаратных средств (аппаратный уровень) - разновидности Ассемблеров - здесь важна точность;
2. Приближенное с ядру системы (системный уровень) - C, C++, Delphi (Paskal) (это нативные языки) - здесь важна скорость (как написания так и выполнения);
3. Для решения научных рутин (прикладной уровень) - любые, в основном это Java, C++, Delphi, но тут главное не язык, а куча разных библиотек для ускорения и упрощения написания. Чаше всего это интерпретируемые языки.
В основном чаще пользуются Java, С++, .NET, PHP, Python.
Потому что именно так можно коротко и лаконично работать с массивом. Например, давайте решим такое задание: заполнить 100 элементов массива случайными числами. Без цикла while или for этот код займёт ни много, ни мало 100 строк и выглядело бы это вот так:
arr[0] = rand();arr[1] = rand();...arr[100] = rand();Во-первых - это очень затрудняет читабельность кода. Во-вторых, если Вам придётся решать задачу, предполагающую ввод количества элементов, то Вы уже не сможете просто так написать N элементов, поскольку Вы не знаете, какое число даст программе человек. В таком случае Вам бы пришлось использовать рекурсивную функцию.
Вместо этого люди решили использовать цикл - то, что повторяет тело цикла i раз ("i - это итератор - счётчик цикла"). Давайте посмотрим, как будет выглядеть наша задача с циклом:
for(int i = 0; i < 100; i++){ arr[i] = rand();}В данном случае, как я писал выше, с каждой итерацией будет выполняться оператор присваивания случайного ("на самом деле псевдослучайного, но тема не об этом") числа элементу с индексом ("положением элемента в массиве"), равным номеру итератора.