rubynoname/ShowNotes — Issue #18: Предлагаю обсудить...
Author: argent-smith
Created: 2012-02-21 06:52:49+00:00
State: open

... в рубрике "обсуждение" тему "Тоска по стандарту языка". У всей прекрасности Руби и динамичности его Community есть один недостаток (продолжающий бесконечные достоинства, само собой): ruby -- это молоток, динамично развивающийся и видоизменяющийся прямо в процессе забивания гвоздя. Плюс ситуации -- любой язык должен быть жив, и руби от своей динамичности и мультипарадигмальности бешено выигрывает в 90% случаев. Минус -- у нас 2 MRI, 2 JRuby, пачка rbx-ов и прочая-прочая. Код часто ведет себя странно не только на границе 1.8/1.9, а и просто от того, что между разными Ruby VM довольно много больших разниц в интерналах.

Появление такого обалденного инструмента, как TravisCI (возможность легко тестировать код на целом веере рубей) подчеркнуло проблему: написать по-настоящему ruby <-> ruby портабельный код -- это увлекательное приключение. А я -- хоббит, и приключений не люблю (хотя жизнь есть жизнь, кругом полно гендальфов, и приходится регулярно приключаться). А еще давным-давно Мац начинал со сказки (пардон, концепции) Наименьшего Изумления и обещания застраховать программиста от необходимости "обслуживать компилятор".

Возможно, проблема не сильно остра для гномов, которые 99% времени изводят на добывание сокровищ из полностью готовых решений (что тоже профессия :) ). Но писателям библиотечек и прочего опенсорса как быть?

Одно из очевидных решений -- написание некоторого generic-кода на MRI (YARV?) 1.9(.3) с возможной последующей адаптацией паттернами к прочим версиям. Сейчас пробую играть в эту игру. Другой выход (imo исторически более "прямой") -- работа по направлению к более устойчивому стандарту языка. Ruby-сообществу, давно усвоившему принцип "convention over ..." это IMO более чем по зубам, и rbx/ruby-spec тому пример.

А что думают ведущие?