Недостатки языков программирования высокого уровня

В терминологии компьютерного программирования языки программирования часто разделяются на языки «высокого уровня» и «низкого уровня». Разница между ними заключается во взаимодействии оборудования. Проще говоря, низкоуровневые языки находятся «ниже» в компьютерной системе, ближе к реальному взаимодействию с оборудованием. Языки высокого уровня абстрагируются от оборудования. Результатом этой абстракции может стать более быстрый и читаемый код, но меньшая скорость и меньший доступ к системным ресурсам.

Абстракция

Что отличает языки высокого уровня от языков низкого уровня, так это уровень абстракции языка от системных ресурсов. Ежедневная работа с системными ресурсами может стать медленной и болезненной. Для решения этой проблемы были созданы языки высокого уровня, которые позволяют программисту обрабатывать систему, освобождая ей, чтобы выполнить более сложную задачу, игнорируя мельчайшие детали системы, такие как память управление. Однако у этого есть недостаток, заключающийся в том, что программист может оказаться в ситуации, когда требуется доступ к системе, а язык высокого уровня не может предоставить этот доступ. Язык высокого уровня обычно не подходит для системного программирования.

Видео дня

Скорость

Языки высокого уровня обычно являются «интерпретируемыми» языками, а не «скомпилированными» языками низкого уровня. «Интерпретируемый» просто означает, что язык использует интерпретатор, который выполняет исходный код по одной строке за раз, а не компилирует двоичный файл. Однако интерпретаторы часто представляют собой программы, написанные на компилируемых языках. Из-за этого интерпретируемый язык - например, Python - работает только поверх интерпретатора Python, написанного на C. Это увеличивает накладные расходы на память и время для интерпретируемых программ, и они часто выполняются медленнее.

Особенности системы

Кажущаяся сила кода высокого уровня - его переносимость. Код высокого уровня может работать в любой системе, в которой установлен соответствующий интерпретатор. Однако, когда программа компилируется для компьютера, при ее компиляции учитывается вся среда этой системы. Интерпретируемый язык уже абстрагирован от системы до такой степени, что интерпретируемая программа ничего не знает о системе, кроме того, что интерпретатор может ей предоставить.

Пределы программирования

Из-за природы языков высокого уровня существуют определенные задачи, для которых они не подходят или, по крайней мере, еще не подходят. Без доступа к системным ресурсам разработка быстрых приложений, ориентированных на ОС, затруднена. Более того, даже разработка операционной системы становится проблематичной. По мере того, как все больше программного обеспечения перемещается в онлайн, этот факт становится менее серьезным, но для коммерческого и промышленного использования интерпретируемые языки могут работать слишком медленно или слишком далеко от взаимодействия с оборудованием.