LINUX.ORG.RU

Вышел Ruby 2.0.0

 , повод


2

3

Это свершилось! На двадцатилетие Ruby – вышел релиз … Очень символично. :)

Из новшеств:

  • Особенности в синтаксисе:
    • Keyword arguments
    • Module#prepend
    • %i — новый литерал для создание символьных массивов;
    • __dir__ — возвратит имя директории, в которой исполняется файл;
    • Кодировка UTF-8 по-умолчанию;
  • Встроенные библиотеки:
    • Новый движок регулярных выражений — Onigmo
    • Объектам Enumerator добавлен метод #size;
    • Enumerator#lazy
    • #to_h — новое соглашение о преобразовании в хэш;
  • Средства отладки:
  • Поддержка экспорта/импорта байткода;
  • Чистка кода, отсуствие устаревших библиотек;

Документация:

Наслаждайтесь программированием вместе с Ruby!

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

★★★★★

Проверено: tazhate ()
Последнее исправление: renya (всего исправлений: 6)
Ответ на: комментарий от geekless

Все эти методы объявлены устаревшими!

Они упоролись. :(

А мне так кажется, что у Ruby от рождения так :) Каждый раз, обновляя Ruby, играешь в лотерею. Заработает приложение на нём или нет :D

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

А если и нет, что мешает пользоваться RVM?

Абсолютно ничего.
Но хотелось бы из коробки.

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

[lord] [work-hell-machine] [ssh]:~

Spirit_of_Stallman

Столлман - работает в Аду в звании Князя? Вот это карьера ...

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

Столлман - работает в Аду в звании Князя? Вот это карьера ...

Ну, и первое и второе - исторически сложившееся штука:

work-hell-machine

Мой первый линукс мне поставил человек с особым взглядом на мир, и сотворил он тогда имя cemetery-hell-machine. Я особо рад не был, но поменять не знал как. Мол подвох, нужно - кури и копай меняй. Когда выяснил как менять - понял что меня смущает только cemetery. С того дня все мои машины имеют название_девайса\место_расположения-hell-machine. И так уже много лет. Исключения это группы серваков, их я называю звёздами из созвездий, ибо удобно и пафосно.

[lord]

~50% моих знакомых и сотрудников даже имени моего не знают, а пользуются этой погремухой. История так же старая, но не интересная :) Посему я много где lord.

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

А я уж думал что скоро будет open source реализация Ада, чтоб можно было себе задеплоить и заточить пытки под юзеров.

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

Каждый раз, обновляя Ruby, играешь в лотерею.

А что, есть языки у которых с течением времени не депрекейтились бы методы в стандартной библиотеке? Да и какое отношение депрекейт имеет к возможности собратья?

theos ★★★
()

отличная новость

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

Исключения это группы серваков, их я называю звёздами из созвездий, ибо удобно и пафосно.

Я всё так называю.

geekless ★★
()
Ответ на: комментарий от kost-bebix

а haskell все равно быстрее

У слона всё равно толще.

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

Объекты классов Fixnum, Bignum и Float являются неизменяемыми (frozen).

Кто сказал «Python»? Я определённо слышал, что кто-то сказал «Python».

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

Я согласен с анонимом – это негативный момент. В таком поведении есть четкая логика, но это не так логика, которой я ждал от языка.

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

Мой первый линукс мне поставил ...

~50% моих знакомых и сотрудников даже имени моего не знают, а пользуются этой погремухой. История так же старая ...

[sarcasm]Предлагаю написать мемуары: всему ЛОРу будет в высшей степени интересно узнать с чего все началось.[/sarcasm]

Boba_Fett
()

Keyword arguments

Поздравления рубистам. После жабьих выкрутасов с (null, null, someValue) именованные аргументы всегда кажутся раем.

Кодировка UTF-8 по-умолчанию;

Опять поздравления. Удивляет только, что Matz на это согласился. Как же shift-js теперь-то?

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

С Python'ом в этом плане было

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

Экий Вы проницательный. Вам надо это использовать: сколько ЯП-срачей на ЛОРе никогда бы не возникло, если бы вовремя осведомились о Вашем мнении :-}

Virtuos86 ★★★★★
()
Последнее исправление: Virtuos86 (всего исправлений: 2)
Ответ на: комментарий от omegatype

и так датлы по стройке летают, так вы еще ходите все окна по открывать.

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

x и меняется внутри foo.
И поведение это не бредовое, а согласуется с моделью изменяемых/неизменяемых типов данных, принятой в Python. Потому его менять и не собираются.

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

И причем тут in-place алгоритмы? Предложенный пример мутирует аргумент функции, а не внутреннее состояние объекта. Так делают, в основном, идиоты, и за это огребают (или не идиоты, и не огребают). Ознакомься, например, с методом anylist.sort() и функцией sorted(), и подумай, зачем и почему оно так сделано.

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

Собственно, я просто хотел, чтоб ты это увидел и пометил для себя. Также обрати внимание на слова: «подумаешь, что выглядит как полный бред, задокументировано ведь». Это тебе в копилку будущих ЯПосрачей.

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

И причем тут in-place алгоритмы?

такие функции меняют значение своих аргументов.

Предложенный пример мутирует аргумент функции, а не внутреннее состояние объекта.

Аргументы функции должны быть переменными функции, а не внутренним состоянием.

Ознакомься, например, с методом anylist.sort() и функцией sorted(), и подумай, зачем и почему оно так сделано.

подумай на досуге о list.sort()

true_admin ★★★★★
()

Python лучше. «И чем же он лучше?» - хочите вы спросить. Чем Ruby.

Reference count с опциональным сборщиком цикличных зависимостей - это самое то. В Ruby же mark'n'sweep, что плёхо IMHO.

Python в Gimp, Blender. Есть бесплатный KomodoEdit, который с парой плагинов является нормальной IDE.

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

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

omegatype ★★★
()
Последнее исправление: omegatype (всего исправлений: 1)
Ответ на: комментарий от theos

А что, есть языки у которых с течением времени не депрекейтились бы методы в стандартной библиотеке?

Есть языки, где это не происходит так часто, так интенсивно и в столь ключевых местах :)

Да и какое отношение депрекейт имеет к возможности собратья?

Не знаю, какие там собратья у Руби :D И про сборку я ничего не говорил.

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

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

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

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

На лицо ужасное, страшное внутри :)

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

Есть языки, где это не происходит так часто, так интенсивно и в столь ключевых местах :)

Ммм, в .net по сути задепрекейтили всю работу с коллекциями не-дженерик, в Java - Vector, Table, Enumerable, в питоне я даже не буду перечилсять, в PHP обещают задепрекейтить mysql_*, дофига задепркейченх функций над строчками/регекспами - все это вполне ключевые места.

в одном С++ такого нет, и то только потому что в стандарте очень мало, и то не развивается.

Не знаю, какие там собратья у Руби :D

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

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

Аргументы функции должны быть переменными функции, а не внутренним состоянием.

Сказал кто?

подумай на досуге о list.sort()

Ну ты даешь, это я тебе предложил в сообщении выше над этим подумать, но, надо понимать, ты не сподобился (подсказка: list, это объект, и sort() меняет его внутреннее состояние, а не пользуется аргументом как переменными, и при этом является in-place реализацией сортировки! вот загадка-то).

anonymous
()

Торопились в днюхе, и наверняка новых дыр наделали. Решето.

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

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

anonymous
()

Что-то руби так крут, что даже не холиварится..

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

Java

джуниор >=60 000 рублей

программист >=80 000 рублей

старший >=100 000 рублей

ведущий >=120 000 рублей

архитектор >=150 000 рублей

В гумне нищеброды, которых не берут на приличную работу в приличную фирму.

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

Все эти методы объявлены устаревшими! Вместо них следует использовать новые: each_line, each_byte, each_char и each_codepoint.

Они упоролись. :(

Это гон какой-то. Вот что говорит оф.сайт:

#lines, #chars, #codepoints, #bytes now returns an Array instead of an Enumerator [#6670]. This change allows you to avoid the common idiom «lines.to_a». Use #each_line, etc. to get an Enumerator.

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

Это еще не совсем упоролись. Совсем - это когда функции стандартой C-библиотеки объявляют устаревшими :)

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

В гумне нищеброды, которых не берут на приличную работу в приличную фирму.

Шавка хвастается своей конурой и цепью? Да, шавка, у тебя добрый хозяин, гордись.

архитектор >=150 000 рублей

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

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

В большинстве своем - безусловно)

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

Для гиканутых - http://lurkmore.so/images/c/ce/Transformers_comic_fleshlight.jpg

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

Размножаться должны только успешные люди гетеросексуальной (т.е. нормальной) ориентации.

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

special-k ★★★★
()
Последнее исправление: special-k (всего исправлений: 2)
Ответ на: комментарий от tailgunner

У Смоллтока они бы позаимствовали раньше, а сейчас - у языка состоящего из костылей :)

Ничего подобного.

Вот ваш «keyword arguments»

def my_function(**kwargs):
    print str(kwargs)

my_function(a=12, b="abc") #{'a': 12, 'b': 'abc'}
Внешне похожая на это конструкция была всегда
def a options
  p options
end
a b: 1, c: 2 #{:b=>1, :c=>2}
#при том, что на самом-то деле это хэш, и можно сделать вот так
h = { b: 1, c: 1 }
a h #а в питоне?)
Тут решили чисто рубиновые проблемы: создание локальных переменных для значений хэша и значения по умолчанию. Теперь для этого надо чуть-чуть меньше строчек.

Раньше

class Hash
  def with_defaults(defaults)
    self.merge(defaults) { |key, old, new| old.nil? ? new : old } 
  end
end

def a opts
  opts = opts.with_defaults b: 1, c: 2 # значения по умолчанию
  b = opts[:b]
  c = opts[:c]
  other_opts = opts[:other_opts]
end

Теперь

def a( b: 1, c: 2, **opts )
  other_opts = opts[:other_opts]
end
#и по-прежнему
h = { b: 1, c: 2, other_opts: 3 }
a h
Единственно верно только то, что теперь даже формального повода придраться нет - аргументы в руби сделаны однозначно лучше.

special-k ★★★★
()
Последнее исправление: special-k (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.