LINUX.ORG.RU

[Веб!] Рубисты, что вы имеете против Пайтона?


0

2

(((((+)
))+-('=
3<-))))
^ Это оберег от лисперов. Если вы - лиспер, то изыйдите из этого треда.

Это очень и очень важный вопрос, который очень часто встаёт при разработки веб-проекта: Почему %human.name% хочет именно руби, именно RoR?
Так случается, что пока я узнал только одну причину, которая действительно важна и является проблемой - объём и уровень готовых компонентов.
Много наслышался я критики со стороны рубистов:
«Да там даже блоки кода ничем не заканчиваются! Путаница!»
«Да там всё неудобно!»
«Меня заставляют форматировать код с отступами!»
«Меня принуждают писать код в одном стиле!»
«Там нет интерфейсов!»
«Python3 полное говно!»
etc.
И, хочу отметить, пока я не слышал ни одного замечания для языка, которое бы действительно имело место.

Хочется узнать мнения здешних рубистов и питонистов. Что вы думаете? Почему выбрали именно свой язык? Какие минусы вы заметили в своём языке(руби или пайтон), которые лучше в другом(руби или пайтон)?

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

Цель треда - выяснить настоящие проблемы пайтона относительно руби.

★
Ответ на: комментарий от Viglim

Деградировать? Нет, спасибо.

tia ★
() автор топика

/me в свое время попробовал писать на питоне. Мне понравился простотой и тем, что есть всё. Ну и наличие интерпретатора для моей мобилы тоже радует :) хотя в данный момент пишу на делфи, крестах и жабке, к питону отношусь положительно, как к языку на котором можно без лишних проблем написать и маленький скрипт и большое сетевое приложение (twisted поможет). В частности, на нем написана Vodafone connect для 3г модемов от хуавея.

TERRANZ ★★★★
()

Ну, питон хорош тем, что у него очень много хороших библиотек в огромной сфере применения. Но руби заруливает конкретно для веба своим ror. У django в этом плане также послабее ORM.

Droid790 ★
()

Проблема в том что код на Пайфоне - нечитабельное говно, особенно если он написан в соответствии с PEP8.

anonymous
()
Ответ на: комментарий от anonymous

И почему же он нечитабелен? На мой взгляд очень даже удобно распознавать структуру кода, используя отступы. Тем более, если под рукой нет адекватного редактора с организацией структуры по ключевым словам. А вот куча откывающихся-закрывающихся скобочек - это, ИМХО, жесть! Хотя, всё оно дело привычки :)

fpm
()
Ответ на: комментарий от stevejobs

>оно еще живое?
на самом деле давно протухло
последний раз я на нём писал курсач год назад

что на нем следует писать?

работаю на заводе, тут весь софт написан студентами во время дипломных практик, на делфи пятёрке в связке с оракулом восьмым >_<
по роду работы приходится его подпиливать под меняющиеся нужды или исправлять косяки

TERRANZ ★★★★
()
Ответ на: комментарий от fpm

>удобно распознавать структуру кода, используя отступы.
нас на первом курсе жестоко трахала преподша по программированию за то, чот не использовали «лесенку»
с тех пор у меня лесенка в подкорке головного мозга =_=

TERRANZ ★★★★
()

В общем-то, у питона и нет проблем. А у руби проблема в том, что ruby - это только ror, хотя рубисты и пытаются доказать, что это не так.

Droid790 ★
()

Еще недостаток Питона в том что там многие вещи сделаны через жопу.

anonymous
()
Ответ на: комментарий от fpm

Согласен, вполне читабелен. Проблема возникает только при copy-paste, тогда иногда бывает, что невозможно автоматически отформатировать код средствами IDE/редактора. Но, наверное, так и было задумано :)

Droid790 ★
()
Ответ на: комментарий от TERRANZ

Да, твистед просто божественнен. Писал на нём сервера для нескольких игрушек. Нет ни тормозов, ни багов.

tia ★
() автор топика
Ответ на: комментарий от anonymous

Можно пример?
Приведи пример нечитабельного кода в соответствии с PEP и тот же самый код, но на руби.

tia ★
() автор топика
Ответ на: комментарий от Droid790

Да уже не пытаются. Они пытаются просто сказать что он нужен, что его нужно везде применять и что он лучше других.

tia ★
() автор топика
Ответ на: комментарий от anonymous

Например?
С примером прошу указать и реализацию на руби.

tia ★
() автор топика
Ответ на: комментарий от Droid790

Это скорее приятная фишка, которая помогает не копипастить код не думая над ним.

tia ★
() автор топика
Ответ на: комментарий от tia

Я не знаю Руби, но Питон мне запомнился именно плохочитаемостью. _подчеркивания, self'ы затрудняют чтение.

Хотя причина того что предпочитают ruby не в этом, а просто потому что «так модно».

anonymous
()
Ответ на: комментарий от anonymous

Подчёркивания?
Неужто тебя испугало наличие подчёркиваний в специальных методах?
Возможно, ты смотрел сырец какого-то мета-класса или ещё чего такого, где такой стиль нормален.
self это тоже самое что и this. Т.е. если оно тебе мешает, то это не проблема пайтона, тебе будет не более привычно на любом другом языке.

А руби выбирают, в 90% случаев, из-за готовых инструментов или по работе.
Из-за модности только выбирают мак.

tia ★
() автор топика
Ответ на: комментарий от tia

Может «модно» неподходящее слово.

Понимаешь, даже если питон действительно лучше чем Ruby, все равно это не причина бросать RoR. Пишут же на c++, хотя есть языки и получше, причем со сравнимой производительностью. Используют Autotools, хотя есть CMake. Тут похожая ситуация, RoR уже распространеннее, причем он не сильно хуже чем какой-нибудь Django. И нужны веские причины чтобы все побросали Ruby и перешли на Python.

anonymous
()
Ответ на: комментарий от tia

>Неужто тебя испугало наличие подчёркиваний в специальных методах?

А приватные свойства класса? Когда в коде много подчеркиваний его сложнее воспринимать.

anonymous
()

Читабельность кода скорее это дело привычки.

Maikl_NW
()
Ответ на: комментарий от anonymous

Понимаешь, я уже сказал что минус пайтона - отсутствие инструментов.
Именно отсутствие RoR-подобного фреймворка есть проблема пайтона.
И да, RoR в разы лучше Django.

tia ★
() автор топика
Ответ на: комментарий от anonymous

Что «приватные свойства класса»?
Никто не мешает использовать их без подчёркиваний.

tia ★
() автор топика
Ответ на: комментарий от vertexua

Конкретнее, с примерами, с комментариями.

tia ★
() автор топика

Я вот, против руби ничего не имею. Пусть он немножко ООП двинутый, пусть там с юникодом шероховатости, пусть стандартная библиотека не такая обширная, но если он хоть немного оттянет на себя молодежь от C++ и Qt, значит это годный, хороший язык.

baverman ★★★
()

PHP
При чём тут C++?

Потому что кресты выбирают добровольно, а PHP исходя из конъюнктуры.

Добровольно, значит ему понравилось в универе, школоло был покорен мощью и продуманностью языка, теперь нужны два-три года, чтоб он глянул на что-то другое.

А PHP выбирают из-за доступности работы на этом языке, питон и руби могут только косвенно влиять на ситуацию в этом сегменте.

Практически любой пхпэшник в итоге становится латентным рубисто-питонистом и, как итог — нашим.

baverman ★★★
()
Ответ на: комментарий от Artificial_Thought

Проблема пайтона в том, что на нём нельзя нормально генерировать код как в лиспе.

Это не проблема питона. Это проблема лисперов.

baverman ★★★
()
Ответ на: комментарий от Artificial_Thought

> Проблема пайтона в том, что на нём нельзя нормально генерировать код

Можно. eval строки еще никто не отменял.

Самый большой недостаток Питона (которого лишен Руби) заключается в полном отсутсвтии каких-либо инструментов для создания dsl'ей и метапрограммирования в целом. Плюс в Руби очень хорошо реализовано ООП, чем Питон похвастаться не может и уже видимо не сможет никогда.

tarc
()

Цель треда - выяснить настоящие проблемы пайтона относительно руби.

А тебе не похеру?

power ★
()

Мне изначально ООП в Python'е показалось сильно прикостыленным и все делается в ручную. Но потом я нашел в этом преимущество и соответствие философии языка, — код легче читать и в нем нет магии.
А идея с отступами вообще отличная, ну по крайней мере минуса в ней не вижу.
С Руби знаком только на уровне «прочел книгу», и он мне кажется чрезмерно усложненным с многими не очевидными вещами. Хотя он мне понравился тоже.

urxvt ★★★★★
()
Ответ на: комментарий от baverman

> Что это такое?

Есть много определений того что, такое метапрограммирование. Но какое ни возьми, почти наверняка выйдет что Питон МП не умеет

И какие инструменты для него нужны?

Как минимум - нормальные first-class блоки, чтобы их можно было сохранять в переменной и затем выполнять в произвольном контексте

tarc
()
Ответ на: комментарий от tarc

Плюс в Руби очень хорошо реализовано ООП, чем Питон похвастаться не может и уже видимо не сможет никогда.

Это слышал много раз, но нормального объяснения, что не так с ООП в Питоне, не слышал ни разу.

нормальные first-class блоки, чтобы их можно было сохранять в переменной и затем выполнять в произвольном контексте

def code_block(o):
    print o

# сохраняем блок кода
b = code_block

# ...

# выполняем блок кода
b()
tailgunner ★★★★★
()
Ответ на: комментарий от tarc

Во-первых, метапрограммирование в питоне таки есть, django использует его в большом количестве, например. Во-вторых, это хороший вопрос, насколько вообще необходимо метапрограммирование и DSL. Построение хорошего DSL в любом случае - сложная штука, причём далеко не 100% необходимая. Но вообще да, руби вроде как помощнее получается.

Droid790 ★
()

Руби, питон... Главное - С! (почти ©)

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от tia

>А руби выбирают, в 90% случаев, из-за готовых инструментов или по работе.

ТС


Зачем тогда спрашивал? :}

Deleted
()
Ответ на: комментарий от tarc

Но какое ни возьми, почти наверняка выйдет что Питон МП не умеет

Бла-бла-бла. Давай код, что-ли. Будем мериться.

baverman ★★★
()
Ответ на: комментарий от tarc

Зачем создавать DSL если их тысячи? Сам пайтон тоже можно отнести к DSL, если уж на то пошло.
Метапрограммирование? А чего вам лично нехватает?
В пайтоне плохое ООП? Чем? Можно конкретики? С примерами из руби, конечно.

tia ★
() автор топика
Ответ на: комментарий от archimag

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

Я считаю что руби это тот же пхп(это не сравнение, а просто указание на то, что у руби очень похожая «жизнь»): тормоза, избыточность, одна ниша. Но, конечно, это хороший язык, относительного того же пхп. Но пайтон лучше и должен встать на замену рубям.

tia ★
() автор топика
Ответ на: комментарий от urxvt

Да, в этом и суть.
Нет прибитых гвоздями реализаций всего и вся. Всё динамично, всё можно сделать так как ты хочешь или требует задача.
В Python нет интерфейсов или абстрактных классов/методов, но НА пайтоне есть интерфейсы и абстрактные классы/методы: abc, zope.interfaces.
Если abc это простейшая реализация, которая просто даёт то, что дают интерфейсы на других языках, то zope.interfaces даёт то, чего нет нигде, или где приходится писать свои костыли.

tia ★
() автор топика
Ответ на: комментарий от tarc

>Но какое ни возьми, почти наверняка выйдет что Питон МП не умеет
Ты ставишь себя выше всех? Это плохо, давай сразу с примерами.

Как минимум - нормальные first-class блоки, чтобы их можно было сохранять в переменной и затем выполнять в произвольном контексте

А ведь хороший тред, теперь я знаю что если человек ругает пайтон, то он его 100% не знает.

tia ★
() автор топика
Ответ на: комментарий от Droid790

А ведь мета-программирования в пайтоне хватает.
Но напомню, на руби всё приколочено гвоздями. В пайтоне же всё это реализовано через модули, через обычный синтаксис.
Если пайтон в чём-то и уступает руби по мета-программированию, то очень хочется узнать в чём, но на примере живого кода с комментариями.

tia ★
() автор топика
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.