LINUX.ORG.RU

Ruby 2.0.0 preview1

 


2

6

Анонсирован Ruby 2.0.0 preview1. Были включены новые фишки, которые делают разработку на Ruby ещё приятнее.

Анонсированные фичи:

  • Уточнения (Refinements) [1]
  • Именованные аргументы в методах (сахар над хэшем) [2]
  • Enumerator#lazy [3]
  • Module#prepend [4]
  • #to_h
  • %i, для массивов символов
  • Движок регулярных выражений изменён на Onigmo [5]
  • Поддержка DTrace [6] (не включено)

Пока что ещё не все новые фишки включены в Ruby, это откладывается на следующие анонсы.

Не забываем устанавливать и находить баги, это только сделает Ruby лучше.

Все программы, которые написаны на ruby-1.9 будут работать на ruby 2.0, если в них не будет особой магии.

>>> Подробности

anonymous

Проверено: tazhate ()
Последнее исправление: tazhate (всего исправлений: 2)

Ответ на: комментарий от special-k

мдя... кстати, при таком раскладе смысл питона вообще пропадает. абсолютно

nova-sport
()
Ответ на: комментарий от nova-sport

понадобился большому количеству «кому-то»

Очевидно, что чистые языки никогда не будут широко популярны, быдлокодеры всегда жаждут ad-hoc приемов. Апофеозом этого является Perl, который, однако, смотрится вполне прилично.

buddhist ★★★★★
()
Ответ на: комментарий от paranormal

Ну так это же приятные вещи.. Добавляются и новые, типа фиберов, а теперь вот еще ленивые итераторы, по-моему все круто.

Я, например написал метод по типу attr_accessor, но со значениями по-умолчанию, это выглядит так:

special_accessor method1: ->s{{}}, method2: ->s{{}}
а раньше это выглядело бы так:
special_accessor :method1 => proc{|s|{}}, :method2 => proc{|s|{}}
Думаю, разница есть. Так же синтаксис хешей - это одновременный закос и под json и под именованные параметры.
call_some_method a: 1, b: 2
И не отличишь от именованных параметров, которыми тут все так кичатся.

special-k ★★★
()
Ответ на: Феерический срач от funny_falcon

funny_falcon

Вы — тот самый funny_falcon, несколько патчей которого приняли в MRI? Это здорово!

Однако я до сих пор уверен, что в плане реализации и внутренней строгости Python гораздо правильнее. И есть моменты в Ruby, которые меня бесят :) Если бы Ruby с самого начала был реализован также продуманно, как и Python, то ему не было бы равных среди скриптовых языков. (с другой стороны, тогда бы написание расширений для Ruby не было бы таким же лёгким, как сейчас)

Было бы интересно, если бы вы подробнее раскрыли этот момент. Учитывая специфику треда, нужно заметить, что я не собираюсь ничего оспаривать(да и не обладаю необходимыми знаниями для этого) — мне просто интересно больше узнать о реализации ЯП.

Anatolik ★★
()
Ответ на: комментарий от paranormal

Кто то не осилил функциональщину ;) и считает что программа которая не может сделать ничего полезного нужна.

кто?

yoghurt ★★★★★
()

Оно до сих пор только для вэба?

//Трэд не читал.

lazy_aleks
()
Ответ на: Феерический срач от funny_falcon

поскольку даже пришедший в нашу рубишную команду опытный питонщик восхитился, насколько bundler совершеннее всего этого.

Я один раз попробовал присоединиться к проекту на рейлсе, только от бандлера я не восхитился, о поразился, какой он дикий тормоз. Каждая команда рейлса запускается с лагом около 1.5 сек на быстром компе, и около 3-5 сек на сервере. Правильно сказал кто-то в треде, тестирующий сервер для рейлса явно не от хорошей жизни придумали. То есть, это костыль для кривого тормозного бандлера.

anonymous
()

Объясняю на пальцах принципиальное отличие между бандлером и virtualenv. Бандлер устанавливает все джемы в одно место, и позволяет для каждого разрабатываемого проекта подключать нужный набор джемов. virtualenv - это просто отдельная директория со своим набором питоновских библиотек. То есть, бандлер - централизирован, виртуаленв - нецентрализирован.

Практическая разница между бандлером и virtualenv в том, что при использовании первого конфигурация происходит при каждом вызове bundle exec (что вызывает ощутимый лаг), при использовании virtualenv достаточно просто переключится в энвайронмет и потом пользоваться им ВООБЩЕ безо всяких лагов.

Больше практических преимуществ и недостатков этих систем я не выявил, они обе решают задачу изоляции окружения, фиксации версий библиотек и задачу использования разных версий библиотек для разных проектов. Но как же реально задалбывает лаг бандлера!

anonymous
()

Ещё вопрос к фанатам ruby.

Ruby встраивается в приложения так же просто как python? Его используют как язык сценариев в играх? Используют ли его для больших map/reduce(для python есть http://discoproject.org/ , который очень активно используется и развивается)? Сколько приложений на ruby в дефолтной поставке ubuntu или fedora? Есть ли аналог fabric ( http://docs.fabfile.org/en/1.4.3/ )?

И особый лор-контест: сколько плееров написано на ruby? =)

Так что пока о оголтелой популярности ruby говорить сильно рано(а может уже и поздно). И c python этот язык пока не может конкурировать.

И на последок - http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html - где ваш ruby?)

anonymous
()
Ответ на: комментарий от anonymous

А, теперь по моей специфике, сколько рендер ферм на ruby вы видели?)

anonymous
()
Ответ на: комментарий от anonymous

Сказочник

х_х

Что за бред.. бандлер - верхушка айсберга грамотно спроектированной рабочей среды (тут некоторые вопят, что IDE нет, вы сначала свою среду организуйте хоть как-то, а потом уж IDE клепайте -_-). Именно gem поддерживает несколько версий библиотек одновременно, позволяя выбирать.

Ты сейчас в своей странной голове нарисовал такую картину (и пытаешься ее перерисовать нам).

ruby: [ [lib1_v1],[lib1_v2],[lib2_v1],[lib2_v2] ] - типа "централизовано", да?)
python: [ [lib1_v1],[lib2_v1] ], [ [lib1_v2],[lib2_v2] ] - типа "нецентрализовано".
Так вот подумай (немаловажно) и скажи мне из какой (из этих трех директорий) программа будет лучше грузить либы? Файловая система там быстрее отработает, или что?) Откуда по-твоему берется лаг (мы то, конечно, знаем, что никакого лага и в помине нет, но просто интересно откуда он может взяться по-твоему).

Суть: gem позволяет работать с несколькими версиями библиотек, pip не позволяет. Bundler - реализация этой возможности. virtualenv - костыль, позволяющий хоть как-то работать. И это вообще, кстати не аналоги, у этих решений совершенно разный подход. Аналог virtualenv есть в rvm (просто одной из функций, без лишнего пафоса). Т.о. руби может как питон, а вот питон не может как руби.

Итог:
+ мигрировавшие питонщеги в восторге.
+ руби программы просто запускаются.
- перед запуском питона нужно сформировать рабочее пространство.
+ руби программы содержат большое количество зависимостей, активно повторно используют код.
- программы питона стараются как можно больше реализовать в себе, особо не рассчитывая на библиотеки (установка библиотеки это геморр).
Мораль: для развития питона нужно нудно пилить пип. И я уверен, он будет как gem, и аналог gemspec появится (скорее всего переименуют setup.py), функционал по формированию библиотек переместится из setup.py в аналог rake, и bundler будет, и rvm будет, в этой ли жизни только.

special-k ★★★
()
Ответ на: Сказочник от special-k

+ мигрировавшие питонщеги в восторге.

лол, что?

+ руби программы просто запускаются.

что значит «просто»? и что «не просто» в питоне?

- перед запуском питона нужно сформировать рабочее пространство.

pip install -r requirements.txt - ты об этом?

- программы питона стараются как можно больше реализовать в себе, особо не рассчитывая на библиотеки (установка библиотеки это геморр).

это просто бред

anonymous
()
Ответ на: комментарий от anonymous

что значит «просто»? и что «не просто» в питоне?

Пистонщеги не понимают значения слова «просто» - пичаль...

special-k ★★★
()
Ответ на: комментарий от anonymous

И особый лор-контест: сколько плееров написано на ruby? =)

Руби - язык для веба. Он живёт только за счёт рельс и сопутствующих проектов. Плееры на нём не пишут.

anonymous
()
Ответ на: Сказочник от special-k

- программы питона стараются как можно больше реализовать в себе, особо не рассчитывая на библиотеки (установка библиотеки это геморр).

Ты слишком толст уже.

anonymous
()
Ответ на: Сказочник от special-k

ах как прекрасен gem что только стоят его сокращения
gem i rails
gem li
gem h c (help command)
красота

anonymous
()
Ответ на: Сказочник от special-k

Суть: gem позволяет работать с несколькими версиями библиотек, pip не позволяет. Bundler - реализация этой возможности. virtualenv - костыль, позволяющий хоть как-то работать. И это вообще, кстати не аналоги, у этих решений совершенно разный подход. Аналог virtualenv есть в rvm (просто одной из функций, без лишнего пафоса). Т.о. руби может как питон, а вот питон не может как руби.

Вы ещё и при require указываете версию? Моветон даже в ruby мире.

anonymous
()
Ответ на: комментарий от special-k

Но это только те, что перечислены в Gemfile, установится-то их штук 86 x_x (пипу такое и не снилось).

autofixed

special-k ★★★
()
Ответ на: комментарий от special-k

так ты расскажешь как развернуть мониторинг на ruby на 1500 серверов с использованием капистрано, гемов или еще чего-либо? :)

xpahos ★★★★★
()
Ответ на: комментарий от anonymous

Да руби встраивается также просто. Нет для этого запилили mruby. Потому что для встраивания в игры лучше подходит lua, и нехрен туда пихать гавно всякое. Приложение в убунте гдето около 0, хотя шут бы его знал. Да есть и аналоги и навороченей уже писали chef, puppet, если очень просто нужно то Vlad.

anonymous
()
Ответ на: Сказочник от special-k

+ мигрировавшие питонщеги в восторге.

В шоке от тормознутости и плохой документации.

+ руби программы просто запускаются.

Сравнение количества python и ruby программ в репозиториях дистров говорит об обратном.

- перед запуском питона нужно сформировать рабочее пространство.

Ты ставишь rvm, питонист ставит virtualenv.

+ руби программы содержат большое количество зависимостей, активно повторно используют код.

Почти все рубисты страдают синдромом Райана Бейтса и тянут все джемы которые знают в проект. Пофиг что все можно сделать тремя строчками и без джема. Джем показывали railscasts, посоны юзаем это модно!

- программы питона стараются как можно больше реализовать в себе, особо не рассчитывая на библиотеки (установка библиотеки это геморр).

Они отбрасывают ненужные зависимости. см. синдром Райана Бейтса

anonymous
()
Ответ на: комментарий от anonymous

Чтож вы про Mina и Capistrano то забыли.

anonymous
()
Ответ на: комментарий от anonymous

Почти все рубисты страдают синдромом Райана Бейтса и тянут все джемы которые знают в проект. Пофиг что все можно сделать тремя строчками и без джема.

О я смотрю у тебя нехилый бутхер по этому поводу. Ведь нельзя так просто запилить либу для питона)

Джем показывали railscasts, посоны юзаем это модно!

djangocast нету? - пичаль.. и бутхер.

Что не нравится, не пойму. Критикую инструменты разработчика, довольно объективно по-моему (странно, что в треде про руби, ну да ладно). Принимайте к сведению, да и все. Что толку убеждать, что хуже на самом деле лучше, кому от этого станет лучше, я не пишу на питоне.

special-k ★★★
()
Ответ на: комментарий от anonymous

Уже все поняли что Python лучше всех и гвидо лучшей программер. Главное не переходите на Ruby юзайте питон вам он ближе. Очень большое количество населения юзает винду а вы юзайте питон.

anonymous
()
Ответ на: комментарий от anonymous

Руби - язык для веба.

У рубироидов проблемы с осознанием и принятием этого факта - они как упоротые будут спорить о универсальности, хотя область применения этого язычка полностью аналогична PHP.

Потом даже то милипизерное количество вакансий про руби - это over 100% одни рельсы, что как бы намекает. А на чем пишут свои хелловорды такие, как nova-sport, вообще, никого не интересует.

Он живёт только за счёт рельс и сопутствующих проектов.

Вот и мне интересно, что было бы, если 37сигналов в опеределенный момент не запилили рельсы - этим языком так и пользовались бы 3,5 азиата.

Плееры на нём не пишут.

Если бы и написали, то такой плеер бы запускался дольше, чем старт всей системы. Потом его нельзя было бы поставить стандартными средствами дистрибутива (через пакетным менеджер).

BigAlex ★★★
()
Ответ на: комментарий от BigAlex

Россыпи платных скринкастов как делать тривиальные вещи на RoR очень даже хорошо характеризуют, либо уровень документирования фреймворка, либо сам фреймворк, либо кодеров, которые на нем пишут (выбирайте сами).

BigAlex ★★★
()
Ответ на: комментарий от special-k

Тебя напугала цифра 86? ты питонщег?

я системный администратор в небольшой компании с большим количеством серверов в нескольких дата-цетрах. У нас очень много внутренних сервисов на python и практически нет Ruby(по крайней мере я видел только один скрипт на пару десятков строчек). Каждый день я автоматизирую что-то и все это работает на python, который есть во всех дистрибутивах. И мне довольно часто приходится что-то разворачивать приложения из пакетов, которые явно удобнее всяких гемов и прочего.

Так вот, ответь мне, как развернуть мониторинг? :) Что-то кроме «лол» я пока ничего внятного не услышал.

xpahos ★★★★★
()

Ruby - замена Питона
Ruby - это замена Питона, которого скоро не будет. Perl стал не модным и питоновцы, воспользовавшись случаем, так долго мучили программистов тупым, абсолютно неудобным и уродливым синтаксисом, что когда пришел Ruby, идейно вышедший из старого доброго Перла, то сразу полетели щепки и питоновцам только локти осталось кусать, видя, как радостные программеры сматываются с этого дерьма на нормальный язык.

Ruby sucks
Ruby is (Руби это): -когда йоба-ооп заменяет здравый смысл; -когда пишут «begin end begin begin end end...» вместо кода; -когда программа тормозит настолько, что за время подсчёта произведения 2 матриц 10х10 можно сходить попить чай; -когда нормальным считается писать вещи типа 12.5.integer? или 3.times {puts «Ruby sucks!»} -когда скорость увеличения и так небольшого количества библиотек падает на глазах - ведь есть гораздо более удобный Python.

anonymous
()
Ответ на: комментарий от special-k

пруф Ruby 2.0.0 preview1 (комментарий) django использует 6 библиотек, а rails (для разных целей) 20+. Но это только те, что перечислены в Gemfile, установится-то их штук 40.

Ты просто поехваший. Взял два сферических проекта и сравниваешь количество либ которые они используют.

gem 'bootstrap-sass', '2.0.4' gem 'jquery-rails', '2.0.2' gem 'will_paginate', '3.0.3' gem 'bootstrap-will_paginate', '0.0.6' gem 'sass-rails', '~> 3.2.3' gem 'coffee-rails', '~> 3.2.1' gem 'uglifier', '>= 1.0.3'

Без этого, конечно, не заведется.

anonymous
()
Ответ на: комментарий от anonymous

миксины, ГЦ и джит, в питоне даже ГЦ нету

всё есть кроме jit. За jit в pypy. Впрочем, ruby действительно фичастее, но, похоже, ты не знаешь в каких местах :)

true_admin ★★★★★
()
Ответ на: комментарий от xpahos

Чел, я понятия не имею что ты называешь мониторингом, и какие у тебя с этим проблемы.. Какие проблемы копировать файлы по сети.. Какие проблемы с выполнением команд по сети..

Каждый день я автоматизирую что-то и все это работает на python

Ты создаешь пакеты для pip?

special-k ★★★
()
Ответ на: комментарий от xpahos

Правильный вопрос уже половина ответа. Мониторинг чего? пайтон чтото мониторинг чтоли. Так он неумеет. Это скрипт на пайтоне.

anonymous
()
Ответ на: комментарий от anonymous

Взял два сферических проекта и сравниваешь количество либ которые они используют.

Точняк.

special-k ★★★
()
Ответ на: комментарий от special-k

Чел, я понятия не имею что ты называешь мониторингом, и какие у тебя с этим проблемы.. Какие проблемы копировать файлы по сети.. Какие проблемы с выполнением команд по сети..

http://ru.wikipedia.org/wiki/Мониторинг она нас спасет от выяснения что такое мониторинг.

Проблема копирования файлов по сети напрямую в том, что тебе нужно еще отслеживать целостность скопированных данных в твоем скрипте, хотя все это можно переложить на тот же apt. С командами тоже самое. Нужно 100% гарантировать выполнение операции.

Ты создаешь пакеты для pip?

pip это замена easy_install. Пакетами занимается distutils и setuptools. Результаты выполнения setuptools упаковываются в deb пакет и едут на сервер. Зачем использовать еще и pip?

xpahos ★★★★★
()
Ответ на: комментарий от BigAlex

У рубироидов проблемы с осознанием и принятием этого факта - они как упоротые будут спорить о универсальности

Ну.. популярен в нише веб-резработки, это +. Что на руби, что на питоне не веб-программ ~0. Не говоря уже об автокадах и фотошопах. Ну и что ты хочешь этим сказать?

special-k ★★★
()
Ответ на: комментарий от anonymous

Потому что для встраивания в игры лучше подходит lua

Как-то всё больше контор отказывается от lua в пользу python. Наркоманность lua перевешивает скорость.

anonymous
()
Ответ на: комментарий от true_admin

на чём у вас мониторинг?

есть все, кроме ruby :)

xpahos ★★★★★
()
Ответ на: комментарий от xpahos

Проблема копирования файлов по сети напрямую в том, что тебе нужно еще отслеживать целостность скопированных данных в твоем скрипте

Нет такой проблемы, этим занимается утилита копирования, например rsync. Какие у тебя еще проблемы?

special-k ★★★
()
Ответ на: комментарий от special-k

на питоне не веб-программ ~0

А как же половина встроенного софта в ubuntu? Всякие exaile и аналоги? И опять таки очень много софта для рендер ферм на python. Или, если копать в прошлое, для symbian очень много python приложений. А сейчас для android тоже существует большое количество.

anonymous
()
Ответ на: комментарий от anonymous

Не волнуйтесь скоро это исправится mruby недавно вышел а мы уже имеем RubyMotion, так что все пучком.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.