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

Re: Нужен ли bash



AP> В сообщении от Thursday 25 September 2008 22:01:21 Dmitry E. Oboukhov
AP> написал(а):
AP>>> Так намного лучше. Хотя вот в таком эскейпинге - \@ очень легко
AP>> ошибиться. Ну AP> и $@ или $_ читабельности не добавляют, а совместо с ; в
AP>> конце строки AP> становятся малочитаемыми.
AP>> так это вопрос выбора имен переменных
AP>> речь идет о том что читает код всеж таки специалист

AP> Специалист тоже человек и на конструкциях вида $#@ ошибиться немудрено
AP> каждому. Хм, а я правильно написал получение количества элементов? :-)
неправильно # - индекс последнего элемента

а количество элементов это или scalar(@ary) или в сравнениях (скалярном
контексте) scalar опустить можно


AP>> вот отвлечься от Perl, взять Makefile, там полно всяких $@, $<, $> итп
AP>> никто же не говорит что makefile масдай все пишут/используют
AP>> альтернатив в общем-то никто и не брался придумывать ;)

AP> Мэйкфайл это набор вызовов внешних утилит, это "сборочный шелл", а не язык
AP> программирования.
однако на нем вполне себе программы пишут и еще приличной сложности.

а чем шелл от языка программирования отличается?

AP>> а стандартные имена стандартных временных переменных это как бы
AP>> стандартное и соответственно претензии к нечитабельности идут только от
AP>> тех кто этим не пользуется.

AP> А зачем их так много? 
ну не так уж и много, часто используемых десяток едва наберется 

AP>>> На тикле я его в catch засуну на продакшене да еще в защищенный
AP>> интерпретатор AP> упакую. В тикле средства защиты динамического кода
AP>> предусмотрены. ну и в перле я его в eval завернул (что тоже что твой catch)
AP>> и в перле есть рестриктед перл-песочница

AP> Как я понимаю, перловый eval это не перехватчик ошибок, а передача кода на
AP> выполнение.
дык и перехватчик ошибок тоже.

AP> Когда-то пробовал в перле такой метод - быстро бросил, потому что
AP> вложенный эскейпинг жуткий просто становится. Скажем, если нужно написать
AP> код, кодорый будет выполнен и передан в код, где он еще раз будет выполнен, в
AP> перле это страшно смотрится.
а можно проще, без ескейпинга

eval {
	обычный перловый код
};

просто в _конкретно данном случае_ проще было eval  с кавычками позвать
:)

AP>>> Да все не нравится. Вот выдернуть кусок кода из контекста
AP>>>>> eval "foo_$$_[0](\$\$_[1])";
AP>>>>> foo_unknown($$_[1]) if $@;
AP>> выдернуть твой кусок из контекста с {}-ми \/-ми запятыми итп

AP> Прямой слэш я привык эскейпить, хотя это и не обязательно. {} можно заменить
AP> на "" - это пустая строка. Ну и чуть по-другому записать
AP> set replist {to: "" :CV: "" ( "" ) "" : "" , "" / "" -> "" $ ""  [ "" ] ""}
AP> Так вот понятнее?
неа (честно, не флейма ради а именно честно) :)

AP>> так оно хуже регекспов тобой же приведенных выглядит
AP>> только что покороче чуток
AP>> 
AP>> set replist [list to: {} :CV: {} ( { } ) { } : { } , { } \/ { } -> { } $ {}
AP>> \[ {} \] {}]

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

когда сложные они я так и пишу :)

AP> Хорошие комментарии не спасут плохой код, зато хороший код может не иметь
AP> комментариев.
хороших коментариев при плохом коде не встречал
хорошего неоткоментированного кода тоже не видал

--

. ''`. Dmitry E. Oboukhov
: :’  : unera@debian.org
`. `~’ GPGKey: 1024D / F8E26537 2006-11-21
  `- 1B23 D4F8 8EC0 D902 0555  E438 AB8C 00CF F8E2 6537

Attachment: signature.asc
Description: Digital signature


Reply to: