Дихотомия Оустерхаута
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Дихотомия Оустерхаута - это ученого-компьютерщика Джона Остерхаута . категоризация [ 1 ] что языки программирования высокого уровня, как правило, делятся на две группы, каждая из которых имеет свои собственные свойства и области применения: системного программирования языки и языки сценариев — сравните программирование в целом и программирование в малом .
Языки системного программирования (или языки приложений ) обычно обладают следующими свойствами:
- Они набираются статически
- Они поддерживают создание сложных структур данных.
- Программы в них компилируются в машинный код
- Программы в них предназначены для работы в значительной степени независимо от других программ.
Языки системного программирования, как правило, используются для компонентов и приложений с большим объемом внутренних функций, таких как операционные системы, серверы баз данных и веб-браузеры. Эти приложения обычно используют сложные алгоритмы и структуры данных и требуют высокой производительности. Прототипические примеры языков системного программирования включают C , OCaml и Modula-2 .
Напротив, языки сценариев (или связующие языки ), как правило, имеют следующие свойства:
- Они набираются динамически
- У них мало или вообще нет возможностей для сложных структур данных.
- Программы в них ( скрипты ) интерпретируются
Языки сценариев обычно используются для приложений, в которых большая часть функциональности исходит из других программ (часто реализованных на языках системного программирования); сценарии используются для объединения других программ или добавления дополнительных уровней функциональности поверх существующих программ. Оустерхаут утверждает, что сценарии, как правило, короткие и часто пишутся менее опытными программистами, поэтому эффективность выполнения менее важна, чем простота и удобство взаимодействия с другими программами. Общие приложения для создания сценариев включают создание веб-страниц, создание отчетов, графические интерфейсы пользователя и системное администрирование. Прототипическими примерами языков сценариев являются Python , AppleScript , оболочка C , DOS пакетные файлы и Tcl .
Дихотомия Оустерхаута лежит в основе конструкции его языка Tcl .
История
[ редактировать ]Дихотомия была полностью изложена в Ousterhout (1998) , хотя Оустерхаут проводил это различие, по крайней мере, со времен разработки Tcl (1988) и заявлял об этом публично в разное время. Первым эпизодом была « Война Tcl » в конце сентября и октябре 1994 года, когда Ричард Столлман опубликовал статью с критикой Tcl под названием «Почему вам не следует использовать Tcl». [ 2 ] на что Остерхаут ответил, изложив свою дихотомию: [ 3 ]
Я думаю, что возражения Столлмана против Tcl могут быть вызваны главным образом одним аспектом конструкции Tcl, который он либо не понимает, либо с которым не согласен. Это предложение о том, что вам следует использовать *два* языка для большой программной системы: один, например C или C++, для управления сложными внутренними структурами данных, где производительность является ключевым фактором, а другой, например Tcl, для написания небольших программ. скрипты, которые связывают части C и используются для расширений.
Критика
[ редактировать ]Критики считают, что эта дихотомия весьма произвольна, и называют ее ошибкой Остерхаута или ложной дихотомией Остерхаута . [ 4 ] Хотя можно сказать, что статическая и динамическая типизация, сложность структуры данных и зависимость от автономной являются несвязанными характеристиками, обычная критика дихотомии Оустерхаута касается ее различия между компиляцией и интерпретацией. Ни семантика, ни синтаксис существенно не зависят от того, компилируется ли языковая реализация в машинный язык, интерпретируется, маркируется или побайтно-компилируется в начале каждого запуска, или от любого сочетания этих действий. Кроме того, практически ни один широко распространенный язык не интерпретируется без компилятора; это делает компиляцию и интерпретацию сомнительным параметром в таксономии языков программирования. [ 5 ]
Ссылки
[ редактировать ]- ^ Оустерхаут, Джон (март 1998 г.). «Сценарии: программирование более высокого уровня для 21 века» (PDF) . Компьютерный журнал IEEE . Проверено 27 марта 2020 г.
- ^ Столлман, Ричард (23 сентября 1994 г.). «Почему не следует использовать Tcl» . Группа новостей : comp.lang.tcl . Usenet: [электронная почта защищена] . Проверено 13 сентября 2015 г.
- ^ Оустерхаут, Джон (26 сентября 1994 г.). «Re: Почему не следует использовать Tcl» . Группа новостей : comp.lang.tcl . Usenet: [электронная почта защищена] . Проверено 13 сентября 2015 г.
- ^ Стюарт Хэллоуэй. Дихотомия Остерхаута — это не так . Архивировано из оригинала 17 января 2018 г.
- ^ Эта статья основана на материалах, взятых из Ousterhout%27s+dichotomy в Бесплатном онлайн-словаре вычислительной техники до 1 ноября 2008 г. и включенных в соответствии с условиями «повторного лицензирования» GFDL версии 1.3 или более поздней.
Дальнейшее чтение
[ редактировать ]- Кумар, Дипак (сентябрь 2010 г.). «Размышления: языковые войны и ложные дихотомии» . ACM Inroads . 1 (3): 10–11. дои : 10.1145/1835428.1835431 . S2CID 34789810 .
- Гровер, Энди (19 июня 2009 г.). «Станьте лучшим программистом, преодолев дихотомию Оустерхаута» . Мост с открытым исходным кодом .