| >Зачем понадобилось переводить код одного языка в другой?
Ну хотя бы для того, что один язык хорошо понимает человек, а другой машина (она из того, кода, который "понимает" делает более быстрые программы).
>Про интерпретатор и компилятор из википедии ничего не понял, какая суть этих понятий.Зачем
>компилятор переводит в низкоуревневый код программу?
Если кратко и упрощенно, то все началось с процессора, который просто читает данные в виде нулей и единиц, один набор - это содержимое для регистров процессора (ячеек памяти), другие наборы нулей и единиц зашифрованные номера команд, которые процессор должен выполнить над ячейками. Запоминать числовые коды команд довольно трудно, хотя раньше так и делали, программы писать долго, много ошибок (попробуйте пару сотен тысяч нулей и единиц без ошибки написать, да еще и понять потом, что делает программа). Поэтому нулики и единички для команд стали обозначать мнемониками - буквенными сообщениями - их запоминать проще, тут и потребовался транслятор, который бы переводил понятные и быстро-запоминаемые мнемоники в бинарный код. Транслятор стали называть ассемблер. Вы вероятно в курсе, что регулярно происходит смена поколений процессоров (ну и команд тоже), кроме того их несколько разных несовместимых видов и ассемблеры для них разные. Несколько утомительно для каждого процессора переписывать одно и то же, особенно, если это операционная система. Так появились языки программирования и компиляторы. Язык программирования вообще не зависит ни от чего, на нем можно составить одну программу, которая будет работать для любого процессора или операционной системы. Компилятор переведет её в характерный для данной системы ассемблер-код, а ассемблер разжует для данного процессора, переведя ассемблер-код в бинарный код. Дальше больше. Программисты вдруг выяснили, что они все-равно в программах учитывают архитектуру компьютера, оперируют какими-то файлами, переменными, циклами, операторами ветвлением... в то время как им нужно моделировать пользователей, документы, окна и вообще вещи, для которых в компьютерном языке нет понятий. Так появились абстрактные типы и объектно-ориентированное программирование (сейчас не будем вдаваться в альтернативные течения).
PS Возможно вам будет также интересна тема по ссылке http://softtime.ru/forum/read.php?id_forum=2&id_theme=81919. | |