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 05:06 pm (UTC)
From: [identity profile] cmm.livejournal.com
интерпретируемость является свойством реализации, а не спецификации.
так как и байт-кодируемость.

language wars надо запретить.

Re: в догонку

Date: 2007-04-08 05:26 pm (UTC)
From: [identity profile] dimrub.livejournal.com
интерпретируемость является свойством реализации, а не спецификации.
так как и байт-кодируемость.


На это можно было бы возразить, что и скриптоватость языка является свойством реализации, но я не буду :).

(удивительно предсказуемый тред, надобно сказать, просто даже тошнит).
language wars надо запретить.


Не без этого :)

Re: в догонку

Date: 2007-04-08 05:55 pm (UTC)
From: [identity profile] cmm.livejournal.com
> На это можно было бы возразить, что и скриптоватость языка является свойством реализации, но я не буду :).

нельзя было бы, поскольку очевидным образом под словом "скриптоватость" мы понимаем "мусорность" или "gratuity", то есть свойства именно что спецификации.

Re: в догонку

Date: 2007-04-08 07:28 pm (UTC)
netch: (Default)
From: [personal profile] netch
> интерпретируемость является свойством реализации, а не спецификации.

Нет. Реализация того, в чём есть питоновские eval, execfile(), перловые do, eval - в принципе не может быть выполнена компилируемо. Можно сделать это с отдельными участками (и так часто делается), но интерпретатор в такой среде никуда не убрать, пока остаётся в работе сам eval (в любом виде). Чтобы сделать заведомо компилируемую программу - надо убрать eval из спецификации.

> language wars надо запретить.

Нереально.

Re: в догонку

Date: 2007-04-08 07:42 pm (UTC)
From: [identity profile] cmm.livejournal.com
> Реализация того, в чём есть питоновские eval, execfile(), перловые do, eval - в принципе не может быть выполнена компилируемо.

дорогая редакция.
ну вот в спецификации того же Лиспа в полный рост присутствуют EVAL и LOAD.  и, представьте себе, есть соответствующие спецификации реализации, в которых весь код всегда перед выполнением компилируется.

> Нереально.

конечно.  мусорные языки произрастают из мусорного дискурса, а мусорный дискурс из мусора в головах.

Re: в догонку

Date: 2007-04-08 08:13 pm (UTC)
netch: (Default)
From: [personal profile] netch
> ну вот в спецификации того же Лиспа в полный рост присутствуют EVAL и LOAD. и, представьте себе, есть соответствующие спецификации реализации, в которых весь код всегда перед выполнением компилируется.

Вы чего-то там явно недоглядели. Если я могу работать с каким-нибудь (+ (* a b) (* b c)) как с данными, строить их как данные, а затем запросить на выполнение, то это может сочетаться с Вашими словами одним из двух методов:
- компилируется только тот код, который уже оформлен при запуске
- компилятор может работать и посреди работы программы, переводя в некоторый внутренний код тот список, который будет исполняться - таким образом, компилятор всегда присутствует в среде выполнения.

Чудес не бывает, и третьего варианта - тоже (если не считать неконструктивный запрет исполнять что-либо отсутствовавшее при запуске - но кому тогда такой Лисп нужен).

Re: в догонку

Date: 2007-04-08 08:28 pm (UTC)
From: [identity profile] cmm.livejournal.com
> компилятор может работать и посреди работы программы

совершенно верно.
так как же, стало быть, "интерпретируемость" (то есть интерактивность) противоречит компиляции?

Re: в догонку

Date: 2007-04-08 09:25 pm (UTC)
netch: (Default)
From: [personal profile] netch
Тем, что по общепринятому пониманию "компилируемые" языки/среды - это когда скомпилировали ХЗ когда и компилятора больше нет.
Всё остальное включая компиляцию принятого через eval() может называться разве что JIT компиляцией, но это ("JIT") уточнение принципиально.

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

Re: в догонку

Date: 2007-04-08 09:38 pm (UTC)
From: [identity profile] cmm.livejournal.com
> согласен с утверждением, что это понимание устарело, но пока что приходится работать в его рамках.

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

дискурс подавляюшего большинства любителей помахать флагами за языки в основном состоит из подобного мусора.

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

кто кого заставляет "работать в рамках" какого-либо "понимания" — мне тоже не вполне ясно.  "понимание" живёт в голове, примерно там же где принципы; позывы подвести "понимание" "к рамкам" того что "приходится" являются либо признанием фундаментальной иррациональности самой природы данного "понимания" (опаньки, разговор окончен), либо свидетельством душевного нездоровья.

Re: в догонку

Date: 2007-04-09 03:44 pm (UTC)
From: [identity profile] lazyreader.livejournal.com
в которых весь код всегда перед выполнением компилируется

Несомненно, перед выполнением. А что, есть языки, в которых код выполняется раньше его трансляции в язык целевой (возможно, виртуальной) машины?

Re: в догонку

Date: 2007-04-09 03:50 pm (UTC)
From: [identity profile] cmm.livejournal.com
есть некоторые реализации некоторых языков, практикующие прямую интерпретацию кода, то есть выполнение без какой бы то ни было предварительной обработки.

Re: в догонку

Date: 2007-04-09 03:52 pm (UTC)
From: [identity profile] trurle.livejournal.com
Как это сложно! Не податьсе ли, пока не поздно, в маклеры по недвижимости?

Re: в догонку

Date: 2007-04-09 04:09 pm (UTC)
From: [identity profile] cmm.livejournal.com
я подумывал об этом, но решил что слишком глуп.

надо запретить

Date: 2007-04-09 04:38 pm (UTC)
stas: (Don't panic!)
From: [personal profile] stas
But it is so much fun!

February 2026

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

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 25th, 2026 01:49 pm
Powered by Dreamwidth Studios