Обсуждение:Ruby

message: Конечно хорошо, что создатели статьи так подробно расписывают все возможности языка, но я не нашёл тут одного элемента, который нужен во всех статьях о языках программирования... Где пример программы "hello world"? Пожалуйста, добавте его по мере возможности. Dr. Fatman 15:23, 27 июня 2007 (UTC)
replies: text: Пример есть в самой статье Hello world, а здесь добавлять столь простой пример, я думаю, не целесообразно. --valodzka☭ 09:58, 1 августа 2007 (UTC)
thread_title: Hello World

message: В статье путаются понятия «язык» и «интерпретатор».  Например, во фразе «является полностью свободным языком программирования с возможностью копирования, модификации и распространения».  Конечно, это интерпретатор (т.е. реализацию языка) можно копировать, модифицировать и распространять. — Lispnik 10:12, 30 января 2006 (UTC)
thread_title:  Формулировки 

message: нет необходимости использовать утомительный 'self.'
где в каком языка? Майоров Александр 14:27, 6 марта 2006 (UTC)
replies: text: Очевидный наезд на Python :) Maxim Razin 20:02, 7 марта 2006 (UTC)
thread_title:  Непонятно 

message: File.open('file.txt', 'w') { |file| <blablabla>
Какое отношение этот пример имеет к сопрограммам? Да и в других примерах явно путают сопрограммы и итераторы. Maxim Razin 20:01, 7 марта 2006 (UTC)
replies: text: Прямое отношение — этот пример реализуется приблизительно так:
  def open(name, mode)
    file = File.new(name, mode)
    begin
      yield(file) # вызов сопрограммы - делаем всё что хотим
    ensure        # блок срабатывающий при любом исходе
      file.close  # файл будет закрыт без вмешательства пользователя, 
                  # независимо от того будут ли исключения, ошибки ли всё гладко.
    end
  end
Valodzka 00:31, 8 марта 2006 (UTC) ferstein?
thread_title:  Сопрограммы? 

message: Matz — кликуха что-ли? Разве это важная информация? Тем более не относится к языку программирования.
replies: text: Это имя (ник) в новостной группе, и несёт о человеке информации в современном мире не меньше чем имя
thread_title:  (Matz) 

message: Мне кажется, статья стала бы полнее, если бы в ней появилась информация о недостатках Ruby,
и проблемах, с которыми столкнётся программист, который захочет перейти на этот язык.
В частности, поддержка Unicode.
Как вы считаете? Igorchubin 06:24, 17 марта 2006 (UTC)
replies: text: Несомненно. —ajvol 09:08, 17 марта 2006 (UTC)

text: В принципе основные недостатки указаны в разделе реализация, юникод правда был забыт. Cейчас добавил. Valodzka 20:52, 17 марта 2006 (UTC)

text: Спасибо. И ещё, есть ли недостатки у самого языка? Если да, то, наверное, имеет смысл указать их в статье. Igor Chubin 07:24, 18 марта 2006 (UTC)
replies: text: : Недостатки языка (особенно относительно нового), в отличии от интерпретатора, обычно указать очень сложно. Почти все они являются довольно неаднозначными и зависят от взгляда: один может рассматривать это как минус, 2-й как плюс. Valodzka 12:22, 18 марта 2006 (UTC)
Ещё мне кажется, что недостатки (и интерпретатора, и языка) стоит вынести в отдельный раздел.
Те, кто только начинают знакомиться с языком, вероятно, сразу хотят знать о его основных недостатках,
для того чтобы быть готовым к худшему. Я думаю, раздел «Недостатки языка и интерпретатора» можно добавить сразу же после раздела «Реализация» Igor Chubin 07:23, 18 марта 2006 (UTC)

text: : Разумная идея. Valodzka 12:22, 18 марта 2006 (UTC)
replies: text: :: В 2006-м решили, что это разумная идея, а уже 2013 и хоть бы кто-то что-то написал. Скольковам платят в Руби, чтобы молчали?
replies: text: ::: Вы можете помочь Википедии, дополнив статью данным разделом. --Evgeny.V.Orlov 10:28, 13 мая 2013 (UTC)

text: ::: Gogaren, уже не первый раз Вам делают замечание про подпись своих сообщений. Соблаговолите впредь подписываться, чтобы другим участникам не приходилось заниматься поисками в истории тех, кто пишет всякого рода чепуху (см. выше) --DILIN ← 14:58, 13 мая 2013 (UTC)
thread_title:  Недостатки языка и недостатки интерпретатора 

message: В статье нет ничего о RAA (Ruby Application Archive), что выглядит странно. 
Как вы думаете, что если добавить информацию о RAA в раздел "Библиотеки"? Igor Chubin 07:23, 18 марта 2006 (UTC)
replies: text: думаю если пара строк о RAA и/или RubyForge будет полезной. Valodzka 23:26, 18 марта 2006 (UTC)
thread_title:  Отсутствие информации о RAA 

message: У меня со словом "Руби" ЯП не связывается. Скорее всего, первое значение - распространённое имя, ну и + куча продуктов (от "рубиновый"), язык - один из их множества.--83.102.202.2 10:15, 23 марта 2006 (UTC)
replies: text: Логично делать disambig когда будут  статьи о других продуктах. --217.21.40.1 00:07, 24 марта 2006 (UTC)
thread_title:  Возможно, нужен disambig 

message: Есть ли категория "Объектно-ориентированные языки", чтобы можно было добавить "Руби" в эту категорию, как её добаливи в скриптовые языки?
И ещё -- можно ли как-то подправить самое первое определение языка Руби, чтобы в нём фигурировало 
"объектно-ориентированный скриптовый язык", поскольку это относится к Руби как ни к какому другому. Igor Chubin 12:01, 24 марта 2006 (UTC)
replies: text: Есть такое правило в Википедии — правьте смело. Для отнесения статьи к какой-либо категории нужно в тексте статьи написать строчку вроде:
 Категория:Языки программирования

text: --ajvol 12:38, 24 марта 2006 (UTC)
replies: text: : Сделано. Уже добавил. Кто-то может подсказат, как быстро проинициализировать категорию большим количество ссылок на статьи? Igor Chubin 13:53, 24 марта 2006 (UTC)
thread_title:  Руби -- объектно-ориентированный язык 

message: Примеры вида "Раз, два, три!".scan(/[А-Яа-я]/) для выделения всех русских 
слов в строке будут работать не всегда. Все зависит от кодировки строки.
В CP1251 и ISO-8859-5 все хорошо ибо коды русских букв идут подряд  А-Яа-я. А вот для KOI8 например уже вот так Ю-Ъю-ъ, соответственно
правило выглядит /[Ю-Ъю-ъ]/. Для CP866 еще интерестней символы идут подряд
от А-Яа-п потом идет псевдо графика а потом уже р-я. Вот такая вот получается путаница.
replies: text: Всё зависит от кривости самого софта, среды и рук человека который настраивал "локаль" во всём этом деле. Кодировка, как таковая, тут не при чём.--Busla 13:49, 23 декабря 2006 (UTC)
thread_title:  К вопросу о правилах (регулярных выражениях) и русском языке 

message: Этот вопрос, пожалуй, касается не только этой статьи, но и всех прочих, затрагивающих данную тематику, поэтому править не стал, а решил сначала обсудить:
Какого, спрашивается, … половина названий языков написана кирилицей, а половина — латиницей?! Давайте хотя бы в рамках одной статьи не устраивать кашу.--Busla 14:12, 23 декабря 2006 (UTC)
thread_title:  Наименования языков 

message: 1) В статье попутаны потоки и процессы - вызов fork() порождает новый
процесс а не поток(это две большие разницы).
2)"Таким образом нет необходимости использовать какой-либо специальный 
синтаксис (например, self.имя_переменной для Python),"
А @name это что не специальный синтаксис? 
3)"инновативных решений"
AFAIK по русски не инновативных а инновационных + эти решения были инновационными
в smalltalk и lisp но никак не Ruby(P.S. в Python так-же все это есть).
И давайте придерживаться объективности. 
4) Использование self. в Python кроме
лишних 4 символов по сравнению с Ruby, несет массу возможностей.
5) И никто не мешает сделать imap ~ self. в Вашем любимом редакторе и не набирать его постоянно.
6) "Имеет независимую от ОС поддержку многопоточности." 
Пропущено слово "невытесняющую" или "с вытеснением только из Ruby кода", это вообще то
очень жесткое ограничение.
..........
K.Danilov aka koder 15:44, 10 марта 2007 (UTC)
1) - fixed
2) - согласен
3) - в целом согласен (PS: а нигде и не утверждается что этого нет в Питоне)
Давайте объективно:
4) Это какие возможности?
5) Никто не мешает сделать всё, что угодно, мы же обсуждаем язык а не редакторы
6) ОС-независимая многопоточность является таковой по определению, добавлять это по моему лишне
Спасибо за конструктивную критику. --valodzka☭ 23:37, 26 марта 2007 (UTC)
3)Когда я писал про питон то имел в виду что там они так же появились раньше, но уже
очевидно были "слизаны" со smalltalk & lisp(поэтому я питон с ними вместе и не перечислил).
4)Полная взаимозаменяемость функций/ламбда/методов_класса/связанных_методов_объекта
6)> ОС-независимая многопоточность является таковой по определению
Не всегда(точнее все мне изв. процессорные архитектуры позволяют это реализовать, при минимальной
поддержке со стороны ОС - асинхронных сигналах). Например Inferno,Plan9,etc имеют вытесняющую поддержку собственных потоков работая как "гости" под другими ОС - т.е. с позиции базовой оси Inferno - один поток(и 1 процесс), а в самой inferno живет множество premptible потоков.
> добавлять это по моему лишне
Даже если-бы они таки были не_вытесняемыми по определению то подавляющее 
большинство людей все равно не знало бы этого. Так, например, в доке по Ruby это 
очень аккуратненько описано причем сразу в стартовом абзаце.
K.Danilov aka koder 09:11, 27 марта 2007 (UTC)
4) Может я чего-то не понимаю, но причём здесь self.? Аналогичный код на Руби:
class A
  # Метод класса
  def A.m1() puts 'm1' end
  # Метод объекта
  def m2() puts 'm2'end
end
# Анонимный метод
m3 = proc { puts 'm3' }
# "Просто" функция
def m4()  puts 'm4' end
def test(*args)
  args.each{|x| x.call }
end
a = A.new
test(A.method(:m1), a.method(:m2), m3, Object.method(:m4))
6) Ладно, добавил. --valodzka☭ 17:31, 27 марта 2007 (UTC)
----
Ок. Будем считать что 4) это питоновские "ветряные мельницы", я это зачеркнул.
Спасибо за правку, я уж было думал что сюда никто не заглядывает, а поск. я не 
слишком хорошо знаю руби то сам править не  стал.
K.Danilov aka koder 09:43, 28 марта 2007 (UTC)
thread_title:  Все до кучи 

message: Межт я пишу не туда, но всёже.
В програмировании применяются Stream - обычно байтовые потоки, размер которых может превышать размер буфера.
И Thread - элемент многозадачности, который на русский язык переводится тоже как поток. В текте статьи, судя по всему, упоминаются именно Thread'ы. 
На мой взгляд, стоит как-то указать, что ввиду имеются именно они. Как вариант, викифицировать как поток
 Last.try 17:03, 14 августа 2008 (UTC) last.try
thread_title:  Насчёт потоков 

message: Динамическая типизация - переменная связывается с типом в момент присваивания значения, а не в момент объявления переменной. Таким образом, в различных участках программы одна и та же переменная может принимать значения разных типов.
Строгая типизация - каждое значение, переменная, параметр и возвращаемое значение функции на этапе проектирования программы безусловно привязывается к определённому типу данных, который не может быть изменён во время выполнения программы (т. н. статическая типизация).
Так что же такое "строгая динамическая типизация"? Возможно, должна была быть "строгая неявная", но тут она неявная динамическая.  Homo Computeris 15:12, 8 декабря 2008 (UTC)
replies: text: Да ошибка была в карточке :). Конечно же у Ruby динамическая типизация, просто с явным приведением типов ("1" + 2 даст ошибку). --A.I. 17:33, 8 декабря 2008 (UTC)
replies: text: : Не совсем так. Откатывать изменения не буду, потому что трактовок хватает и они могут очень сильно отличаться. Но  Т.е. строгая типизация означает что именно то что написал AI "1" + 2 даст ошибку. И вообще понятия строгая(сильная)-слабая и динамическая-статическая ортогональны, например: ruby - strong,dynamic, php - weak,dynamic, c - weak,static, c++ уже скорее strong,static. -- valodzka☭ 10:35, 9 декабря 2008 (UTC)

text: : Ну фомально сейчас только нужно заменить «явное приведение типов» на «строгая», но думаю первая версия понятнее :) --A.I. 19:02, 9 декабря 2008 (UTC)

text: : О каком приведении типов вообще идет речь? И о каких собственно типах?Andriy.Tyurnikov 04:01, 1 августа 2011 (UTC)
Но опять же тут типизация неявная без потери данных. Надо уж сразу и в таблице менять. Я на Руби не пишу, в общем-то говоря, но тут косяк %)  Homo Computeris 22:08, 9 декабря 2008 (UTC)

text: Сделано :) --A.I. 09:58, 10 декабря 2008 (UTC)
replies: text: : Строгая думаю действительно убрать и использовать для обозначения этого «явная типизация». --A.I. 22:32, 10 декабря 2008 (UTC)
Там теперь одновременно явное и неявное без потери. Это задумано? :) И может "строгая" из статьи стереть просто? Вроде, динамическая, а какая именно: строгая - не строгая история умалчивает, но точно с явным приведением типов.  :)  Homo Computeris 22:06, 10 декабря 2008 (UTC)

text: У C тоже явное и неявное без потерь. Нормально. --A.I. 10:31, 11 декабря 2008 (UTC)
По мне, явная типизация - это статическая: при создании переменной явно определяется ее тип.  Homo Computeris 23:05, 10 декабря 2008 (UTC)
thread_title:  Типизация 

message: Переменные Ruby содержат не сами объекты, а ссылки на них. Присваивание — это не передача значения, а копирование ссылки на объект
Это неправда. По крайней мере не всегда правда. Числа, например, копируются по значению. Достаточно ввести в irb a=5; b=a; a=10 и убедиться, что b=5
Автор сообщения: blueboar 78.108.76.54 16:51, 21 января 2011 (UTC)
replies: text: Пример не совсем корректный. Мы сначала создали объект 5 и поместили ссылку на него в a, потом скопировали ссылку на него в b, потом создали объект 10 и поместили ссылку на него в a. --A.I. 09:25, 24 февраля 2011 (UTC)

text: * Значит, если исправить так: a=5; b=a; a+=10; в результате будет b=15 ? --V0d01ey 10:55, 24 февраля 2011 (UTC)
replies: text: :* Если вы распишете это в полной нотации a=5;b =a; a = a + 10 вы увидите что здесь не меняется то что хранится в а, а присвается новое значение. --valodzka☭ 13:24, 25 июля 2011 (UTC)

text: Fixnum, Symbol, TrueClass и FalseClass действительно особые классы, и в рубидоках говорится о передаче по значению - не верьте, копирования целочисленного значения не происходит - если передать Fixnum аргументом, и у него вызвать instance_variable_set("@referencing", true), а потом вне метода вызвать instance_variable_get("@referencing") - увидите. Но при этом указанная фраза действительно запутанна: не совсем понятно как переменная может "содержать сам объект" не содержа ссылку на него.  И что такое передача значения, а не копирование ссылки? Примитивы в Руби отсутствуют
thread_title:  ВП:СОО 

message: Раз уж есть "повлиял на Perl 6", то почему не "повлиял на Python 3"? Ведь в питон 3 (и бэкпорты в 2.*) то и дело тянут что-то из руби. То принт стал функцией, то юникод перепилили, то splat operator (*)... Nakilon 12:02, 15 октября 2013 (UTC)
thread_title:  Повлиял на Python 3 

message: Вроде он перешел на JavaScript? 217.118.83.203 15:57, 18 марта 2019 (UTC)
thread_title:  RPG Maker 

message: Нужна ли таблица версий как в английской версии статьи?
thread_title:  Таблица версий 

message: Версия	Последняя минорная версия	Дата выпуска	Поддержки до	Поддержки исправления безопасности до
      	NA                       	1996-12-25  	NA          	NA
      	1.8.7-p375               	2003-08-04  	2012-06     	2014-07-01
      	1.9.3-p551               	2007-12-25  	2014-02-23  	2015-02-23
      	2.0.0-p648               	2013-02-24  	2015-02-24  	2016-02-24
      	2.1.10                   	2013-12-25  	2016-03-30  	2017-03-31
      	2.2.10                   	2014-12-25  	2017-03-28  	2018-03-31
      	2.3.8                    	2015-12-25  	2018-06-20  	2019-03-31
      	2.4.10                   	2016-12-25  	2019-04-01  	2020-04-01
      	2.5.8                    	2017-12-25  	            	
      	2.6.6                    	2018-12-25  	            	
      	2.7.2                    	2019-12-25  	            	
      	                         	2020
thread_title: Таблица версий