Почему в Ruby так много избыточностей? - PullRequest
2 голосов
/ 21 июля 2010

Я люблю Ruby, последние пару лет это мой любимый язык.

Но даже с тех пор, как я начал изучать это, меня отталкивал тот факт, что так часто есть несколько способов сделать одно и то же (или эквивалентное). Я приведу пару примеров:

  • методы часто имеют псевдонимы, поэтому вам всегда нужно выбирать наиболее адекватную, популярную или общепринятую альтернативу
  • and и or, кроме && и || - просто посмотрите, сколько различий в приоритетах путаницы между ними вызывает
  • for ключевое слово, используемое почти исключительно неопытными не родными разработчиками Ruby

Что послужило основанием для таких дизайнерских решений? Неужели они (Мац?) Считают, что этот язык будет легче освоить, и поэтому он станет более популярным?

Ответы [ 3 ]

7 голосов
/ 21 июля 2010

Ruby вдохновлен Perl, и одна важная философия Perl гласит: «Существует несколько способов сделать это», то есть избыточность хороша тем, что дает программисту больше свободы (и увеличивает вероятность того, что требуемая функциональность доступна под именем они дали бы это - не только под одним). Ваше решение, действительно ли это хорошо.

1 голос
/ 21 июля 2010

Остерегайтесь, что and против &&, хотя и похожи, имеют различный приоритет.
a = b && c # => эквивалентно a = (b и c). a устанавливается на логическое значение.
a = b and c # => эквивалентно (a = b) и c. a имеет значение b, а выражение имеет логическое значение.

Существует несколько способов сделать это, но между ними могут быть тонкие различия. (обновление, только что заметил, что вы упомянули разницу в приоритетах в вашем вопросе ... извините. здесь ничего нет.

1 голос
/ 21 июля 2010

Когда Мац написал Ruby, он пытался следовать «Принципу наименьшего сюрприза». Часто это означало, что было бы несколько способов сделать одно и то же, например, присвоение массивов с помощью квадратных скобок или метод вставки. Мне это нравится, потому что я нахожу, что вместо того, чтобы пытаться вспомнить, какое именно имя использовать в какой ситуации (я всегда на минуту останавливался на размер против длины в Java), я просто пишу то, что кажется логичным, и обычно Работа. При чтении кода обычно не проблема использовать другое имя, поскольку имена, как правило, говорят сами за себя. Поэтому я не беспокоюсь о том, что является наиболее адекватным или популярным, я выбираю наиболее логичное на тот момент.

Матц также был вдохновлен Perl, у которого в лозунге есть «Есть несколько способов сделать это».

Я не верю, что Мэтц беспокоился о том, что будет самым популярным, он просто хотел написать язык, который хотел использовать.

Я не собираюсь пытаться объяснить и против ... хотя ...

...