[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Perl or Python?



Aleksey Cheusov wrote:
>> А что Реймонд говорил по поводу awk, напомните пожалуйста?
> http://www.catb.org/~esr/writings/taoup/html/ch08s02.html#awk
> 
> Есть там и разумные мысли, но я не согласен с некоторыми вещами.
> 
> Главная из них:
> 
> Modern minilanguages can either be general but noncompact, or
> specialized but very compact; specialized but noncompact simply won't
> compete.
> 
> Это, я извиняюсь, полный бред.

По-моему, разумно. Нет смысла использовать специализированный но
некомпактный язык, если ту же задачу можно решить специализированным
компактным. А если нельзя компактным, то к вашим услугам некомпактные языки
общего назначения.

Здесь предполагается, что компактность лучше многословности (писать меньше и
внедрять проще), а язык общего назначения лучше специализированного
(который по определению ограничен).

О компактных языках общего назначения Реймонд вообще не говорит — это
недостижимый идеал.

Подозреваю, что ваше неприятие связано с путаницей
понятий «специализированный» (частный, ограниченный) и «компактный»
(лаконичный).

> Еще:
> 
> A case study of awk is included to point out that it is not a model for
> emulation; in fact, since 1990 it has largely fallen out of use. It has
> been superseded by new-school scripting languages—notably Perl, which
> was explicitly designed to be an awk killer. The reasons are worthy of
> examination, because they constitute a bit of a cautionary tale for
> minilanguage designers.
> 
> С первой половиной согласен, конечно. Perl его в значительной степени
> действительно вытеснил. Не согласен с последним предложением. У него нет
> ни одного аргумента против minilanguages.  Просто словоблудие. Миниязыки
> - это очень красивая и хорошо работающая на практике концепция.  Есть
> тому куча примеров.

Он не против миниязыков. Просто считает awk недостаточно удачным примером
миниязыка. Многословным (по сравнению с регэкспами или математическими
выраженими) и ограниченным (ни развитых структур данных, ни мощных
библиотек). По моему мнению, он слишком категоричен, awk хватает мощности
для решения определённого круга задач и хватает легковесности, чтобы
предпочесть его. Но круг этот узок.

> Дальше:
> 
> The awk language was originally designed to be a small, expressive
> special-purpose language for report generation. Unfortunately, it turns
> out to have been designed at a bad spot on the complexity-vs.-power
> curve. The action language is noncompact, but the pattern-driven
> framework it sits inside keeps it from being generally applicable —
> that's the worst of both worlds.
> 
> По поводу "generally applicable". Никто не отменял
>    BEGIN {
>        print "Hello world!"
>    }
> Это во-первых.

Где здесь awk? Зачем здесь awk? Его сильные стороны здесь не проявляются, а
вот с действительно сложными задачами он не справится.

> Во-вторых, pattern/action схема - это отдельная парадигма
> программирования, и она ОЧЕНЬ удобна для обработки текста, в чем
> собственно и заключается задача AWK. Остальные задачи решаются очень
> просто. Все превращаем в текст и, как в моем любимом анекдоте, "сводим
> задачу к предыдущей"(С). Конечно, это шутка, но все знают, что в каждой
> шутке есть доля шутки. Я на AWK решаю очень широкий класс задач.
> У меня к нему вагон претензий, но уж на перл и питон я его точно не
> променяю. Фу.

Не все задачи сводятся к построчной обработке текста. И даже если решить
задачу на awk можно (ведь и на TeX-е факториалы считать можно), не всегда
это уместно.

Сам я awk применяю. Главным образом потому, что не люблю перл. Но не пытаюсь
решить им любую задачу.

> В плане дизайна к AWK, конечно, можно придраться, и есть вполне
> достойные более мощные альтернативы, при этом вполне легковесные. И об
> этом можно было бы сказать. Но товарищ Эрик сделал это весьма неумело,
> просто навалился на его "легковесность".

Как раз по мнению Реймонда awk недостаточно легковесен, чтобы оправдать его
ограниченность.



Reply to: