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

Вкрадчиво

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

Re: Вкрадчиво

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

Re: Вкрадчиво

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

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). С полями то же самое, с той разницей, что их в отличие от методов (функций) переопределяют в объекте (экземпляре) практически всегда...

Re: Вкрадчиво

Date: 2007-04-07 11:37 pm (UTC)
From: [identity profile] trurle.livejournal.com
Похоже что Вы просто не понимаете моего вопроса.
Итак - как можно определить в Питоне аналог C++/Явовского определения
class A {
   static int i;
}
Подсказка: это можно сделать, но довольно кривым способом. Кривизна же этого способа вполне отражает нежелание создателей Питона задумываться о всяких полезных в жизни мелочах.

Re: Вкрадчиво

Date: 2007-04-07 11:52 pm (UTC)
netch: (Default)
From: [personal profile] netch
Сделать это тривиально - писать A.i вместо self.i (для задания нового значения - обязательно, для получения текущего - если в объекте соблюдается первая часть правила). Более того, этот способ более логичен, чем в C++: какой смысл использовать синтаксис/контекст доступа к данным _экземпляра_ ("this->" явно, или неявно внутри метода, или явно снаружи), когда переменная к нему никоим боком не относится? Это в C++ бредовая натяжка, а не в Питоне.

> Кривизна же этого способа вполне отражает нежелание создателей Питона задумываться о всяких полезных в жизни мелочах.

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

Re: Вкрадчиво

Date: 2007-04-07 11:58 pm (UTC)
From: [identity profile] trurle.livejournal.com
Боюсь что мы не вполне понимаем друг друга, и я могу только догадываться почему.
Во всяком случае, Вам не помешает освежить свои познания в C++.

Re: Вкрадчиво

Date: 2007-04-08 12:04 am (UTC)
netch: (Default)
From: [personal profile] netch
Мне действительно не помешает (тут один проектик наконец надвигается всей тушей), но непонимание моих слов вызвано исключительно Вашими свойствами и нежеланием.
На чём и закруглюсь.

Re: Вкрадчиво

Date: 2007-04-08 02:28 am (UTC)
From: [identity profile] meanab.livejournal.com
Право же, вас не затруднило бы пояснить, чем вас не устраивает решение ClassName.i=1

Re: Вкрадчиво

Date: 2007-04-08 12:09 am (UTC)
From: [identity profile] ringm.livejournal.com
Питона не знаю, но в C++ статические поля - удобный, но некрасивый синтаксический сахар, перепутывающий у программистов в голове encapsulation и access control. Я не уверен, что язык обязан иметь аналогичные средства.

Re: Вкрадчиво

Date: 2007-04-08 07:31 am (UTC)
From: [identity profile] madkroz.livejournal.com
Вообще, это очень гнилой пример.

Не бывает такой практической задачи — объявить статическое поле у класса. Например, во многих языках программирования нет классов в том же смысле, в каком они есть в Java. Что совершенно не говорит о каких-нибудь преимуществах Java перед этими языками в применении к практическим задачам.

Я ведь тоже могу Вас попросить определить оператор сложения (+) двух объектов класса A, и Вы на Java этого не сделаете.

Только тот факт, что Python оперирует другими концепциями, в которых не очень хорошо иногда выражаются концепции Java, не делает его хуже на практических задачах.

Re: Вкрадчиво

Date: 2007-04-08 07:34 am (UTC)
From: [identity profile] trurle.livejournal.com
Это был бы очень хороший ответ, если бы статические поля классов не были бы реализованы в Питоне, но кривым образом.
Собственно, пример этот служит иллюстрацией тезиса "Питон - кривой язык", а не "в Питоне нет статических полей классов".

Re: Вкрадчиво

Date: 2007-04-08 07:46 am (UTC)
From: [identity profile] madkroz.livejournal.com
В Питоне нет статических полей классов. То, что Вы называется статическими полями классов, называется не так и несёт другую семантику. Пока Вы нигде не объяснили, чем статические поля классов Java лучше атрибутов класса Питона.

Ну-ка, реализуйте семантику Питоновских атрибутов класса на Java.

Re: Вкрадчиво

Date: 2007-04-08 08:04 am (UTC)
From: [identity profile] levgem.livejournal.com
Знаете, а в руби нет структур — и чего? Хоть кому-то от этого стало хуже? Да ни за что.

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

Page Summary

Style Credit

Expand Cut Tags

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