Введение

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

Дихотомия Остерхаута — это классификация, предложенная учёным-компьютерщиком Джоном Остерхаутом, согласно которой языки программирования высокого уровня обычно делятся на две группы, каждая из которых обладает различными свойствами и областями применения: языки системного программирования и языки скриптов – сравните программирование в большом и программирование в малом. Языки системного программирования (или языки прикладного программирования) обычно характеризуются следующими свойствами:
Они статически типизированы.
Они поддерживают создание сложных структур данных.
Программы на них компилируются в машинный код.
Программы на них предназначены для работы преимущественно независимо от других программ.
Языки системного программирования обычно используются для компонентов и приложений с большим объёмом внутренней функциональности, таких как операционные системы, серверы баз данных и веб-браузеры. Эти приложения обычно используют сложные алгоритмы и структуры данных и требуют высокой производительности. Типичными примерами языков системного программирования являются C, OCaml и Modula 2. В отличие от них, языки скриптов (или языки-связки) обычно обладают следующими свойствами:
Они динамически типизированы.
Они обладают ограниченными или отсутствующими возможностями для работы со сложными структурами данных.
Программы на них (скрипты) интерпретируются.
Языки скриптов обычно используются для приложений, где большая часть функциональности обеспечивается другими программами (часто реализованными на языках системного программирования); скрипты используются для объединения других программ или добавления дополнительных слоёв функциональности поверх существующих программ. Остерхаут утверждает, что скрипты, как правило, короткие и часто пишутся менее опытными программистами, поэтому эффективность выполнения менее важна, чем простота и удобство взаимодействия с другими программами. Распространённые области применения скриптов включают генерацию веб-страниц, генерацию отчётов, графические пользовательские интерфейсы и системное администрирование. Типичными примерами языков скриптов являются Python, AppleScript, C shell, пакетные файлы DOS и Tcl. Дихотомия Остерхаута лежит в основе разработки его языка Tcl.

История

Дихотомия была полностью изложена в , хотя Остерхаут проводил это различие ещё со времен разработки Tcl (1988) и неоднократно публично высказывался на этот счёт. Ранним эпизодом стала "Война Tcl" в конце сентября и октябре 1994 года, когда Ричард Столлман опубликовал статью, критикующую Tcl, под названием "Почему не стоит использовать Tcl", на что Остерхаут ответил, сформулировав свою дихотомию:

Критика

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