Поиск:

Ответ в темуСоздание новой темы Создание опроса
> 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   Вверх
Rubynovich
Дата 8.6.2006, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

Алгоритмической оптимизацией тоже? Предпочтешь O(N^2) алгоритм в две строчки более громоздкому O(N * log(N))? smile

Без раздумий предпочту O(N**2) в одну строчку. Раньше, для меня это было кощунством, но теперь стал понимать, что все равно 100 раз переделывать. Проще будет переписать одну строчку, чем двадцать.  

Оптимизировать можно после сдачи проекта и за отдельную плату. =) 

Это сообщение отредактировал(а) Rubynovich - 8.6.2006, 18:25
PM MAIL   Вверх
Cr@$h
Дата 24.8.2006, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

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




M
Cr@$h
Тема выделена из разговора об особенностях Ruby.

PM MAIL ICQ   Вверх
Амортизатор2
Дата 16.12.2006, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



лямду собираются убирать? кому оно мешало? еще один шаг в сторону от лиспа...
PM MAIL   Вверх
cherep
Дата 16.12.2006, 04:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 11.1.2006
Где: Москва

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



Лямду не уберут! На гугловской презентации Python3000 Гвидо дал однозначно понять, что он оставит лямбду!

Теперь немного по теме сабжа. Я знакомился с языками по пути Pascal - C - Java - PHP - Perl - Python - Ruby - ...
Вероятно, очевидно, что мой выбор - Python. Перл был очень гибкий, но при этом довольно "страшненький". После Java'ы в Perl'е не хватало нормального человеческого ООП. Работа с хэшами и массивами была отнюдь не так очевидна как в питоне.  Вобщем попав на Python, выучил его на одном дыхании. В нем было все что нужно и главное все было понятно! Поизучав Руби, не нашел чего-то такого, той изюминки, способной пересадить на него. 
В питоне же таких изюминок целых несколько. 
1) Его синтаксис, делающий его пожалуй самым читабельным языком 
2) Очень четкие принципы, заложенные в язык (Zen of Python), и одновременно являющиеся рекомендациями к тому, как писать программы. Надо сказать, очень правильные рекомендации. Еще очень отрадно, что создатель языка (Гвидо ван Россум) принимает самое активное участие в развитии языка, более того, его слово является решающим, правда, не знаю про Matz'а.
Конечно есть такое чувство, что Ruby в каком-то роде более целостный чем Python. Например в Python'е различие классов и типов (последние нельзя менять), немногострочная лямбда. Однако все это мелочи, ибо первое - практически никак не сказывается на практике, а второе не нужно ввиду вышеупомянутой идеологии языка. self - это вовсе не проблема, это лишь отражение того, что explicit is better than implicit. Кстати, в пайтоне возможно множественное наследование, чего в руби нет.
В руби понравились блоки. Жаль только что методу можно передавать только 1 блок. Ведь в smalltalk'е можно было сколько угодно smile. Да и вообще smalltalk более ООП чем руби smile Блин, отвлекся... В пайтоне есть генераторы с yield, но используются они гораздо реже.
Решающими фактороми были, впрочем, распространенность языка и библиотек и более развитая инфраструктура.
А вообще выбор языка - это дело совершенно личное. Если ваш язык вас устраивает, и вы на нем продуктивны - я только рад за вас. Думаю, перловщики с удовольствием перейдут на Ruby. Много языков - это не плохо. Ибо из конкуренции появляется качество smile
 
PM MAIL WWW ICQ   Вверх
Амортизатор2
Дата 7.3.2007, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(cherep @  16.12.2006,  04:37 Найти цитируемый пост)
Да и вообще smalltalk более ООП чем руби



Не скажи. В Smalltalke квалификатор private для методов чисто фиктивный, т е он не запрещает вызов private-метода. По крайней мере так было в VA лет 6 назад, когда я его смотрел. Также отсутствует квалификатор  protected, это вообще ужас - на каждом шагу нужно делать закрытые от прямого вызова методы, которые будут наследоваться. Все это говорит о том, что в Smalltalk нарушена инкапсуляция - один из 3 основных критериев ООП.

Это сообщение отредактировал(а) Амортизатор2 - 7.3.2007, 21:03
PM MAIL   Вверх
FunnyFalcon
Дата 9.3.2007, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

 Все это говорит о том, что в Smalltalk нарушена инкапсуляция - один из 3 основных критериев ООП.

Хммм....
Вопрос ведь не в языке - в любом языке можно извратиться и вызвать защищенный метод, хотя бы исправив *.h :-)
А данные принципы (инкапсуляция, полиморфизм, наследование) были сформулированы позднее, чем появился Smalltalk

К тому же, согласно одному из определений:
Цитата

Инкапсуляция (encapsulation) - это механизм, который объединяет данные и код, манипулирующий этими данными, а также защищает и то, и другое от внешнего вмешательства или неправильного использования. (http://www.codenet.ru/progr/cpp/ipn.php)

Таким образом, Smalltalk реализует инкапсуляцию в части объединения данных и кода, и делает это получше, чем С++ :-)
PM MAIL   Вверх
Амортизатор2
Дата 10.3.2007, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



FunnyFalcon, все-таки отсутствие закрытых методов уменьшает инкапсуляцию.

Smalltalk более ООП по сравнению с другими языками, т к в нем все есть объекты - даже куски кода. Но на практики это сомнительное преимущество.


PM MAIL   Вверх
max_lapshin
Дата 16.3.2007, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Амортизатор2 @ 10.3.2007,  12:50)
Но на практики это сомнительное преимущество.

Сомнительное лично для вас? Тогда советую почитать хорошую литературу про использование ООП.
Вся эта макулатура типа «профессиональное программирование на С++», конечно же яйца выеденного не стоит. Действительно книги про использование ООП - это, например, Рефакторинг кода Фаулера
PM MAIL WWW ICQ Jabber   Вверх
cherep
Дата 21.3.2007, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 11.1.2006
Где: Москва

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



Амортизатор2, про квалификаторы в Смолтоке вы верно подметили, мне после жавы их очень не хватает (курочу Squeak на досуге) и не только в смоллтолке но и в питоне...
Тут вот была интересная дискуссия на тему квалификаторов в контексте Смолтока, я там как раз отписался (ник xonix).
PM MAIL WWW ICQ   Вверх
JUmPER
Дата 15.6.2007, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(cherep @  16.12.2006,  04:37 Найти цитируемый пост)
Кстати, в пайтоне возможно множественное наследование, чего в руби нет

есть mixin'ы
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной
PM MAIL   Вверх
Daevaorn
Дата 16.6.2007, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

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



Цитата(Rubynovich @  7.6.2006,  23:50 Найти цитируемый пост)
Скорость выполнения -- сопоставима (где-то выше, где-то ниже).

http://shootout.alioth.debian.org/debian/b...&lang2=ruby
PM MAIL WWW   Вверх
FunnyFalcon
Дата 19.6.2007, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(JUmPER @  15.6.2007,  15:04 Найти цитируемый пост)
Цитата(cherep @  16.12.2006,  04:37 Найти цитируемый пост)
Кстати, в пайтоне возможно множественное наследование, чего в руби нет

есть mixin'ы 

+1
Не берусь утверждать, но по-моему множественное наследование используется в основном в качестве mixin.

Вопрос: кто когда вообще использовал множественное наследование не в качестве mixin?
И, если использовал, нельзя ли было обойтись в этом случае mixin? Какие преимущества у того и другого подхода?
PM MAIL   Вверх
JUmPER
Дата 2.7.2007, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(FunnyFalcon @  19.6.2007,  11:43 Найти цитируемый пост)
Какие преимущества у того и другого подхода?

считается, что у другого подхода есть только недостатки, а именно:
- неясность структуры
- возможные проблемы с именами членов
- сложность реализации
и т.д.
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной
PM MAIL   Вверх
setq
Дата 2.7.2007, 19:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Уточните)
  Вверх
JUmPER
Дата 3.7.2007, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



из Вики:
Цитата

Множественное наследование — потенциальный источник ошибок, которые могут возникнуть из-за наличия одинаковых имен методов в предках. В языках, которые позиционируются как наследники C++ (Java, C# и др.), от множественного наследования было решено отказаться в пользу интерфейсов. Множественное наследование поддерживается в языке UML.

Большинство современных объектно-ориентированных языков программирования (C#, Java, Delphi и др.) поддерживает возможность одновременно наследоваться от класса-предка и реализовать методы нескольких интерфейсов одним классом. Этот механизм позволяет во многом заменить множественное наследование — методы интерфейсов необходимо переопределять явно, что исключает ошибки при наследовании функциональности одинаковых методов различных классов-предков.

Цитата

It is often criticized for increased complexity and ambiguity, as well as versioning and maintenance problems it can cause (often summarized as the diamond problem).[1] Detractors also point out multiple inheritance implementation problems such as not being able to explicitly inherit from multiple classes and the order of inheritance changing class semantics. There are languages that address all technical issues of multiple inheritance, but the main debate remains whether implementing and using multiple inheritance is easier than using single inheritance and software design patterns.

--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной
PM MAIL   Вверх
lorien
Дата 8.7.2007, 03:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я пару месяцев назад хотел поковырять Ruby On Rails. Ествестенно, начал с изучения Ruby. Прочитав полкнижки (в основном про синтаксис и идиомы языка), что-либо дальше учить расхотелось, ибо от Ruby сильно так попахивает перлом, который снискал славу "write only language".
Конечно, это дело вкуса, на каком языке писать. Так вот на мой вкус python рулит, руби курит в сторонке. Это по части синтаксиса...
По части библиотек, написанных для языка, я таки тоже думаю, что руби курит.
PM WWW   Вверх
Wowa
Дата 11.7.2007, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

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



Время программы на  компьтеров не важно. Важно время жизни.
PM WWW   Вверх
kronos_vano
Дата 16.7.2007, 01:22 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Мне не понравился Питон сразу же из за того что заставил табы делать и дальше хелло ворлд дело не ушло, а рубю полюбил по мне так лучше str.length чем len(str). )
PM MAIL   Вверх
FunnyFalcon
Дата 24.7.2007, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(kronos_vano @  16.7.2007,  01:22 Найти цитируемый пост)
по мне так лучше str.length чем len(str)

+1
PM MAIL   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby: Общие вопросы"
source777
  • С чего начать? начинаем
  • Ссылки на полезные ресурсы смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

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

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


 




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


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

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