про руби (программистское)
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-08 12:14 am (UTC)Меня больше интересовал Ruby.
Что именно? Что у каждого языка есть своя ниша? Или то что в Java'у и C# вливают деньги?
Я бы предпочёл воздержаться от перехода на личности.
А на Java'е я писать в обозримом будущем точно не буду. В области моих профессиональных интересов Embedded-системы, Linux, ARM. Java'ой в этой области моя контора уже накушалась.
no subject
Date: 2007-04-08 01:28 am (UTC)Да это уже понятно. К счастью, мне не приходилось еще сидеть в одной комнате с фанатиком Руби, так что примеров столь же анекдотических как для Питона, я сходу привести не могу - однако поверхностное знакомство с описанием Руби оставило меня в полной уверенности что столь же глупых дырок в дизайне там есть.
Что у каждого языка есть своя ниша? Или то что в Java'у и C# вливают деньги?
Нет; в доказательстве нуждается утверждение что относительно большая популярность Явы по сравнению с Tcl объясняется исключительно вложениями в раскрутку.
Я бы предпочёл воздержаться от перехода на личности.
Не могу не заметить что когда Вы делаете утверждения сногсшибательной нелепости, опираясь только на личный авторитет, сомнения в основательности суждений не является переходом на личности. Как мне кажется. Вот, например, следующее Ваше суждение:
В области моих профессиональных интересов Embedded-системы, Linux, ARM. Java'ой в этой области моя контора уже накушалась.
предполагает что все участники дискуссии согласны с тем что опыт Вашей конторы является несомненным аргументом - а ведь это не так.
no subject
Date: 2007-04-08 02:37 am (UTC)no subject
Date: 2007-04-08 02:48 am (UTC)Воображаемые преимущества Руби и Питона заключающиеся якобы в возможности писать программы, не вкладывая значительных усилий в изучение языка, неоднократно делались и делаются поклонниками этих инструментов. Примеры можно найти как в непосредственно в этой ветке, так и в в обсуждении статьи по ссылке
Опираясь на чей же авторитет вы сделали заявления о "мусорности" ряда языков, их inconsistency по сравнению с С++
Как известно, за время своего существования Питон "съел" и включил в себя несколько программистких парадигм. Результат, как и следовало ожидать, представляет собой хаотическое смешение, вполне не консистентное и более всего напоминающее мусорную кучу.
no subject
Date: 2007-04-08 03:06 am (UTC)C++ тоже пытается развиваться. Трудно назвать, например, корявый отросток tempate'ов органичным и консистентным с остальным.
no subject
Date: 2007-04-09 07:17 am (UTC)Не могу с вами согласится.
Templates в C++ вполне консистентны, что становиться ясно если вспомнить ключевую идею ("миссию") C++: в 2х словах - "portable ассемблер, т.е. возможность достичь максимальной эффективности и контроля над тем как программа "крутится" в железе, не теряя при этом возможности реализовывать и поддерживать сколь угодно сложные алгоритмы.
Templates вполне консистентны с этой парадигмой: какие еще лучшие способы вы можете предложить для реализации generic programming(нужного для ряда приложений) с той же эффективностью выполнения как templates ?
Виртуальными функциями и пр. можно обеспечить ту же функциональность - но менее эффективно.
Есть возражения ?
no subject
Date: 2007-04-09 07:29 am (UTC)языки с вменяемой статической типизацией существовали задолго до крестовых темплейтов.
no subject
Date: 2007-04-09 09:20 am (UTC)давайте я облегчу Вам жизнь
Date: 2007-04-09 09:36 am (UTC)если я неправ, то обратите помыслы к Гуглю и почитайте что нибудь про, скажем, ML.
Re: давайте я облегчу Вам жизнь
Date: 2007-04-09 09:48 am (UTC)поскольку Вашей целью в этой беседе очевидным образом является не узнать что-то новое
""
Абсолютно не так. Совсем наоборот: моя цель узнать что-нибудь новое, дельное и интересное. Но при этом нетривиальное, глубокое и содержательное - программистские приколы для fanboys (еще способ вычислить факториал кодом в 5 символов) меня особо не прикалывают.
Re: давайте я облегчу Вам жизнь
Date: 2007-04-09 10:48 am (UTC)Re: давайте я облегчу Вам жизнь
Date: 2007-04-09 10:53 am (UTC)а если не бояться убить совместимость, то вот D, по слухам, недурён.
Re: давайте я облегчу Вам жизнь
Date: 2007-04-09 11:23 am (UTC)Re: давайте я облегчу Вам жизнь
From:D
Date: 2007-04-10 09:32 am (UTC)http://www.digitalmars.com/d/
Впечатление что нет тут никакого прорыва, так, мелкие частные усовершенствования и удобства.
Ну как к примеру С++ добавил к С, помимо ОО, еще ряд не-ОО усовершенствований (inline, //commnets и.т.д.) - D примерно того же объема update.
Re: D
From:no subject
Date: 2007-04-09 07:56 am (UTC)Так что весьма вероятно новое, своеобразное развитие данного треда:))
no subject
Date: 2007-04-09 09:27 am (UTC)no subject
Date: 2007-04-09 07:59 am (UTC)no subject
Date: 2007-04-09 09:05 am (UTC)C++ нельзя назвать консистентным хотя бы потому, что первоначально он разрабатывался как ОО-довескок к С.
""
Не согласeн с подобной аргументацией. Напомню свои слова:
"миссия" C/C++ - "portable ассемблер", т.е. возможность достичь максимальной эффективности и контроля над тем как программа "крутится" в железе, не теряя при этом возможности реализовывать и поддерживать сколь угодно сложные алгоритмы.
Когда появилась нужда в ОО для реализации приложений (а когда появился С, сначала без этого обходились) добавили классы. Bполне консистентно с вышеуказанной миссией, и без лишних глупостей.
""
Чего только стоит использования модификатора static для синглетон методов/переменных.
""
Нормально. В С static означает данные видимые в файле (файл в С - ближайший аналог С++класса) существующие независимо от входа/выхода из функций файла.
В С++ классе static означает данные видимые в классе независимые от экземпляров. Можно и отдельное ключевое слово сделать, но это непринципиально т.к. коллизий со старым смыслом не возникает, и преимущество что нет лишних ключевых слов.
no subject
Date: 2007-04-09 10:10 am (UTC)"миссия" 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 в любых вариациях?
no subject
Date: 2007-04-09 10:57 am (UTC)(Не в глобальное возражение) Увы, так только по задумке. На практике же у C++ слишком сильное наследие C, чтобы можно было от него избавиться так просто.
no subject
Date: 2007-04-09 11:12 am (UTC)Использование выражения "C/C++" считаю не допустимым. Это _совсем_ разные языки.
""
языки разные, но "миссия" у них одинаковая. Именно в этом, узком, смысле употреблено "C/C++".
""
C++ в "железных" задачах используется редко.
""
По собственному опыту, используется в очень "железных" задачах (embedded system) очень компетентными людьми.
""
Что касается ОО для "железных" задач, то вполне хватает C.
""
Есть реальные задачи где не хватает (сильно продвинутые алгоритмы, при этом нужна эффективность).
""
Я имею ввиду, что для использования концепций ОО не обязательно использовать ОО-язык программирования
""
Да. Я даже сталкивался с мнением, что С лучше подходит для ОО-программирования чем С++! (хотя я с этим и не согласен, но это не полная глупость).
""
На мой взгляд, код на C является более поддерживаемым, чем на C++. Найти хорошего программиста на C++ является крайне сложной задачей.
""
Да. С++ дает неквалифицированному программистy гораздо больше "возможностей" спороть фигню, но это еще не повод отказаться от него квалифицированным программистам там где он по делу.
""
Я и говорю, что много наследия тащиться из C, что не есть хорошо для языка который претендует на звание объектно-ориентированного.
""
Как я уже писал, основная цель (и консистентность) С++ - не идеал воплощения абстрактных концепций, а практически полезный инструмент (что включает и downcompatibility) позволяющий практически использовать ОО для практических приложений.
no subject
Date: 2007-04-09 11:56 am (UTC)Можно по подробней где? Я сам занимаюсь embedded systems(linux для storage и media серверов). Пока ничего системного на C++ не видел.
Есть реальные задачи где не хватает (сильно продвинутые алгоритмы, при этом нужна эффективность).
По-больше конкретики. Scheduling, к примеру, не сильно продвинутый алгоритм?
Да. Я даже сталкивался с мнением, что С лучше подходит для ОО-программирования чем С++! (хотя я с этим и не согласен, но это не полная глупость).
Ну, в случае linux, ОО там получается довольно красивое и стройное(смотри fs-подсистему, например).
Ссылочка в тему: http://nothings.org/computer/cpp.html
no subject
Date: 2007-04-09 12:05 pm (UTC)а оно есть.
а на Windows так просто практически всё "системное" пишут на крестах.
Члены суда
From:no subject
Date: 2007-04-10 08:16 am (UTC)про системно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:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2007-04-08 07:43 am (UTC)Ну это стиль такой у Трурля. Обижаться достаточно бессмысленно - его уже не исправить. Тем более что смысл Явы он понимает, just IMHO, как-то криво.
> Java'ой в этой области моя контора уже накушалась.
Так и пробовать не стоило, мне кажется.