Pull to refresh

Comments 61

Если честно, заголовок обещал больше интересного материала!

К сожалению я лично не имел опыта с Ruby, зато активно использую Python.
И обращая свой взгляд на Java, «сила которой в библиотеках», могу только согласиться — сообщество остается достаточно важным элементом в инфраструктуре любого языка программирования. То же можно сказать и про набирающий популярность C#, успех которого можно частично объяснить наличию MSDN и активных сообществ…
Ну если вы недавно открыли для себя c# — это не значит, что этот язык набирает популярность.
Ну да, он её уже набрал. Его даже Sony в качестве языка для своего Playstation Suite недавно выбрала.
Не так сформулировал. Это был сарказм.
Помечайте красненьким, а то не всегда понятно.
красненький для иронии. для сарказма — табличка
Писать ещё одну статью на тему ruby vs. python я точно не буду-таких статей уже написано достаточно.
Я про социальный аспект написал.Об это вообще редко пишут.
Пожалуйста, приведите конкретные примеры, чем хорош Python и чем плох Ruby. Это могут быть какие-то различия в синтаксисе, наличие особых языковых конструкций, документация по языку, коммьюнити и прочее. Это уже обговорили на десять раз, но все-таки конкретика была бы хороша и могла бы заставить задуматься «а не попробовать и мне писать на нем?»
Каждый язык хорош и плох по-своему. И еще немаловажны удобство и привычность использования. Вы же не будете писать на ассемблере парсер текста? И если вы привыкли к Python, логично, что вам будет непривычен Ruby.
Короче, ждем аргументов повесомее :-)
на сколько я понял, автор не пытался сравнивать языки, он говорит о преимуществе сообщества Питона, не более.
Ruby плох в социальном смысле. Используя этот язык программирования, мы получаем много неизвестных факторов-будет ли работать библиотека xxx c версией yyyy. Ответит ли кто-нибудь почему библиотека zzz не работает вовсе. Документацию на библиотеку ХХХ может не оказаться в природе, либо она трудно доступна. И т.д.
А в чем причина плохого социального развития Ruby? Это потому, что рубисты злые?
Очевидно в причина заключается в головах создателей языка. Ван Россум уделял больше внимания социальным аспектам, Мацумото соответственно меньше.Тут возможно и исторические факторы сыграли роль и культурные также.
> И если вы привыкли к Python, логично, что вам будет непривычен Ruby.

Пару месяцев назад пришлось взяться за Руби, причём прямо посередине проекта. Если не вдаваться в нюансы, то языки очень похожи, главная разница в том, что Руби позволяет экспериментировать со стилем и говнокодить, а Питон держит в строгих рамках.
вот правда Рельсы по сравнению с Джанго это Франкенштейн какой-то.
вот правда Рельсы по сравнению с Джанго это Франкенштейн какой-то.
Вы не могли бы пояснить эту мысль?
Попробую.
при инсталляции Джанго, мы получаем некий минимальный, чистый скелет проекта. Одна аппликация занимает 3 файла (vews, forms, models) и хтмл-шаблоны. Возможно это совсем не MVC, зато логично и просто.
В Rails начальная установка тащит с собой и неиспользуемые тесты и библиотеки джаваскрипта и ещё вагон всяких хелперов\конфигов разбросанных по разным каталогам с несколькими степенями вложенности в которых очень легко запутаться с непривычки.
К генерации десятка разбросанных по разным каталогам файлов при генерации модели для базы данных я тоже ещё не могу привыкнуть, возможно сказывается предвзятое мнение.

Эмм… а не пробовали вникнуть немного глубже, а потом хаять? При создании нового приложения можно отключить и тесты, и js. А про «десяток» файлов при генерации модели вообще непонятно о чем речь.
Хаять? Перечитайте мое сообщение без агрессивного подтекста.
Никакой агрессии, просто лучше вначале разобраться в возможностях и опциях продукта, а уж потом называть его Франкенштейном.
Соглашусь с тем, что с непривычки в Rails сложно разбираться. И меня тоже поначалу пугало огромное количество файлов, которое занимает чистый проект. Но, когда появляются навыки работы с Rails, этот зоопарк перестает мешать, он с лихвой компенсируется скоростью разработки. Папок создается много, но не во все из них надо заглядывать, некоторые нужны только для скриптов. Мне кажется, что основной минус Rails — не большое число файлов, а именно высокий порог вхождения. Ну, и нельзя не согласиться с автором топика: с документацией в том же Rails куда хуже, чем в Django.

Странно, рельсы славятся наоборот быстрым стартом. После джанги они простые, как три рубля.
> Почему python стал моим удобным инструментом для повседневной жизни, а ruby-нет

— Потому что на двух конях сидеть тяжело.)

А если честно, — то каждый подход имеет право на существование. И до тех пор, пока есть сторонники какого-либо подхода, он будет существовать.

Я, в какой-то мере, рад, что есть Руби. Не потому, что он лучше или хуже. А потому что Руби заставляет Гвидо быть более осмотрительным и взвешенным, и еще потому, что люди с Руби-мышлением пишут на Руби, и оставляют Питон быть таким, какой он есть. Ментальности все-таки у них разные.
Честно говоря идеологически ruby покрасивее местами. Но не практично и геморройно.
> В третьих подавляющее число разработчиков библиотек представлены в общем репозитории.И не нужно искать библиотеки в сети.

А с Руби как-то по-другому? Система гемов наверно даже получше будет. А уж недостатка в решениях, сообществе, документации и прочих экосистемах точно не наблюдаю. Руби — самый дружественный язык в плане экосистемы.

Скорость работы не так важна, как скорость и стоимость разработки.
У Ruby страшная фрагментированность всего. В гемах далеко не всё. А сама систем гемов вполне себе хороша.
То, что вы называете фрагментированностью, я бы назвал минимализмом и необходимым разделением функций и областей их применимости. Как UNIX: одно маленькое действие — одна маленькая утилита.

Хуже, когда библиотеки представляют собой снежный ком из всего, что под руку попадётся.

«В гемах далеко не всё» — но так уж нужно ли это ВСЁ? Опенсорс же — дописывай нужное сам :)
Репозиторий для того и нужен, чтобы можно увидеть все библиотеки, их состояние, соответствие версиям и т.д.
Чтобы не писать 101-й кривой велосипед.
>Хуже, когда библиотеки представляют собой снежный ком из всего, что под руку попадётся.
Да минимизация зависимостей от внешних модулей вещь правильная.

гемы?
Знаете, я как-то мудохался с установкой redmine час, потому что gem не мог поставить пакет mysql из-за каких то несовместимостей.
Обновить redmine? Mission impossible для человека, который ruby не занимается и не знает что там к чему. Так и сидим на версии редмайна 3-х летней давности, потому что что-бы поставить его хотя бы рядом с тестовой базой, нужно сломать к чертям текущее ruby окружение, что естественно убивает текущий redmine.
А ещё перл — обновил MySQL на 1 минорную версию. В ней выпилили depricated (уже много лет) фишку при соединении (ruby gem mysql шлёт лишнее). Багу уже хз скока времени, но почему-то фикса нигде нет. В итоге пришлось откатить MySQL (что в убунте особый вид секса).

З.Ы. Всё приправленно геммороем ubuntu (после логичности и простоты Gentoo — убунту вижу в кошмарах) ИМХО.
Про Redmine подпишусь всеми руками. Пожалуй, единственный кактус, который приходится продолжать жрать.
Юзеров функционл устраивает. DEB работает из коробки.

Столкнулся с той же ситуацией. В общем, для экономии усилий и времени пришлось поставить DEB-пакет в Убунте версии 0.9.3 и оно как-то работало. Через год юзеры попросили обновления. После недельных танцев с бубном подняли таки Redmine 1.3.0 на другом сервере. Оно совершенно неподдерживаемо и не обновляемо. Задачи при этом перенести так и не смогли…

Реальный gem-hell.
постоянно обновляю redmine (от 0.9, до версии 1.2 обновились на сегодня).

проблем с переносом данных и плагинов не огребали.

впереди переход на 1.3.

P.S.: как ни странно, больше проблем возникло при попытке перехода с MediaWiki 1.17 на 1.18.
Ну может с 0.9 до 1.2 и нормально, не пробовал.
Может, руки не оттуда растут, не знаю.
Несколько недель назад встала необходимость обновить ruby до ветки 1.9 на офисном сервере. Как следствие нужно было и перенести Redmine на него боялся что не заведется. Но, о чудо, руби собрал из исходников, накатил пасажира, обновил до последней версии Redmine, bundler подтянул все зависимости. Перезапуск сервера, все работает. Никакой головной боли, все на месте.
так вы Ruby обновили? Redmine? я всего лишь хотел сделать Redmine 0.9.3 -> 1.3.0.
Обновился из репо, сделал миграцию. Запускается, работает всё, кроме раздел задач. Нахрена такой апгрейд?

Собственно Ruby я меняю и собираю по 3 раза в день — спасибо что RVM.
Все обновил: ruby, redmine, passenger.
Этот давнозревший эпичный холивар (.py vs .rb) на over9000 постов и 100500 комментов попадёт в аналы истории.
Надеюсь, всё же, что в аННалы
В аналы, да:) Там и место всем холиварам. А о преимуществах и отличиях узнавать полезно.
Хуже доков, чем в Питоне, я не видел. Боюсь представить, как там в Руби.
Не бойтесь.
Во-первых, к 90% гемов и репов на гитхабе есть README для быстрого старта (чаще всего этого достаточно) и Wiki (для тех, кому-таки мало README). Во-вторых, код самодокументирован. Ни разу не встречал говнокода на Ruby. Всё понятно и легко осознаваемо. В-третьих, всегда можно обратиться к непосредственным разработчикам, которые *IRONY* по большей части ещё живы (в отличие от других языков).*IRONY*
Хорошие там доки! Не говоря об интерактивных доках для каждого класса/метода someMethod.__doc__
Единственная проблема — большинство на английском… Но разве это проблема?)
О да, разумеется, для каждого класса! Например, urllib2.urlopen() выбрасывает кучу ошибок типа HTTPException, которые документация не упоминает, с полями, которые в документации тоже не описаны.

Еще можно пытаться разобраться в документации DB API, которая на первый взгляд напоминает свалку.
Согласен. Только вчера urllib2 выкинул неведомый эксепшн, который стал неожиданностью. Та же проблема была с smtplib. С документацией DB API не знаком, но «свалку» представляю.

ИМХО, такое есть в каждом языке — что Java, что Python. Это этика сообщества — не каждый, кто коммитит новые фичи или фиксит баги — хорошо это документирует.

А ведь и мы не так хороши: ведь в том же python можно просмотреть чужой код и помочь в документировании. Это не долго, а пользы — много. Что же мешает?
P.S. ИМХО, нужен строгий контроль качества. В ruby с этим лучше?
Я вообще удивляюсь когда люди не документируют свое творение. Потратить энное к-во дней на разработку, тестирование, отладку и потом пожалеть дня на то чтобы свое детище нормально задокументировать и оформить… Разве это так сложно? А по поводу «код самодокументирован» — это все хорошо, но для людей которые уже знают язык достаточно хорошо, начинающим это никак не поможет
Ага, или пару-тройку примеров использования накидают и вроде как «задокументировали»
Все заметили, что религиозные срачи руби-питон начинают питонисты? Они таки чувствуют себя ущербными. Рубисты просто стоят в стороне и смеются над питонистами. Рубисты делают своё дело. Рубистам нравится то, что они делают. Остальное — суета.
Неправда, там где я — срач начинают рубисты.
Тебе кажется. Рубисты давно познали дзен и улетели на волшебных звездолётах любоваться тремя лунами других панет. Им похуй на питон.
Питонщикам среди питонщиков глубоко пофиг на руби. Рубистам среди рубистов глубоко пофиг на питон.

Если в обществе рубистов оказывается питонщик, он может начать срач (даже не специально), т.к. считает, что питон лучше (если б считал иначе, писал бы на руби). Если в обществе питонщиков окажется рубист, он может начать срач (даже не специально), т.к. считает, что руби лучше (если б считал иначе, писал бы на питоне).

В итоге получаем кучу рубистов, которые считают, что срач разводят питонщики (пока питонщик не появился, срача не было). И кучу питонщиков, которые считают, что срач разводят рубисты (пока рубиста не было, срача не было).

Вывод: нефиг разводить срач.
Я таки настаиваю на своей версии. Кстати, руби объективно лучше.
Мы, в общесте PHP-ников (говорю за себя лично и мой круг знакомых) только рады Python или Ruby разработчику, что бы послушать что у них хорошего и интересного. Что бы потом неподходящую для PHP задачу решить другими вариантами.
Ну и да, развеиваем мифы насчёт PHP как такового.
Получается как правило плодотворно и никакого срача :)
Топик минусанул, не дело это холивары разводить на ровном месте. Из того, что один хороший, не следует, что другой плохой.
Скромно позволю себя процитировать.Видимо не читали внимательно.
>Но пользуюсь я до сих пор python, совсем не потому что python лучше чем ruby.
Конечно все имеют право на оценку.Но и я готов отстаивать своё право на свободу выражения своих мыслей.Даже ценой потери кармы.
угу. такое впечатление что как минимум половина комментаторов бросилась комментировать не прочитав статью дальше заголовка. А заголовок холиварен, это да :)
Не могу удержаться что бы не потролить (видно ромашковый чай с мёдом и лемоном действует как-то неправильно) насчёт того, что PHP адепты как-то не вмешиваются и никого не трогают :)
PHP адепты, вроде меня, слюной истекают в ожидании когда всё вкусные плюшки добавят в PHP.
Не знаю, лично я вместо бесполезных холиворов Go поиграться скачал. Да и 'адептизм' как мне кажется это что-то из ряда ненормального :) Есть задача — есть язык — есть деньги — купил яхту — выпил вина — погулял у моря — умер. Жизнь удалась :D
Какие-то тупые холивары. Питон легко встраивается, Ruby не встраивается. Вот и все. Поэтому связка python и qt популярна, поэтом cocos2d использует питон. У рубу огромное кол-во гемов и нормальный метод их установки (в питоне зачем-то есть easy_install, которым надо поставить pip, у которого ну сверх большое время холодного старта). А так оба языка весьма ущербны.

Пишу на руби, да.
#include <iostream>
#include <ruby.h>

using namespace std;

int main(void)
{
  ruby_init();
  ruby_init_loadpath();
  int status;
  rb_load_protect(rb_str_new2("./test.rb"), 0, &status);
  if (status) {
    VALUE rbError = rb_funcall(rb_gv_get("$!"), rb_intern("message"), 0);
    cerr << StringValuePtr(rbError) << endl;
  };
  ruby_finalize();
  return status;
}
Sign up to leave a comment.

Articles