про руби (программистское)
Apr. 8th, 2007 12:20 amЯ хотел бы написать, что проблема, которая стоит перед языком Руби и его сообществом - преодолеть засилие радостных идиотов, 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? ;)"
no subject
Date: 2007-04-07 09:39 pm (UTC)Отличный язык, идеален для своих задач. А что?
no subject
Date: 2007-04-07 09:54 pm (UTC)no subject
Date: 2007-04-07 10:01 pm (UTC)Я не отрицаю что возможность лепить спагетти-код не думая, щедро предоставляемая Питоном и Руби, должна быть привлекательна для начинающих программистов.
no subject
Date: 2007-04-07 10:10 pm (UTC)Панталоны, фрак, жилет
Date: 2007-04-07 10:17 pm (UTC)no subject
Date: 2007-04-07 10:52 pm (UTC)no subject
Date: 2007-04-07 10:53 pm (UTC)Что вы подразумевали под "мусорными языками"?
Tcl. С чего вы взяли, что он на свалке? И за какие заслуги?
Если в язык, как в Java'у, не вливают громадные инвестиции на раскрутку, не означает, что он на "свалке".
О какой консистентности може идти речь в случае C++ с его грамоздкостью?
Причём тут Visual Basic я так и не понял.
no subject
Date: 2007-04-07 10:53 pm (UTC)Кстати, seaside с rails вовсе не подобные, разве только тем, что оба являются веб-фреймворками.
no subject
Date: 2007-04-07 10:55 pm (UTC)Amen
Date: 2007-04-07 10:57 pm (UTC)no subject
Date: 2007-04-07 10:59 pm (UTC)no subject
Date: 2007-04-07 11:01 pm (UTC)(через boost-python наклепать биндингов к существующим C/C++ библиотекам и потом из этого что-то склеить что можно показать в работающем виде через две три недели)
Хотя в плане написания переносимых программ -- питон имеет достаочно развесистые библиотеки, что позволяет писать софт где в требованиях к "платформе" -- питон (ну допустим не ниже 2.4).
no subject
Date: 2007-04-07 11:01 pm (UTC)no subject
Date: 2007-04-07 11:05 pm (UTC)Вкрадчиво
Date: 2007-04-07 11:08 pm (UTC)no subject
Date: 2007-04-07 11:10 pm (UTC)no subject
Date: 2007-04-07 11:12 pm (UTC)На днях надо было сделать в одном шкрипте преобразование с фильтрацией и переработкой строк. Упрощая задачу до учебного вида, в Питоне это вылилось бы во что-то в виде [s.rstrip('\r\n') for s in f.readlines() if s.match('^[a-z]')]. На перле я запутался в map(), хотя пару лет назад спокойно бы такое породил, и вместо этого нарисовал цикл... Понятно, что это говорит о том, что я обленился и "ниасилил", но ещё больше это показывает, как привыкаешь к хорошему и как тяжело возвращаться к извратным решениям...
Re: Вкрадчиво
Date: 2007-04-07 11:14 pm (UTC)no subject
Date: 2007-04-07 11:19 pm (UTC)Тут понимаете какая штука? Сложность и консистентность это разные свойства языка. Возможно, Вам будет понятен такой простой пример: столы бывают большие и деревянные.
Tcl. С чего вы взяли, что он на свалке? И за какие заслуги?
Когда появился Tcl, его появление вызвало большой шум - дескать, новая парадигма программирования, серебрянная пуля и т.д. и т.п. Увы, Tcl не вполне оправдывал возлагавшиеся на него горячими головами надежды, занимая сейчас соответствующую этому языку более чем скромную нишу. У Питона с Руби тоже есть своя естественная ниша, и тоже гораздо более скромная чем окружающие эти scripting languages шум.
Если в язык, как в Java'у, не вливают громадные инвестиции на раскрутку, не означает, что он на "свалке".
Надо ли понимать Вас в том смысле что если бы в Tcl вложили сходные средства, он бы достиг того же состояния?
Re: Вкрадчиво
Date: 2007-04-07 11:19 pm (UTC)no subject
Date: 2007-04-07 11:23 pm (UTC)Первое - несомненно, что такое "общая интеграция" я понимаю не вполне, и всегда есть ниша для scripting language.
Хотя в плане написания переносимых программ -- питон имеет достаочно развесистые библиотеки, что позволяет писать софт где в требованиях к "платформе" -- питон (ну допустим не ниже 2.4).
XML библиотека Питона производит на непосвященного очень сильное впечатление.
no subject
Date: 2007-04-07 11:24 pm (UTC)no subject
Date: 2007-04-07 11:25 pm (UTC)я не возьмусь утверждать, консистентен Руби или нет, потому что я его не знаю. Но "мусорными" можно назвать те языки, которые (как и Руби) созданы без реальной необходимости - чтобы потешить самолюбие автора или привлечь толпу фанатиков или ещё зачем-то - но без необходимости.
Предупреждая ваши возражения: Джава была создана потому, что она была необходима. Я могу сделать на Джаве то, чего я не могу сделать на С++ (во всяком случае без огромных затрат времени). Я каждый день пользуюсь принципом "write once run everywhere", перенося готовую программу с PC на Unix - не потому что мне этого хочется, а потому что этого требует работа. И всё, что мне нужно сделать - это перенести jar file по FTP.
Я могу написать на Джаве отличный GUI в десять-двадцать раз быстрее, чем я бы сделал это на С++. Я могу динамически загружать в программу классы из сети. Легко могу написать web application (и писал много раз до того, как кто-либо вообще слышал о Руби). Могу написать апплет, в конце концов. И не забудем ещё буквально тысячи свободно доступных джавовских библиотек.
И мне абсолютно всё равно, какие именно капиталы влили Sun и IBM в раскрутку Джавы - если эти капиталы пошли мне на пользу в конечном итоге.
А теперь попробуйте привести хоть один пример того, что можно сделать на Руби и чего нельзя сделать на Джаве.
Re: Вкрадчиво
Date: 2007-04-07 11:27 pm (UTC)Так что не так? На то объект и является экземпляром класса, что у него есть определённые свойства, определяемые в классе. И на то это и питон, что их можно переопределять. Например, совершенно нормально, имея например в классе методы x_checked() и x_unchecked(), писать
self.x = self.x_checkedдля замены метода. Или даже взять метод от другого класса:self.x = lambda y, z: B.xx(self, y, z). С полями то же самое, с той разницей, что их в отличие от методов (функций) переопределяют в объекте (экземпляре) практически всегда...no subject
Date: 2007-04-07 11:32 pm (UTC)Теперь отпал последний аргумент в пользу знакомства с Руби.