Почему в перле условия пишут за действием
От: Аноним  
Дата: 12.01.10 14:53
Оценка:
Последние пару месяцев пишу утилиту на перле(вернее переписываю) и никак не могу привыкнуть в перле условия пишут за действием.
Типа такого
$myVar = sumFunc() if $extVar ne 'bla-bla-bla';


Зачем так сделано?
В чем удобство?


17.01.10 14:28: Перенесено модератором из 'Декларативное программирование' — Кодт
Re: Почему в перле условия пишут за действием
От: Temoto  
Дата: 12.01.10 14:58
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Последние пару месяцев пишу утилиту на перле(вернее переписываю) и никак не могу привыкнуть в перле условия пишут за действием.

А>Типа такого
А>
$myVar = sumFunc() if $extVar ne 'bla-bla-bla';


А>Зачем так сделано?

А>В чем удобство?

Потому что это естественно для человеческого мышления.

Помните, "купи черного хлеба, а если не будет, то белого"?. Обычно сначала интересует самый ожидаемый результат, потом оговаривают особые ситуации.
Re: Почему в перле условия пишут за действием
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 13.01.10 08:51
Оценка: +2
Здравствуйте, Аноним, Вы писали:

А>Последние пару месяцев пишу утилиту на перле(вернее переписываю) и никак не могу привыкнуть в перле условия пишут за действием.

А>Типа такого
А>
$myVar = sumFunc() if $extVar ne 'bla-bla-bla';


Это не единственный вариант. Тебе никто не мешает писать традиционно:

if ($extVar ne 'bla-bla-bla') { $myVar = sumFunc(); }


А>Зачем так сделано?

А>В чем удобство?

Затем, что так тоже очень удобно думать во многих случаях (особенно простых).
The God is real, unless declared integer.
Re[2]: Почему в перле условия пишут за действием
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 13.01.10 08:52
Оценка:
Здравствуйте, Temoto, Вы писали:

T>Помните, "купи черного хлеба, а если не будет, то белого"?. Обычно сначала интересует самый ожидаемый результат, потом оговаривают особые ситуации.


А это уже Python 2.5:) expr1 if cond else expr2
The God is real, unless declared integer.
Re[2]: Почему в перле условия пишут за действием
От: Аноним  
Дата: 14.01.10 02:40
Оценка:
Здравствуйте, netch80, Вы писали:

А>>В чем удобство?


N>Затем, что так тоже очень удобно думать во многих случаях (особенно простых).


Я бы сказал привычнее. Удобство оно слишком растяжимое.
Re[3]: Почему в перле условия пишут за действием
От: anonymous Россия http://denis.ibaev.name/
Дата: 18.01.10 10:22
Оценка:
Здравствуйте, Аноним, Вы писали:

N>>Затем, что так тоже очень удобно думать во многих случаях (особенно простых).

А>Я бы сказал привычнее. Удобство оно слишком растяжимое.

Да, Ларри Уолл, как лингвист, при создании языка думал так же и о том, чтобы сделать его более похожим на естественный.
Re[2]: Почему в перле условия пишут за действием
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 18.01.10 12:53
Оценка:
Здравствуйте, netch80, Вы писали:

N>Это не единственный вариант. Тебе никто не мешает писать традиционно:


N>
N>if ($extVar ne 'bla-bla-bla') { $myVar = sumFunc(); }
N>


Обязательность фигурных скобок меня особенно раздражала
Re[3]: Почему в перле условия пишут за действием
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 18.01.10 13:52
Оценка:
Здравствуйте, achmed, Вы писали:

N>>Это не единственный вариант. Тебе никто не мешает писать традиционно:


N>>
N>>if ($extVar ne 'bla-bla-bla') { $myVar = sumFunc(); }
N>>


A>Обязательность фигурных скобок меня особенно раздражала ;)


Зато там есть elsif. Который из C-подобных языков систематически вымарывают до сих пор. Ради него я согласен на {...}
The God is real, unless declared integer.
Re[4]: Почему в перле условия пишут за действием
От: Roman Odaisky Украина  
Дата: 26.01.10 13:22
Оценка:
Здравствуйте, netch80, Вы писали:

N>Зато там есть elsif. Который из C-подобных языков систематически вымарывают до сих пор. Ради него я согласен на {...}


Но зачем?

if(condition1)
{
    ...
}
else if(condition2)
{
    ...
}
else if(condition3)
{
    ...
}

У elseif есть существенные проблемы: три варианта написания, неудобство добавления блоков перед первым (впрочем, else if тоже этого не позволяет).

То ли дело cond в Лиспе. Еще интересный подход — first([x:{...}, y:{...}, {...}]) в StringTemplate.
До последнего не верил в пирамиду Лебедева.
Re[2]: Почему в перле условия пишут за действием
От: slava_phirsov Россия  
Дата: 08.02.10 17:47
Оценка:
Здравствуйте, netch80, Вы писали:

N>Это не единственный вариант. Тебе никто не мешает писать традиционно:


if ($extVar ne 'bla-bla-bla') { $myVar = sumFunc(); }


Девиз Perl: TIMTOWDI — There Is More Than One Way to Do It.
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)
Re[4]: Почему в перле условия пишут за действием
От: Lloyd Россия  
Дата: 08.02.10 17:49
Оценка:
Здравствуйте, anonymous, Вы писали:

A>Да, Ларри Уолл, как лингвист, при создании языка думал так же и о том, чтобы сделать его более похожим на естественный.


Или вы не правы, или хреновый вышел лингвист из Ларри Уолла.
Re[5]: Почему в перле условия пишут за действием
От: anonymous Россия http://denis.ibaev.name/
Дата: 09.02.10 09:45
Оценка:
Здравствуйте, Lloyd, Вы писали:

A>>Да, Ларри Уолл, как лингвист, при создании языка думал так же и о том, чтобы сделать его более похожим на естественный.

L>Или вы не правы, или хреновый вышел лингвист из Ларри Уолла.

А можно конкретики?
Re[5]: Почему в перле условия пишут за действием
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 09.02.10 09:49
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Здравствуйте, netch80, Вы писали:


N>>Зато там есть elsif. Который из C-подобных языков систематически вымарывают до сих пор. Ради него я согласен на {...}

RO>Но зачем?

Что зачем?

RO>
RO>if(condition1)
RO>{
RO>    ...
RO>}
RO>else if(condition2)
RO>{
RO>    ...
RO>}
RO>else if(condition3)
RO>{
RO>    ...
RO>}
RO>


Это фальсификация. Реально вложенные условия пишутся на одном уровне, чтобы скрыть фактическую проблему.

RO>У elseif есть существенные проблемы: три варианта написания, неудобство добавления блоков перед первым (впрочем, else if тоже этого не позволяет).


RO>То ли дело cond в Лиспе. Еще интересный подход — first([x:{...}, y:{...}, {...}]) в StringTemplate.


switch в Go.
The God is real, unless declared integer.
Re[6]: Почему в перле условия пишут за действием
От: Lloyd Россия  
Дата: 09.02.10 16:14
Оценка: +1
Здравствуйте, anonymous, Вы писали:

L>>Или вы не правы, или хреновый вышел лингвист из Ларри Уолла.


A>А можно конкретики?


Называть perl языком похожим на естественным я бы не осмелился.
Re[7]: Почему в перле условия пишут за действием
От: anonymous Россия http://denis.ibaev.name/
Дата: 09.02.10 17:21
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>>>Или вы не правы, или хреновый вышел лингвист из Ларри Уолла.

A>>А можно конкретики?
L>Называть perl языком похожим на естественным я бы не осмелился.

Ну а мы не стесняемся.
Re: Почему в перле условия пишут за действием
От: Vamp Россия  
Дата: 10.02.10 16:10
Оценка:
А>Зачем так сделано?
Основная причина в том, что блок после if должен заключаться в фигурные скобки, даже если там всего одна строчка. Вот для того, чтобы убрать необходимость в фигурных скобках, придумана такая запись.
Да здравствует мыло душистое и веревка пушистая.
Re[4]: Почему в перле условия пишут за действием
От: Vamp Россия  
Дата: 10.02.10 16:11
Оценка:
N>Зато там есть elsif. Который из C-подобных языков систематически вымарывают до сих пор. Ради него я согласен на {...}
Я бы сказал, скорее наоборот. Странный синтаксис не позволяет писать естественное else if, и по-этому придуман дурацкий elsif.
Да здравствует мыло душистое и веревка пушистая.
Re[5]: Почему в перле условия пишут за действием
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 10.02.10 18:36
Оценка:
Здравствуйте, Vamp, Вы писали:

N>>Зато там есть elsif. Который из C-подобных языков систематически вымарывают до сих пор. Ради него я согласен на {...}

V>Я бы сказал, скорее наоборот. Странный синтаксис не позволяет писать естественное else if, и по-этому придуман дурацкий elsif.

Я не вижу в нём ничего дурацкого. Может быть, это у меня наследие разных языков, где оно естественно, но тем не менее:)
Вообще, если выделение блока обязательно, то else if сишного типа само по себе было бы недопустимо — пришлось бы писать else { if ... }, так что перловый elsif вызван отнюдь не жёсткой необходимостью. Аналогично с питоновым elif, фортрановым else if на отдельной строке, и т.д. Так что ты просто недодумал.
The God is real, unless declared integer.
Re[6]: Почему в перле условия пишут за действием
От: Vamp Россия  
Дата: 10.02.10 18:40
Оценка:
N>Вообще, если выделение блока обязательно, то else if сишного типа само по себе было бы недопустимо — пришлось бы писать else { if ... }, так что перловый elsif вызван отнюдь не жёсткой необходимостью.
Тебе не кажется, что ты сам себе противоречишь? Именно потому, что после else должен идти блок, и придумали elsif. Именно то, что ты сказал и вызван он именно что необходимостью.
А дурацкий он потому, что это лишняя сущность. Зачем она была бы нужна, если бы синтаксис позволял писать else if () {}?
Да здравствует мыло душистое и веревка пушистая.
Re[7]: Почему в перле условия пишут за действием
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 10.02.10 19:09
Оценка:
Здравствуйте, Vamp, Вы писали:

N>>Вообще, если выделение блока обязательно, то else if сишного типа само по себе было бы недопустимо — пришлось бы писать else { if ... }, так что перловый elsif вызван отнюдь не жёсткой необходимостью.

V>Тебе не кажется, что ты сам себе противоречишь?
с чего вдруг?

V> Именно потому, что после else должен идти блок, и придумали elsif.


ты вообще в курсе различия семантики elsif и else?

V> Именно то, что ты сказал и вызван он именно что необходимостью.

V>А дурацкий он потому, что это лишняя сущность. Зачем она была бы нужна, если бы синтаксис позволял писать else if () {}?

он и сейчас в Си и наследниках это позволяет. результат ужасен.
The God is real, unless declared integer.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.