LINUX.ORG.RU

Ruby 1.9.1

 , ,


0

0

После достаточно длительного перерыва, вышел первый стабильный релиз из ветки Ruby 1.9.x!

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

Доступен полный список нововведений, а также советы по переходу на новую версию.

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

Ответ на: Re: Этот ЯП - просто прелесть! от anonymous

Re: Этот ЯП - просто прелесть!

> Гвидо наемный работник Google. Потому в Python будут необходимые Гуглу возможности, остальное вторично.

Брам тоже наемный работник Google. Когда нам ждать перевода вима на веб-2.0?

anonymous ()
Ответ на: Re: Этот ЯП - просто прелесть! от anonymous

Re: Этот ЯП - просто прелесть!

>> Яву в Гуглу используют наравне с Си++ :)

> откуда дро^W информация?

Косвенные данные вроде привязок к Google Protocol Buffers и болтовня в блогах. Ну вот например: "Our three main programming languages at Google are Java, Python and C++, that's just the way Google has standardized internally", http://www.artima.com/forums/flat.jsp?forum=276&thread=185564

tailgunner ★★★★★ ()
Ответ на: Re: Этот ЯП - просто прелесть! от anonymous

Re: Этот ЯП - просто прелесть!

> Где был бы Python, если бы его не использовали Google и Yandex.

что такого сделал гогл, без чего питону хана и кто такой уандекс?

anonymous ()
Ответ на: Re: Этот ЯП - просто прелесть! от anonymous

Re: Этот ЯП - просто прелесть!

> Да, болтовня в блогах - серьёзная информация.

Если это сказал в интервью senior product manager for Google developer tools, то вполне серьезная. А ты поделишься, откуда у тебя информация о том, что Гугель _не использует_ Яву и .NET?

tailgunner ★★★★★ ()
Ответ на: Re: Этот ЯП - просто прелесть! от anonymous

Re: Этот ЯП - просто прелесть!

> При мало-мальски приличной нагрузке сожрать всю память и впасть в кому? Да ладно, такого результата вполне легко достичь и на других ЯП. Не так легко, конечно, как на RoR, но вполне можно.

Совершенно верно. Все языки с Garbage Collection имеют один и тот же архитектурный дефект. В случае любой ошибки начинают пожирать память и все завершается ошибок OutOfMemory.

Но здесь надо понимать, что в случае сервера, написанного на C в случае ошибки появляется возможность провести удаленную атаку с заражением компьютера, а случае языков с GC появляется возможность только провести DOS атаку.

anonymous ()
Ответ на: Re: Этот ЯП - просто прелесть! от anonymous

Re: Этот ЯП - просто прелесть!

А как на счет Ruby vs Python vs Boo У последнего есть будущее? Как по скорости они и у кого какие плюсы?

anonymous ()
Ответ на: Re: Ruby 1.9.1 от anonymous

Re: Ruby 1.9.1

>ну и то, что я могу этот же самый код у себя на нокии запустить, а с руби не смогу даже на быдлоВинСе, то нах он нужен этот руби?

Вообще-то под symbian 9 есть.

jackill ★★★★★ ()
Ответ на: Re: Ruby 1.9.1 от anonymous

Re: Ruby 1.9.1

> Обломитесь все, руба рулит. Вот бенчмарки из поставки руби:

> (Python 2.6 / Ruby 1.9.1)

Почему сравнивается не с Python 3?

urlin ()
Ответ на: Re: Ruby 1.9.1 от urlin

Re: Ruby 1.9.1

>> (Python 2.6 / Ruby 1.9.1)

> Почему сравнивается не с Python 3?

Python 3.0 - версия, которая пока не используется и не рекомендуется к использованию в продакшене.

tailgunner ★★★★★ ()

Re: Ruby 1.9.1

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

У каждого интерпретируемого языка есть две важные вещи на которые следует обратить внимание:

1. threads

2. garbage collection

Итак что мы видим:

1. threads - ruby использует единственную native os thread. То есть фактически является однопоточным приложением. Надеюсь не надо объяснять, чем это плохо. Народ пытается бороться с этим при помощи fork. Но при fork возникают проблемы связанные с тем что garbage collection ruby недружествен к механизму copy on write.

2. garbage collection - я так понимаю, что при длительной работе происходит фрагментация кучи и отказ выделения памяти. Народ пытается прикрутить ptmalloc3 и что-то еще, чтобы этот хоть как-то работало. Еще по мелочи есть всякие ошибки в стандартных библиотеках, которые приводят к утечке памяти. Вроде бы эти мелкие ошибки в последних версиях активно исправляются. Но все равно проблема потребления памяти остается. Даже встретил рекомендацию при увеличении heap (например, до 1,5 Gb) просто убивать процесс ruby и запускать заново.

Возникает вопрос: а можно ли вообще писать на ruby серверные приложения? Кто имеет опыт написания прилоежния - поделитесь опытом. Сталкивались ли с этими проблемами или нет?

Еще я так понял, что в какой-то мере виртуальная машина Yarv должна позволить использовать более одного native os thread для выполнения программ на Ruby (нацелена на решение проблемы 1). Мне не ясно, была ли решена эта проблема или нет в версии 1.9.1? Действительно ли используются native os thread и в какой мере?

anonymous ()
Ответ на: Re: Ruby 1.9.1 от sv75

Re: Ruby 1.9.1

> Time.parse and Date.parse interprets slashed numerical dates as "dd/mm/yyyy".

Война между Японием и США продолжается на новом уровне? Теперь бъемся за формат по умолчанию. ;-)

anonymous ()
Ответ на: Re: Ruby 1.9.1 от tailgunner

Re: Ruby 1.9.1

>Python 3.0 - версия, которая пока не используется и не рекомендуется к использованию в продакшене.

ветка 1.9 в руби тоже считается тестовой...

thevery ★★★★ ()
Ответ на: Re: Ruby 1.9.1 от thevery

Re: Ruby 1.9.1

>> Python 3.0 - версия, которая пока не используется и не рекомендуется к использованию в продакшене.

> ветка 1.9 в руби тоже считается тестовой...

Только вот в Ruby 1.9 тестируется новая виртуальная машина, которая типа должнв быть быстрее, а в Питоне 3.0 такого никто не обещал.

Кстати, в shootout Ruby 1.9 сливает Python 2.6

tailgunner ★★★★★ ()
Ответ на: Re: Ruby 1.9.1 от jackill

Re: Ruby 1.9.1

> Вообще-то под symbian 9 есть.

Докажи.

anonymous ()
Ответ на: Re: Ruby 1.9.1 от anonymous

Re: Ruby 1.9.1

в питоне с тредами все не тоже так гладко как хотелось бы (см. про GIL), настоящее распараллеливания получается только при fork().

но хранить GIL - это воля Гвидо. Да Будет Так.

huisho ()
Ответ на: Re: Ruby 1.9.1 от sv75

Re: Ruby 1.9.1

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

anonymous ()
Ответ на: Re: Ruby 1.9.1 от huisho

Re: Ruby 1.9.1

в 2.6 есть модуль multiprocessing. на 4 ядра нормально всё размазывается. даже с мутексами не пришлось возиться

anonymous ()
Ответ на: Re: Этот ЯП - просто прелесть! от anonymous

Re: Этот ЯП - просто прелесть!

> Совершенно верно. Все языки с Garbage Collection имеют один и тот же архитектурный дефект. В случае любой ошибки начинают пожирать память и все завершается ошибок OutOfMemory.

Хорошая трава, отсыпешь?

ISanych ()
Ответ на: Re: Этот ЯП - просто прелесть! от anonymous

Re: Этот ЯП - просто прелесть!

Ruby 1.8.x

1.upto(10000000){|x| begin raise; rescue Exception => s; end;}

Расход памяти - от 3,3 до 3,1 Мб во время выполнения.

C# class A {static void Main(){for(int i=0;i<10000000;i++)try{throw new System.Exception();}catch(System.Exception){}}}

Расход памяти - от 4,26 до 4,28 Мб во время выполнения.

ЧЯДНТ? Ведь сам сказал - "архитектура GC, мол, OutOfMemory, мол" ?!

anonymous ()
Ответ на: Re: Этот ЯП - просто прелесть! от anonymous

Re: Этот ЯП - просто прелесть!

> начинают пожирать память

Где же таких гениев выращивают? Ну просто настоящий линуксоид!

> все завершается ошибок OutOfMemory.

А кто это такой этот "Ошибок"? Что за страшный зверь?

Bioreactor ★★★★★ ()
Ответ на: Этот ЯП - просто прелесть! от anonymous

Re: Этот ЯП - просто прелесть!

> Намедни болтал с один жабером, подсевшим на subj+RoR - он восторгался им как ребенок! :) Как SCJP, я очень доволен, что еще одним горе-"жабабыдлокодером", имеющим самое поверхностное представление о Java, стало меньше.

Bioreactor ★★★★★ ()
Ответ на: Re: Этот ЯП - просто прелесть! от ISanych

Re: Этот ЯП - просто прелесть!

>> Совершенно верно. Все языки с Garbage Collection имеют один и тот же архитектурный дефект. В случае любой ошибки начинают пожирать память и все завершается ошибок OutOfMemory.

> Хорошая трава, отсыпешь?

А что разве не так? Или не нравится слово "дефект"?

Хорошо - напишем так: Все языки с Garbage Collection имеют одну и ту же архитектурную особенность.

Зацепиться объект за какой-нибудь static массив (хэш) и "привет". Даже, если к этому объекту никто и никогда не обратится он все равно останется в памяти.

В случае классического C в аналогичном случае Вы скорей всего получили бы висячую ссылку. Ссылка из массива осталась, а объект был бы освобожден.

Вот и получается, что одну ошибку заменили другой: вместо висячей ссылки получили OutOfMemory.

anonymous ()
Ответ на: Re: Ruby 1.9.1 от anonymous

Re: Ruby 1.9.1

>1. threads - ruby использует единственную native os thread. То есть фактически является однопоточным приложением.

Изначально были некие green threads. Минус: многопроцессорность не поддерживается.

В JRuby потоки перетекли в стандартные потоки Java, которые являются native threads. Там другие проблемы.

В 1.9 fibers вместе green threads.

В версии 2.0 ждем настоящих Native threads,

jackill ★★★★★ ()
Ответ на: Re: Ruby 1.9.1 от anonymous

Re: Ruby 1.9.1

> Как будто дело в американском формате.

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

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

anonymous ()
Ответ на: Re: Ruby 1.9.1 от jackill

Re: Ruby 1.9.1

> Вообще-то под symbian 9 есть.

Ой ли? и, конечно же, есть ссылка на сайтик нокии, откуда его можно слить? или ты имеешь ввиду порт какого безумного японца, который а: НЕ работает нормально ни на чем кроме S60FP0 и на том же N95 не заводится ни под каким предлогом. b: работает на (пробовал на E60) так, что становится всей системе тихо. Ява и то шустрее загружается и памяти жрет меньше (даже ява!)

втопку такое "есть". Вот питон для S60 есть и его поддерживает и развивает ни какой-то фанатик, а сама нокия.

anonymous ()

Re: Ruby 1.9.1

кстати вот интересно, а треды (не процесы) распараллеливаются на разные процессоры виндой и линуксом?

если да то выходит форк (в частности модуль multiprocessing питона) однозначно хуже с точки зрения производительности? есть бенчмарки на эту тему?

anonymous ()
Ответ на: Re: Ruby 1.9.1 от jackill

Re: Ruby 1.9.1

>>1. threads - ruby использует единственную native os thread. То есть фактически является однопоточным приложением.

> Изначально были некие green threads. Минус: многопроцессорность не поддерживается.

> В JRuby потоки перетекли в стандартные потоки Java, которые являются native threads. Там другие проблемы.

> В 1.9 fibers вместе green threads.

> В версии 2.0 ждем настоящих Native threads,

Понятно. Что же будем ждать.

Как я понимаю для полноценного использования Native thread надо использовать многопоточный сборщик мусора. То есть в версии 2.0 будет новый сборщик мусора?

anonymous ()
Ответ на: Re: Этот ЯП - просто прелесть! от anonymous

У, какой дефекатор.. Оу сорри, дефектолог

Ruby: class A def A.s() x = []; 1.upto(100000){|i| x.push(i);} x; end; end $y = nil; 1.upto(1000){|i| x=A.s(); $y=x;}

Расход оперативы от 7Мб до 4Мб. А ведь по идее 999 "висячих" массивов метров на 100.

anonymous ()
Ответ на: У, какой дефекатор.. Оу сорри, дефектолог от anonymous

Re: У, какой дефекатор.. Оу сорри, дефектолог

не забавы ради, но все же хочется положить на лопатки Ruby именно с пресловутым дефектом Garbage Collector: Out Of Memory средствами самого языка (не привлекая биндинги и т.п. хуиту) - хочется узнать пределы своего инструмента :) "bitdies" какбы намекает, что это возможно :)

anonymous ()
Ответ на: Re: Ruby 1.9.1 от jackill

Re: Ruby 1.9.1

> В 1.9 fibers вместе green threads.

В чем отличие-то? Те же яйцы.

anonymous ()
Ответ на: Re: Ruby 1.9.1 от anonymous

Re: Ruby 1.9.1

Забавно, в WebMoney Keeper Light при фильтрации списка, кажется, входящих счетов, есть такая бага: пишут что дату надо указывать dd/mm/yyyy, а на самом деле корректно работает только при mm/dd/yyyy.

И это энтерпрайз еще называется.

XWolverineX ()
Ответ на: Re: Этот ЯП - просто прелесть! от anonymous

Re: Этот ЯП - просто прелесть!

> По возможностям язык Ruby превосходит Python, который был взят за основу.

Не болтай ерундой. За основу Руби была взята Ява. Но сам язык был инспирирован (кто подскажет нормальное русское слово?) перлом, откуда в нём масса перлизмов. Пистон тогда очень уныло ходил пешком под стол в тени великого и могучего перла.

LamerOk ★★★★★ ()
Ответ на: Re: Ruby 1.9.1 от anonymous

Re: Ruby 1.9.1

>Ой ли? и, конечно же, есть ссылка на сайтик нокии, откуда его можно слить?

На 5500 как-то работает и этого мне достаточно.

Может, тогда тебе показать ссылки для каждого языка на сайтиках всех фирм-производителей компьютерной техники?

Интересно, с чего бы это?

Понятие "официальная" - вообще смешно в формате Open Source.

jackill ★★★★★ ()
Ответ на: Re: Этот ЯП - просто прелесть! от LamerOk

Re: Этот ЯП - просто прелесть!

>Не болтай ерундой. За основу Руби была взята Ява. Но сам язык был инспирирован (кто подскажет нормальное русское слово?) перлом, откуда в нём масса перлизмов. Пистон тогда очень уныло ходил пешком под стол в тени великого и могучего перла.

http://wapedia.mobi/ru/Ruby#1

Ruby родился 23 февраля 1993 года. В тот день я беседовал со своим коллегой о возможности существования объектно-ориентированного сценарного языка. Я знал Перл (Perl4, а не Perl5), но он мне не нравился — был в нём некий привкус игрушечного языка (да и поныне есть). А объектно-ориентированный интерпретируемый язык казался многообещающим. В то время я знал Пайтон. Но он мне не нравился потому, что я не считал его настоящим объектно-ориентированным языком. Его OO свойства казались надстройкой над языком. Мне, как языковому маньяку и фанату объектно-ориентированного программирования с пятнадцатилетним стажем, очень, очень хотелось, чтобы был истинно объектно-ориентированный, простой в использовании язык. Я пытался найти такой язык, но его не было.

Тогда я решил его создать. Прошло несколько месяцев, прежде чем интерпретатор заработал. Я добавил в мой язык то, что мне хотелось — итераторы, обработку исключений, автоматическую сборку мусора. Затем я переорганизовал свойства Перла и реализовал их как библиотеку классов. В декабре 1995 года я опубликовал Ruby 0.95 в японских новостных группах.

Что-то java не видно.

jackill ★★★★★ ()
Ответ на: Re: Этот ЯП - просто прелесть! от LamerOk

Re: Этот ЯП - просто прелесть!

>> По возможностям язык Ruby превосходит Python, который был взят за основу.

> Не болтай ерундой. За основу Руби была взята Ява. Но сам язык был инспирирован (кто подскажет нормальное русское слово?) перлом, откуда в нём масса перлизмов. Пистон тогда очень уныло ходил пешком под стол в тени великого и могучего перла.

http://ru.wikipedia.org/wiki/Ruby

Предки: Smalltalk, Лисп, Перл, Эйфель, Ада, Dylan, Python, CLU, C++

В Ruby я нашел стиль и возможности, взятые из C++, Perl и Python. Остального просто не знаю.

anonymous ()

Re: Ruby 1.9.1

Отстойный язык. У него начинается история разгона для убиения об стену.

anonymous ()
Ответ на: Re: Этот ЯП - просто прелесть! от anonymous

Re: Этот ЯП - просто прелесть!

Уши смолтолка в нем торчат отвсюду. Причем ИМХО сильно подпорченные и чужеродно выглядящие.

anonymous ()
Ответ на: Re: Этот ЯП - просто прелесть! от anonymous

Re: Этот ЯП - просто прелесть!

По моему скромному мнению, больше всего (идеологически, не технчески/синтаксически) Ruby взял у Perl.

Также, как Python - у Basic (официальный его предок - ABC, конечно, но этот язык остался намного менее известен, чем его предок).

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