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 12:14 am (UTC)
From: [identity profile] kiryl.livejournal.com
Что же касается питона - вот пожалуйста.
Меня больше интересовал Ruby.
К сожалению, это сильное утверждение нуждается в доказательствах.
Что именно? Что у каждого языка есть своя ниша? Или то что в Java'у и C# вливают деньги?
Возможно что образование и опыт поможет Вам со временем ответить и на этот вопрос.
Я бы предпочёл воздержаться от перехода на личности.

А на Java'е я писать в обозримом будущем точно не буду. В области моих профессиональных интересов Embedded-системы, Linux, ARM. Java'ой в этой области моя контора уже накушалась.

Date: 2007-04-08 01:28 am (UTC)
From: [identity profile] trurle.livejournal.com
Меня больше интересовал Ruby.
Да это уже понятно. К счастью, мне не приходилось еще сидеть в одной комнате с фанатиком Руби, так что примеров столь же анекдотических как для Питона, я сходу привести не могу - однако поверхностное знакомство с описанием Руби оставило меня в полной уверенности что столь же глупых дырок в дизайне там есть.
Что у каждого языка есть своя ниша? Или то что в Java'у и C# вливают деньги?
Нет; в доказательстве нуждается утверждение что относительно большая популярность Явы по сравнению с Tcl объясняется исключительно вложениями в раскрутку.
Я бы предпочёл воздержаться от перехода на личности.
Не могу не заметить что когда Вы делаете утверждения сногсшибательной нелепости, опираясь только на личный авторитет, сомнения в основательности суждений не является переходом на личности. Как мне кажется. Вот, например, следующее Ваше суждение:
В области моих профессиональных интересов Embedded-системы, Linux, ARM. Java'ой в этой области моя контора уже накушалась.
предполагает что все участники дискуссии согласны с тем что опыт Вашей конторы является несомненным аргументом - а ведь это не так.

Date: 2007-04-08 02:37 am (UTC)
From: [identity profile] meanab.livejournal.com
Опираясь на чей же авторитет вы сделали заявления о "мусорности" ряда языков, их inconsistency по сравнению с С++, а также пассаж про "возможность лепить спагетти-код не думая, щедро предоставляемая Питоном и Руби" (и, очевидно, сильно затрудненная в C++)?

Date: 2007-04-08 02:48 am (UTC)
From: [identity profile] trurle.livejournal.com
также пассаж про "возможность лепить спагетти-код не думая, щедро предоставляемая Питоном и Руби"
Воображаемые преимущества Руби и Питона заключающиеся якобы в возможности писать программы, не вкладывая значительных усилий в изучение языка, неоднократно делались и делаются поклонниками этих инструментов. Примеры можно найти как в непосредственно в этой ветке, так и в в обсуждении статьи по ссылке [livejournal.com profile] avva
Опираясь на чей же авторитет вы сделали заявления о "мусорности" ряда языков, их inconsistency по сравнению с С++
Как известно, за время своего существования Питон "съел" и включил в себя несколько программистких парадигм. Результат, как и следовало ожидать, представляет собой хаотическое смешение, вполне не консистентное и более всего напоминающее мусорную кучу.

Date: 2007-04-08 03:06 am (UTC)
From: [identity profile] meanab.livejournal.com
Писать программы, не прикладывая усилий можно на любом языке, результат будет сооветсвующий. Тут мы возвращаемся к самой статье [livejournal.com profile] avva, и к тому, что строить умозаключения на основе заявлений fanboys - пустое дело.

C++ тоже пытается развиваться. Трудно назвать, например, корявый отросток tempate'ов органичным и консистентным с остальным.

Date: 2007-04-09 07:17 am (UTC)
From: [identity profile] e2pii1.livejournal.com
"" Трудно назвать, например, корявый отросток tempate'ов органичным и консистентным с остальным C++ ""

Не могу с вами согласится.
Templates в C++ вполне консистентны, что становиться ясно если вспомнить ключевую идею ("миссию") C++: в 2х словах - "portable ассемблер, т.е. возможность достичь максимальной эффективности и контроля над тем как программа "крутится" в железе, не теряя при этом возможности реализовывать и поддерживать сколь угодно сложные алгоритмы.
Templates вполне консистентны с этой парадигмой: какие еще лучшие способы вы можете предложить для реализации generic programming(нужного для ряда приложений) с той же эффективностью выполнения как templates ?
Виртуальными функциями и пр. можно обеспечить ту же функциональность - но менее эффективно.
Есть возражения ?

Date: 2007-04-09 07:29 am (UTC)
From: [identity profile] cmm.livejournal.com
> какие еще лучшие способы вы можете предложить для реализации generic programming(нужного для ряда приложений) с той же эффективностью выполнения как templates ?

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

Date: 2007-04-09 09:20 am (UTC)
From: [identity profile] e2pii1.livejournal.com
Что конкретно можно предложить более подходящее и консистентное с вышеуказанной миссией языка ?
From: [identity profile] cmm.livejournal.com
поскольку Вашей целью в этой беседе очевидным образом является не узнать что-то новое, а утвердиться в своей любви к крестам (я слежу за всей темой по почте, из остаточного мазохизма), то я категорически не готов Вам мешать.

если я неправ, то обратите помыслы к Гуглю и почитайте что нибудь про, скажем, ML.
From: [identity profile] e2pii1.livejournal.com
""
поскольку Вашей целью в этой беседе очевидным образом является не узнать что-то новое
""

Абсолютно не так. Совсем наоборот: моя цель узнать что-нибудь новое, дельное и интересное. Но при этом нетривиальное, глубокое и содержательное - программистские приколы для fanboys (еще способ вычислить факториал кодом в 5 символов) меня особо не прикалывают.
From: [identity profile] e2pii1.livejournal.com
И, добавлю, я С++ не "люблю" - это для меня лишь инструмент подходящий для ряда моих задач. И любой язык - инструмент, а идеи там ценны лишь такие, которые делают инструмент удобнее.
From: [identity profile] cmm.livejournal.com
не похоже чтобы кресты можно было бы как-то существенно улучшить без убиения совместимости.
а если не бояться убить совместимость, то вот D, по слухам, недурён.
From: [identity profile] e2pii1.livejournal.com
Прежде надо бы сформулировать что конкретно собираемся улучшать: скорость разработки, легкость поддержки, надежность кода, форсирование более эффективного мышления программиста, ... ?

D

Date: 2007-04-10 09:32 am (UTC)
From: [identity profile] e2pii1.livejournal.com
Прочитал про D
http://www.digitalmars.com/d/
Впечатление что нет тут никакого прорыва, так, мелкие частные усовершенствования и удобства.
Ну как к примеру С++ добавил к С, помимо ОО, еще ряд не-ОО усовершенствований (inline, //commnets и.т.д.) - D примерно того же объема update.

Re: D

From: [identity profile] cmm.livejournal.com - Date: 2007-04-10 10:45 am (UTC) - Expand

Date: 2007-04-09 07:56 am (UTC)
netch: (Default)
From: [personal profile] netch
Видите ли... возражений у меня-то и сторонников... мнэээ... ЯВУ;) в общем нет, а вот со сторонниками C++ Вы тут подерётесь именно по пункту "portable assembler". Потому что подавляющее их большинство считает, что C++ - язык высокого уровня, и приводят (весьма убедительно) в доказательство этого и классы, и исключения, и шаблоны.

Так что весьма вероятно новое, своеобразное развитие данного треда:))

Date: 2007-04-09 09:27 am (UTC)
From: [identity profile] e2pii1.livejournal.com
"portable assembler" - не в смысле недостатков ассемблера, а в смысле его достоинств (эффективности и контроля) - и одновременно язык весьма высокого уровня, одно другому не противоречит. Вполне высокоуровнeвые средства С/С++ находятся при этом в очень четком соответствии с командами железа.

Date: 2007-04-09 07:59 am (UTC)
From: [identity profile] kiryl.livejournal.com
C++ нельзя назвать консистентным хотя бы потому, что первоначально он разрабатывался как ОО-довескок к С. И OO-довеска достаточно не внятная. Чего только стоит использования модификатора static для синглетон методов/переменных(тоже косается Java).

Date: 2007-04-09 09:05 am (UTC)
From: [identity profile] e2pii1.livejournal.com
""
C++ нельзя назвать консистентным хотя бы потому, что первоначально он разрабатывался как ОО-довескок к С.
""

Не согласeн с подобной аргументацией. Напомню свои слова:
"миссия" C/C++ - "portable ассемблер", т.е. возможность достичь максимальной эффективности и контроля над тем как программа "крутится" в железе, не теряя при этом возможности реализовывать и поддерживать сколь угодно сложные алгоритмы.

Когда появилась нужда в ОО для реализации приложений (а когда появился С, сначала без этого обходились) добавили классы. Bполне консистентно с вышеуказанной миссией, и без лишних глупостей.

""
Чего только стоит использования модификатора static для синглетон методов/переменных.
""

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

Date: 2007-04-09 10:10 am (UTC)
From: [identity profile] kiryl.livejournal.com
Не согласeн с подобной аргументацией. Напомню свои слова:
"миссия" C/C++ - "portable ассемблер", т.е. возможность достичь максимальной эффективности и контроля над тем как программа "крутится" в железе, не теряя при этом возможности реализовывать и поддерживать сколь угодно сложные алгоритмы.


Использование выражения "C/C++" считаю не допустимым. Это _совсем_ разные языки. C действительно задумывался Керниганом и Ритчи как "portable ассемблер" и своей целью он справляется, как никто другой. C++ в "железных" задачах используется редко. Из ядер, более/менее распространённых операционных систем, на моей памяти только ядро BeOS написано на C++. И где сейчас BeOS?

Когда появилась нужда в ОО для реализации приложений (а когда появился С, сначала без этого обходились) добавили классы. Bполне консистентно с вышеуказанной миссией, и без лишних глупостей.

Что касается ОО для "железных" задач, то вполне хватает C. Я имею ввиду, что для использования концепций ОО не обязательно использовать ОО-язык программирования(см. linux). На мой взгляд, код на C является более поддерживаемым, чем на C++. Найти хорошего программиста на C++ является крайне сложной задачей. Стандарт на C++ документ непомерный. Для C хватает тонкой книги от K&R.

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


Я и говорю, что много наследия тащиться из C, что не есть хорошо для языка который претендует на звание объектно-ориентированного.
Ткните меня в любой источник по теории ОО-программирования, где бы использовался термин static в любых вариациях?

Date: 2007-04-09 10:57 am (UTC)
netch: (Default)
From: [personal profile] netch
> Использование выражения "C/C++" считаю не допустимым. Это _совсем_ разные языки.

(Не в глобальное возражение) Увы, так только по задумке. На практике же у C++ слишком сильное наследие C, чтобы можно было от него избавиться так просто.

Date: 2007-04-09 11:12 am (UTC)
From: [identity profile] e2pii1.livejournal.com
""
Использование выражения "C/C++" считаю не допустимым. Это _совсем_ разные языки.
""

языки разные, но "миссия" у них одинаковая. Именно в этом, узком, смысле употреблено "C/C++".

""
C++ в "железных" задачах используется редко.
""

По собственному опыту, используется в очень "железных" задачах (embedded system) очень компетентными людьми.


""
Что касается ОО для "железных" задач, то вполне хватает C.
""

Есть реальные задачи где не хватает (сильно продвинутые алгоритмы, при этом нужна эффективность).


""
Я имею ввиду, что для использования концепций ОО не обязательно использовать ОО-язык программирования
""

Да. Я даже сталкивался с мнением, что С лучше подходит для ОО-программирования чем С++! (хотя я с этим и не согласен, но это не полная глупость).

""
На мой взгляд, код на C является более поддерживаемым, чем на C++. Найти хорошего программиста на C++ является крайне сложной задачей.
""

Да. С++ дает неквалифицированному программистy гораздо больше "возможностей" спороть фигню, но это еще не повод отказаться от него квалифицированным программистам там где он по делу.


""
Я и говорю, что много наследия тащиться из C, что не есть хорошо для языка который претендует на звание объектно-ориентированного.
""

Как я уже писал, основная цель (и консистентность) С++ - не идеал воплощения абстрактных концепций, а практически полезный инструмент (что включает и downcompatibility) позволяющий практически использовать ОО для практических приложений.

Date: 2007-04-09 11:56 am (UTC)
From: [identity profile] kiryl.livejournal.com
По собственному опыту, используется в очень "железных" задачах (embedded system) очень компетентными людьми.

Можно по подробней где? Я сам занимаюсь embedded systems(linux для storage и media серверов). Пока ничего системного на C++ не видел.

Есть реальные задачи где не хватает (сильно продвинутые алгоритмы, при этом нужна эффективность).

По-больше конкретики. Scheduling, к примеру, не сильно продвинутый алгоритм?

Да. Я даже сталкивался с мнением, что С лучше подходит для ОО-программирования чем С++! (хотя я с этим и не согласен, но это не полная глупость).

Ну, в случае linux, ОО там получается довольно красивое и стройное(смотри fs-подсистему, например).

Ссылочка в тему: http://nothings.org/computer/cpp.html

Date: 2007-04-09 12:05 pm (UTC)
From: [identity profile] cmm.livejournal.com
> Пока ничего системного на C++ не видел.

а оно есть.
а на Windows так просто практически всё "системное" пишут на крестах.

Члены суда

From: [identity profile] trurle.livejournal.com - Date: 2007-04-09 12:22 pm (UTC) - Expand

Date: 2007-04-10 08:16 am (UTC)
From: [identity profile] e2pii1.livejournal.com
Там была техническая система обработки сигналов с нетривиальными алгоритмами и сложной логикой. Системная часть впрочем тоже была на С++.
про системноe на C++ вам уже ответили, я тоже полагаю что С++ заведомо не хуже, и часто лучше чем С для системных задач.

Ссылку вашу начал смотреть - пока выглядит как дешевое и глупое пижонство:

"Why C++ Sucks"(огромным фонтом!) -- не нравится мужику язык - ну и не использовал бы его и все дела. У него что зуд ?

"It was designed to have those features necessary to achieve popular success--not those features necessary to be a good programming language." -- Бессмысленно-абсурдная фраза. good programming language - это по определению язык, который много людей находят для себя полезным.

"The Big Mistake: C Compatibility" -- а старый софт стоящий десятки миллиардов долларов этот кoзел сам для всех бесплатно перепишет на языке своей мечты ?!

(no subject)

From: [identity profile] kiryl.livejournal.com - Date: 2007-04-10 10:01 am (UTC) - Expand

(no subject)

From: [identity profile] trurle.livejournal.com - Date: 2007-04-10 10:18 am (UTC) - Expand

(no subject)

From: [identity profile] kiryl.livejournal.com - Date: 2007-04-10 10:28 am (UTC) - Expand

(no subject)

From: [identity profile] trurle.livejournal.com - Date: 2007-04-10 10:31 am (UTC) - Expand

(no subject)

From: [identity profile] kiryl.livejournal.com - Date: 2007-04-10 10:35 am (UTC) - Expand

(no subject)

From: [identity profile] trurle.livejournal.com - Date: 2007-04-10 10:48 am (UTC) - Expand

(no subject)

From: [identity profile] kiryl.livejournal.com - Date: 2007-04-10 11:20 am (UTC) - Expand

(no subject)

From: [identity profile] kiryl.livejournal.com - Date: 2007-04-10 11:31 am (UTC) - Expand

(no subject)

From: [identity profile] e2pii1.livejournal.com - Date: 2007-04-10 10:22 am (UTC) - Expand

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2007-04-10 10:43 am (UTC) - Expand

(no subject)

From: [identity profile] trurle.livejournal.com - Date: 2007-04-10 10:54 am (UTC) - Expand

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2007-04-10 10:56 am (UTC) - Expand

(no subject)

From: [personal profile] stas - Date: 2007-04-10 04:06 pm (UTC) - Expand

(no subject)

From: [personal profile] stas - Date: 2007-04-10 04:02 pm (UTC) - Expand

Date: 2007-04-08 07:43 am (UTC)
netch: (Default)
From: [personal profile] netch
> Я бы предпочёл воздержаться от перехода на личности.

Ну это стиль такой у Трурля. Обижаться достаточно бессмысленно - его уже не исправить. Тем более что смысл Явы он понимает, just IMHO, как-то криво.

> Java'ой в этой области моя контора уже накушалась.

Так и пробовать не стоило, мне кажется.

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