Благодаря этому можно абстрагироваться от устройства компьютера и сфокусироваться на конкретной задаче.
Для взаимодействия с компьютером языкам этого уровня нужен посредник. Его задачи выполняет транслятор — он подразделяется на интерпретаторы и компиляторы.
Компилятор переводит весь код до запуска программы. Он читает исходный код целиком, проверяет его на ошибки и создаёт готовый исполняемый файл. Этот файл можно запускать многократно без повторной компиляции. Так работают C++, Go, Rust.
Интерпретатор действует иначе: он читает и выполняет код построчно во время работы программы. Готовый файл при этом не создаётся, а программа запускается каждый раз заново. По этому принципу работают Python и JavaScript.
Некоторые языки используют промежуточный подход. Сначала компилируется байт-код — упрощённое представление программы, не привязанное к конкретному процессору, — который затем интерпретируется специальной виртуальной машиной. Так устроена Java.
Языки программирования высокого уровня различаются не только по синтаксису, но и по подходу к решению задач.
Императивные языки описывают, как нужно решить задачу. Программист пишет пошаговую инструкцию, что делать и в каком порядке. К таким языкам относится Fortran, C-подобные языки, включая C, C++, Java, а также японский Ruby, который отличается лаконичным синтаксисом.
Проблемно-ориентированные языки созданы для конкретных предметных областей. В эту категорию входят:
- Lisp использовался в исследованиях искусственного интеллекта.
- Prolog построен на логических правилах и применяется в экспертных системах.
- SQL нужен работы с базами данных.
Объектно-ориентированные языки организуют код вокруг объектов — сущностей, которые объединяют данные и действия над ними. Java применяется в корпоративных системах и Android-разработке. Python стал стандартом в Data Science и машинном обучении, а C# остаётся основным языком разработки под платформу Microsoft и игры на Unity.
Специализированные и универсальные языки