The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"О языке Ruby"
Отправлено psyche, 17-Авг-08 15:37 
Насколько важна конструкция unless в Ruby? Ни насколько. Но она позволяет сделать язык более простым и выразительным. Наглядно увидеть преимущества и простоту создания макросов можно в [1], или же их первое применение в третей главе.
Я говорю о макросах, а не о конкретных фичах. Ты попросил привести пример того, что eval и method_missing недостаточны, я его привёл пример ограниченности макропрограммирование в Ruby. CAPI это не макропрограммирование.

Твои слова:
1. "Попробуйте сделать так в Scheme, там такое с лямбдой сделать нельзя: x=1; y=2; lambda{x+y}.call -> 3, x==1, y==2"

(let ((x 1) (y 2))
  ((lambda () (+ x y)))
  (and (eq? x 1) (eq? y 2)))
; > #t

2. "Куда делись объявление и передача параметров? И куда делся вообще итератор? А теперь сделайте так, с приваиванием: x=1; y=2; lambda{x=x+y}.call -> 3, x==3, y==2"

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

(let ((x 1) (y 2))
  ((lambda () (set! x (+ x y))))
  (and (eq? x 3) (eq? y 2)))
; > #t

Теперь же снова к коду на Ruby 1.8.7:
p n=3
lambda { |n| 0 }[1]
p n
# => 3\n1

lambda { |y| 0 }[1]
p y
# => undefined local variable or method `y' for main:Object (NameError)

Объясни такое поведение для Ruby 1.8.7. Почему в 1.9 оно другое? Какую парадигму использует Ruby 1.8.7? Какую парадигму использует Ruby 1.9?

Значения по умолчанию не имеют отношения ни к императивному, ни к функциональному программированию. Не пудри мне мозги словами: "API", "смесь", "ширпотрёб". Если тебе не нужны похожие возможности, то почему ты не используешь Brainfuck, который так же является Тьюринг-полным языком?

Вернёмся к началу дискуссии о множественном наследовании. Мои слова были буквально следующими: "Множественное наследование в Ruby не реализовано в чистом виде". После чего я показал, что использование примесей порождает сущности, которые не требуются при классическом множественном наследовании. Пусть, во множественном наследовании есть свои проблемы, однако Matz полностью от него отказался, хотя мог бы сочетать два подхода: иметь множественное наследование и примеси.
Сейчас же ты приведи пример, который потребует меньшего количества сущностей для реализации множественного наследования в Ruby, нежели при использовании классического множественного наследования.

Область применения языка это следствие его ограниченности. На каких важных свойствах языка Matz был сконцентрирован? Что Ruby привнёс нового в программирование?

--
[1] Peter Seibel. Practical Common Lisp. Apress. 2005
[2] The Lisp defined in McCarthy's 1960 paper. http://lib.store.yahoo.net/lib/paulgraham/jmc.lisp. Проверено 17.08.2008
[3] John McCarthy. Lisp 1.5 Programmer's Manual. M.I.T. Press. 1985.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру