The OpenNET Project / Index page

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

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

25.12.2022 20:54

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

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

  • Добавлен начальный порт интерпретатора CRuby, компилируемого в промежуточный код WebAssembly для запуската в web-браузере или под управлением обособленных runtime, таких как wasmtime. Для прямого взаимодействия с операционной системой при обособленном запуске используется API WASI (WebAssembly System Interface). Среди прочего предоставлена VFS обвязка поверх WASI, позволяющая упаковывать целиком всё приложение на языке Ruby в представление в виде одного wasm-файла. Запуск в браузере может использоваться для создания обучающих и демонстрационных web-сервисов, таких как TryRuby. На текущем этапе развития порт успешно проходит тестовые наборы basic и bootstrap, в которых не применяется API Thread. В порте также не поддерживаются файберы (Fiber), исключения и сборка мусора.
  • Объявлен стабильным и готовым для рабочих применения внутрипроцессный JIT-компилятор YJIT, созданный разработчиками платформы электронной коммерции Shopify в рамках инициативы по увеличению производительности Ruby-программ, использующих фреймворк Rails и вызывающих очень много методов. Ключевым отличием от ранее используемого JIT-компилятора MJIT, базирующегося на обработке методов целиком и использующего внешний компилятор на языке Си, является то, что YJIT применяет версионирование базовых блоков (LBBV - Lazy Basic Block Versioning) и содержит интегрированный JIT-компилятор. Благодаря LBBV, JIT вначале компилирует только начало метода, а оставшуюся часть компилирует через некоторое время, после того как в процессе выполнения будет определены типы используемых переменных и аргументов. YJIT доступен для архитектур x86-64 и arm64/aarch64 в Linux, macOS, BSD и других UNIX-платформах.

    В отличие от СRuby код YJIT написан на языке Rust и требует для компиляции наличие компилятора rustc 1.58.0+, поэтому сборка YJIT по умолчанию отключена и является опциональной. При использовании YJIT зафиксировано увеличение производительности при выполнении теста yjit-bench на 41% по сравнению с использованием интерпретации.

  • Добавлена дополнительная защита от атак, вызывающих отказ в обслуживании при обработке внешних данных в неэффективных и длительно выполняемых регулярных выражениях (ReDoS). Значительно улучшен алгоритм сопоставления, в котором задействована техника мемоизации. Например, время выполнения выражения '/^a*b?a*$/ =~ "a" * 50000 + "x"' сократилось с 10 до 0.003 секунд. Ценой оптимизации является увеличение потребления памяти, расход которой примерно в 10 раз выше размера входных данных. Второй мерой защиты является возможность определения таймаута (например, "Regexp.timeout = 1.0"), за который должно успеть обработаться регулярное выражение.
  • В состав включён режим syntax_suggest, помогающий диагностировать причины ошибок, связанных с отсутствующим или лишним закрывающим выражением "end".
    
       Unmatched `end', missing keyword (`do', `def`, `if`, etc.) ?
    
         1  class Dog
       > 2    defbark
       > 3    end
         4  end
    
  • В режим показа места ошибок добавлена возможность пометки аргументов при ошибках, связанных с типами и аргументами, например:
    
       test.rb:2:in `+': nil can't be coerced into Integer (TypeError)
      
       sum = ary[0] + ary[1]
                      ^^^^^^
    
  • Добавлен новый синтаксис для перенаправления в другие методы наборов аргументов:
    
       def foo(*)
         bar(*)
       end
      
       def baz(**)
         quux(**)
       end
    
  • Предложен ruby_vm/mjit/compiler - вариант старого JIT-компилятора MJIT, переписанный на языке Ruby. Обеспечено выполнение MJIT в отдельном процессе, вместо выполнения в потоке MJIT worker.
  • В Bundler 2.4 при обработке зависимостей задействован определитель версий PubGrub, также применяемый в пакетном менеджере pub для языка Dart. Ранее используемый алгоритм Molinillo продолжает применяться в RubyGems, но в будущем также будет заменён на PubGrub.
  • Обновлены версии встроенных и входящих в стандартную библиотеку gem-модулей.


  1. Главная ссылка к новости (https://www.ruby-lang.org/en/n...)
  2. OpenNews: Выпуск языка программирования Ruby 3.1
  3. OpenNews: RubyGems переходит на обязательную двухфакторную аутентификацию для популярных пакетов
  4. OpenNews: Уязвимость в RubyGems.org, позволяющая подменить чужие пакеты
  5. OpenNews: Устранение нарушения GPL в библиотеке mimemagic привело к сбою в Ruby on Rails
  6. OpenNews: Выпуск языка программирования Ruby 3.0
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/58387-ruby
Ключевые слова: ruby
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (154) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 22:02, 25/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Кроме RubyOnRails что-то полезное на этом написано?
     
     
  • 2.5, Аноним (5), 22:21, 25/12/2022 [^] [^^] [^^^] [ответить]  
  • +4 +/
    brew, к сожалению
     
     
  • 3.19, Анончик (?), 23:09, 25/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    есть nix который отлично работает под маком
     
     
  • 4.72, Аноним (72), 08:20, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • –3 +/
    В никсе(который отлично работает под линуксом) - собрано больше всего софта, но на деле он протухший до невозможности использования, иногда поломан. Сам пакетный манагер плохо работает на 4ГБ ОЗУ, надо или своп размером 8, или 8 ОЗУ. Иначе будет падать.
    Другое дело - линуксбрюки. Софта в нём очень мало, но есть всё что мне надо для работы. И работает не в пример штобильнее никса.
    Почему так - ответ банален. У брюк есть сообщество, и его сильно больше чем у никса.
     
     
  • 5.94, Аноним (94), 11:45, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > линуксбрюки

    Что за зверь такой?

     
  • 5.133, Аноним (133), 22:38, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Да что за жесть, уже пакет менеджер требует 8 Гб ОЗУ. А ведь в теории это должна быть не особо требовательная софтина, ей ведь ещё софт на машины с минимальными системными параметрами (а системные требы там сколько, 512 Мб? Если не 256?)
     
  • 3.40, Аноним (40), 01:15, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    macports.org спасет отца русской демократии
     
  • 2.6, Аноним (6), 22:24, 25/12/2022 [^] [^^] [^^^] [ответить]  
  • +5 +/
    redmine, к сожалению
     
     
  • 3.50, Аноним (50), 02:18, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Он-таки на рельсах, так что несчитово в контексте вопроса.
     
  • 2.11, Аноним (11), 22:33, 25/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    RPG Maker был с 2005 до 2015 года.
     
  • 2.12, fdcdfscs (?), 22:33, 25/12/2022 [^] [^^] [^^^] [ответить]  
  • +5 +/
    gitlab, redmine, Chef, Puppet ... много что. И оно вызывает боль из-за языка - никогда не знаешь при обновлении как оно себя поведет. А всё в docker не запихнуть.
     
  • 2.27, Аноним (27), 00:09, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    portupgrade
     
  • 2.36, Советский инженер на пенсии (?), 00:33, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > RubyOnRails

    Даже рельсы сейчас существуют исключительно в стадии поддержки легаси. Новое на них вряд ли что-то делают.

     
     
  • 3.70, Аноним (70), 08:15, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Именно поэтому с началом выстрела в ногу Твиттера народ бежит, в том числе, и на Мастодон, написанный на рельсах, ага.
     
     
  • 4.74, Аноним (72), 08:26, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А какое отношение это вообще к фреймворку имеет? Ради экскремента спроси у любого пользователя пейсбука, втыканта или одноглазников о технологическом стеке их сосалочки.
     
     
  • 5.81, Аноним (70), 09:55, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А читать тред?

    > Initial release: 16 March 2016

    Если у тебя это легаси, то, возможно, тебе пора на пенсию.

    P.S. Рельсы появились в 2004.

     
  • 4.83, Аноним (83), 10:17, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Твиттер уже давно на Scala.
     
     
  • 5.162, Аноним (-), 20:41, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    говорите так, как будто Scala ещё живая....
     
  • 2.39, coocos (?), 00:46, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    hbase shell, puppet
     
  • 2.82, Аноним (83), 10:16, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Даже Github на нём написан, но совершенно точно в этом нет ничего хорошего.  
     
  • 2.125, Аноним (125), 22:16, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    AsciiDoctor
     
  • 2.160, Аноним (-), 20:25, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Metasploit, же.
     

  • 1.2, Аноним (2), 22:04, 25/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >>В отличие от СRuby код YJIT написан на языке Rust и требует для компиляции наличие компилятора rustc 1.58.0+

    прекрасно. рекурсия ненужности

     
     
  • 2.8, Аноним (8), 22:28, 25/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Зато работает быстрее*

    * В синтетических тестах**
    ** Набор тестов*** определён разработчиками YJIT
    *** Приближённые к реальным приложения не входят в набор тестов

     
     
  • 3.15, Вы забыли заполнить поле Name (?), 22:48, 25/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ну зачем ты так, кто-то же наверняка поверил...
     
  • 3.47, Аноним (47), 02:02, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Про надёжность забыл(
     
  • 2.16, Аноним (16), 22:49, 25/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Осталось написать код хруста на рубях, и будет полный фарш.
     
     
  • 3.89, Аноним (89), 10:54, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    RubyRust... э, что-то подобное уже было - PythoRust
     
  • 3.95, Бывалый смузихлёб (?), 12:13, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    поскольку релизятся они не одновременно, каждый из модулей будет зависеть от старой версии другого
    Чтобы поставить новенький раст, надо скачать немного устаревший рубин, чтобы поставить его - прежде поставить немного устаревший раст, но для него потребуется ещё более старый рубин

    Эхх, заживём. Зато не будет проблем с отсутствующей нужной версией рубинов или растов на коме - ведь они все будут установлены

     
     
  • 4.117, Аноним (83), 17:21, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Просто все надо будет снова переписать на Си.
     

  • 1.4, ilowry (?), 22:14, 25/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Добавлен новый синтаксис для перенаправления в другие методы наборов аргументов

    Больше синтаксиса ужасного и разного!

     
  • 1.7, Аноним (5), 22:24, 25/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > сократилось с 10 до 0.003 секунд. Ценой оптимизации является увеличение потребления памяти, расход которой примерно в 10 раз выше размера входных данных

    Ящитаю, это прекрасно. Это описывает Ruby лучше всех эпитетов.

     
     
  • 2.9, Аноним (6), 22:28, 25/12/2022 [^] [^^] [^^^] [ответить]  
  • +12 +/
    что не так? память расходуют в 10 раз больше, но работает в 3333 раз быстрее.
     
     
  • 3.134, Аноним (125), 22:39, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Хейтерам всегда всё не так
     
  • 2.10, trolleybus (?), 22:31, 25/12/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Нет, а как иначе? Тут либо время, либо память. Tertium non datur™.

    Ну и проверять регулярками многомегабайтные строки - тоже так себе идея. Поэтому вряд ли оно съест очень много по сравнению со всем остальным.

     
  • 2.31, Советский инженер на пенсии (?), 00:21, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Что не так? Не хватает православных расово верных "два ядра, два гига"? Так, наверное, пора бы слазить с 775 сокета.
     
     
  • 3.84, Аноним (83), 10:18, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Руби сам по себе жруль, так тут он стал ещё больше жруль.
     
  • 2.93, Аноним (93), 11:32, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Это нормально. Вместо того, чтобы считать десятки раз одни и те же значения, надо брать и записывать их в память.
    С применением мемоизации можно значимо ускорить рекуррентные функции, например, вычисления факториала или чисел Фибоначчи.
     

  • 1.13, pashev.ru (?), 22:35, 25/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > /^a*b?a*$/

    И нахрена такое?

     
     
  • 2.17, Вы забыли заполнить поле Name (?), 22:50, 25/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Японцы-извращенцы.
     
  • 2.20, Аноним (20), 23:17, 25/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Perl-ом запахло.
     
  • 2.30, Советский инженер на пенсии (?), 00:13, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Очевидно, чтоб отсеять гуманитариев-самоучек, которые в глаза не видели shell скриптов.
     
     
  • 3.49, pashev.ru (?), 02:05, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    На хрена такой регексп?
     
     
  • 4.111, Аноним (111), 15:36, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    а входные данные вида "a" * 50000 + "x" понятно зачем?
    Для тестов такой регексп
     

  • 1.14, Аноним (14), 22:37, 25/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > вобравшего лучшие черты Perl
    > /^a*b?a*$/ =~ "a" * 50000 + "x"

    Заметно

     
     
  • 2.21, . (?), 23:19, 25/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А лучше было бы "гетэлементблэткласснэйм('мойкласс')"?
    Язык программирования или чистописания?
     
     
  • 3.24, Анонус (?), 23:32, 25/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Язык или шифрограмма?
     
  • 3.29, Советский инженер на пенсии (?), 00:12, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это дело привычки. Кому-то скобочки, а кому-то begin end.
     
  • 3.110, Аноним (110), 14:57, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Язык программирования или чистописания?

    Понятночтоимелосьввидуписание, хоть и многословное.

     
  • 2.28, Советский инженер на пенсии (?), 00:10, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Заметно

    Заметно, да, что ты не знаешь что такое UNIX Shell и откуда вообще взялись эти однострочники. Но отчаянные пионеры почему-то всегда ассоциируют с ними Perl :)

     
     
  • 3.105, Вы забыли заполнить поле Name (?), 13:38, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Где в шеле  оператор сопоставления с образцом?
     
     
  • 4.126, Аноним (125), 22:20, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Собственно в шелле. В вопросе содержится ответ.
     

  • 1.18, Вы забыли заполнить поле Name (?), 22:52, 25/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >  созданный разработчиками платформы электронной коммерции Shopify в рамках инициативы по увеличению производительности Ruby-программ, использующих фреймворк Rails и вызывающих очень много методов.

    Аахахаха. Помню как только рельсы появились, то модным был лозунг "программист дороже железа".

     
     
  • 2.127, Аноним (125), 22:21, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А это разве не так?
     

  • 1.22, saahriktu (ok), 23:20, 25/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    Ура! Ruby рулит! Весьма годная альтернатива Python'у (в т.ч. и без рельсов, да)!
     
     
  • 2.26, Советский инженер на пенсии (?), 00:09, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Весьма годная альтернатива Python'у

    А работодатели знают об этом?

     
     
  • 3.128, Аноним (125), 22:22, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А у тебя своего мнения нет, всё по работодателям меряешь?
     

  • 1.25, Советский инженер на пенсии (?), 23:50, 25/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Язык хороший, но он ушел в забвение. Жив или мёртв увы решают работодатели, а не фичастость самого языка. Сейчас вакансии только на опытных рубистов для поддержки уже готовых проектов.
     
     
  • 2.51, Аноним (50), 02:22, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >опытных рубистов для поддержки уже готовых проектов

    Не скажи, работал на проекте, где бэкэнд на руби вообще поддерживал студент-историк (!), с программированием знакомящийся в процессе работы. Да, проект был уже написан до него, и от него требовались только мелкие правки по апи, но всё же. Руби достачно прост, если индивид не совсем дерево.

     
  • 2.75, Bouquet (?), 08:42, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Открой hh и введи ruby developer. Куча вакансий, в том числе, готовые брать джунов. Да и если в вакансии не пишут, что они не готовы брать джунов - это не значит, что они не готовы.
     
     
  • 3.103, dd (??), 13:23, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > это не значит, что они не готовы

    А работодатели в курсе?

     
  • 2.129, Аноним (125), 22:26, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Язык жив, пока есть программисты, пишущие на нём, и/или программы, работающие на нём.
     
  • 2.159, Данон (?), 19:28, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ruby не умер, он просто стал вампиром

    Ещё он дал побеги: Elixir, Crystal, Natalie

     

  • 1.37, Аноним (37), 00:37, 26/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Любой язык с динамической типизацией является овном и должен пропасть в истории.
     
     
  • 2.46, pashev.ru (?), 02:01, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    C++ с динамической типизацией, кстати. Хаскель тоже, и Раст. Кто не согласен, тот школоло.
     
     
  • 3.53, penetrator (?), 03:43, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    а в руби есть НЕдинамическая? вот правильно читай его слова
     
     
  • 4.90, pashev.ru (?), 10:56, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +4 +/
    А ты знал, что в руби всё — объект, даже число?
     
     
  • 5.143, Аноним (143), 07:00, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Даже код - это объект класса Proc.... Но только не путайте модель языка и схему выполнения кода.
     
  • 5.152, мимо (?), 09:31, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Блок - не объект. Единственное исключение, емнип.
     
     
  • 6.164, Аноним (-), 22:20, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Блок - не объект. Единственное исключение, емнип.

    Как это?..... Он передаётся как неявный аргумент ссылкой на объект Proc. И активировать его можно как через yeild, так и через вызов call

     
  • 3.130, Аноним (125), 22:28, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Кто утверждают такую чушь не обосновывая её - тот школоло
     
  • 2.54, Советский инженер на пенсии (?), 03:44, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Сам то хоть знаешь чем отличается динамическая от статической и для чего это вообще нужно?! А то мне тут недавно попался мужичок, который на голубом глазу втирал, что "строгая" типизация это то же самое что статическая.
     
  • 2.59, Аноним (20), 06:45, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А на чем же Вротпресс будет работать?
    Половина интернетов рухнет.
     

  • 1.38, Самый умный из вас (?), 00:42, 26/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Языки с постфиксной формой ифов не нужны
     
     
  • 2.42, Аноним (143), 01:40, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да и циклы не нужны. GOTO наше всё.
     
     
  • 3.44, Советский инженер на пенсии (?), 01:42, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +5 +/
    goto очень часто не хватает
    мне как человеку который всю жизнь писал на ассемблере яву кажутся какой-то дичью без возможности безусловного перехода
     
     
  • 4.77, Брат Анон (ok), 09:07, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Если тебе нужен goto -- значит ты не умеешь декомпозировать задачи.
     
     
  • 5.104, dd (??), 13:33, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • –4 +/
    linux kernel на помойку да? Или как всегда - это другое?
     
     
  • 6.106, Вы забыли заполнить поле Name (?), 13:47, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    В ядре он применяется для выполнения действий по выходу из функции. В других языках для этого есть raii или defer. Или где ещё применяется?
     
     
  • 7.131, Аноним (125), 22:30, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Так всё таки применяется?
     
     
  • 8.140, Вы забыли заполнить поле Name (?), 00:39, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Все таки ты не умеешь читать ... текст свёрнут, показать
     
  • 6.109, Аноним (109), 14:08, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >>>> [новость о руби]
    >>> goto очень часто не хватает
    >> Если тебе нужен goto -- значит ты не умеешь декомпозировать задачи.
    > linux kernel на помойку да? Или как всегда - это другое?

    Если это не какой-то новый форк, переписаный на руби, то у меня для тебя плохие новости - да, это таки другое.

     
  • 6.146, Брат Анон (ok), 08:22, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > linux kernel на помойку да? Или как всегда - это другое?

    Не читай, сразу пиши. Всё правильно сделал.
    Читай ещё раз внимательно: декомпозиция.

     
  • 5.172, garrick (?), 14:47, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Каких бы ты лябд и ...как там оно ещё называет... не написал снаружи, внутри после компиляции или приведения к байт-коду всегда будет GOTO.
     
  • 3.52, A94c00f0199934b (?), 03:13, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Есть языки, в которых сам язык это один "большой цикл", например erlang. Циклы обеспечиваются в основном через обработку списков, но есть альтернативы.
     
  • 2.48, pashev.ru (?), 02:02, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Кхе-кхе... http://git.pashev.ru/gcd/tree/gcd.fs
     
     
  • 3.157, Аноним (157), 11:35, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо! Кто-то еще помнит язык загрузчика древних FreeBSD :^)
     
     
  • 4.163, Аноним (109), 21:08, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Спасибо! Кто-то еще помнит язык загрузчика древних FreeBSD :^)

    Почему в древних? Как в карренте не знаю, а в src.conf для 13 пока еще нужно явно указывать  WITHOUT_FORTH для сборки без него.


     

  • 1.86, Аноним (83), 10:25, 26/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Задачка
    a=1
    b=2
    a=a+b-b=a

    Вопрос почему компилятор не надавал по рукам за такую форму записи?

     
     
  • 2.91, Аноним (91), 11:00, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Руби это интерпретатор.
     
  • 2.114, Аноним (111), 16:20, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    откуда такой вопрос в отношении языка, который позволяет не писать скобки при вызове функции?
     
     
  • 3.115, Илья (??), 17:08, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Жестоко. Я бы ожидал, что фунция без скобок это как делегат.

    А можно дважды скобки поставить?

     
     
  • 4.119, Аноним (111), 18:10, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > А можно дважды скобки поставить?

    можно, если это функция с одним аргументом

    > Я бы ожидал, что фунция без скобок это как делегат.

    не погромист, потому ожидаю только проблем и загадок типа "что хотел сказать автор?"
    типа "func x, y || z" vs "func(x, y || z)" vs "func(x, y) || z"
    или всякие неожиданности типа "Date.today +1" vs "Date.today + 1"

     
  • 3.116, Аноним (83), 17:19, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Как-то нескрепно, когда без скобок.
     
  • 2.132, Аноним (125), 22:35, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что присваивать можно 2 раза на одной строчке, прикинь?
     

  • 1.96, Аноним (96), 12:43, 26/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >Perl, Java, Python, Smalltalk, Eiffel, Ada и Lisp

    Читаемость как у Perl, скорость как у Smalltalk, удобство как у Java, многопоточность как у Python, количество библиотек как у Ada, и портативность кода как у Lisp.

    Только про Eiffel я ничего не знаю, наверное, хороший язык.

     
     
  • 2.100, Аноним (91), 12:55, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Так продолжай, такой же ненужный как и Eiffel.
     
  • 2.118, Аноним (50), 18:01, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >многопоточность как у Python
    >количество библиотек как у Ada
    >про Eiffel я ничего не знаю

    Про руби тоже.

     
  • 2.136, Аноним (133), 22:41, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    У Руби разве плохо с читаемостью? Делал лабы на нем давно в универе, изящный же вроде язык был, нет?
     
     
  • 3.137, Аноним (125), 22:45, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вообще-то так и есть. Но некоторым лишь бы ядом брызнуть. "Пастернака не читал, но осуждаю"
     
  • 2.141, Аноним (11), 04:49, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Я подозреваю, что у питона лучше с многопоточностью. И не только смногопоточностью, но и с конкуретным и параллельным исполнением, при том, что до сих пор интерпретатор исполняет 1 команду в любой момент времени (кроме сишных батареек, которые могут исолняться без интерпретатора. Намного, лучше чем даже у жс. Лучше питона разве что Elixir, наверное.
     

  • 1.123, Anonymoustus (ok), 21:00, 26/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > отличающегося высокой эффективностью разработки программ

    Лопата с улучшенным черенком. Позволяет от забора до обеда выкопать на два погонных метра больше траншеи.

     
  • 1.135, Аноним (133), 22:41, 26/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А ведь Ruby был замечательным языком, с передовыми идеями, прекрасным синтаксисом, с радетельным основателем Мацумото. Как так вышло, что такой отличный, подающий надежды язык стал считаться исключительно Легаси и Ruby-on-Rails'овым?
     
     
  • 2.138, Самый умный из вас (?), 23:48, 26/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Хайпожоры перебежали сначала на CoffeeScript, потом на раст
     
  • 2.144, Аноним (143), 07:05, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Опоздал с выходом на рынок. Запоздал с решением проблем производительности. На фоне прочих императивных языков, функциональный стиль оказался сложным для восприятия. А ниша embedded DSL слишком узкая, чтобы язык мог продолжать развиваться.
     
  • 2.149, DEF (?), 08:49, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Потому что выбрал заведомо провальную динамическую типизацию. В Crystal исправили этот дефект, однако врятли это врятли изменит ситуацию. PHP 8.2 уже стал конфеткой и будет улучшаться дальше.
     
     
  • 3.158, Аноним (158), 17:35, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Так PHP же тоже с динамической типизацией, или джаваскрипт. А они процветают
     
     
  • 4.167, Омномним (?), 09:21, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Они под практику заточены, несмотря на все их недостатки.
    А не на написание идеального сферического кода в вакууме (который всё равно никто не пишет).
     
     
  • 5.170, Аноним (133), 11:08, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Так ну а в чём это выражается-то? Про php вон была статья даже, "фрактал плохого дизайна" называлась, кажись. Что в нём стандартная библиотека очень уж беспорядочная, названия функций то с подчеркиваниями, то слитно, порядки аргументов разные и т.д.
     
     
  • 6.171, Омномним (?), 12:48, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    JMP $-2

    "Что, не что", а по факту он занял почти весь Web. И продолжает держать позиции несмотря на все попытки сделать "идеальные езычги".

     
     
  • 7.173, Аноним (133), 03:57, 29/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > а по факту он занял почти весь Web

    Я с этим не спорю. И сам с PHP работаю, немного, но работаю. Но почему вот он занял почти весь Web? Явно не по причине хорошего дизайна (ибо его нет)

     
  • 2.166, Омномним (?), 09:20, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Примерно такая же судьба на самом деле постигла уже не одну хипстерскую идеалистическую поделку, выдаваемую за язык программирования, которой пользоваться тошнит всех, кроме узкого круга не менее одарённых, чем её автор(ы).
     

  • 1.145, Аноним (145), 07:11, 27/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > Rust

    Похоже Рубена пора хоронить. Надеюсь Питон тоже перепишут на Rust.

     
  • 1.174, Аноним (174), 02:51, 30/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Для запуската? Как хорошо-то!
     
  • 1.175, Аноним (175), 03:42, 30/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Прикольно! Оказывается, Ruby - ещё живой!
     

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



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

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