Обсуждение:Ruby: различия между версиями

Содержимое страницы недоступно на других языках.
Материал из Викиучебника — открытых книг для открытого мира
Содержимое удалено Содержимое добавлено
Нет описания правки
Строка 1: Строка 1:
== "Улыбок тебе дед Макар" ==
Вы меня извините, я ломал язык читая этот хакерский язык (в названии переменных), но вот когда нашёл предложение сделать reverse на фразу "Улыбок тебе дед Макар", мне показалось это слишком! Это учебник или что? вы бы ещё Падонский сленг начали использовать. Очень разочаровало меня это. =( Предлагаю убрать данный пример в ввиду его некультурности! [[Участник:Шугард|Шугард]]
==Форум==
==Форум==
Подскажите пожалуйста форумы где ответят на вопросы связанные с программированием на Ruby )). Тольк кроме http://rubyclub.com.ua/ там я был, но токо не вкурил в какую ветку свой вопрос писать (по потокам вопрос).
Подскажите пожалуйста форумы где ответят на вопросы связанные с программированием на Ruby )). Тольк кроме http://rubyclub.com.ua/ там я был, но токо не вкурил в какую ветку свой вопрос писать (по потокам вопрос).

Версия от 21:01, 23 апреля 2007

"Улыбок тебе дед Макар"

Вы меня извините, я ломал язык читая этот хакерский язык (в названии переменных), но вот когда нашёл предложение сделать reverse на фразу "Улыбок тебе дед Макар", мне показалось это слишком! Это учебник или что? вы бы ещё Падонский сленг начали использовать. Очень разочаровало меня это. =( Предлагаю убрать данный пример в ввиду его некультурности! Шугард

Форум

Подскажите пожалуйста форумы где ответят на вопросы связанные с программированием на Ruby )). Тольк кроме http://rubyclub.com.ua/ там я был, но токо не вкурил в какую ветку свой вопрос писать (по потокам вопрос).

RE: Сейчас изменил уже первую страницу так что можешь постить может уже вкуришь.

Нет книг

Ссылки на рускоязычные книги ведут в никуда :(

Исправил. «Yandex — найдется все!» =) Rubynovich

Квантификатор или квантор?

Есть подозрение, что это не одно и то же. Квантификатор взят из лингвистики, а квантор из логических высказываний. К тому же, в качестве кванторов в Ruby реализованы методы-итераторы .all? и .any?. --Rubynovich 14:34, 4 августа 2006 (UTC)[ответить]

Квантификацияангл. → — общее понятие, означающее лишь «дачу количественной оценки». То, что в лингвистике он назван «квантификатором», свидетельствует о плохой лингвистической способности отечественных лингвистов :-) В польском, например, квантор в логике тоже уродливо назван «квантификатором», так что всё это одно. Давай выберем правильный вариант словесного заимствования. Ramir 04:13, 5 августа 2006 (UTC)[ответить]
Правильней было бы оставить квантор. Но тогда необходимо как-то объяснять, что квантор в Ruby — .any? и .all?, а в языке правил — {m,n}.Rubynovich 16:26, 14 августа 2006 (UTC)[ответить]
Эй, так .any? — это вовсе даже не эквивалент логического квантора всеобщности! Да и в оригинале он не зовётся “quantificator”’ом, так что нет тут путаницы, .all? — это лишь метод, но не квантор. Ramir 21:12, 14 августа 2006 (UTC)[ответить]
quantifier 1) логика квантор 2) квантификатор ( слово для обозначения количественных отношений ) / Lingvo 10 Rubynovich 21:02, 31 октября 2006 (UTC)[ответить]

Способы создания массива

Поясните, пожалуйста, как работает метод new для массива:

 
Array.new( 6 ){ |index| index + 1 }   #-> [1,2,3,4,5,6]

--HenryS 18:46, 1 июля 2006 (UTC)[ответить]

тоже самое, что

(0...6).map{ |index| index + 1 }

Rubynovich 18:44, 4 июля 2006 (UTC)[ответить]

Логический тип

Обьясните, пожалуйста, операцию ^ (или-не)

не ( А или Б) Ramir 05:25, 1 июля 2006 (UTC)[ответить]
Это было неили, а не иск-или, так что я тут был неправ. Ramir 04:05, 2 июля 2006 (UTC)[ответить]
если A != Б, то true. Иначе, false Rubynovich 14:02, 1 июля 2006 (UTC)[ответить]
Вот тест:
irb(main):012:0> a=false
=> false
irb(main):013:0> b=false
=> false
irb(main):014:0> p a^b
false
=> nil

Хотя а=b

OK. Я проверил на тестах. Это хорошо известное ИСКЛЮЧАЮЩЕЕ ИЛИ: Либо А, либо Б, но не оба сразу.
Побитовое =)
a=2
b=1
p( a^b )

Самое забавное, что информации о нем нигде нету.

Rubynovich 18:48, 4 июля 2006 (UTC)[ответить]

Интерпретатор

Я думаю, что обучение с самого начала пойдет быстрее и веселее, если сразу после того, как ученик обрел уверенность в том, что он смог написать программу "Привет Мир!" и может хранить и изменять ее, познакомить с интерактивными Руби: irb и сетевой http://tryruby.hobix.com. Вы описали это в "Установках", но не всякий прочтет. Я думаю, что подавляющее число упражнений нужно делать на интерпретаторе.  — Эта реплика добавлена участником HenryS (о · в)

Прошу все предложения не расписывать тут, а вносить сразу в учебник так, как кажется пригодным. Всё равно ведь время тратишь идя сюда, размовляя-предлагая. Не предлагай, а сразу и смело редактируй — принцип работы в вики. Если соавторам внесённое покажется ненужным вообще, — удалят, если захотят дополнить/поправить — поправят. Ramir 05:30, 1 июля 2006 (UTC)[ответить]

Начало работы

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

  • Глава 2.1. Начало работы
    • В каком фолдере (директории) должна находится программа?
    • В какой кодировке должна быть написана программа?

Наверняка - это настраиваемые параметры, поэтому в данной главе лучше просто указать те значения, которые приняты по умолчанию, а в одной из последующих - продвинутых - глав, рассказать о этих настройках. Из главы "Начало работы" я бы дал ссылку на информацию oб этих настройках, т.к. у некоторых могут быть трудности с использованием умолчаний (напр. Руби на специальном драйве и т.п.)
Жду ответов на мои вопросы. (У меня Windows XP)
Спасибо, --HenryS 01:07, 28 июня 2006 (UTC)[ответить]

Кажется, вопросы бесмысленны. Директория — неважно какая (это можно понять из текста), а кодировка — в зависимости от языка, на котором будут строки. Ramir 08:44, 29 июня 2006 (UTC)[ответить]
Опустив Вашу первую фразу, поговорим по существу:
  • Откуда Руби знает, где находится текст программы? Должен он быть в той же директории (фолдере, папке, directory, folder, etc...), что и интерпретатор или в какой-либо другой? Как можно это настроить?
  • Откуда Руби знает на каком языке (точнее, в какой кодировке: АNSI, Unicode, UTF-8, Win 1251, etc...) представлены строки? Как можно это настроить? --HenryS 12:24, 29 июня 2006 (UTC)[ответить]
О папке: он может быть в совершенно любой папке, если сказать системе, что файлы с расширением .rb выполняются интерпретратором. В Уиндоуз это делает установочная программа, так что (далее по тексту). На второй вопрос ответа не знаю (у меня работает в cp1251), но по поиску в яндексе (который кое-кому следовало сделать до меня) видно, что поддержка Юникода в Ruby отложена до второй версии! =:о(. Есть разные пристройки, но некрасивые. Ramir 12:46, 29 июня 2006 (UTC)[ответить]
Вы не совсем поняли мою цель. Я имею возможность обращаться к первоисточникам для изучения Руби, но я не тороплюсь и хочу по ходу изучения корректировать учебник. Конечно я могу разобраться сам во многом, но ведь это учебник - он должен быть самодостаточен. А теперь к делу
1. В учебнике сказано, чтобы запустить Руби нужно дать команду
% ruby TecToBa9_nporpamma.rb
Это значит, что программа должна быть в root directory для программ Руби, а не в любой. Вопрос, какая папка является root остается открытым.
2. Я запустил свою программу, дважды кликнув мышкой на файле - появилось окно ДОС и быстро исчезло. Надо сказать в учебнике, какие установки (в моем случае Windows) необходимы, чтобы окно не исчезало и был виден результат.
3. Вопрос с кодировками теперь для меня понятен и, после того как у меня полностью и без проблем пройдет "Начало работы", я, если никто не сделает это до меня, откорректирую раздел "Установка", чтобы он больше ни у кого не возникал.

Жду ответа на вопросы 1, 2 и пойдем дальше :-)))--HenryS 20:46, 29 июня 2006 (UTC)[ответить]

Думаю, Рубинович занет больше. Цитованная выше команда — для юниксовой строки. Под Уиндоузом легче запустить файл из обозревателя, я думаю. А чтобы окно не убегало, я обычно делаю так:
#(программа, выводящая текст)
getс #метод ждёт любого ввода с клавиатуры, ничего не делает. Программа затем завершается.

Ramir 14:04, 30 июня 2006 (UTC)[ответить]

Спасибо, теперь пошло и я НАДЕЮСЬ ВРЕМЕННО внес коррекцию для Windows. Но как Вы понимете - такое программирование будет головной болью. Поэтому, если авторы хотят, чтобы пользователи Windows, a их в порядки больше, чем Unix-ов действительно пользовались учебником, необходимо с первых же строк о Windows обьяснить как запускать Руби из окна ДОС. Тем более, что в проектах реальной жизни потребуется хранить программы в различных папках. --HenryS 22:20, 30 июня 2006 (UTC)[ответить]

Мда... понаписали тут. =) Теперь давайте поясню свою позицию. Ввод с клавиатуры и вывод на экран — прошлый век и годятся только для отладки. Подобные методы актуальны только в условиях компилятора, когда для того, чтобы посмотреть результат необходимо компилировать программу перед запуском. Подразумевается, что читатель использует irb или его сетевой аналог для просмотра примеров. В дальнейшем, когда примеры станут объемней, будут освещены способы ввода и вывода данных, но не на экран (скорее всего в файл). Вывод на экран — это сообщение отладки. Результат всегда пишется в файл. Такая вот позиция. Rubynovich 14:12, 1 июля 2006 (UTC)[ответить]

Кстати, по поводу окошка Dos. Чтобы оно не появлялось — поменяй расширение файла .rb на .rbw. Окно появляться не будет, но программа отработает. Чтобы сохранять вывод в файл, достаточно вставить в начало программы вот такую вот строку:

$stdout = File.open( __FILE__.gsub(/\.rbw?$/,'.txt'), 'w' ) 

Результат будет автоматом сваливаться в файл (название_программы.txt). При рассмотрении основ это неактуально. Используй irb или fxri (советую). Rubynovich 14:20, 1 июля 2006 (UTC)[ответить]

Кодировка исходного текста зависит от кодировки в системе по умолчанию, т.е. в Unix - KOI-8R, а в Windows - CP-1251. Со всякими UTF-8 и Unicode придется использовать конверторы типа iconv. Для 80% задач проблема кодировки неактуальна, а для RoR есть свои способы. Rubynovich 14:23, 1 июля 2006 (UTC)[ответить]

Блок != замыкание

Rubynovich 18:55, 12 июня 2006 (UTC)[ответить]

Может комментарии в коде тоже подсвечивать?

Заметил, что подчеркивание внутри кода стало выглядеть как небольшое изменение цвета. Можно настроить так, чтобы комментарии были серыми? Rubynovich 20:15, 27 июня 2006 (UTC)[ответить]

Я бы давно уже сделал богатую раскраску синтаксиса, если бы это вообще было возможно. Зачёркнутое светится потому, что оно помечено на уровне вики-текста страницы. Чтобы что-нить другое раскрасить, надо будеть выделять и его. Выходы:
  • Не трудиться и оставить всё как есть
  • Обрабатывать весь текст сценарием, берущим всё, что <code>...</code> и пропускающим это через какой-нить из существующих парсеров синтаксиса Руби, на выходе дающий тот же код, но размеченный примерно как <span class="KommeHTaPuj">#Это комментарий</span>.
  • Встроить в Викиучебник браузерный сценарий на JavaScript, делающий это же, но на стороне пользователя после загрузки страницы.
Мне больше всего люб первый вариант. :-) Ведь книга не столь популярна и закончена, чтобы каждый раз её полоскать обработчиком. Ramir 02:26, 29 июня 2006 (UTC)[ответить]
Подумаю над вторым вариантом. Но пока согласен и на первый. =) Rubynovich 14:38, 29 июня 2006 (UTC)[ответить]

Ссылка на RDoc

Посмотрел статью про Ruby в wikipedia и увидел замечательный шаблон {{RDoc|classes|Kernel|puts|M002975}}. Как его нам приспособить? Rubynovich 12:31, 18 июня 2006 (UTC)[ответить]

Вопрос важнее — «зачем». Англофоны пусть скопируют урл рукой. Не сто́ит морочиться со ссылкой на справочник в каждом упоминании встроенных классов. Да и важно, по-моему, чтоб авторам было удобней. Ramir 03:24, 20 июня 2006 (UTC)[ответить]
Если бы я знал на него ответ, то написал бы шаблон сам. =) Rubynovich 18:06, 20 июня 2006 (UTC)[ответить]
Нашел ответ! Когда перечисляются методы, которые нужно описать в справочнике, тогда удобно сделать ссылку на RDoc. Rubynovich 06:11, 24 июня 2006 (UTC)[ответить]

Перенос разделов

  • Подразделы "Ортогональность", "Несвязность и закон Деметера" и "Безжалостное тестирование" скинул в Идеалогию.
  • Разграбил раздел Избранное с RubyNews.ru. --Rubynovich 19:01, 13 июня 2006 (UTC)[ответить]

Соглашение о стиле изложения

Учебник отличается от справочника тем, что позволяет не только узнать список доступных методов, но и научиться ими правильно пользоваться. Отсюда несколько советов:

  • методы желательно описывать на примере решения задач;
  • рассматривать необходимо только наиболее часто встречающиеся в практике приемы и методы. Остальные методы будут доступны в справочнике;
  • подробного описания достойны методы, которые позволяют программировать в функциональном стиле;
  • главное не полнота материала, а его доступность для читателя.

Соглашение об именах

Желательно придерживаться некоторых правил, иначе учебник будет похож на сборную солянку.

  1. Строки должны быть русскими (не латиница, а кирилица). Свой u3BpaT тоже буду исправлять, но только внутри строк.
  2. Счетчики итераторов должны быть англоязычными и говорить о своем значении или типе: array, book, event и т.д.
  3. Переменные, желательно называть русскими именами (npumep_1, npumep_2). Если это невозможно (например, 4ucJIo начинается с цифры, а предварять его _ — не красиво), то латиницей.
Как читателю и программеру, этот "кульзизопский" стиль именования мне категорически не нравится. Современный программер - даже полный чайник - обязан знать технический английский (а если не знает - изучать в процессе). Это промышленный стандарт. Кроме того, на расшифровку имен типа "cumBoJIbI" требуется больше времени, чем на стандартное "symbols". Не приведи БГ, если благодаря этой книге начнут размножаться чайники, копирующие этот стиль в свои программы :(((. Andrew Bronx 14:18, 17 июня 2006 (UTC)[ответить]
Полностью согласен, такой стиль вызывает ассоциации с журналом "Хакер", не более того. Ужасно смотрится мешанина букв в разных регистрах, когда "кириллица" чередуется с привычными операндами. Это даже хуже транслита. Я сомневаюсь, что люди, которые не понимают, что такое "array" начинают программировать с Ruby. 85.141.130.198
Привожу другой пример. Переменная maccuB гораздо ближе сердцу новичка, чем array. По своей практике знаю, что начинающие программисты напишут скорее massiv, чем array. Независимо от того, что было написано в учебнике, который они читали. А знание англ. языка у читателя означает, что он взял в руки не тот учебник. Лучше ему сразу читать ProgrammingRuby. К тому же, "кульзизопский" стиль именования превлекает внимание, что является немаловажным фактором во время обучения. Rubynovich 17:39, 17 июня 2006 (UTC)[ответить]
Про обязанность знать английский ты категорически неправ. Ramir 23:37, 17 июня 2006 (UTC)[ответить]
Программисты, блин, хреновы. Те, кто не понимают, что такое array, быстро этому научатся. if и each тоже собираетесь перевести на русский? КулСисОпскиЙ язык в учебнике по красивому языку - абсолютно недопустимое явление. Вы бы еще падонкафский язык для привлечения внимания употребляли. Вы, наверное, еще не встречали горе-исходники, где что-нибудь по-французски поименовано или по-итальянски. Та же штука и здесь. Oleg Andreev 19:23, 20 января 2007 (UTC)[ответить]
Поддерживаю. Мало того, что кульсисопский язык плохо читабелен, так он ещё и не согласуется со стандартным соглашением об именовании в Ruby. Если кто не знает, что есть такое соглашение —- читайте
«HenpaBuJIbHa9_nepemeHHa9» — это ужасно. «Только не мой моск!» 85.118.224.242 09:15, 10 марта 2007 (UTC)[ответить]

Перевод для eigenclass

Как насчет "собственный класс"? --Rubynovich 18:31, 11 июня 2006 (UTC)[ответить]

Не-е-е-е-еееет!
  • Долго!
  • Нужно вводить связь между англ. инструкцией и новым русским термином.
  • Многие, подозреваю, уже привыкли читать это как «айгенкласс» или «йейгенкласс».
Посему единственно верный перевод — «эйгенкласс». Именно такова транскрипция с немецкого и английского, и, что ещё важнее, сразу ясно, что за вещь. Ramir 08:45, 24 июня 2006 (UTC)[ответить]
У нас в тексте есть слово "собокласс", есть подозрение, что это "эйгенкласс". Rubynovich 18:07, 25 июня 2006 (UTC)[ответить]

Вопросы

  1. Русские строки волапюком путают читателя, а при попытке набрать русский текст его встретит ParseError. Не лучше ли сразу пользоваться короткими формами по-английски?
  • Как показывает практика, после первой ошибки вида ParseError программист понимает, где собака зарыта. Тем более, это электронный учебник, здесь работает правило копировать/вставить. --Rubynovich 04:50, 12 июня 2006 (UTC)[ответить]
  1. Мне кажется, что про объекты и классы надо начинать пораньше
  • Опять же из практики. Для большинства задач дотаточно расширения существующих классов. А создание собственной иерархии надо обсуждать в рамках шаблонов проектирования.--Rubynovich 04:50, 12 июня 2006 (UTC)[ответить]

--Julik 19:31, 11 июня 2006 (UTC)[ответить]

Ответ на первый вопрос: нет, не лучше. Ramir 05:49, 12 июня 2006 (UTC)[ответить]

Главы, нуждающиеся в доработке

Обратите внимание на ассоциативные массивы. --Rubynovich 12:09, 4 июня 2006 (UTC)[ответить]

Уважаемые писатели, когда описываете ассоциативные массивы, обратите внимание на стиль изложения главы про массивы. Многие методы в массивах отсутствуют умышленно, в виду их негативного влияния на неокрепшие умы или сугубо специального значения. Rubynovich 10:35, 11 июня 2006 (UTC)[ответить]


Итераторы, которые будут освещены в рамках ассоциативных массивов: .inject, .find_all (он же select), .sort.
Методы, которые будут освещены в рамках ассоциатиынх массивов: .rehash, .delete, .empty?, .key? (он же .include?) и .value?, .values_at, .invert, .size, .update (он же .merge), .shift, .to_a и .to_s, .values и .keys.
Для главы Справочник эти ограницения не действуют. Там должны присутствовать методы во всей полноте. Ориентироваться надо на версию 1.8. У кого нет книги Programming Ruby (вторая редакция), то пишите — вышлю. --Rubynovich 12:30, 11 июня 2006 (UTC)[ответить]
Я не вполне понимаю про Hash#shift - доки не говорят, откуда берется ключ если итерация по ключам может происходить в случайном порядке?--Julik 20:27, 11 июня 2006 (UTC)[ответить]
  • А он и берется в случайном порядке. Используется, когда надо свести хеш к нулевой длине. Самое интересное, что методов .push, .pop, и .unshift не наблюдается. =) Это как раз и говорит в пользу моего довода. Просто, очень часто используется запись ARGV.shift. В результате чего метод и стали так использовать в хешах. --Rubynovich 04:53, 12 июня 2006 (UTC)[ответить]

Оформление

Обращаю внимание на способ богатого оформления тексташтампы (из-за отсутствия мыслей у википедийцев названные «шаблонами». Рубинович, вместо слова «важно» лучше действительно оформить слова как важное: {{Внимание|Пора обедать!}} превращается в

Ramir 16:24, 12 июня 2006 (UTC)[ответить]

Хммм... а ведь я догадывался. =) --Rubynovich 16:34, 12 июня 2006 (UTC)[ответить]

Обратите внимание, что перечёркивание кода, содержащего знаки вроде "=", может приводить к визуально неприятным накладкам (не знаю, во всех ли браузерах, но на моём IE это видно). Например, "=" на фоне перечёркивания можно принять за "-", т.к. одна из палок перекрывается страйком. Andrew Bronx 14:18, 17 июня 2006 (UTC)[ответить]

Подумаю над этим. Скорее всего знаки типа "=" просто будут исключаться из области перечеркивания. --Rubynovich 15:10, 17 июня 2006 (UTC)[ответить]
Подумал. Все останется так, как есть. Это связано с тем, что программы из книги будут копироваться через выделение кода. А там, уже можно взглянуть на код, как он есть. Rubynovich 17:42, 17 июня 2006 (UTC)[ответить]

Руби или Ruby?

— спросил меня Rubynovich 16:19, 12 июня 2006 (UTC). Вопрос спорный, моё видение таково: «Руби», но местами оставлять Ruby, дабы поисковики находили. Места нужно оставлять соответствующие (например, «учебник по Ruby», «Ruby ... Vim» и т. п.). А обычно должно быть всё по-русски: легче читать, а причин за английский вариант, помимо его поисковости, нет, по-моему. Ramir 16:35, 12 июня 2006 (UTC)[ответить]

Пробовал найти учебник в поиковиках. Безрезультатно. Ссылку на него находит только так. Rubynovich 16:47, 12 июня 2006 (UTC)[ответить]
Google:учебник+Ruby (увы, мы там глубоко во втором десятке) и Google:учебник+Руби (второе место). «Яндекс» и другие не находят потому, что они бесполезная дрянь. Не вижу великой надобности прогибаться ни под Гугл, ни под бесполезную дрянь: кому нужно, найдут. Ramir 17:17, 12 июня 2006 (UTC)[ответить]
В Яндекс:учебник+Ruby мы первые, а в Яндекс:учебник+Руби нас нет и не предвидится. А насчет Google:учебник+Ruby информация несколько устарела (мы первые). Google:учебник+Руби — шестое место. Ничего не понимаю. =) Rubynovich 15:15, 17 июня 2006 (UTC)[ответить]
Обнаружил причину возросшей популярности учебника. Ramir -- respect! =) Rubynovich 15:30, 17 июня 2006 (UTC)[ответить]
Вышеупомянутая поисковая система начала индексировать Викиучебник только после того, как я месяц тому назад написал им жалобу. Ramir 23:39, 17 июня 2006 (UTC)[ответить]

Перевод терминов

  1. Секция Сглаживание массивов: думаю, "сглаживание" - плохой перевод для термина "flatten", т.к. моментально ассоциируется со сглаживанием данных, что есть совершенно другая задача. Предлагаю варианты: "развёртка" (как "развёртка куба"), "разравнивание", "сплющивание"... Andrew Bronx 14:18, 17 июня 2006 (UTC)[ответить]
Мне нравится определение "расплющивание", т.к. возникает множество правильных ассоциаций. Даже стишок придумать можно:
Коль размерностей не счесть,
У вашего массива,
Метод .flatten в Ruby есть,
Плющит он массивы.
--Rubynovich 14:45, 17 июня 2006 (UTC)[ответить]

Стилевые соображения

Давайте обсуждим будущее учебника!

Примеры задач
и задачи примеров

Первое замечание Рубиновичу: уж слишком велика доля примеров с числами, кратностями и арифметическим сравнением. Надо бы побольше объектов классов np9lMoyroJlbHuK (с дочерним классом Pa3MblTblu_KBADPAT), gJluHHoe_SchynaJlze_uHonJlaHeTHorO_OCbMNHOGA, n9lTHO_oT_ZhblPAFA и подобных. В деле числа применяются для подсчёта, околичествливания чего-то, и не так часто. Числа скучны, их трудно вообразить, примеры с ними хуже запоминаются. Ramir 08:24, 24 июня 2006 (UTC)[ответить]

Насчет доли с числами, кратностями и арифметическими сравнениями. Насколько я тебя понял, тебе хочется других типов данным на месте чисел? Каких? Если базовых, то это только строки и массивы. Массивы смотреться не будут. Предлагаю использовать строки с образным содержанием (как твои последние правки). В реальном программировании, числа на третьем месте по частоте использования (после массивов и строк). Rubynovich 16:01, 24 июня 2006 (UTC)[ответить]
Во-первых, да, хотя бы так: строки образнее чисел, особенно такие, которые читатель сможет ассоциировать (в мозгу́) А во-вторых, создавать свои классы надо! Сначало ввести определение класса (начиная с простого, а потом — со сложной структурой и разнообразнейшими контролями доступа, примесями, метапрограммированием и так далее), затем его использовать, чтобы у читателя прочно тренировались ассоциативные связи между определениями в классе и тем, что объект делает потом. Ramir 22:32, 24 июня 2006 (UTC)[ответить]
До классов пока не дошел, но планировал поступить несколько иначе. Начать не с создания собственной иерархии, а с расширения встроеных классов. Просто чтобы читатель привык к мысли, что метод должен обязательно вызываться относительно чего-то. Потом выстроить ситуацию, в которой нецелессобразно производить расширение и ввести свой класс. В общем, план был такой. Rubynovich 18:23, 27 июня 2006 (UTC)[ответить]
Вот это разумно! Но ведь можно (и думаю, целесообразно) эту пружину-спираль вытянуть слегка вверх, дабы показать (отвлечённо от принципов строительства классов), что числа и строки — это лишь простейшее, что может быть. Исходная мысль вообще была лишь про то, что в примерах многовато чисел, которые плохо запоминаются. (хм... а может, я увлёкся мнемотехниками, картами мозга, эфирной медитацией и причёской кармы? :-) Ramir 20:34, 27 июня 2006 (UTC)[ответить]

→ → → Последовательность → → →

Преподавать «по спирали» полезно, но надо ещё сохранять полноту, законченность каждого описания и исключать возможность неверного понимания.

Плохо
когда сначала делается общее утверждение, а потом — ой! оказывается, что есть исключения или дополнения.
Хорошо
когда тема сначала освещается как бы второстепенно, как мимоходная добавка к другой теме (например, описывается эффект какого-то ранее неизвестного метода в данном случае), а потом уже, отдельной главой объясняется в фокусе. Ramir 08:24, 24 июня 2006 (UTC)[ответить]
Исключения и дополнения есть всегда, но если вывалить все исключения и дополнения на читателя, то у него просто крыша поедет. Замечено, что освоив базовые понятия и научившись пользоваться справочной литературой студенты самостоятельно начинают изучать предмет. Предполагалось создать учебник, который состоял бы из трех частей:
  1. описание базовых понятий (в два захода)
  2. описание работы с вводом-выводом и дополнительными классами из стандартной библиотеки
  3. описание работы с Ruby on Rails (в два захода)
Особенностью первого раздела является последовательность изложения. Цель — научить читателя ориентироваться в мире Ruby и решать задачки в учебном заведении. Второй раздел — это набор статей, которые описывают как работать со встроенными библиотеками. Изложение непоследовательное. Цель — дать навыки применения Ruby в практической деятельности. Третий раздел — для рельсоукладчиков. Есть идея подключить Дмитрия Сабанина к формированию этого раздела. Rubynovich
Подключить Дмитрия САБАНИНА обязательно! Всех других авторов русских книг о Рельсах — всех сюда! Ramir 00:06, 25 июня 2006 (UTC)[ответить]
Идея повествовать по спирали появилась, когда я рассказывал про массивы, а нужно было сделать ссылку на строки. Вот для этого и появилась вводная часть, в которой кратко рассказывается про то, что такое массивы, а что такое строки. Чтобы была возможность использовать их в последующих примерах. Кстати, отсюда и засилие примеров с числами (привычка). Rubynovich 16:21, 24 июня 2006 (UTC)[ответить]
Да, я преувеличиваю, если говорю, что надо в учебнике рассказывать про всё, но если всё хорошо простроить, то можно и написать про всё, и сберечь внимание читателя, — вот что я верю. А «принцип по спирали» — элементарная подстройка под людскую природу. Да и к тому же многое из первого, вводного, умелым программистам можно пропустить. Ramir 00:06, 25 июня 2006 (UTC)[ответить]

«Рубинович!
Что делать?»

Ты еси фюрер всех, кто хочет присоединиться к этому грандиозному делу — написать учебник по Руби! Так что поспеши сперва создать план учебника, пусть и изменимый, но план, по которому мы все вместе быстро всё напишем. Ramir 08:24, 24 июня 2006 (UTC)[ответить]

Ты определись: шалом или фюрер! =) Rubynovich 18:25, 24 июня 2006 (UTC)[ответить]

Строки

"Можно вставлять произвольный кода на языке Ruby в строку. 
После выполнения код заместится результатом."

Поясните, пожалуйста. Желательно с примерами--HenryS 15:21, 1 июля 2006 (UTC)[ответить]

Немного поправил раздел "Подробнее о строках". Посмотри теперь. Rubynovich 18:50, 4 июля 2006 (UTC)[ответить]

Ошибочка какая-то

$ ruby
 moe_4ucJIo = 18
 mou_maccuB = [1,2,3,4]
 puts "Повторенье -- мать ученья. Мой массив = #{mou_maccuB.join(\",\")}"
 -:3: syntax error
 puts "Повторенье -- мать ученья. Мой массив = #{mou_maccuB.join(\",\")}"
                                                                  ^
$ ruby --version
 ruby 1.8.2 (2004-12-25) [i686-linux]
                  Greck 18:50, 31 июля 2006 (UTC)[ответить]
Опа... Об этом надо написать. Дело в том, что внутри вставки не надо экранировать кавычки.
 puts "Повторенье -- мать ученья. Мой массив = #{mou_maccuB.join(",")}"
Но в данном случае лучше поставить апострофы (чтобы не смущаться напрасно).
 puts "Повторенье -- мать ученья. Мой массив = #{mou_maccuB.join(',')}"
Rubynovich 16:27, 14 августа 2006 (UTC)[ответить]

Давайте разберем пример

require 'net/http'

Net::HTTP.open('ru.wikibooks.org'){ |http|

  head, body = http.get('/wiki/Ruby')

}

Пример прекрасный, мне понравился...
Но, давайте предположим что будет делать новичок, поскольку я новичок, буду говорить как было со мной. Я взял аналогичный пример из net\http.rb и поступил с ним также как поступил бы с вашим примером.
1. создаем файл
2. складываем туда этот код
3. я хочу с ним как-то работать, например, как было в моем случае, я хотел распарсить страничку(получить оттуда число)
3.1
require 'net/http'

Net::HTTP.open('ru.wikibooks.org'){ |http|

  head, body = http.get('/wiki/Ruby')

}

... операции с переменной body

Сами понимаете, у меня ничего не получилось.Из-за использования блока {} переменнаые не выходили, до сих пор не знаю как правильно эти переменные оттуда выводить. Для диагностики и исправления этого недоразумения у меня ушло 3-4 часа, не смогу сказать точнее

я думаю, читабельнее было-бы написать примерно сделующее:
require 'net/http'
zapros = Net::HTTP.start('ru.wikibooks.org')
head,body = zapros.get('/wiki/Ruby')

1. строк на одну меньше
2. операции проще

  • Отвечаю на твой вопрос (Rubynovich):
head, body = Net::HTTP.open('ru.wikibooks.org'){ |http|
   http.get('/wiki/Ruby')
}
... операции с переменной body
Но лучше использовать open-uri, но до него пока руки не дошли.
require 'open-uri'
body = open('http://ru.wikibooks.org/wiki/Ruby'){ |http| http.read }