The OpenNET Project / Index page

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

Выпуск языка программирования Ruby 3.0

25.12.2020 09:23

Состоялся релиз Ruby 3.0.0, динамического объектно-ориентированного языка программирования, отличающегося высокой эффективностью разработки программ и вобравшего в себя лучшие черты Perl, Java, Python, Smalltalk, Eiffel, Ada и Lisp. Код проекта распространяется под лицензиями BSD ("2-clause BSDL") и "Ruby", которая ссылается на последний вариант лицензии GPL и полностью совместима с GPLv3. Ruby 3.0 является восьмым значительным выпуском, подготовленным в рамках планового процесса разработки, подразумевающего отведение года на подготовку функциональных улучшений и формирование каждые 2-3 месяца корректирующих выпусков.

Отмечается, что разработчики с 2015 года шли к версии 3.0, целью которой является производительность, параллелизм и типизация. Юкихиро Мацумото (Yukihiro Matsumoto), автор языка программирования Ruby, пять лет назад предложил концепцию Ruby 3x3, подразумевающую, что выпуск Ruby 3 станет возможным, когда удастся добиться трёхкратного прироста производительности, по сравнению с веткой Ruby 2. Благодаря усовершенствованию поддержки JIT-компиляции подобные показатели стали реальностью.

Основные улучшения:

  • В MJIT реализовано множество улучшений. Заметно повышена производительность при некоторых рабочих нагрузках, таких как игры (тест Optcarrot), AI (тест Rubykon) или любое другое приложение, которое тратит большую часть времени на многократный вызов нескольких методов. В Ruby 3.0 также значительно уменьшен размер кода, генерируемого JIT-компилятором. При этом отмечается, что JIT ещё не готов для оптимизации приложений, использующих фреймворк Rails, которые охватывают очень много методов, что приводит к неэффективной работе кэша i-cache (проблему планируется решить в выпуске Ruby 3.1).
  • Добавлен инструментарий для аннотации типов RBS, который поддерживает наиболее часто встречающиеся шаблоны в программах на языке Ruby. Аннотации RBS позволяют выполнять статический анализ кода без явного определения типов. Предоставляются средства для описания определений классов и модулей: методы, определённые в классе, переменные экземпляра и их типы, а также иерархию наследования или подмешивания модулей. Дополнительно предложен экспериментальный анализатор типов TypeProf, который читает код, анализирует определение и использование методов, и генерирует прототип аннотаций типов в формате RBS.
    
       module ChatApp
         VERSION: String
         class Channel
          attr_reader name: String
           attr_reader messages: Array[Message]
           attr_reader users: Array[User | Bot]  # `|` means union types, `User` or `Bot`.
           def initialize: (String) -> void
           def post: (String, from: User | Bot) -> Message  # Method overloading is supported.
                | (File, from: User | Bot) -> Message
         end
       end
    
  • Экспериментальная поддержка модели акторов Ractor, предоставляющую абстракцию, подобную "акторам" (ruby actor), разработанную для обеспечения потокобезопасного параллельного выполнения программы. Поддерживается создание нескольких ракторов и их параллельный запуск. Между собой ракторы взаимодействуют путем передачи сообщений.
    
       require 'prime'
       # n.prime? with sent integers in r1, r2 run in parallel
       r1, r2 = *(1..2).map do
        Ractor.new do
          n = Ractor.recv
           n.prime?
         end
       end
       # send parameters
       r1.send 2**61 - 1
       r2.send 2**61 + 15
       # wait for the results of expr1, expr2
       p r1.take #=> true
       p r2.take #=> true
    
  • Добавлен планировщик легковесных fiber-потоков Fiber#scheduler, поддерживающий перехват блокирующих операций для обеспечения легкого параллелизма, не требующего изменения существующего кода. В настоящее время поддерживаются следующие классы/методы (IO#select не поддерживается):
    • Mutex#lock, Mutex#unlock, Mutex#sleep
    • ConditionVariable#wait
    • Queue#pop, SizedQueue#push
    • Thread#join
    • Kernel#sleep
    • Process.wait
    • IO#wait, IO#read, IO#write и связанные с ними методы (например #wait_readable,#gets, #putsи так далее).
    
       require 'async'
       require 'net/http'
       require 'uri'
       Async do
         ["ruby", "python", "c"].each do |topic|
           Async do
             Net::HTTP.get(URI "https://www.google.com/search?q=#{topic}")
           end
         end 
       end
    
  • Переработаны однострочники сопоставления с образцом.
    • Добавлен оператор "=>" (значения => переменная), который используется для правостороннего присваивания значений.
      
         0 => a
         p a #=> 0
         {b: 0, c: 1} => {b:}
         p b #=> 0
      
    • Изменено поведение "in", который теперь возвращает true или false.
      
         # version 3.0
         0 in 1 #=> false
         # version 2.7
         0 in 1 #=> raise NoMatchingPatternError
      
  • Добавлен экспериментальный шаблон для поиска значений:
    
       case ["a", 1, "b", "c", 2, "d", "e", "f", 3]
       in [*pre, String => x, String => y, *post]
         p pre  #=> ["a", 1]
         p x    #=> "b"
         p y    #=> "c"
         p post #=> [2, "d", "e", "f", 3]
       end
    
  • Встроен метод Hash#except.
    
       h = { a: 1, b: 2, c: 3 }
       p h.except(:a) #=> {:b=>2, :c=>3}
    
  • Добавлена поддержка однострочного определения метода без использования ключевого слова "end":
    
       def square(x) = x * x
    
  • Стабилизирована конструкция сопоставления с образцом ("case .. in"), которая больше не является экспериментальной.
  • Добавлен экспериментальный C-API для обмена областями памяти между библиотеками-расширениями и предоставления метаданных о содержимом памяти. Например через новый C-API можно передавать такие данные, как числовые массивы и растровые изображения.
  • Удалены специализированные C-API методы $SAFE. $SAFE и $KCODE теперь являются обычными глобальными переменными.
  • Существенно повышена производительность интерактивного интерпретатора IRB, вставка больших отрывков кода в который теперь производится в 53 раза быстрее, чем в Ruby 2.7. Добавлена команда "measure" для вывода статистики о времени выполнения кода.
  • Обновлены gem-модули, входящие в stdlib. Из базового набора исключены модули sdbm, webrick, net-telnet и xmlrpc. В основной состав включены модули rexml и rss.


  1. Главная ссылка к новости (https://www.ruby-lang.org/en/n...)
  2. OpenNews: Выпуск языка программирования Ruby 2.7.0
  3. OpenNews: В RubyGems выявлено 724 вредоносных пакета
  4. OpenNews: Релиз 19.3.0 виртуальной машины GraalVM и реализаций Python, JavaScript, Ruby и R на её основе
  5. OpenNews: Доступен интерпретатор mruby 2.0
  6. OpenNews: Проект Ruby перешёл с Subversion на Git
Автор новости: GentooBoy
Тип: Программы
Короткая ссылка: https://opennet.ru/54315-ruby
Ключевые слова: ruby
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (124) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, хацкер (ok), 11:50, 25/12/2020 Скрыто модератором [﹢﹢﹢] [ · · · ]
  • +5 +/
     
  • 1.2, Аноним (2), 11:56, 25/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –14 +/
    Разве оно не на java runtime, где jit из коробки?
     
     
  • 2.3, Аноним (3), 11:58, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Есть сторонняя реализация на JVM, но речь не о ней.
     
  • 2.4, Аноним (4), 11:59, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Официальная реализация написана на Си. Есть JRuby на java.
     
     
  • 3.9, Dzen Python (ok), 12:27, 25/12/2020 Скрыто модератором
  • –16 +/
     
     
  • 4.11, Аноним (-), 12:33, 25/12/2020 Скрыто модератором
  • +4 +/
     
     
  • 5.14, заминированный тапок (ok), 12:40, 25/12/2020 Скрыто модератором
  • +1 +/
     
     
  • 6.21, Аноним (21), 13:57, 25/12/2020 Скрыто модератором
  • –4 +/
     
  • 5.23, Аноним (-), 14:32, 25/12/2020 Скрыто модератором
  • +/
     
     
  • 6.26, Аноним (26), 14:49, 25/12/2020 Скрыто модератором
  • +5 +/
     
  • 6.58, Dzen Python (ok), 17:35, 25/12/2020 Скрыто модератором
  • –1 +/
     
  • 5.59, Dzen Python (ok), 17:36, 25/12/2020 Скрыто модератором
  • +2 +/
     
  • 4.56, Ordu (ok), 17:30, 25/12/2020 Скрыто модератором
  • +/
     

     ....ответы скрыты модератором (11)

  • 1.6, gogo (?), 12:08, 25/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Гы. Ruby пока не тянет Rails.
     
     
  • 2.8, Dzen Python (ok), 12:24, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Скорее рельсы надо подгонять под паровоз. Паровозу ведь вместо котла с тендером поставили газотурбинку с самолетным форсажем. Ну или перешивать на узкую колею, оптимизируя список действительно критичных методов. Буде у нас узкоколейный рубиновый реактивный паровоз с театром одного актера внутри
     
  • 2.139, Аноним (139), 09:06, 29/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Rails со своим "masturbation over configuration" так сильно подпортили репутацию руби, что было бы лучше если бы их вообще никогда не существовало.
     

  • 1.10, Аноним (10), 12:30, 25/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –8 +/
    Не проще сразу на Go перейти, чем со второй версии на третью?
    Кто-то пишет ещё на этом?
     
     
  • 2.17, Аноним (17), 12:46, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +9 +/
    Представь предприятие на несколько сотен человек, и там внутренняя СРМ, где всё начиная от планировщика заданий, заканчивая генерацией конструкторской документации и даже отдельных вещей для бухгалтерии, которую писали/переписывали/дописывали 10 лет. Ты им предлагаешь все выбросить и переписать на Go? При том что ей занимается два человека. Правильный ответ они перейдут на Ruby 3 лет через 10)
     
     
  • 3.25, Аноним (10), 14:45, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Так вот для кого Мацумото разрабатывает третью версию! :-)
     
  • 3.31, Аноним (31), 15:07, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Это представить невозможно. Если эта русскоязычное предприятие - всё будет на 1С, если англоязычное - на SAP.
    На руби пишут всякие бекэнды, и тут заменить руби на го очень просто, достаточно старое оставить на руби, а новое писать на го.
     
     
  • 4.33, Аноним (21), 16:00, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Русскоязычное еще и полувоенное. А заменить не просто, хотя бы потому что на такие предприятия не очень-то и охотно народ идет.
     
     
  • 5.37, Аноним (37), 16:14, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вы серьезно это все про военных На сколько я знаю военные используют частные ре... большой текст свёрнут, показать
     
     
  • 6.84, Аноним (84), 21:25, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    И что Руби есть и сертифицированной Астре и в Альте. Никаких проблем с Руби нет. А у предприятия продуктов с Qt полно.
     
  • 2.47, Аноним (47), 17:05, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • –9 +/
    нахер перейди со своим гоу. нода и та адекватнее для микросервисов. нахрен мне тащить мусоросборщик с уродливым синтаксисом туда где уже есть мусоросборщик? но юзерам гоу не понять, нода для них сложна, и джаваскрипт, и эвентлуп
     
  • 2.60, Аноним (60), 17:36, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я не понимаю что делать в go без дженериков. Если нужно даже самые банальные вещи с какими-нибудь графами или другими структурами сложнее map сделать, надо либо руками писать свою имплементацию, либо копипастить из библиотек и менять под свои типы, либо городить страшные type assertions. Ад какой-то.
     
     
  • 3.91, malloc (?), 22:32, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Идея гошки была не тащить сразу весь c в гошку Да и идея плюсов была в том,... большой текст свёрнут, показать
     
     
  • 4.93, Аноним (47), 23:10, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    братан, выучить синтаксис гоу не проблема, пара дней. но нахера? пока только маркетинг
     
     
  • 5.94, Аноним (47), 23:12, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    теже плюсы ты нормально тащишь в ноду, если надо. нода не для вычислений. так и гоу тоже, иначе бы там не было сборщика
     
  • 5.101, AlexBO (?), 23:50, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Да всё, кроме сей маркетинг. Я вообще про руби узнал только на днях, когда понадобилось сайты восстанавливать из вебархива. А для этого на гитхабе лежит Wayback Mashine Download и она зараза на руби, хорошо что хоть никаких плясок не понадобилось с бубном - встало всё само и заработало.

    Какой дебил решил http сервис писать на какой-то руби-овне, вообще не понятно мне, зачем, для чего, х.з.

     
  • 5.135, funny.falcon (?), 18:52, 28/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Про маркетинг ты прав как никогда: ряд маркетплейсов написан или активно использует Go.

    А ещё mail.ru активно переписывает серверный фронтенд почты и кучу других проектов.

    Это только то, о чем я знаю непосредственно. А вообще проектов на Go уже овердофига.

    Это не значит, что он очень хорош. Например, у нас отцы основатели все больше новых проектов запускают на Java и Kotlin, и про горный бэкенд говорят «лучше бы мы взяли джавку».

    Но по факту, Go - это новый PHP. Уродливый, но стандарт де факто для тех, кто хочет «не слишком сложно и достаточно быстро».

     
     
  • 6.146, Аноним (47), 14:53, 04/01/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Не слишком сложно и достаточно быстро - мало профита для программиста :)
     
  • 4.111, Урри (ok), 17:48, 26/12/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Но кто возьмётся писать проект на гошке, если она будет с каждой версией мутировать до неузнаваемости.

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

    Не благодари.

     
  • 4.120, Аноним (120), 04:13, 27/12/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Я не понимаю, о чем ты. Я решил попробовать go какое-то время назад. Мне нужно было решить несложную задачу, для решения которой мне нужно было использовать графы. Так сложилось, такая проблема была. Я хотел чтобы каждая нода содержала в себе нужные мне данные. В итоге всё уперлось в то, что я должен был либо руками перепиливать существующую библиотеку, либо фигачить type assertions. Может я не понимаю что-то, скажите мне если есть какой-то способ сделать это нормально. Но из того что я пронаблюдал, это средневековье какое-то. Я не прошу синтаксического ада как в плюсах, но какие-то базовые вещи должны всё-таки быть имплементированы, копипастить код это уже какая-то дикость.
     
     
  • 5.129, Аноним (129), 18:07, 27/12/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Кстати, напомнил. Несколько лет назад мне нужно было решить несложную задачу, для чего требовалось использовать графы. Выбор языка не стоял, надо было делать на плюсах. Взял я BGL и ради решения этой несложной задачи сношался с ним недели две, наверное. Особенно доставляли сообщения об ошибках от компилятора, где раскрывались шаблоны с совершенно диким уровнем вложенности, и понять что-то было совершенно невозможно. В конечном итоге сделал, конечно, и получившийся код на вид выглядит довольно простым, может быть, он даже до фига эффективный (там это не критично), но сколько с ним было боли… Одно радует — дорабатывать тот код точно не придётся, его некоторое время спустя выкинули за ненадобностью.
     
  • 3.92, Аноним (129), 22:40, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > самые банальные вещи с какими-нибудь графами или другими структурами сложнее map сделать,

    https://pkg.go.dev/gonum.org/v1/gonum/graph
    Осторожно, береги шаблон.

     
     
  • 4.118, rewlad (?), 01:32, 27/12/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Проверки типов нет -- Node[Foo] / Node[Bar] не отличаются.

    И да, что делать непонятно: выходит или не-по-гошески сложно, или заметно убого

     
     
  • 5.123, Аноним (129), 13:23, 27/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Не понял, что ты подразумеваешь под Node[Foo] и Node[Bar], но если тебе нужна проверка типов (если у тебя ноды в одном графе имеют разные типы, что не самый типичный вариант использования), берёшь и делаешь её. Встроенные средства в Go для этого есть, если ты не в курсе, и даже больше одного.
     
  • 4.119, Аноним (120), 04:06, 27/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ага, и как мне там заиметь ноды с нужными мне данными? Без всех этих диких type assertions.
     
     
  • 5.122, Аноним (129), 13:19, 27/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Создать для них тип, реализующий интерфейс graph.Node, очевидно. Надо рассказывать, как это делается, или сам найдёшь нужную страничку в "go для чайников"?
     
     
  • 6.126, Аноним (120), 16:04, 27/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ага, и потом при каждом чихе или попытке поработать с графом нужно делать то что в go называется type assertion. value, ok := node.(MyOwnNodeType)
    И по большому счёту нужно ещё проверять ok и делать что-то на случай если где-то был баг и в граф попал не "MyOwnNodeType". Выносим компайл тайм проверки в рантайм. 10/10 восхитительное решение проблемы.
     
     
  • 7.127, Аноним (129), 17:24, 27/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Ага, и потом при каждом чихе или попытке поработать с графом нужно делать то что в go называется type assertion. value, ok := node.(MyOwnNodeType)

    Ну вот не надо преувиличивать. При работе с собственно графом это не требуется. Когда нужно работать с содержимым узла — да, требуется. Скорее всего, это будет единственный type assertion в функции. Не вижу в этом ничего криминального.

    > Выносим компайл тайм проверки в рантайм. 10/10 восхитительное решение проблемы.

    Это решение называется «динамическая типизация». Её использование в сабже тебя не смущает?

     
     
  • 8.128, Аноним (129), 17:25, 27/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Преувеличивать, конечно же Опечатался ... текст свёрнут, показать
     
  • 2.104, Неа (?), 08:50, 26/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Сам пиши на этом недоязыке Golang.
     

  • 1.12, Аноним (12), 12:33, 25/12/2020 Скрыто модератором [﹢﹢﹢] [ · · · ]
  • –1 +/
     
  • 1.13, Аноним (17), 12:38, 25/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Оно живое? Чего они все в 2020 году зашевелились, то Перл, то теперь Руби.
     
     
  • 2.15, Аноним (15), 12:43, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Много лишнего времени появилось.
     
  • 2.45, Иваня (?), 17:00, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    На самоизоляции все. Дело было вечером, делать было нечего вот и решили поработать
     

  • 1.18, Аноним (15), 12:48, 25/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Какие преимущества перед Crystal?
     
     
  • 2.20, Алексей (??), 12:55, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Количеством написанных гемов на все случаи жизни.
     
  • 2.27, Аноним (26), 14:54, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Какие преимущества перед Crystal?

    Тем что Ruby ещё жив, а Crystal уже нет.
    Когда последний релиз вышел?
    Когда версию 1.0 ждать?

     
     
  • 3.35, Аноним (21), 16:03, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В июне и номер версии ничего не значит. Или у вас хромова болезнь версий?
     
     
  • 4.51, Аноним (26), 17:17, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Конечно ничего не значит.
    И то, что ключевой разраб ушёл и теперь работает рубистом.
    Многие библиотеки в заброшенном состоянии, почти всё приходится допиливать. И тут начинают вылезать баги компилятора.
     
  • 2.48, Аноним (47), 17:06, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    не собирается по полчаса?
     

  • 1.19, тов. Майор (?), 12:51, 25/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Ждем когда cpython сворует у pypy.
     
     
  • 2.29, Аноним (29), 14:58, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Ваше мнение очень важно для нас, пожалуйста, оставайтесь на линии.
     

  • 1.24, Андрей (??), 14:34, 25/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    GitLab станет, наконец-то, быстрее шевелиться?
     
     
  • 2.28, Аноним (26), 14:55, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > GitLab станет, наконец-то, быстрее шевелиться?

    Быстрее тормозить

     
     
  • 3.106, anonymous (??), 13:13, 26/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Там кусочки на Go пишут, видимо, чтобы ускорить как раз.
     
  • 2.52, Аноним (52), 17:19, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Для этого нужен не Руби 3, а просто больше оперативной памяти поставить, чтобы он мог съесть совсем всю оперативу.
     

  • 1.30, Аноним (30), 14:59, 25/12/2020 Скрыто модератором [﹢﹢﹢] [ · · · ]
  • –6 +/
     
     
  • 2.34, Аноним (34), 16:01, 25/12/2020 Скрыто модератором
  • +/
     
     
  • 3.39, YetAnotherOnanym (ok), 16:29, 25/12/2020 Скрыто модератором
  • +/
     
  • 3.64, Аноним (64), 17:46, 25/12/2020 Скрыто модератором
  • +/
     
  • 2.71, Урри (ok), 18:18, 25/12/2020 Скрыто модератором
  • +4 +/
     
     
  • 3.77, Ordu (ok), 19:04, 25/12/2020 Скрыто модератором
  • –1 +/
     
  • 3.78, Аноним (78), 19:16, 25/12/2020 Скрыто модератором
  • –3 +/
     

     ....ответы скрыты модератором (6)

  • 1.32, YetAnotherOnanym (ok), 15:57, 25/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Экспериментальная поддержка модели акторов Ractor, предоставляющую абстракцию, подобную "акторам" (ruby actor), разработанную для обеспечения потокобезопасного параллельного выполнения программы. Поддерживается создание нескольких ракторов и их параллельный запуск. Между собой ракторы взаимодействуют путем передачи сообщений.

    Джо Армстронг с неба смотрит на Юкихиро Мацумото с нескрываемой иронией.

     
  • 1.36, Аноним (36), 16:04, 25/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Поздравляю, ребятки-котятки! Добрый и светлый язык. Сообщество дружное и тёплое
     
     
  • 2.41, Аноним (41), 16:36, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Сообщество дружное и тёплое

    Теплое и мягкое ;)

     
     
  • 3.57, Аноним (57), 17:33, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Мягкое и мелкое
     
  • 2.70, Урри (ok), 18:17, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Даже слишком дружное, если вы понимаете о чем я.
     
     
  • 3.88, Аноним (88), 21:49, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Не понимаю, но я в деле
     

  • 1.42, Иваня (?), 16:52, 25/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вау, Ruby всё ещё жив. Думал Python его задушил =) Выходит спрос есть и не маленький. Надо попробовать пописать на нём.
     
     
  • 2.54, Albertio (ok), 17:22, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Большинство вакансии просто не в России. Из-за этого некое ощущение, что руби умер.
     
     
  • 3.113, Аноним (113), 18:45, 26/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Удалёнку и интернет пока ещё не запретили. А внутренний рынок - это проблемы локального рынка. Ясное дело, что программера на питоне или пэхе здесь можно за копейки найти.
     
     
  • 4.130, Аноним (129), 01:04, 28/12/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Удалёнку и интернет пока ещё не запретили

    Я бы на твоём месте уже записывался в очередь на регистрацию физлиц-иноагентов. А то не успеешь — можешь под уголовку попасть.

     
  • 2.109, Аноним (113), 16:00, 26/12/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Python уже мёртв. Начинать на нём новый проект - безумие.
    А вот Ruby получил возможность вернуться обратно, по крайней мере в области сайтостроения.
     
     
  • 3.110, Аноним (110), 16:40, 26/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    А на чём начинать, бро? На чём?
    Кроме как на плюсах или голом си не вижу вариантов, но после питона чо-та я стал пугливый и ленивый.
    Не зря дедушка ESR говорил: please write in C.
     
     
  • 4.112, Аноним (112), 17:54, 26/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Нет универсальных языков сейчас. Нет и не придвидится. Если для веба, то Ruby не такой уж и плохой вариант на ближайшую перспективу. По крайней мере, чище, чем Javascript. И явно проще, чем Питон для разработки и поддержки проекта.
     
     
  • 5.131, Аноним (131), 13:42, 28/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Сейчас нет универсальных языков, а были ли они?
     
     
  • 6.133, Аноним (113), 16:02, 28/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Если верить рекламе всяких платных учебных курсов, то питон может всё. Ничего другое уже не нужно.
     
     
  • 7.136, Анином (?), 20:33, 28/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Если верить рекламе

    И что, есть такие идиоты?

     
     
  • 8.143, Аноним (-), 16:32, 29/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Для решившего заняться программированием впервые, вполне может подействовать ... текст свёрнут, показать
     
  • 3.145, AndyD (?), 19:11, 02/01/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Да что ты несешь такое, оспадя!!!(
     

  • 1.44, Аноним (47), 16:53, 25/12/2020 Скрыто модератором [﹢﹢﹢] [ · · · ]
  • –2 +/
     
     
  • 2.50, Аноним (52), 17:15, 25/12/2020 Скрыто модератором
  • +/
     
     
  • 3.53, Аноним (47), 17:21, 25/12/2020 Скрыто модератором
  • –1 +/
     

     ....ответы скрыты модератором (2)

  • 1.46, Иваня (?), 17:03, 25/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Они бы хоть сайт обновили... и документацию. То чёрт ногу сломит, где спецификация. Подсмотрели бы как сделали в Python, Golang.
     
     
  • 2.49, Аноним (47), 17:09, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    вот буквально сегодня искал для жаждущего знаний по питону мануал на их оф сайте "для начинающих". через 30 секунд бросил и отправил его в гугл. вот не надо тут про питон
     
     
  • 3.55, Аноним (15), 17:29, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не понял, чем жаждущему знаний по питону поможет мануал по руби на офсайте для начинающих? Поищи жаждущих знаний по руби и предложи им мануал по питону, там он достаточно подробный и с кучей примеров на все случаи жизни, даже пишут в какой версии и что изменили.
     
     
  • 4.63, Аноним (47), 17:44, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    ты как-то очень сложно зашел. при чем здесь руби?
     
  • 4.132, funny.falcon (?), 14:38, 28/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Я когда-то изучал по pdf "Programming Ruby The Pragmatic Programmer's Guide". Но тогда руби был по проще.
    Web версия, кстати, всё ещё доступна: https://ruby-doc.com/docs/ProgrammingRuby/ , но наверняка частично устарела.
     
  • 2.75, Ordu (ok), 18:45, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > То чёрт ногу сломит, где спецификация.

    Чё? У тебя с глазами всё в порядке?

    Идём сюда: https://www.ruby-lang.org/en/

    Там есть ссылка Documentation: https://www.ruby-lang.org/en/documentation/

    По этой ссылке очень много всего, но если пролистать все эти туторы "ruby for dummies in 21 days", то там ниже мануалы, среди них первый: https://ruby-doc.com/docs/ProgrammingRuby/

    И вот здесь уже первое же предложение: "This book is a tutorial and reference for the Ruby programming language." Чего тебе ещё не хватает?

    > Подсмотрели бы как сделали в Python, Golang.

    Чё ты как дед старый? Интерфейс не такой, как ты привык, и тебе уже нужна помощь внука, чтобы справиться?

     
  • 2.76, Гелиодор (?), 18:49, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Обновят, родной, не бойси. С документацией в Руби всё хорошо.
     
  • 2.83, GentooBoy (ok), 21:24, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    https://rubyreferences.github.io/rubyref/
     

  • 1.61, Аноним (61), 17:39, 25/12/2020 Скрыто модератором [﹢﹢﹢] [ · · · ]
  • –4 +/
     
     
  • 2.65, Аноним (47), 17:48, 25/12/2020 Скрыто модератором
  • +1 +/
     
     
  • 3.69, Урри (ok), 18:15, 25/12/2020 Скрыто модератором
  • +/
     
     
  • 4.82, Аноним (82), 21:04, 25/12/2020 Скрыто модератором
  • +/
     

     ....ответы скрыты модератором (3)

  • 1.66, Аноним (66), 18:01, 25/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    С чего он умер? Смотрим стату: charliereese.ca/article/top-50-y-combinator-tech-startups
     
  • 1.79, Наноним (?), 19:33, 25/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Язык может быть и хороший. Но меня от знакомства с ним всегда останавливало сравнение производительности с Perl или Python. Как бы ни был хорош язык, но если он жёстко тормозит, то область применения сильно сужается.
     
     
  • 2.85, Аноним (84), 21:30, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Сравнивают и Руби все равно не догоняет Питон.
     
  • 2.86, GentooBoy (ok), 21:30, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    опишите в какой области вы хотите его применить, может быть смогу что то прокомментировать
     
  • 2.87, Аноним (88), 21:47, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А perl и python не догоняют shell + unix утилиты.
     

  • 1.80, Аноним (80), 19:56, 25/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Дадада, я помню этот язык и восторженные возгласы. Тру объектно ориентированные язык, убийца C++. Дадада.
     
     
  • 2.81, Ordu (ok), 20:17, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > убийца C++

    Ооо! По какой помойке ты шарился, где такие возгласы звучали? Я люблю такие помойки.

     
     
  • 3.100, Аноним (-), 23:45, 25/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > По какой помойке ты шарился

    ви таки не поверите

     
  • 2.105, Неа (?), 08:52, 26/12/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Для С++ убийца не нужен, он сам себя закапывает.
     

  • 1.97, InuYasha (??), 23:42, 25/12/2020 Скрыто модератором [﹢﹢﹢] [ · · · ]
  • –4 +/
     
  • 1.107, SubGun (??), 14:50, 26/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Правостороннее присваивание - это прям дичь. Отличный способ сделать код нечитаемым.
     
  • 1.108, Аноним (-), 15:23, 26/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Юкихиро Мацумото - chotkij patsan.
     
  • 1.114, Аноним (36), 22:57, 26/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Так теперь Elixir можно не учить?
     
     
  • 2.115, Аноним (66), 23:15, 26/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Это почему же?
     
     
  • 3.116, Аноним (36), 23:19, 26/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Раби стал быстрым и многопоток в нем теперь есть
     
     
  • 4.117, Аноним (66), 23:25, 26/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Я не понял разницы между VM и JIT на картинке. JIT включать нужно отдельно? А когда на Rails это будет использоваться?
     
  • 4.124, Аноним (124), 13:31, 27/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Что такое "Раби"?
     

  • 1.125, Аноним (125), 14:51, 27/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Он для чего-то кроме метасплойта ещё нужен?
     
  • 1.134, Аноним (134), 17:56, 28/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вопрос к знатокам: "Рубин без Рельсов пригоден для разработки?".
     
     
  • 2.137, Аноним (137), 04:07, 29/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Да, конечно, почему нет то
     
  • 2.138, Аноним (66), 06:15, 29/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Некоторые стартапы написаны на чистом Ruby. Кроме RoR, для мелких проектов есть: Padrino, Roda
    Из новых: Bridgetown (а-ля Jekyll)

    По синтаксису и экосистеме мне Рубин больше нравится, чем PHP / Python / etc.

     
  • 2.140, Аноним (139), 09:16, 29/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Как раз без них и пригоден. А RoR отвратителен.
     
     
  • 3.141, Аноним (66), 10:39, 29/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Чем отвратителен то?
     
     
  • 4.142, Аноним (-), 15:43, 29/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Не обращай внимания, это тролль.
     

  • 1.144, анончик (?), 22:54, 29/12/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    что-то между 2.7 и 3.0 меньше разницы, чем было между 1.9.1 и 1.9.2. или чем между 1.8.7 и 1.9.

    rubylint уже год как пугает "вот придёт 3.0 и у вас жопа отвалится". а чёт нифига.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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