avva: (Default)
[personal profile] avva

Я хотел бы написать, что проблема, которая стоит перед языком Руби и его сообществом - преодолеть засилие радостных идиотов, fanboys, которые наполнили собой и засоряют сообщество. Но я не уверен, что это действительно проблема. Да, мне лично, и многим другим (как аутсайдерам с точки зрения Руби, подобно мне, так и опытным разработчикам в нем) это не нравится и отталкивает. Но, с другой стороны, весь этот шум в конечном счете ответственен за популярность этого языка, за его растущую известность, за mindshare в программистской среде.

Обычное дело - когда о чем-то очень громко говорят, выходит, что говорят в основном дураки. А что поделать, если хочется быть услышанным?

В последнее время мне попались два примера.

What's Wrong With Ruby - мнение человека, которому не очень понравился Руби. В статье он перечисляет, что ему не понравилось и что показалось перехваленным в обычных описаниях Руби. При этом он сохраняет вполне корректный и умеренный тон, и отдает должное языку в том, что ему понравилось. Интересная статья, несколько эклектичная и недостаточно подробная, но все равно интересная. Я, например, разделяю неприязнь автора к "cutesy introductory tutorials", и особенно к знаменитому в сообществе Руби Why's (Poignant) Guide. Это ужасная на мой взгляд книга, полная несмешных вымученных шуток и картинок, идиотской болтовни, и на редкость неудачных собственно объяснений и примеров того, что касается самого языка.

Однако дело не столько в самой статье, сколько в комментариях под ней, в которых тут же собралось стадо fanboys - идиотов, ругающих автора последними словами за то, что он посмел посягнуть на их культовый язык или на культовую фигуру _why (автора вышеупомянутой книги). Их немало в комментариях к самой статье, и еще больше - в комментариях к записи _why на эту тему (как обычно в его стиле, зубодробительно несмешной). Почитайте - эти комментарии говорят за себя. Нет, я не думаю, что они характеризуют все сообщество пользователей Руби. Но они характеризуют то стадо fanboys, которое его замусорило.

Мне попадалось мнение, что идиоты кочуют от одного популярного языка или технологии к другим, и многие из тех, что сейчас пишут и говорят благоглупости о Руби, раньше молились на Джаву, когда та была "cool". Может, в этом что-то есть. Но что в языке или технологии или сообществе, уже существующем, притягивает такие массы? Я не могу себе представить, например, такой поток ответов на статью, критикующую Перл, ни сейчас, ни пять лет назад, ни десять. Или Питон, или Хаскель, или Лисп.

Второй пример - статья "Why was Rails only possible with Ruby?" на сайте O'Reilly. Точнее, не статья, а рецензия книги о Руби и Rails. В ней самой, и в довольно интересно потоке комментариев под ней, поражает совершенное детская наивность тех, кто упрямо утверждает, что в Руби есть какие-то мистические свойства, которые делают создание системы типа Rails возможным только в Руби - и их неспособность назвать эти свойства: после того, как им снова и снова объясняют, что вот эти и вот эти и вот эти свойства Руби, которые они считают уникальными, на самом деле есть и тут и тут и тут, и системы, подобные Rails, на самом деле есть, и в чем-то более интересные (Seaside в Смоллтоке часто упоминается в последнее время - я не успел пока о нем подробнее прочитать), после всего этого им остается только лепет насчет "интуитивности" и каких-то мистических откровений, которые превращают Руби в идеальнейший из языков. Пользуясь словами того же _why, "We can no longer truthfully call it a computer language. It is coderspeak. It is the language of our thoughts". И вот такой интеллектуально беспомощный фанатизм тоже, увы, весьма распостранен в сообществе Руби, насколько я могу судить, когда с ним сталкиваюсь. Впрочем, опять-таки, действительно ли "увы"? Может, сообществу Руби это нравится, и такая форма агрессивного самопиара его вполне устраивает.

В завершение замечу только, что все же собираюсь в ближайшее время изучить Руби, хоть и не в ближайшие пару месяцев, наверное. И процитирую понравившееся из комментариев к второй статье, среди аргументов и обвинений поклонников Руби, Питона, Джавы, Перла и других языков:

"Can't we all at least agree to hate PHP? ;)"

Date: 2007-04-08 09:20 pm (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
Комменты не читал, не могу, извините.

Но вообще статья по ссылке обсуждалась на форуме МГУ недавно, с моим непосредственным участием, и вот тезисно основные типа возражения (при том, что сам я Руби не видел ни разу в жизни вообще):
1) Некорректная логика: предположим, что Руби даёт реальный прирост производительности, Руби является DL, рассмотрим основные свойства DL, ни одно из них не даёт такого уж большого прироста производительности (вложенный FAIL: недоказанный прирост производительности не является ложным, если что), следовательно, Руби не может давать прироста производительности.

2) Если вся статья направлена исключительно на обуздание базза вокруг Руби, то непонятно, зачем нужно так много слов. [livejournal.com profile] 109 давал две ссылки на упромысливания разных вещей некоим Стиви (тоже гугловцем, кстати), в том числе и Agile Programming, и там градус отжига был нааамного выше. И без таких тупых аппелляций к тупости среднестатистического фаната, между прочим! Нельзя язык оценивать исходя из количества троллей, набегающих на критикующий его пост, это бред.

3) Автор -- убеждённый жавапрограммер. Narrowness of experience leads to the narrowness of thought, как бы, и тут это очень явно видно.

Небольшое отступление: мне недавно показали ЭпплСкрипт. Его очень интересно читать, представляя у себя в голове трансляцию в Свой Любимый Язык. Особенно это интересно делать со строчкой "set bar to messages of foo whose read status is false". Мой испорченный сишной парадигмой моск немедленно сгенерил цикл. Обнаружив, что в результате получилось раз эдак в пять больше символов, чем в оригинале, цикл был заменён на foreach. Далее foreach был заменён на что-то вроде "messages.FindAll(delegate (Message m) { return !m.ReadStatus; });", чем я удовлетворился, ибо получился почти семантический эквивалент, а отсутствие в шарпе паскалевского using (someObject) (расширение scope до полей и методов объекта), совмещённого с вызовом делегата, я вполне могу пережить.

Это я к тому, что язык программирования накладывает крайне сильный отпечаток на способ мышления программиста. Мой пример очень хорошо показывает, как язык программирования (или его частоиспользуемый subset) может приводить к уменьшению эффективности программирования ещё на этапе обдумывания кода: ещё до того, как что-нибудь было напечатано, в голове программиста (меня) образовались какие-то совершенно левые семантические конструкты вроде цикла, переменной цикла и временного массива.

Есть подозрение, что если Руби похожа на питон и третий шарп, причём Стандартные Библиотеки написаны в правильном стиле (forcing newcomers to conform), то эффективность программирования может действительно вырасти в разы, чисто за счёт уничтожения левой семантики. Автор же такую возможность просто не рассматривает, потому что даже не представляет, что она существует.

February 2026

S M T W T F S
1 2 3 4 5 67
8 9 10111213 14
15 16 17 18192021
2223 2425262728

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 25th, 2026 09:53 am
Powered by Dreamwidth Studios