Обсуждение: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)
- quantifier 1)
- Эй, так
- Правильней было бы оставить квантор. Но тогда необходимо как-то объяснять, что квантор в Ruby —
Способы создания массива
Поясните, пожалуйста, как работает метод 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. Я проверил на тестах. Это хорошо известное ИСКЛЮЧАЮЩЕЕ ИЛИ: Либо А, либо Б, но не оба сразу.
- Побитовое =)
- 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)
Блок != замыкание
Внимание! Обращаю ваше внимание, что понятие блок (block) не равнозначно понятию замыкание (closure). |
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)
Соглашение о стиле изложения
Учебник отличается от справочника тем, что позволяет не только узнать список доступных методов, но и научиться ими правильно пользоваться. Отсюда несколько советов:
- методы желательно описывать на примере решения задач;
- рассматривать необходимо только наиболее часто встречающиеся в практике приемы и методы. Остальные методы будут доступны в справочнике;
- подробного описания достойны методы, которые позволяют программировать в функциональном стиле;
- главное не полнота материала, а его доступность для читателя.
Соглашение об именах
Желательно придерживаться некоторых правил, иначе учебник будет похож на сборную солянку.
- Строки должны быть русскими (не латиница, а кирилица). Свой u3BpaT тоже буду исправлять, но только внутри строк.
- Счетчики итераторов должны быть англоязычными и говорить о своем значении или типе: array, book, event и т.д.
- Переменные, желательно называть русскими именами (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. Если кто не знает, что есть такое соглашение —- читайте
- Программисты, блин, хреновы. Те, кто не понимают, что такое array, быстро этому научатся. if и each тоже собираетесь перевести на русский? КулСисОпскиЙ язык в учебнике по красивому языку - абсолютно недопустимое явление. Вы бы еще падонкафский язык для привлечения внимания употребляли. Вы, наверное, еще не встречали горе-исходники, где что-нибудь по-французски поименовано или по-итальянски. Та же штука и здесь. Oleg Andreev 19:23, 20 января 2007 (UTC)
- Привожу другой пример. Переменная
- Полностью согласен, такой стиль вызывает ассоциации с журналом "Хакер", не более того. Ужасно смотрится мешанина букв в разных регистрах, когда "кириллица" чередуется с привычными операндами. Это даже хуже транслита. Я сомневаюсь, что люди, которые не понимают, что такое "array" начинают программировать с Ruby. 85.141.130.198
- «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)
Вопросы
- Русские строки волапюком путают читателя, а при попытке набрать русский текст его встретит ParseError. Не лучше ли сразу пользоваться короткими формами по-английски?
- Как показывает практика, после первой ошибки вида ParseError программист понимает, где собака зарыта. Тем более, это электронный учебник, здесь работает правило копировать/вставить. --Rubynovich 04:50, 12 июня 2006 (UTC)
- Мне кажется, что про объекты и классы надо начинать пораньше
- Опять же из практики. Для большинства задач дотаточно расширения существующих классов. А создание собственной иерархии надо обсуждать в рамках шаблонов проектирования.--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)
- Google:учебник+Ruby (увы, мы там
Перевод терминов
- Секция Сглаживание массивов: думаю, "сглаживание" - плохой перевод для термина "flatten", т.к. моментально ассоциируется со сглаживанием данных, что есть совершенно другая задача. Предлагаю варианты: "развёртка" (как "развёртка куба"), "разравнивание", "сплющивание"... Andrew Bronx 14:18, 17 июня 2006 (UTC)
- Мне нравится определение "расплющивание", т.к. возникает множество правильных ассоциаций. Даже стишок придумать можно:
Коль размерностей не счесть, У вашего массива, Метод .flatten в Ruby есть, Плющит он массивы.
Стилевые соображения
Давайте обсуждим будущее учебника!
Примеры задач
и задачи примеров
и задачи примеров
Первое замечание Рубиновичу: уж слишком велика доля примеров с числами, кратностями и арифметическим сравнением. Надо бы побольше объектов классов 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)
- До классов пока не дошел, но планировал поступить несколько иначе. Начать не с создания собственной иерархии, а с расширения встроеных классов. Просто чтобы читатель привык к мысли, что метод должен обязательно вызываться относительно чего-то. Потом выстроить ситуацию, в которой нецелессобразно производить расширение и ввести свой класс. В общем, план был такой. Rubynovich 18:23, 27 июня 2006 (UTC)
- Во-первых, да, хотя бы так: строки образнее чисел, особенно такие, которые читатель сможет ассоциировать (в мозгу́) А во-вторых, создавать свои классы надо! Сначало ввести определение класса (начиная с простого, а потом — со сложной структурой и разнообразнейшими контролями доступа, примесями, метапрограммированием и так далее), затем его использовать, чтобы у читателя прочно тренировались ассоциативные связи между определениями в классе и тем, что объект делает потом. Ramir 22:32, 24 июня 2006 (UTC)
→ → → Последовательность → → →
Преподавать «по спирали» полезно, но надо ещё сохранять полноту, законченность каждого описания и исключать возможность неверного понимания.
- Плохо
- когда сначала делается общее утверждение, а потом — ой! оказывается, что есть исключения или дополнения.
- Хорошо
- когда тема сначала освещается как бы второстепенно, как мимоходная добавка к другой теме (например, описывается эффект какого-то ранее неизвестного метода в данном случае), а потом уже, отдельной главой объясняется в фокусе. Ramir 08:24, 24 июня 2006 (UTC)
- Исключения и дополнения есть всегда, но если вывалить все исключения и дополнения на читателя, то у него просто крыша поедет. Замечено, что освоив базовые понятия и научившись пользоваться справочной литературой студенты самостоятельно начинают изучать предмет. Предполагалось создать учебник, который состоял бы из трех частей:
- описание базовых понятий (в два захода)
- описание работы с вводом-выводом и дополнительными классами из стандартной библиотеки
- описание работы с 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(',')}"
Давайте разберем пример
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 }