Поиск:

Ответ в темуСоздание новой темы Создание опроса
> что особенного в Ruby 
V
    Опции темы
Kiorus
Дата 13.1.2005, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



задам такой же вопрос как и Kaskad, только про Ruby smile
что есть в Ruby чего нет в других языках?
и в какаих целях его применяют?
PM   Вверх
simanyay
Дата 13.1.2005, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Антон Ковалёв
****


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

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



What's Ruby
Ruby Documentation (там внизу есть статьи на эту тему)
Добавлено @ 10:01
Если есть вопросы по преимуществами в какой-то конкретной области - пиши. I'll do my best smile


--------------------
«It's better to be a pirate than to join the Navy» — Steve Jobs.
PM MAIL WWW   Вверх
MastEdm
Дата 4.1.2006, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Master
*


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

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



Из последнего: http://www.rubyonrails.com/ - перспективная разработочка
PM MAIL   Вверх
setq
Дата 6.1.2006, 00:39 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











было бы неплохо написать и прекрепить здесь обзорную статью по ключевым моментам Ruby (на русском). кто возьмётся?
  Вверх
Pete
Дата 13.1.2006, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вот здесь на русском:
http://www.chair36.msiu.ru/science/science...tml/node33.html.


--------------------
Совет учиться на ошибках других бесполезен; научиться чему-либо можно только на собственных ошибках. (Бернард Шоу)
Не откладывай на завтра то, что можешь сделать сегодня. (Пословица)
А теперь выпишем точное значение числа пи... (Препод)
Жахни, Пендальф! © Гоблин
PM   Вверх
Void
Дата 13.1.2006, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


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

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



Pete
Неплохая Ruby advocacy статья, но вот такие:
Цитата
# в Ruby, в отличие от языка Python, понятия типа и класса являются синонимами;
# Python не поддерживает наследования и не позволяет добавлять методы к существующим типам;
# расширения для Ruby, написанные на C/C++ позволяют определять новые классы;

ляпы существенно портят впечатление. Закрадываются сомнения в компетентности автора. Я это к тому, что Питон все вышеперечисленное поддерживает.

Цитата
не требует объявления переменных;

Хоть убейте, я не считаю это преимуществом для мало-мальски больших проектов smile

Это сообщение отредактировал(а) Void - 13.1.2006, 16:50


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


Шустрый
*


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

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



Цитата(Pete @ 5.1.2006,  23:49)
Код

# печатает символы введенного текста в порядке увеличения ascii-кодов через пробелы
puts gets.chop.scan(/./).sort.map{ |x| x += ' ' }.join

Две ошибки. Первая, внутри .map присваивание как козе баян. Вторая, итератор .map здесь вообще не к месту.
Код

# печатает символы введенного текста в порядке увеличения ascii-кодов через пробелы
puts gets.chomp.scan(/./).sort.join(' ')


Добавлено @ 20:21 
Цитата(Void @ 5.1.2006,  23:53)
Цитата(Pete @  6.1.2006,  01:49 Найти цитируемый пост)
лучший язык для обучения программированию

По моему скромному мнению, начинать обучение лучше со строго типизированных языков. Но это всего лишь мое мнение smile

Цитата(Pete @  6.1.2006,  01:49 Найти цитируемый пост)
Где еще вы видели, чтобы такое число хранилось в одной целочисленной переменной?

В Python, LISP, Haskell... дальше перечислять лень. Ruby хороший язык, но длинная арифметика, вшитая в язык - это не самое большое его достоинство smile

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

В Python длинная арифметика вшита через ж.... Haskell пропущу (на Ruby писать в стиле Haskell -- одно удовольствие)... про LISP можно забыть. =)

Добавлено @ 20:22 
Цитата(setq @ 6.1.2006,  00:39)
было бы неплохо написать и прекрепить здесь обзорную статью по ключевым моментам Ruby (на русском). кто возьмётся?

Иди на http://ru.wikipedia.org/wiki/Ruby и читай

Добавлено @ 20:25 
Цитата(cardinal @ 6.1.2006,  03:10)
Цитата(Pete @  5.1.2006,  21:49 Найти цитируемый пост)

Ruby — самый (на мой взгляд, да и не только мой) лучший язык для обучения программированию

ML тоже для таких целей неплох...
http://ru.wikipedia.org/wiki/%D0%A4%D1%83%...%BD%D0%B8%D0%B5

Ruby очень быстро развивается. Быстрее, чем ML. Зачем учить детей тому, что в скором времени может исчезнуть? Уж лучше Haskell... 

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


Шустрый
*


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

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



Цитата(Void @ 13.1.2006,  16:48)
Pete
Неплохая Ruby advocacy статья, но вот такие:
Цитата
# в Ruby, в отличие от языка Python, понятия типа и класса являются синонимами;
# Python не поддерживает наследования и не позволяет добавлять методы к существующим типам;
# расширения для Ruby, написанные на C/C++ позволяют определять новые классы;

ляпы существенно портят впечатление. Закрадываются сомнения в компетентности автора. Я это к тому, что Питон все вышеперечисленное поддерживает.

Цитата
не требует объявления переменных;

Хоть убейте, я не считаю это преимуществом для мало-мальски больших проектов smile

Пример в студию. Хочу посмотреть как в Пайтон'е можно добавить метод к челым числам, без создания нового класса. Или как добавить метод к строке "Hello", без порождения нового класса?

Добавляем метод к целым числам без порождения нового класса:
Код

p 5.meTog   #-> ошибка

class Integer
   def meTog
      self ** 2
   end
end

p 5.meTog    #-> 25


Добавляем новый метод к строке "Hello", без порождения нового класса.

Код

cTpoka = "Hello'

def cTpoka.meTog
   self + ' ' + self
end

p cTpoka.meTog   #-> "Hello Hello"


По поводу объявления переменных. Где присваивание, там и объяввление переменной. А вот до начала написания программы знать имена всех необходимых тебе переменных и пролистывать код каждый раз, когда понадобится еще одна -- это маразм XX века. Кстати, большинство моих программ на Ruby замечательно обходятся без переменных. Не веришь? Смотри выше... =)

ЗЫ. ООП в Ruby идеально! В Python же... ладно, пока промолчу. Подожду примеров (с передачей self в качестве параметра). =)

Добавлено @ 20:46 
Цитата(Void @ 15.1.2006,  02:04)
pattern-matching не на уровне регулярных выражений, а на уровне любых значений и типов. Сюда же приплюсуем рекурсивные и алгебраические (вариантные) типы.

Mi ne comprenas vin. По русски говори (код в студию). Что-то я такого безобразия на Haskell не припоминаю... 
PM MAIL   Вверх
Void
Дата 7.6.2006, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


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

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



Цитата(Rubynovich @  7.6.2006,  22:37 Найти цитируемый пост)
Хочу посмотреть как в Пайтон'е можно добавить метод к челым числам, без создания нового класса.

Никак. Я процитировал пункт «Python не поддерживает наследования», что есть явный бред.

Цитата(Rubynovich @  7.6.2006,  22:17 Найти цитируемый пост)
Зачем учить детей тому, что в скором времени может исчезнуть?

ML исчезнет? С какой радости? Применение ML-оидов невелико, но уменьшаться оно не собирается. Особо увеличиваться, впрочем тоже. Я не за ML для обучения, но хоронить его не стоит.

Цитата(Rubynovich @  7.6.2006,  22:37 Найти цитируемый пост)
pattern-matching не на уровне регулярных выражений, а на уровне любых значений и типов. Сюда же приплюсуем рекурсивные и алгебраические (вариантные) типы.

Mi ne comprenas vin. По русски говори (код в студию). Что-то я такого безобразия на Haskell не припоминаю...  

http://en.wikipedia.org/wiki/Pattern_matching
http://en.wikipedia.org/wiki/Algebraic_datatype
Код
data BTree a = Nil | Node a (BTree a) (BTree a)

mem :: (Ord a) => BTree a -> a -> Bool

mem Nil _ = False
mem (Node x left right) elt =
    | elt == x = True
    | elt < x = mem left elt
    | otherwise = mem right elt

OCaml:
Код
type 'a btree = Nil | Node of 'a * 'a btree * 'a btree

let rec mem tree elt =
    match tree with
    | Nil -> false
    | Node(x, _, _) when elt = x -> true
    | Node(x, left, right) -> mem (if elt < x then left else right) elt

Понятнее стало?

И давайте без фанатизма. Для holywars и соответствующего тона у нас специальный раздел есть.

Добавлено @ 21:30 
Цитата(Rubynovich @  7.6.2006,  22:37 Найти цитируемый пост)
А вот до начала написания программы знать имена всех необходимых тебе переменных и пролистывать код каждый раз, когда понадобится еще одна -- это маразм XX века. 

Полностью согласен. И где же такая фигня наблюдается? smile 

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


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


Шустрый
*


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

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



Если я правильно понял, то задается некоторая структура (шаблон) объекта и проводится проверка вида "соответствует ли объект указанной структуре?"

Честно говоря, даже не очень понимаю как это можно применить на практике... Ну в Haskell оно понятно... а вот в Ruby? Скорее всего, это будет реализовываться дописыванием методов вида .nil? .array? .string? .tree? Кода будет примерно столько же... =)

Не об исчезновении я говорю, а о забвении. Все концептуальные языки программирования чаще всего остаются малоизвестными. Ruby в этом смысле не повезло. Какой-то ..... написал RoR. Хорошо, что не все догадываются, что RoR != Ruby.
 
По поводу переменных... Во всяких там Паскалях и Сях. Как вспомню... программы по 10 тыс. строк кода. Несколько экранов переменных с неудобоваримыми именами. Лучше писать программы без переменных, циклов и условных операторов. Ошибок меньше на порядок получается. И не надо думать о том, что объявлять, а что нет. 

Когда начинал программировать на Ruby, то думал, что отсутствие типа у переменных будет мне мешать. Но потом привыкаешь. В Ruby нет такого маразма, как в PHP, что переменная может возникнуть из пустоты (без присваивания). Если переменной не присвоено значение, то она равняется nil, а у nil практически нет методов. "Утиный контроль" хватает эту ошибку во время первого же запуска. Это не привычно поначалу, но потом перестаешь обращать на это внимание.

ЗЫ. Кстати, почти вернулись к певоначальной теме.   

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


λcat.lolcat
****


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

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



Цитата(Rubynovich @  7.6.2006,  23:47 Найти цитируемый пост)
Если я правильно понял, то задается некоторая структура (шаблон) объекта и проводится проверка вида "соответствует ли объект указанной структуре?"

Ага.
Цитата(Rubynovich @  7.6.2006,  23:47 Найти цитируемый пост)
Скорее всего, это будет реализовываться дописыванием методов вида .nil? .array? .string? .tree? Кода будет примерно столько же... =)

Вот такую вещь на Ruby изображали smile
Цитата(Rubynovich @  7.6.2006,  23:47 Найти цитируемый пост)
Во всяких там Паскалях и Сях.

Ну мы же про нормальные высокоуровневые языки говорим smile Вывод типов прекрасно решает любые проблемы с объявлением переменных. Не всегда можно отличить на глаз код с выводом типов и код на динамически типизированном языке.
Цитата(Rubynovich @  7.6.2006,  23:47 Найти цитируемый пост)
Не об исчезновении я говорю, а о забвении. Все концептуальные языки программирования чаще всего остаются малоизвестными.

Все таки малоизвестность и забвение — разные вещи. Из «концептуальных языков» многое потихоньку уползает в мэйнстрим. 


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


Шустрый
*


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

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



Цитата(Void @ 7.6.2006,  21:58)
Цитата(Rubynovich @  7.6.2006,  23:47 Найти цитируемый пост)
Скорее всего, это будет реализовываться дописыванием методов вида .nil? .array? .string? .tree? Кода будет примерно столько же... =)

Вот такую вещь на Ruby изображали smile
Цитата(Rubynovich @  7.6.2006,  23:47 Найти цитируемый пост)
Во всяких там Паскалях и Сях.

Ну мы же про нормальные высокоуровневые языки говорим smile Вывод типов прекрасно решает любые проблемы с объявлением переменных. Не всегда можно отличить на глаз код с выводом типов и код на динамически типизированном языке.
Цитата(Rubynovich @  7.6.2006,  23:47 Найти цитируемый пост)
Не об исчезновении я говорю, а о забвении. Все концептуальные языки программирования чаще всего остаются малоизвестными.

Все таки малоизвестность и забвение — разные вещи. Из «концептуальных языков» многое потихоньку уползает в мэйнстрим.

Метод multi -- это конечно круто, но не Ruby like. =) Вряд ли его кто-то будет так использовать... кроме мигрантов со всяких там Haskell.

"Вывод типов" -- это что-то типа этого?
Код

p "Hello!".class     #-> String


В Ruby только одна опасность: переменные не имеют типа (точнее у них у всех тип "ссылка на объект") и появляется соблазн второго присваивания (причем с другим типом). Вот тогда и может возникнуть косяк. Если этого не делать, то привязка переменной к типу и не потребуется. 
PM MAIL   Вверх
Void
Дата 7.6.2006, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


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

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



Цитата(Rubynovich @  8.6.2006,  00:16 Найти цитируемый пост)
"Вывод типов" -- это что-то типа этого?

Нет. Это когда типы переменных не декларируются явно, но статически определяются на этапе компиляции из контекста использования.

Ну и вообще: http://en.wikipedia.org/wiki/Type_inference smile 


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


Антон Ковалёв
****


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

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



По поводу забвений. Вы всё ещё хотите найти язык, который будет служить вам вечно? Всё в этой жизни — временные увлечения


--------------------
«It's better to be a pirate than to join the Navy» — Steve Jobs.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby: Общие вопросы"
source777
  • С чего начать? начинаем
  • Ссылки на полезные ресурсы смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

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

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


 




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


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

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