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? ;)"

Page 1 of 14 << [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] >>

Date: 2007-04-07 09:39 pm (UTC)
From: [identity profile] breqwas.livejournal.com
> Can't we all at least agree to hate PHP? ;)

Отличный язык, идеален для своих задач. А что?

Date: 2007-04-07 09:54 pm (UTC)
From: [identity profile] neoromantic.livejournal.com
хи-хи-хи :)

Date: 2007-04-07 10:01 pm (UTC)
From: [identity profile] trurle.livejournal.com
Мне кажется что все эти мусорные языки со временем окажутся на той же свалке где уже заслуженно пребывает Tcl. Ява и C++ обладают консистентностью - то есть логика отдельных частей следует логике целого, любительские же разработчики Питона и Руби решили что можно создать язаык вообще не думая, как был создан, не к вечеру будь помянут, Visual Basic.
Я не отрицаю что возможность лепить спагетти-код не думая, щедро предоставляемая Питоном и Руби, должна быть привлекательна для начинающих программистов.

Date: 2007-04-07 10:10 pm (UTC)
From: [identity profile] dimrub.livejournal.com
В защиту Пайтона, к коему особой любви не испытываю, все же замечу, что он с одной стороны и джава с С++ с другой создавались в разные времена и для разных целей.

Панталоны, фрак, жилет

Date: 2007-04-07 10:17 pm (UTC)
From: [identity profile] trurle.livejournal.com
В русском языке, к сожалению, нет точного аналога понятия scripting language. В качестве scripting language Питон и Руби, пожалуй, лучше чем bash'а, cshell'а и перла. Идея что на scripting language можно писать прогаммы длиннее 1000 строк является симптомом конца времен и упадка нравов.

Date: 2007-04-07 10:52 pm (UTC)
From: [identity profile] dimrub.livejournal.com
С перлом лично у меня проблема в том, что в нем много всего интересного, но уж слишком сильна иллюзия, что без всего этого интересного можно прожить - ведь, как известно, TIMTOWTDT. Лично я так и не освоил по-человечески объектно-ориентированный перл и еще некоторые аспекты этого языка, хотя пользуюсь им уже немало лет. Поэтому, на лично мой субъективный взгляд, многие программы на перле довольно-таки неэлегантны и (можно сказать - как следствие) их нелегко поддерживать.

Date: 2007-04-07 10:53 pm (UTC)
From: [identity profile] kiryl.livejournal.com
Эмоции. Никакой аргументации.
Что вы подразумевали под "мусорными языками"?
Tcl. С чего вы взяли, что он на свалке? И за какие заслуги?
Если в язык, как в Java'у, не вливают громадные инвестиции на раскрутку, не означает, что он на "свалке".
О какой консистентности може идти речь в случае C++ с его грамоздкостью?
Причём тут Visual Basic я так и не понял.

Date: 2007-04-07 10:53 pm (UTC)
From: [identity profile] sply.livejournal.com
С первой статьей понятно: возмущение в комментариях может быть вызвано тем, что по тексту явно видно очень поверхностное знакомство с языком, потому что у руби есть куча более неприятных проблем. Т.е. автор стоит на том же уровне, что и fanboys, может быть поэтому они к нему быстро и набежали :)

Кстати, seaside с rails вовсе не подобные, разве только тем, что оба являются веб-фреймворками.

Amen

Date: 2007-04-07 10:57 pm (UTC)
From: [identity profile] catpad.livejournal.com
Ура! Наконец-то эти слова произнесены!

Date: 2007-04-07 10:59 pm (UTC)
netch: (Default)
From: [personal profile] netch
Ruby не знаю. Python - значительно более целен и продуман, чем C++. И где там возможность "лепить спагетти не думая"?

Date: 2007-04-07 11:01 pm (UTC)
From: [identity profile] avnik.livejournal.com
Ну питон хорош как язык быстрого прототипирования, и для общей интеграции
(через boost-python наклепать биндингов к существующим C/C++ библиотекам и потом из этого что-то склеить что можно показать в работающем виде через две три недели)
Хотя в плане написания переносимых программ -- питон имеет достаочно развесистые библиотеки, что позволяет писать софт где в требованиях к "платформе" -- питон (ну допустим не ниже 2.4).

Date: 2007-04-07 11:01 pm (UTC)
From: [identity profile] kiryl.livejournal.com
Про кучу более неприяных проблем по подробней можно?

Date: 2007-04-07 11:05 pm (UTC)
From: (Anonymous)
A shto po Vashemu, Dima, elegantnaya (Vy sami skazali!) programma/programmirovanie?

Вкрадчиво

Date: 2007-04-07 11:08 pm (UTC)
From: [identity profile] trurle.livejournal.com
Не поделитесь ли Вы со мной сведениями как именно и почему в Питоне определяются статические поля классов?

Date: 2007-04-07 11:10 pm (UTC)
From: [identity profile] ipain.livejournal.com
ну 'мистическое' потому что словам не обучены. вспомнилось как глухие детки стали вдруг желать пользоваться жестовой системой которая официально запрещалась. фанбойс выруливают типа всегда верно, а без заносов не бывает скорости. конечно не обязательно что они правы, но интеллектуально беспомощный фанатизм или 'идеи овладевшие массами' как раз и сдвигают тверди и светила.

Date: 2007-04-07 11:12 pm (UTC)
netch: (Default)
From: [personal profile] netch
У перла слишком сильно его прошлое в виде patologically eclectical rubbish lister. Вследствие этого тяжёлый синтаксис в более серьёзных применениях, чем переработка входа в выход, масса умолчаний и исключений, которые в большом количестве кода начинают смущать и задалбывать... Странные решения, когда (@a, @b) становится конкатенацией списков, а если хочешь использовать ссылки начинаешь путаться во вложенностях... Да, после С/C++ он терпим. После чего-то более "с человеческим лицом" вроде Питона - на перле очень тяжело писать.

На днях надо было сделать в одном шкрипте преобразование с фильтрацией и переработкой строк. Упрощая задачу до учебного вида, в Питоне это вылилось бы во что-то в виде [s.rstrip('\r\n') for s in f.readlines() if s.match('^[a-z]')]. На перле я запутался в map(), хотя пару лет назад спокойно бы такое породил, и вместо этого нарисовал цикл... Понятно, что это говорит о том, что я обленился и "ниасилил", но ещё больше это показывает, как привыкаешь к хорошему и как тяжело возвращаться к извратным решениям...

Re: Вкрадчиво

Date: 2007-04-07 11:14 pm (UTC)
netch: (Default)
From: [personal profile] netch
Что значит "статические" в данном случае?

Date: 2007-04-07 11:19 pm (UTC)
From: [identity profile] trurle.livejournal.com
О какой консистентности може идти речь в случае C++ с его грамоздкостью?
Тут понимаете какая штука? Сложность и консистентность это разные свойства языка. Возможно, Вам будет понятен такой простой пример: столы бывают большие и деревянные.
Tcl. С чего вы взяли, что он на свалке? И за какие заслуги?
Когда появился Tcl, его появление вызвало большой шум - дескать, новая парадигма программирования, серебрянная пуля и т.д. и т.п. Увы, Tcl не вполне оправдывал возлагавшиеся на него горячими головами надежды, занимая сейчас соответствующую этому языку более чем скромную нишу. У Питона с Руби тоже есть своя естественная ниша, и тоже гораздо более скромная чем окружающие эти scripting languages шум.
Если в язык, как в Java'у, не вливают громадные инвестиции на раскрутку, не означает, что он на "свалке".
Надо ли понимать Вас в том смысле что если бы в Tcl вложили сходные средства, он бы достиг того же состояния?


Re: Вкрадчиво

Date: 2007-04-07 11:19 pm (UTC)
From: [identity profile] trurle.livejournal.com
Это такие поля которые сушествуют вне зависимости от цикла жизни объектов класса в котором они описаны.

Date: 2007-04-07 11:23 pm (UTC)
From: [identity profile] trurle.livejournal.com
Ну питон хорош как язык быстрого прототипирования, и для общей интеграции
Первое - несомненно, что такое "общая интеграция" я понимаю не вполне, и всегда есть ниша для scripting language.
Хотя в плане написания переносимых программ -- питон имеет достаочно развесистые библиотеки, что позволяет писать софт где в требованиях к "платформе" -- питон (ну допустим не ниже 2.4).
XML библиотека Питона производит на непосвященного очень сильное впечатление.

Date: 2007-04-07 11:24 pm (UTC)
From: [identity profile] dimrub.livejournal.com
Ну, это как те правила сообщества: определяется на глаз. Примерно я бы сказал, что элегантная программа обязательно является легко читаемой, внутренне консистентной и легко расширяемой и поддерживаемой, но являются ли эти требования достаточными - я затрудняюсь ответить.

Date: 2007-04-07 11:25 pm (UTC)
From: [identity profile] catpad.livejournal.com
Глядя на ваш юзерпик, я отлично понимаю, что спорить бесполезно. Но всё же возьму на себя смелость привести своё понимание (наверняка отличное от автора комментария) понятия "мусорного языка":
я не возьмусь утверждать, консистентен Руби или нет, потому что я его не знаю. Но "мусорными" можно назвать те языки, которые (как и Руби) созданы без реальной необходимости - чтобы потешить самолюбие автора или привлечь толпу фанатиков или ещё зачем-то - но без необходимости.
Предупреждая ваши возражения: Джава была создана потому, что она была необходима. Я могу сделать на Джаве то, чего я не могу сделать на С++ (во всяком случае без огромных затрат времени). Я каждый день пользуюсь принципом "write once run everywhere", перенося готовую программу с PC на Unix - не потому что мне этого хочется, а потому что этого требует работа. И всё, что мне нужно сделать - это перенести jar file по FTP.
Я могу написать на Джаве отличный GUI в десять-двадцать раз быстрее, чем я бы сделал это на С++. Я могу динамически загружать в программу классы из сети. Легко могу написать web application (и писал много раз до того, как кто-либо вообще слышал о Руби). Могу написать апплет, в конце концов. И не забудем ещё буквально тысячи свободно доступных джавовских библиотек.
И мне абсолютно всё равно, какие именно капиталы влили Sun и IBM в раскрутку Джавы - если эти капиталы пошли мне на пользу в конечном итоге.

А теперь попробуйте привести хоть один пример того, что можно сделать на Руби и чего нельзя сделать на Джаве.

Re: Вкрадчиво

Date: 2007-04-07 11:27 pm (UTC)
netch: (Default)
From: [personal profile] netch
А, Вы вместо нормального термина использовали сишный омоним с четырьмя значениями... понимаю. Тяжёлое детство, восьмибитные игрушки... у меня тоже самое.

Так что не так? На то объект и является экземпляром класса, что у него есть определённые свойства, определяемые в классе. И на то это и питон, что их можно переопределять. Например, совершенно нормально, имея например в классе методы x_checked() и x_unchecked(), писать self.x = self.x_checked для замены метода. Или даже взять метод от другого класса: self.x = lambda y, z: B.xx(self, y, z). С полями то же самое, с той разницей, что их в отличие от методов (функций) переопределяют в объекте (экземпляре) практически всегда...

Date: 2007-04-07 11:32 pm (UTC)
From: [identity profile] catpad.livejournal.com
Возьмусь предположить, что этот пост связан с моим собственным недавним постом. Так что спасибо, что предупредил насчёт "Poignant guide" - мне эта штука показалась забавной (видимо потому, что начать читать я её не успел). Напомнила отличную серию книг "Head First" - на самом деле отличную и очень полезную серию.
Теперь отпал последний аргумент в пользу знакомства с Руби.
Page 1 of 14 << [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] >>

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 12:27 pm
Powered by Dreamwidth Studios