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)
Ответ на: комментарий от st4l1k

Жистоко вы питонщиков тролите.

«Контракты», подобные тем, что что по ссылке, в Питоне без проблем делаются на декораторах.

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

Ну по факту то так то оно так.
Ну обьект не идентичный. object_id разные у массивов буду.
Дальше смотрим как руби сравнивает его http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-3D-3D
И получаем что руби раскроет массив и будет сравнивать каждый элимент массив. В данном случае будет этоа функция http://www.ruby-doc.org/core-1.9.3/Object.html#method-i-eql-3F. Вот она сравнивает по object_id.

[29] pry(main)> [a]==[a]
=> true
[30] pry(main)> a.equal? a
=> true
#отрабатывает http://www.ruby-doc.org/core-1.9.3/Object.html#method-i-eql-3F
[25] pry(main)> a==a
=> false
#отрабатывает http://www.ruby-doc.org/core-1.9.3/Float.html#method-i-3D-3D
Как было написано в багрепорте и даже по логике это зделано чисто для быстродействия. з.ы. Пока писал сам понял.

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

Что-то мне после вашего ознакомления с Руби совсем расхотелось с ним иметь дело.

Какая разница на чем там студентота лабы калякает)

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

Cравнение масcивов, а тем более массивов с NaN, операция довольно.. специфичная /

В js так вообще

[]==[] //false
Мол как хотите, так и сравнивайте. И никаких тебе object_id.

Зато нельзя не заметить удобность доки :))

special-k ★★★★
()

Ruby vs Python

Сколько споров развели - лишь бы не пользоваться CL+quicklisp'ом вместо этого web'ского дерьма. Там бы уже не было вопросов обо всех этих мелочных ограничениях.

ИМХО, вся проблема современных ЯП в том, что они современны только «по моде», а «по сути» не оригинальны, повторяющиеся и убожеские либо по долгосрочному планированию (полный облом обратной совместимости питона) либо по изврату подхода (100500 способов сделать одну вещь руби).

В результате наблюдаем кучу хипстеров со слюнями и пеной вокруг них на 14 страниц топика. Perl'a на вас нет (еще...).

А в это время редкие удачные примеры пылятся на полках и иногда протираются небольшим, разумным коммьюнити, не развивающем такие масштабные срачи последнее время (эволюция сознания у лисперов таки произошла и некоторый снобизм пошел на пользу).

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

Может и правильно - там полный бред бы вышел и больше людей на нормальные ЯП посмотрели бы после такого топика. Lisp, Smalltalk, Scala, Perl...

anonymous
()
Ответ на: Ruby vs Python от anonymous

эволюция сознания у лисперов таки произошла

Да нет - они просто слились, туда же, куда медленно но верно к ним в компанию идут и питонщики.

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

Интересный момент.. сравнение стрингов проходит примерно так же быстро как сравнение символов.

1.9.3p194 :031 > a1=0.001;a2=0.001;t=Time.now;1000000.times{a1==a2};Time.now-t
 => 0.093220786 
1.9.3p194 :034 > a1='a'*50;a2='a'*50;t=Time.now;1000000.times{a1==a2};Time.now-t
 => 0.104742396 
1.9.3p194 :035 > a1=('a'*50).to_sym;a2=('a'*50).to_sym;t=Time.now;1000000.times{a1==a2};Time.now-t
 => 0.104953178
1.9.3p194 :039 > a1=500000;a2=500000;t=Time.now;1000000.times{a1==a2};Time.now-t
 => 0.078689267
При этом -_-
1.9.3p194 :046 > t=Time.now;1000000.times{};Time.now-t
 => 0.072459878 
Зато
1.9.3p194 :045 > t=Time.now;1000000.times{'a'};Time.now-t
 => 0.270934079 
1.9.3p194 :047 > t=Time.now;1000000.times{:a};Time.now-t
 => 0.078587108 

special-k ★★★★
()
Ответ на: Ruby vs Python от anonymous

А в это время редкие удачные примеры пылятся на полках

Т.е. мы виноваты в том, что вы не можете ничерта написать на своем глиспе))) О да..)

эволюция сознания у лисперов

звучит забавно)

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

зачем Hash сделали по умолчанию упорядоченным

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

вместо того, чтобы для страждущих ввести новый класс OrderedHash

В руби же хэш определяется не только

Hash.new
но и
{}
some_method a: 1
Т.о. если бы сделали так, то по-прежнему бы везде использовался неупорядоченный хэш. Так что либо вместо, либо никак..

соответственно, замедление этой структуры сказывается на производительности всего интерпретатора

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

А JRuby живёт и великолепно развивается. <режим-троля-предсказателя> Через пару лет он станет превалирующей платформой для Ruby </режим-троля-предсказателя>

А почему бы не maglev? У него же вон какая классная фича есть - никакого session_store не надо..

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

Мол как хотите, так и сравнивайте.

Кстати не в таком уж плохом смысле, даже где-то «как вам надо, так и сравнивайте». Вообще не могу сказать, что не завидую скорости V8.. Например http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=v8&...

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

Я про Perl6 - еще.

А твое «уже» - это относительно питона без обратной совместимости и идущего в никуда всеми стараниями голландца? :) Пройдет 5-к лет и он действительно летучим голландцем станет, не считая академ. кругов с дикой инерционностью.

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

лисперы
туда же, куда медленно но верно к ним в компанию идут и питонщики

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

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

Я про Perl6 - еще.

Perl6 - это тоже «уже».

твое «уже» - это относительно питона без обратной совместимости

Oh, not this shit again.

Пройдет 5-к лет и он действительно летучим голландцем станет

Ага, пройдет 5K лет.

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

Я про Perl6 - еще.

Перл 6 - как коммунизм, в светлом будущем будет построен, но мы до этого не доживём.

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

ой, какие мы оптимисты :) даже в сравнении с руби питон слился в топике, а тут про 5К лет разговоры ;)

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

даже в сравнении с руби питон слился в моем воображении

fixed

а тут про 5К лет разговоры ;)

Это ты заговорил про 5к лет.

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

Коммунизм не нужен, в отличие от него

Ты всё перепутал, перл6 не нужен, а коммунизм нужен. Перл - это прошлое, прими это.

anonymous
()

Троли тролей тролололят))

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

а коммунизм нужен

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

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

а коммунизм нужен

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

Я так и думал, что по теме ненужности перла вопросов не возникнет.

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

а что? в том же питоне давно уже.

Да ничего особенного, радует просто, что хорошую платформу не забывают :)

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

ага - по востребованности можно посмотреть. все элементарно, толстячок ;)

anonymous
()

не понял

а где питон слился-то?

про смерть какойлибо платформы ваще бред говорить, пока живо сообщество.. perl ваш ссаный руби ещё сто раз переживёт :-)

вот что в ваших рубяк такого офигенного, чего нет в питонах (и тем паче в перлах)? кроме тупой (ненужной) погони за «всё - есть класс» (это медленней) и «можно переопределить что угодно» (это опасней)

вот чего?

unel
()
Ответ на: Ruby vs Python от anonymous

И никто даже не попытался просто расписать целостную сравнительную идеологию питона и руби сравнить - сразу на высшем уровне.

По моему, ты не понимаешь что пишешь.

Boboms ★★
()
Ответ на: не понял от unel

вот что в ваших рубяк такого офигенного, чего нет в питонах (и тем паче в перлах)? кроме тупой (ненужной) погони за «всё - есть класс» (это медленней) и «можно переопределить что угодно» (это опасней)

Самая офигенная фича рубей, которой нет в перле - возможность ЧИТАТЬ код и ПОНИМАТЬ, что он делает.

anonymous
()

Устроили срач НЕНУЖНО1 vs НЕНУЖНО2.

Возможно сейчас у ruby и python есть фишки которых нет в node, но:
- либо это не нужно
- либо это сделают в скором времени (сообщество node очень активное)

А вот в node.js есть фичи которые никогда не сделают ни в python ни в ruby:
- скорость
- один язык в браузере и на сервере

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

«Универсальность» нодежс может сыграть и плохую шутку: фронт-эндщики возомнят себя бэкендерами и наступит адь подобный пэхапешному *когда школие возомнило себя программистами*

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

Эта «фича» не относится к языку (ну, кроме совсем эзотеричных типа брейнфака), а относится к программистам. И там и там можно писать жесть, а можно (и нужно) - нормально. Посему - не аргумент :-)

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

Эта «фича» не относится к языку (ну, кроме совсем эзотеричных типа брейнфака), а относится к программистам. И там и там можно писать жесть, а можно (и нужно) - нормально. Посему - не аргумент :-)

сам пишешь, сам отвечаешь

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

Эта «фича» не относится к языку (ну, кроме совсем эзотеричных типа брейнфака), а относится к программистам. И там и там можно писать жесть, а можно (и нужно) - нормально. Посему - не аргумент :-)

Только некоторые языки поощряют писать понятно, а некоторые - наоборот. Можно подумать, что раз Перл снискал славу write-only language, то все программисты на нём - криворукие идиоты. Это же чепуха.

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

А вот в node.js есть фичи которые никогда не сделают ни в python ни в ruby:

- скорость - один язык в браузере и на сервере

Скорость? В гуглхроме может быть. Но это всё равно интерпретатор. Причем интерпретатор ужасного языка, ужаснее которого нет ничего в современном мире программирования.

Сохрани нас Патрик от этого.

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

Сравни как нибудь PPS node.js и EventMachine и ты удивишься что Node проигрывает 10% на helloworld.
Скорость не главное если это не поделка школнега, поддержка кода. И в этом что пайтон что руби.
А вообще если нужна большая скорость то есть jvm.

st4l1k ★★
()
Ответ на: комментарий от val-amart

Да, перл хуже. Беру свои слова назад.

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

я устал повторять http://coffeescript.org/

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

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

Ахаха. Используют 3.5 человека?

Например, Google Closure, с которой тесно интегрирован Clojurescript, использует Google для Gmail, G+ и других веб-приложений.

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