про руби (программистское)
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 11:41 pm (UTC)Я не знаю, какие у Вас критерии слышимости для Ruby, но его появление датируется 1995 годом - синхронно с Явой с точностью до года. Для сравнения, Питон - 1991. Perl - 1987. Tcl (столь шумно тут недооценённый) - 1988.
И если они сейчас стали достаточно популярны чтобы вокруг них начался шум - значит, они кому-то таки нужны, не так ли?;)))
> И всё, что мне нужно сделать - это перенести jar file по FTP.
То же самое для любого "скриптового" языка (с поправкой на то, что обычно таки они работают из развёрнутого каталога - для современных FTP клиентов это пофиг).
А вот запускать их часто значительно легче.
> А теперь попробуйте привести хоть один пример того, что можно сделать на Руби и чего нельзя сделать на Джаве.
Подход некорректен. "Сделать то же самое" можно хоть на ассемблере. А вот сделать при какой специфике насколько легче, проще...
Ruby сильно, например, средствами функционального подхода. Я видел, как на нём в десяток строк укладывали то, что на C++ или Яве заняло бы много экранов. Причём 1) задача была не учебная; нормальная реальная задача; 2) решение естественным образом возникло из словесного описания задачи, а не из промежуточного переложения типа "здесь сказано делать "для всех" - значит, надо заводить цикл и итерировать по нему", и поэтому было сделано быстро и просто. Подобные возможности постепенно возникают во всех скриптовых языках, кроме разве что VB:) А в Яве?
Впрочем, у Вас, судя по постингу, сплошной веб... а у меня сплошной сетевой демонизм. Сравнивать их просто нельзя.
no subject
Date: 2007-04-07 11:48 pm (UTC)А вот запускать их часто значительно легче.
Легче, чем java -cp "..." com.example.Example ? ;)
И никакого веба у меня нет. У меня сплошное обычное повседневное индустриальное программирование.
no subject
Date: 2007-04-08 12:02 am (UTC)Писали, я видел несколько таких. Работает ничуть не хуже других.
А вот общедоступной цельной системы-среды до RoR действительно не было (более того - среди этого семейства она оказалась первой).
> Легче, чем java -cp "..." com.example.Example ? ;)
А ещё десяток опций для управления памятью не хотите?;)) Java только последние пару лет начала нормально без пинков с запускающей стороны обращаться с памятью в VM среде. До этого десять лет на эти её свойства плевали, после чего и получалось "переписали XXX на Java - значит, надо RAM увеличить в 4-8 раз чтобы вообще можно было работать".
И shebang'а у неё нет:) поэтому вместо прямого запуска бинарника надо запускать какие-то "java -cp ..."
> У меня сплошное обычное повседневное индустриальное программирование.
Ну то-то я про GUI слышу...
no subject
Date: 2007-04-08 12:10 am (UTC)Это всё не относится к сложности. А вот когда у меня бегут два параллельных процесса - один под Windows, другой под Solaris и рядом открыты две GUI-консоли со сложной визуализацией процессов - одна в окне Windows, другая в окне X Windows - и всё это из одного единственного jar-файла - вот это я называю простотой запуска.
Ну то-то я про GUI слышу...
Этого замечания я не понял вообще.
no subject
Date: 2007-04-08 07:52 am (UTC)Цитирую:
Я могу написать на Джаве отличный GUI в десять-двадцать раз быстрее, чем я бы сделал это на С++. Я могу динамически загружать в программу классы из сети. Легко могу написать web application (и писал много раз до того, как кто-либо вообще слышал о Руби). Могу написать апплет, в конце концов.
Собственно выбор примеров показывает (мне кажется;)) типичный класс задач.
> Это всё не относится к сложности.
Вполне относится - когда надо не просто запустить, а чтобы работало долго и устойчиво:) Solaris+Windows - достаточно частные случаи, когда эти проблемы решены лучше, чем на других платформах (часто - намеренно не улучшая другие, судя по некоторым симптомам).
Ну а запуск из одного файла, даже не каталога... ну да, красиво:) не более того:)
no subject
Date: 2007-04-08 10:44 am (UTC)Вполне относится - когда надо не просто запустить, а чтобы работало долго и устойчиво:)
Два из Java-серверов, которые я сделал работают без перезагрузки годами. Этого достаточно для устойчивости ?
Solaris+Windows - достаточно частные случаи - скажите, вы издеваетесь или серьёзно ?
95% всех компьютеров мира - это частные случаи ?
no subject
Date: 2007-04-08 07:39 pm (UTC)А я работал в несколько большем числе мест, хоть и не настолько плотно:) и нигде не писал GUI, кроме одной задачи, которую я делал в частном порядке для отцовой темы на кафедре. А вот сетевизмы какого-то вида были как минимум в пяти последних проектах в разных местах.
> Solaris+Windows - достаточно частные случаи - скажите, вы издеваетесь или серьёзно ?
> 95% всех компьютеров мира - это частные случаи ?
От общего количества платформ - да. Их относительная распространённость меня интересует только в том аспекте, что я уже 11 лет ничего за деньги под Windows не пишу. Солярка - да, для меня актуальна. Windows - нет. Ну вот сложилось так:)
no subject
Date: 2007-04-08 08:08 am (UTC)no subject
Date: 2007-04-08 10:46 am (UTC)no subject
Date: 2007-04-08 05:09 pm (UTC)ну и потом, человек жа ясно сказал что пишет долгобегущие сервера. ну и кого волнуют те пять минут подьёма? вы ещё предложите всерьёз оптимизировать операционные системы по критерию скорости boot-up'а, и сделать этот критерий наиважнейшим.
no subject
Date: 2007-04-09 07:51 am (UTC)Ruby сильно, например, средствами функционального подхода. Я видел, как на нём в десяток строк укладывали то, что на C++ или Яве заняло бы много экранов. Причём 1) задача была не учебная; нормальная реальная задача; 2) решение естественным образом возникло из словесного описания задачи
"
можно пpимep ?
no subject
Date: 2007-04-09 07:53 am (UTC)Но я тут рядом участвовал в треде на схожую тему (map в перле против цикла), там можно понять основные приятности подобных средств.
no subject
Date: 2007-04-09 09:18 am (UTC)Но в С++ в Standart Template Library он есть (а если какой-то полезной разновидности и нет, ее с полпинка реализовать в reusable виде).