Re: and then и or else

От: Vladimir A. Butenko <CGatePro_at_mx_ru>
Дата: Mon 23 Oct 2006 - 23:13:08 MSD

On Mon, 23 Oct 2006 22:49:29 +0400
  "Alexey Naidyonov" <CGatePro@mx.ru> wrote:
> On Mon, 2006-10-23 at 11:03 -0700, Vladimir A. Butenko wrote:
>

>> > Вообще, обратите внимание на описание альтернативного синтаксиса. Если
>> > пользоваться только им, то получается почти чистый яваскрипт. Услада
>> > взгляду закоренелых сишников.
>> 
>> Даже закоренелый сишник-яваскипщик-линухоман понимает что операции
>> 
>> if(getValue() & getMask()) ....
>> и
>> if(getValue() && getMask()) ....
>> 
>> будут работать "слегка по-разному". 

>
> Ну да, потому что это разные операции. Первую называют "bitwise and", а
> вторую -- "logical and". Мне, кстати, встречались coding style policy, в
> которых прямо запрещалось использовать bitwise ops в логических
> условиях, вместо этого рекомендовалось писать
>
> boolean mask = getMask();
> if (getValue() && mask) ...

Ну. Что тоже неправильно. Потому что оно будет делать то, что Вы думаете тогда и только тогда, когда mask - boolean. Но этот случай - вырожденный. А getValue() и getMask() - обычно как раз не однобитные, а многобитные значения (раз говорим о маске). И поэтому int mask = getMask()
if(getValue() && mask) - опять будет совсем не то, что if(getValue() & mask)

А запрещать, да - надо. Только не так, как это там "рекомендовалось". А вот так -
if((getValue() & getMask()) != 0) ....

> Так что "and" и "and then" мне, пожалуй, даже нравится. Во всяком
> случае, после размышлений, я решил остановиться на основном синтаксисе
> cg/pl, хотя альтернативный мне всяко привычнее.

Видите ли... Если человеку с минимальным вкусом показать Мерседес, то он, глядя на Жигули с удивлением обнаружит, что "от привычного легко отказаться" - даже если в его стране-жизни ничего, кроме Жигулей никогда не было.

Язык Це и прочие поделки пионэров убили на** технологию языков, так же как Линух убил на*** технологию Унихов. Толпа полуграмотных "программистов" прибежала и смела, мудро направляемая такой же толпой манагеров - полуграмотных выпускников Гарвардов и прочих ПТУ.

Как Вы понимаете, or else и and then - это отнюдь не изобретение CG/PL - это было в любом нормальном языке. А теперь, увы, это воспринимается как "экзотика". Как приезд того же замухрыжного Роллс-Ройса в Совейский Саюс. Хотя до Совейскаго Союса их бегало по Москве с Питером столько, что даже на большевичков хватало...   

>> И вряд ли при чтени программы "вслух"  будет 
>> называть второй оператор "and".

>
> :-)
> Спросил коллегу:
> <...> I would use the plain and for the logical and
> <...> and be more verbose for the bitwise one

Ну, значит "коллега" тоже из этих, из "Великого Индусского призыва". Откуда бы ни был родом-этносом.   

> Правда, опыт не совсем корректный, потому что он немец. Надо будет
> спросить британца :-)

Да нет тут никакой связи с языком-этносом. Есть просто, увы, отсутствие понимания того, "как оно работает".   

> SY,
> --
> Alexey Naidyonov
> ITooLabs

Sincerely,
Vladimir Получено Mon Oct 23 19:11:53 2006

Этот архив был сгенерирован hypermail 2.1.8 : Tue 24 Oct 2006 - 00:14:08 MSD