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

Re: Perl or Python?



 >>> Лень вычислять адреса вручную - вообще невообразимо гнилая, и за
 >>> отмазку не канает...
 >>
 >> То, что выше, называется строить из себя дурака и превращать дискуссию в
 >> бессмысленный балаган. А вроде взрослый человек...

> Насчет ручного вычисления адресов - историю учите, когда-то именно так и 
> делали.
Ржунимагу(C) :-)

> Где в любимом вами make строгая типизация переменных?
О! Между прочим отличный пример!
Сразу скажу, любителям GNU make, никогда не видевшим системы BSD и BSD
make с mk script-ами, понять то, что ниже, будет сложно, но я попробую.

Так вот. В декларативном стиле, исповедуемом BSD-ными Mk script-ами,
очень часто используются булевские величины, например, для указания, что
нужно строить, а что не нужно. Исторически сложилось, что для задания
этих величин используются строки yes/no в любом регистре. Например,

   MKMAN=          yes
   MKCATPAGES=     NO
   USE_LIBTOOL=    YES

Оно, в принципе, логично, строки yes/no легко воспринимаются человеком
и воспринимаются однозначно.
Эта традиция восходит, видимо, к mk script-ам 4.4.BSD make-а.
То же самое применяется в основанных на BSD make-ах пакетных системах
NetBSD pkgsrc и Free/OpenBSD ports. 

Так вот, проблема номер 1 заключается в том, что если для внешнего API
используются как правило yes/no, то для внутренних "штучек" часто
используют 1 и 0 просто потому, что

    .if BOOL_1_or_0_VAR

проще и понятнее, чем конструкции

    .if !empty(BOOL_YES_NO_VAR:M:[Nn][Oo]) # все, что не "no", то "yes"

То есть, налицо путаница. В pkgsrc есть даже таблица булевских
переменных с описанием того, как для нее задаются величины true и false.

Проблема номер 2 заключается в том, что конструкия вида

    !empty(BOOL_YES_NO_VAR:M:[Nn][Oo])

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

И все это побочный эффект универсальной идеологии "все есть строка".

Типизированные переменные здесь, конечно, не нужны, но по-другому
взглянуть на проблему типов вполне можно.

[откровенный бред поскипан]
-- 
Best regards, Aleksey Cheusov.


Reply to: