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: