wisgest
@wisgest
Не ИТ-специалист

Почему в Perl '0' — «ложь» (а '00' — нет)?

Причина отвратившая меня от преодоления дальнейших затруднений при изучении Perl возникла при самом первом знакомстве: недоумение от непоследовательного, на мой взгляд, истолкования истинности строк ('' и '0' — «ложь», остальные — «истина»).

С одной стороны было бы понятно, если бы любая непустая строка истолковывалась как истинная (как в AWK, JavaScript, Python, PowerShell…), с другой, — если бы как ложная истолковывалась любая строка с числовым значением 0: '00', '0.0'… (как, например, в AutoHotkey).

Почему же сделано так, как сделано? Я сомневаюсь, что из соображения простоты исполнения, — скорее проще было бы воплотить один из двух указанных мной подходов. Или, может быть, есть какие-то прикладные ненадуманные случаи, в которых оправдан именно такой выбор? (Хотя, если говорить о реализации истинностных значений, тоже не совсем понятно: почему «истина» — число 1 (хотя как проверить, что это именно число, а не строка, — как в Perl узнать тип скалярного значения?), а «ложь» — строка ''?)

(Да, я знаю, что подобным же образом дело обстоит в PHP, но: в нём это сделано под влиянием Perl; PHP — средство, которое выбирают не по любви, а по необходимости; уровень вхождения в PHP ниже.)

Понимаю, что такой вопрос прежде всего следовало бы задать создателю языка, но, думаю, я не первый, у кого возникло такое недоумение и, возможно, на него уже были даны ответы и, может быть, даже признание собственной ошибки…

Дополнительно гораздо более общий вопрос: А стоит ли учить Perl без большой нужды? Есть ли в нём какие-то эстетические достоинства или доступные прежде всего ему области применения? Регулярные выражения? Но они на сегодняшний день доступны в большинстве других языков непосредственно или через библиотеки (пусть даже их синтаксис заимствован из Perl).
  • Вопрос задан
  • 261 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы