LINUX.ORG.RU

Ruby 1.9.2

 ,


0

0

Ruby 1.9.2 по большей части совместим с 1.9.1 за исключением данных изменений:

  • Множество новых методов.
  • Новый socket API (с поддержкой IPv6).
  • Новые кодировки.
  • Класс Random, в котором доступны различные генераторы случайных чисел.
  • Переписан класс Time, устранена проблема 2038 года.
  • Некоторые улучшения в regexp'ах.
  • $: больше не включает текущую директорию.
  • dl переписан с использованием libffi.
  • Новая библиотека psych, являющаяся обёрткой libyaml, которую можно использовать вместо syck.

Новая версия проходит 99% тестов RubySpec.

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

★★

Проверено: JB ()
Последнее исправление: MuZHiK-2 (всего исправлений: 4)

Как-то маловато изменений. И реализация цикла 'for' до сих пор в 8 раз медленнее, чем 'while'?

twosev ★★
()

Ruby 1.9.2 по большей части совместим с 1.9.1

O_o у них подходы к разработке! Официально ломают совместимость в версиях третьего порядка!

Vudod ★★★★★
()

>Новая библиотека psych, ... можно использовать вместо syck.
Шикарные названия.

lyset ★★★
()

ну вот и до ЛОРа докатилось :) читал вчера на opennet и habrahabr

по теме: хорошая новость, скорей бы уже Ruby 2.0! 8-)

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

> Джентльмены, а что круче: Перл, Руби или Питон?

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

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

Perl. Оооочень много библиотек, огромное сообщество с *nix-хакерским бэкраундом, но не совсем интерпрайз

anonymous
()

> $: больше не включает текущую директорию.

т.е. все функции, где это использовалось, автоматом сломались?
Да не просто сломались, а теперь будут непредсказуемо работать, обращаясь не к тем данным, к которым надо? Шикаааарно

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

> Оооочень много библиотек

90% которых не нужны даже авторам.

огромное сообщество с *nix-хакерским бэкраундом


Лучше бы не было такого сообщества, от него вреда больше, чем пользы.

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

> 90% которых не нужны даже авторам.
Ради интереса, значит 10% нужны? Назовете или слив засчитать?

Лучше бы не было такого сообщества, от него вреда больше, чем пользы.


Вреда кому?

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

Java же, а эти три недоязычка - закопать! Срочно!

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

> Ради интереса, значит 10% нужны?

Ньюфаг? http://www.linux.org.ru/jump-message.jsp?msgid=4816923&cid=4820560
Ну или поиском по «cpan».

Вреда кому?


Человеку, решившему использовать это «богатство». Хуже сообщество только у лисперов (не в обиду им).

mix_mix ★★★★★
()

Сначала написали, потом подумали - типичный недоязычок.

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

> медленный, только что

Ruby — якобы очень медленный язык. Этот миф возник в связи с распространением ruby в Эстонии в 19 веке до н. э.

paranormal ★★
()
Ответ на: > медленный, только что от paranormal

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

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

no holywar

> Джентльмены, а что круче: Перл, Руби или Питон?

толстовато :-)

robux
()

Руби конечно хорош, но, блин, то как он развивается - это ппц. Мы старый мир сломаем, а потом...

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

О как правда-матка глаза режет.

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

> Аргументов все еще нет?

Я Вам привёл ссылку на сообщение человека, мысли которого поразительно совпадают с моими и услышал лишь «агрументов всё ещё нет?». О каком конструктивном общении тогда может идти речь?

mix_mix ★★★★★
()

Когда юникод будет? Я конечно смолчаю что они все стараются делать красиво но вот ждать надоело

Насчет генератора случайных чисел - вроде он и раньше весьма недурный был

DNA_Seq ★★☆☆☆
()

Когда юникод будет? Я конечно смолчаю что они все стараются делать красиво но вот ждать надоело

Насчет генератора случайных чисел - вроде он и раньше весьма недурный был

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

а зачем цикл for если есть итераторы? for такое же устаревшее говно как и goto

DNA_Seq ★★☆☆☆
()

Я бы советовал новичкам учить Ruby 1.8, так как 1.9 кардинально отличается от ветки 1.8. Так по крайней мере, мне объяснили ;)

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

Дело вкуса. Перл - для хакеров, руби - для веба и как замена перла для чайников, питон ближе всего к ынтырпрайзу

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

Дело вкуса. Перл - для хакеров, руби - для веба и как замена перла для чайников, питон ближе всего к ынтырпрайзу

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

Тролль пещерный. Неизвестный год до нашей эры.

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

Это для require, какие данные непредсказуемо заработают? Оно просто не загрузит и упадёт.

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

Такова жизнь, либо перманентная революция либо обрастание костылями. Доказано Троцким

Зы Что-то у меня сообщения дублируются. Плиз, снесите дубли, через миниоперу снести не получается

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

Какой юникод?

В ruby 1.9.x у каждой строки есть параметр «кодировка», там и UTF-8 и прочие юникоды есть.

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

> Руби конечно хорош, но, блин, то как он развивается - это ппц. Мы старый мир сломаем, а потом...

Пока есть возможность, надо ломать и переделывать. Иначе язык начнёт медленно, но уверенно обрастать костылями и умирать.

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

>> Новый socket API (с поддержкой IPv6).

Раньше ее не было?


Socket_API без IPv6 ... хм.... этож даже не смешно :-/

вот еслибы небыло бы API для IPv4 — то можно былобы сёравно подключаться к ::ffff:aa.bb.cc.dd .

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

Руби конечно хорош, но, блин, то как он развивается - это ппц. Мы старый мир сломаем, а потом...

Пока есть возможность, надо ломать и переделывать. Иначе язык начнёт медленно, но уверенно обрастать костылями и умирать.

Мне всегда была интересна логика тех, кто кричит, что в Питоне слишком поздно и неправильно поломали обратную совместимость, а вот в Руби всё делают правильно. Вы ещё Перл 6 вспомните...

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

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

по мне так — чего не поподя намешали в Ruby...

...точнее сказать не «чего не попадя» даже, а «как не попадя» :-)

вот например в Ruby есть {for} и {итераторы} — как две разные сущности . а в Python — {for} и {итераторы} это сущности одной и тойже конструкции!

(а зачем плодить сущности?)


или вот в Python для выполнения кода функции/метода — используются "()" [круглые скобки] .. а в Ruby всё зависит от того чем является ~объект~ (замыканием или функцией, или ещё там чем...%) %)) .

тоесть: не сделать просто так:
obj_2 = obj_1.member
obj_2()

в Python — любая функция онаже и замыкание, онаже и объект — одновременно. тоесть как не крути а в Python сущностей меньше для простых вещщей

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

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

на костылях прикрутили ООП это в каком смысле?

надеюсь речь не идёт о self-переменных?

что касается self-переменной — вот пример почему это элегантно:

#!/usr/bin/env python3

class MyTest:
    
    def __init__(self, name):
        self.name = name
    
    def make_other(self, name):
    
        class MyOther:
            
            def __init__(subself):
                subself.name = name
            
            def get_name(subself):
                return '%s/%s' % (self.name, subself.name)
        
        return MyOther()


if __name__ == '__main__':
    obj = MyTest('Внешний')
    sub_obj = obj.make_other('Внутренний')
    
    print(sub_obj.get_name())


******************** результат ********************

Внешний/Внутренний

в примере видно что изза того что переменную текущщего класса можно называть как угодно — можно проварачивать различные замыкания на уровне вложенных классов

классы в Python это настолько элегантное решение, какого я вообще нигде не видил.. (и уж точно не в Ruby)

а как ты такое же сделаешь в Ruby ?

присвоиш ссылку на ~self~ внутри новой переменной но с другим именем, перед описанием внутреннего класса? [да можно — но не элегантно]

проинициализируешь класс вручную, без использования замыканий? [не использовать замыкания — это вообще шаг назад от прогресса]

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

>вот например в Ruby есть {for} и {итераторы} — как две разные сущности . а в Python — {for} и {итераторы} это сущности одной и тойже конструкции!

И? Тебе, с точки зрения того, кто код пишет не всё ли равно?

тоесть: не сделать просто так:

obj_2 = obj_1.member


obj_2()



Вот же ж ты, а ещё и asm вставлять нельзя!

Руби это не Питон, какой ужас, да.

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

>в примере видно что изза того что переменную текущщего класса можно называть как угодно

а как ты такое же сделаешь в Ruby ?


А ещё, можно отстрелить себе голову, но зачем?

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

> а как ты такое же сделаешь в Ruby ?

не говоря уже о том что в Ruby нельзя чтобы в ~глобальном~области~ — существовало два класса с одинаковым названием
[в этом случае они ~смешиваются~]

тоесть в Ruby — как только произошло описание какогото Класса — то класс следует сразу присвоить в какуюнить ~базу~данных~классов~ и сразу-после-этого УДАЛИТЬ из ~глобальной~области~

^^^--- оба эти два действия нада сделать ВРУЧНУЮ [для каждого из описываемых классов]

а если не сделать этого то можно случайно совершить ~примесь~ к чужому классу (у которого случайно оказалось такоеже название)

ой! а я забыл же ещё сказать что в Ruby нада самому (вручную) описать что-же за объект будет являться ~базой~данных~ для этих Классов (который мы удаляем из глобальной области, сразу как только описываем)

фуф... дауж.... и гдеже ООП через костыли :-D :-D

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

А ещё, можно отстрелить себе голову, но зачем?

ну впринцепе согласен, что замыкания на уровне вложанных классов — почти никогда не нужны...

... но понадобиться такое может тогда — когда например нужно перегрузить часть функций внутри наследуемого объекта, но не вводить новых функций-и-переменных внутри класса потомка [включая те переменные который указывают на новые данные, которые требуются для функционирования нового подкласса]..

..вот пример из жизне:

Google AppEngine:

#!/usr/bin/env python2
#-*- coding: UTF-8 -*-
# For Python-2.5:
from __future__ import absolute_import, division, with_statement

import threading

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class MainPage:
    def __init__(self):
        class RequestHandler(webapp.RequestHandler):
            def get(xself):
                xself.response.headers[u'Content-Type'] = u'text/plain;charset=UTF-8'
                xself.response.out.write(u'Hello Word!\n\n')
                
                with self._lock:
                    xself.response.out.write(u'*** вы нащёлкали ⌈↻⌋ -- %s раз ***\n\n' % self._counter)
                    self._counter += 1
        
        self.RequestHandler = RequestHandler
        
        self._lock = threading.RLock()
        self._counter = 0

main_page = MainPage()
application = webapp.WSGIApplication([(u'/', main_page.RequestHandler)], debug=True)

def main():
    run_wsgi_app(application)

if __name__ == u'__main__':
    main()
mkfifo
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.