|
|
ru.website- RU.WEBSITE ------------------------------------------------------------------- From : Eugene A Belousov 2:5034/1 14 Mar 2001 19:12:55 To : All Subject : Re: Формирование картинки -------------------------------------------------------------------------------- Все-таки я несколько запутался ;) > From: Serge Shikov <shikov@rinet.ru> > > Eugene A Belousov wrote: > > > > Зачем каждое высказанное вслух мнение воспринимать как вызов? > Hу интересно просто - пишешь, пишешь, и вдруг оказывается, что у перла > какой-то "налет декларативности" где-то есть... Вот сейчас и попробую объяснить, кое-что пришло в голову... > > > А что касается процедурности ps... > > Работа со словарями, > Словари - это структура данных. И ты с ними явно и вполне процедурно > работаешь. Просто это подразумевает несколько иной стиль программирования, и, в какой-то степени, вынесение реализационных подробностей на уровень синтаксиса. Все языки, где есть локальные переменные, работают со стеком, и все (компилируемые реализации - на стадии компиляции, интерпретируемые - возможно и на стадии исполнения) работают со словарями, но эти подробности "загоняются под ковер", а программист имеет дело с человеческими именами, областями видимости, etc. > > > отсутствие поименованных переменных и функций, > Э, это куда же они делись? Виноват, неправильно выразился. Точнее говоря, наличие неименованных переменных и функций. > > > да та же польская нотация... > И что, польская нотация - это декларативность? Похоже ты просто это > слово употребляешь не в том смысле, в каком принято. Декларативность - > это скажем SQL, когда мы СУБД говорим - выбери вон то, и вон то, и чтобы > удовлетворяло вон тем условиям. А алгоритм сама подбери, хочешь join, а > хочешь хрен знает что. А традиционная процедурность - это реляционная > алгебра, когда ты СУБД говоришь - сначала сделаем join вот этого и > этого, потом отберем часть строк по условию такому-то, потом union или > скажем intersect. И пусть только попробует сделать что-то другое... Просто польская нотация - вещь не очень распространенная в высокоуровневых языках. Это - подробность реализации, обременять которой программиста незачем. Впрочем, так как постскрипт как правило генерируется программным путем, то это может быть даже на пользу. По поводу декларативности: Конечно, аналогия с postscript больше синаксическая, нежели логическая, это я зря. Что же касается perl. Вот есть процедурный язык, например C. Есть декларативный язык, например SQL. Есть возможность вызывать модули на одном языке из другого, например запросы на SQL из программы на C. Есть гибридные языки, смешивающие оба подхода, например PL/SQL, где в процедурный язык очень красиво добавлена интеграция с SQL. Есть декларативный язык regexp'ов. И есть язык, где декларативность regexp'ов на уровне синтаксиса объединена с процедурным языком. Получили гибридный язык perl, в котором на уровне синтаксиса присутствует декларативность, доставшаяся от regexp'ов. Продолжим. PL/SQL, конечно, очень хорош для написания хранимых процедур и триггеров в РСУБД, но было бы странно использовать его для задач, сильно отличающихся от обработки данных в РСУБД. Perl, конечно, замечательно подходит для поиска и замены в тексте в сочетании с процедурной обработкой, но было бы странно использовать его для чего-то иного. Hадеюсь, с декларативностью стало понятнее. Берем задачу разработки web-сайта. Можно ли заранее сказать, что будет превалировать: обработка текстов, запросы к БД, либо что-то еще? Да, можно сказать, что в web сейчас представлена преимущественно текстовая, но нуждается ли она в большинстве случаев в подобной обработке? И может, для этого куда лучше подойдут программы, использующие xml в качестве входного формата? И может логичнее использовать язык, интегрирующий в себе не regexp'ы, а SQL? Или может лучше использовать универсальный процедурный язык, не отягощенный специализированными функциями, непосредственно не относящимися к разработке для web, а, наоборот, дополненный безусловно полезными функциями, например для поддержки HTTP, которые подключались бы в виде бинарных модулей или входили бы в базовый синтаксис языка. -- Евгений А Белоусов, media@kosnet.ru --- Microsoft Outlook Express 5.50.4133.2400 * Origin: Kostroma Telegraph & Telephone station (2:5034/1@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.website/1205012d66ccf.html, оценка из 5, голосов 10
|