Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ruby и Python, Сравнение, а не holy war 
V
    Опции темы
slav0nic
Дата 7.6.2006, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 17.5.2006

Репутация: нет
Всего: 5



чем Ruby лучше Python? B)
скоростью? - no
возможностями? - no
лёгкостью и простотой? - такой же
поддержкой? - неа
....

найдите "характеристику" с положительным реультатом) я не вижу их, наверно потому что на кодю на ру 
ещё убивают всякие do end и тп аля паскаль (опять наверно потомучто я больше С уважаю=) ) 

Это сообщение отредактировал(а) slav0nic - 7.6.2006, 22:43
--------------------
                                 python.com.ua 
PM MAIL WWW Jabber   Вверх
Void
Дата 7.6.2006, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 1
Всего: 173



Цитата(slav0nic @  8.6.2006,  00:40 Найти цитируемый пост)
скоростью? - no

Вообще-то скорее yes. Потому как в Python байткод, а в Ruby, если я не ошибаюсь, его только обещают к 1.9.

Знаю, что в приличном обществе не принято ссылаться на этот ресурс, но все же smile
Computer Language Shootout


Oops, перепутал позицию slav0nic smile 

Это сообщение отредактировал(а) Void - 7.6.2006, 22:46


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Rubynovich
Дата 7.6.2006, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 7.6.2006

Репутация: 3
Всего: 3



Цитата(slav0nic @ 7.6.2006,  22:40)
чем Ruby лучше Python? B)
скоростью? - no
возможностями? - no
лёгкостью и простотой? - такой же
поддержкой? - неа
....

найдите "характеристику" с положительным реультатом) я не вижу их, наверно потому что на кодю на ру

скорость чего? Скорость разработки -- выше. Большинство задач решается "в одну строчку", что в условиях Python невозможно, сам знаешь почему. =) Скорость выполнения -- сопоставима (где-то выше, где-то ниже).

возможностями - был пример выше, по поводу наращивания втроенных классов. Посмотри внимательней. Замыкания в Python есть?

легкость и простота скорее выше. Ruby создает ощущение "продуманности до мелочей", а в Python: "ООП сюда вчера добавили?" Python'овский self в качестве параметра -- притча во языцах.

какая поддержка тебя интересует? Документация? Семминары? Библиотеки? Хостинг? 
PM MAIL   Вверх
Void
Дата 7.6.2006, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 1
Всего: 173



Цитата(Rubynovich @  8.6.2006,  00:50 Найти цитируемый пост)
Замыкания в Python есть?

Таки да.

Добавлено @ 22:53 
P.S.
Вот только Ruby vs Python нам не хватало. 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Rubynovich
Дата 7.6.2006, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 7.6.2006

Репутация: 3
Всего: 3



Цитата(Void @ 7.6.2006,  22:45)
Цитата(slav0nic @  8.6.2006,  00:40 Найти цитируемый пост)
скоростью? - no

Вообще-то скорее yes. Потому как в Python байткод, а в Ruby, если я не ошибаюсь, его только обещают к 1.9.

Знаю, что в приличном обществе не принято ссылаться на этот ресурс, но все же smile
Computer Language Shootout


Oops, перепутал позицию slav0nic smile

Мы о языке говорим или о его реализации? Есть два проекта Rite и Ruby 2.0. Развиваются они параллельно и имеют разные цели. Ruby 1.9 -- это мусорка для обкатки идей обоих проектов. Rite будет компилироваться в байт-код (Parrot?), а Ruby 2.0 останется интерпретируемым. На данном этапе Rite не развивается, т.к. всем лень (ждут Parrot?). =) Помимо Rite есть еще вагон и маленькая тележка всяких компиляторов. Но о них мало кому известно.

Если вам нужна производительность, пишите на Си. Если нужна скорость создания приложений и удовольствие от программирования, то обратите внимание на Ruby. 

ЗЫ. Ruby 1.9 уже есть. Это нестабильная ветка проекта Ruby 2.0.

Добавлено @ 23:03 
Цитата(Void @ 7.6.2006,  22:52)
Цитата(Rubynovich @  8.6.2006,  00:50 Найти цитируемый пост)
Замыкания в Python есть?

Таки да.

Добавлено @ 22:53 
P.S.
Вот только Ruby vs Python нам не хватало.

Ну а показать? 
PM MAIL   Вверх
Void
Дата 7.6.2006, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 1
Всего: 173



Цитата(Rubynovich @  8.6.2006,  01:02 Найти цитируемый пост)
Ну а показать?  

Код
def foo(a, n):
    return map(lambda x: x + n, a) # anoynomous function using free variable

>>> foo([1, 2, 3], 1)
 2 3 4

def adder(n):
    def inner(x):
        return x + n # here we use n from enclosing scope
    return inner

>>> adder(2)(3)
 5

Синтаксис громоздкий конечно, но замыкания есть.

К сожалению, GvR собирается убрать lambda из Python 3. Дескать, вложенных функций достаточно. Жаль. 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Rubynovich
Дата 7.6.2006, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 7.6.2006

Репутация: 3
Всего: 3



Цитата(Void @ 7.6.2006,  23:14)
Цитата(Rubynovich @  8.6.2006,  01:02 Найти цитируемый пост)
Ну а показать?  

Код
def foo(a, n):
    return map(lambda x: x + n, a) # anoynomous function using free variable

>>> foo([1, 2, 3], 1)
 2 3 4

def adder(n):
    def inner(x):
        return x + n # here we use n from enclosing scope
    return inner

>>> adder(2)(3)
 5

Синтаксис громоздкий конечно, но замыкания есть.

К сожалению, GvR собирается убрать lambda из Python 3. Дескать, вложенных функций достаточно. Жаль.

Я уже посмотрел... =) Вместо a.map{ |x| x+n } на Ruby, приходится писать map( lambda x: x + n, a). Это к вопросу об "ООП вчера добавили?" =)

ЗЫ. Блин, а ведь знал же про замыкания в Python... за три года забыть успел. 
PM MAIL   Вверх
Void
Дата 7.6.2006, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 1
Всего: 173



Цитата(Rubynovich @  8.6.2006,  01:30 Найти цитируемый пост)
Вместо a.map{ |x| x+n } на Ruby, приходится писать map( lambda x: x + n, a).

Ужас! В Ruby пришлось написать на целый символ больше, чем в Haskell
map \x -> x + n a
А в OCaml?
map ((+) n) a
(Пардон, не помню, как карринг операторов в Haskell выглядит).
Мы-то знаем, что счастье не в минимальном количестве символов. А то бы все давно перешли на J или K smile

Хотя в Python синтаксис далек конечно от идеального. По поводу его лямбд в c.l.functional недавно флеймище был.

Добавлено @ 23:47 
P.S. Не оверквоть, пожалуйста. 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
slav0nic
Дата 7.6.2006, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 17.5.2006

Репутация: нет
Всего: 5



Цитата
...Большинство задач решается "в одну строчку", что в условиях Python невозможно

 smile 

Void, а в споре рождается истина=) (я по поводу ...vs...) просто интересно узнать, зачем ещё один скриптовый язык  
--------------------
                                 python.com.ua 
PM MAIL WWW Jabber   Вверх
Rubynovich
Дата 7.6.2006, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 7.6.2006

Репутация: 3
Всего: 3



Нашел сравнение производительности Python vs Ruby: http://ruby.brian-schroeder.de/editierdistanz/ . Программы писал явный сторонник, т.к. первое, что делает программист на Ruby -- это отключает автоматическую сборку мусора (GC.disable). Результаты и так различаются не сильно, а с отключенной сборкой мусора будут одинаковыми. Была статья Роганова Е.А. под названием "Кто хочет конфетку?" Вот там первый, кто заработал конфетку, был студент, который отключил сборку мусора. В МГИУ как раз и занимаются тем, что пытаются ускорить код на Ruby. Для меня это кощунство, а им нравится. =)

PS. Ссылку на статью не нашел, но читал ее в МГИУ (Роганова Н.А. показывала). Если кто найдет, скиньте.

Добавлено @ 23:56 
Цитата(slav0nic @ 7.6.2006,  23:47)
Цитата
...Большинство задач решается "в одну строчку", что в условиях Python невозможно

 smile 

Void, а в споре рождается истина=) (я по поводу ...vs...) просто интересно узнать, зачем ещё один скриптовый язык

Каждый язык на протяжении своего развития тянет за собой длинный шлейф архитектурных ошибок, от которых не просто избавиться. Появление новых языков позволяет от этих ошибок избавиться. Я всегда характеризую Python как "процедурный Ruby". Они похожи до безобразия, но в Ruby практически идеальная реализация ООП (за счет того, что Ruby изначально ООП). Мне "процедурный стиль" надоел. Поэтому, миграции на Python не получилось. 
PM MAIL   Вверх
Void
Дата 8.6.2006, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 1
Всего: 173



Цитата(Rubynovich @  8.6.2006,  01:52 Найти цитируемый пост)
первое, что делает программист на Ruby -- это отключает автоматическую сборку мусора (GC.disable)

И кто за памятью следить будет? Ну для одноразового быстро выполняющегося скрипта это быть может еще и позволительно.
Это надо понимать, как признание того, что GC в Ruby кривой? Потому что временн́ой оверхед на сборку мусора, скажем, в .NET стремится к нулю. 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Rubynovich
Дата 8.6.2006, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 7.6.2006

Репутация: 3
Всего: 3



Цитата(Void @ 8.6.2006,  00:01)
И кто за памятью следить будет? Ну для одноразового быстро выполняющегося скрипта это быть может еще и позволительно.
Это надо понимать, как признание того, что GC в Ruby кривой? Потому что временн́ой оверхед на сборку мусора, скажем, в .NET стремится к нулю.

Это просто указание на то, что взят код на Python и однозначно перенесен на Ruby (без оптимизации и учета особенностей). Просто, GC пожирает время, которое можно сократить за счет его отключения. Команду return тоже не используют (а она съедает время). В общем, есть масса вещей, которые позволят свести код от "переделки с Python" к нормальному коду на Ruby. И тогда еще не известно "чье конг-фу круче".  

Это сообщение отредактировал(а) Rubynovich - 8.6.2006, 00:09
PM MAIL   Вверх
Void
Дата 8.6.2006, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 1
Всего: 173



Цитата(Rubynovich @  8.6.2006,  02:08 Найти цитируемый пост)
Просто, GC пожирает время, которое можно сократить за счет его отключения. 

Ну не должен нормальный GC (mark&sweep generational, а не ref counting с разрывом циклов) пожирать время. Не должен. Если у Ruby и Python такая реализация GC, это их проблемы, а не повод сваливать управление памятью на непонятно кого.
К тому же в Python-то его не отключают, с какой радости в Ruby это надо делать.
Цитата(Rubynovich @  8.6.2006,  02:08 Найти цитируемый пост)
В общем, есть масса вещей, которые позволят свести код от "переделки с Python" к нормальному коду на Ruby. 

Это понятно. 

Это сообщение отредактировал(а) Void - 8.6.2006, 00:20


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Rubynovich
Дата 8.6.2006, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 7.6.2006

Репутация: 3
Всего: 3



Цитата(Void @ 8.6.2006,  00:18)
Ну не должен нормальный GC (mark&sweep generational, а не ref counting с разрывом циклов) пожирать время. Не должен. Если у Ruby и Python такая реализация GC, это их проблемы, а не повод сваливать управление памятью на непонятно кого.
К тому же в Python-то его не отключают, с какой радости в Ruby это надо делать.

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

Лично я таким маразмом, как оптимизация быстродействия кода на Ruby не занимался (оптимизация быстродействия -- это всегда потеря выразительности кода). Я просто знаю, что он будет всегда медленней того же кода на Си. Это жертва за его возможности и рюшечки.

Рано или поздно, вопрос быстродействия потеряет актуальность. Иначе, почему все больше языков используют интерпретатор?

ЗЫ. Вопрос о быстродействии языков абсурден, т.к. на листке бумаги все программы работают одинаково (никак). И вот тут как раз нужна немногословность, выразительность, скорость написания. Вот здесь уже может идти речь о языке. Такого понятия как скорость работы у языка просто нет. 
PM MAIL   Вверх
Void
Дата 8.6.2006, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 1
Всего: 173



Цитата(Rubynovich @  8.6.2006,  19:55 Найти цитируемый пост)
оптимизация быстродействия -- это всегда потеря выразительности кода

Алгоритмической оптимизацией тоже? Предпочтешь O(N^2) алгоритм в две строчки более громоздкому O(N * log(N))? smile
Цитата(Rubynovich @  8.6.2006,  19:55 Найти цитируемый пост)
Рано или поздно, вопрос быстродействия потеряет актуальность.

Не везде.

Давай закончим флейм о быстродействии. Я не говорю, что Ruby плох. Скорость работы Ruby не является фатальным недостатком для типичных сценариев ее применения. Надо будет — подтянут еще немного. Надо будет еще больше — FFI, надеюсь, никто не отменял. 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby: Общие вопросы"
source777
  • С чего начать? начинаем
  • Ссылки на полезные ресурсы смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0912 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.