LINUX.ORG.RU
ФорумTalks

23.02.1993 был создан Руби


0

1

Теперь это тред о том, почему руби крутой, и как он решил проблемы, неразрешимые на других ЯП!

http://cs323822.userapi.com/v323822503/5f6a/_c3bCUFT2qQ.jpg

Ниже приведен перевод письма Маца в список рассылки ruby-talk ([ruby-talk:00382]). Письмо датировано 4 июня 1999 года. День рождения Ruby уточнен в письме [ruby-list:15977].
Ruby родился 23 февраля 1993 года. В тот день я беседовал со своим коллегой о возможности существования объектно-ориентированного скриптового языка. Я знал Perl (Perl4, а не Perl5), но он мне не нравился -- был в нем некий привкус игрушечного языка (да и до сих пор есть). А объектно-ориентированный интерпретируемый язык казался многообещающим. В то время я знал Python. Но он мне не нравился, так как я не считал его настоящим объектно-ориентированным языком. Его OO свойства казались надстройкой над языком. Мне, как языковому маньяку и фанату объектно-ориентированного программирования с пятнадцатилетним стажем, очень, очень хотелось, чтобы был истинно объектно-ориентированный, простой в использовании язык. Я пытался найти такой язык, но его не было. Тогда я решил его создать. Прошло несколько месяцев, прежде чем интерпретатор заработал. Я добавил в мой язык то, что мне хотелось -- итераторы, обработку исключений, автоматическую сборку мусора. Затем я реорганизовал свойства Perl'а и реализовал их как библиотеку классов. В декабре 1995 года я опубликовал Ruby 0.95 в японских новостных группах. С тех пор появились сайты, списки рассылок. В списках рассылок происходят жаркие дискуссии. Самый старый, ruby-list, сейчас содержит 14789 писем.

(источник: http://ruby.osdn.org.ua/faq/node7.html)

Для Ъ, не ходящим по другим языкам:

Класс языка: мультипарадигмальный: динамический, объектно-ориентированный, рефлективный, императивный, функциональный

Тип исполнения: интерпретируемый

Появился в: 1995

Автор(ы): Юкихиро Мацумото

Расширение файлов: .rb, .rbw

Релиз: 1.9.3-p385 (6 февраля 2013[3])

Типизация данных: строгая, динамическая (утиная)

Основные реализации: Ruby MRI (англ.), JRuby, IronRuby

Испытал влияние: Perl, Smalltalk, Eiffel, Ada, Lisp[1], Python, Dylan, CLU (англ.), C++

Повлиял на: Groovy, Amber, CoffeeScript, Perl 6

Лицензия лицензия Ruby или GNU GPL v2

Сайт: http://www.ruby-lang.org

★★★★☆

Лучше бы поздравил ЛOP -овцев с Днем Защитника Отечества, как минимум один из нас сейчас срочную службу проходит: О моем КМБ

uin ★★★
()

Для цитат нужно использовать тег [цитата], а тег [код] нужно использовать для кода. Это тебя руби до такого довело?

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

невозможность выбрать режим форматирования для цитаты, и само ненужное слово «цитата»

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

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

Ты просто недостаточно старался.

потом начинаешь писать на каком-нибудь другом языке, а перед словами руки сами начинают набирать вские странные сиволы, скобочки, собачки, решетки... Не знаю что они значат, наверное, ЗАЛГО воздействует на руки. А еще начинаешь постоянно ставить, запятые, в разных, непонятных, местах, например: «1.upto 2, { puts 'hello' }».

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

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

kto_tama ★★★★★
()

Но ведь ООП не нужен.

истинно объектно-ориентированный, простой в использовании язык.

Следовательно...

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

Слушай анкедот. Заходить жавист в столовку и говорит: мне, пожалуйста, паблик статик файнал Борщ борщ нью Борщ, пожалуйста!

@public @static @final $Borsch #@!borsch $$new, @!!-->Borsch;  

на знаю зачем рассказал...

Наверное, потому что мы до сих пор решаем проблемы такими вот способами:

Helper class

@GwtCompatible public final class Preconditions extends Object

Simple static methods to be called at the start of your own methods to verify correct arguments and state. This allows constructs such as

if (count <= 0) { throw new IllegalArgumentException(«must be positive: » + count); }

to be replaced with the more compact

checkArgument(count > 0, «must be positive: %s», count);

((c)Google Guava API documentation)

Короче, в тред кастуются рубисты, а то мне по сабжу нечего сказать -))

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

Короче, в тред кастуются рубисты, а то мне по сабжу нечего сказать -))

На какую тему-то?

geekless ★★
()

Благодаря seven languages in seven weeks поближе познакомился с руби, и пожалел, что раньше с ним не поигрался.
С праздником!

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

Анекдот боян, декоратор лучше, чем тупое кодирование проверки.

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

Защитника Отечества

срочную службу

Где связь? Чистить картошку и строить дачи != защищать отечество.

cipher ★★★★★
()

23.02.1993 был создан Руби

Ох нифига себе молодой и перспективный язык :)

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

Господа, разберитесь цивилизованно, с оружием в руках. ООПшник стреляет строчкой, которую нельзя быстро записать ни в одной парадигме, не-оопшник быстро растусовывает по Хаскелю чокаво..

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

Где связь? Чистить картошку и строить дачи != защищать отечество.

Вначале отслужи - потом свои вопросы отвечай..

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

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

Как говорил Олег, жить по-человечески — это работать два часа в неделю, иметь квартиру с видом на залив, и знать теорию категорий.

Если бы это рассказывали детям в школе, мы бы все давно уже жили в руби.

stevejobs ★★★★☆
() автор топика

я люблю руби. И кайфую тоже же.

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

Да уже сто раз жевано. Вон свежее обсуждение: Работа с последовательностями в разных языках

Результат как обычно: код при правильном сочетании ООП и ФП получается лаконичнее и читабельнее, чем у ненужно-фанбоев. Типичные «аргументы» а ля «ненужно, я не осилил», это даже не смешно.

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

Вначале отслужи - потом свои вопросы отвечай..

-- Героин - это плохо.

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

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

Вон свежее обсуждение:

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

код при правильном сочетании ООП и ФП

ООП - заметание побочных эффектов под ковёр, ФП - отказ побочных эффектов. Эти парадигмы сочетаются так же, как молоко с огурцами. Так что правильное сочетание ООП и ФП - 0:1.

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

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

Парадигма - это и есть сахар. Под любой парадигмой при запуске банально лежит машина фон-Неймана. Внезапно.

ООП - заметание побочных эффектов под ковёр

Прочтите матчасть, сударь.

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

Парадигма - это и есть сахар.

В таком случае хотелось бы услышать ваше определение сахара. Что-то не так.

Прочтите матчасть, сударь.

Читал уже. Один из столпов ООП - скрытие данных.

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

Удобно и понятно.

Единственная мелочишка, хотелось бы, чтобы «count > 0» автоматом передавалось в функцию, чтобы не передавать лишних аргументов, но это действительно мелочь.

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

Вы таки будете отрицать, что ООП-код обычно состоит из объектов-блобов с неизвестным мутабельным внутренним состоянием?

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

Добавить бы еще в жабку C++-like template processor, чтобы он был стандартным :)

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

Вы таки будете отрицать, что ООП-код обычно состоит из объектов-блобов с неизвестным мутабельным внутренним состоянием?

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

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

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

uin ★★★
()

Можно начать срач? Нудак я начну, простите, я невольно.
Объясните преимущство над питоном. (на руби не писал)

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

Да, да. Расскажи мне, как ты отбивался от толп злющих врагов.

Из пустого в порожнее..

Скажи - человек в форме, сидящий в охранной будке и заполняющий сканворд является охранником? И что он должен такого делать, чтобы про него можно было с уверенностью сказать «он охраняет объект» - с палкой вокруг забора бегать и орать «не подходи - убъю!»?

Армия жрет ВВП. Жрет впустую.

Допустим - что предлагаешь?

uin ★★★
()

Ненужно

сабж

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

Скажи - человек в форме, сидящий в охранной будке и заполняющий сканворд является охранником?

Если он при нападении будет действовать как охранник — то да. Если жидко обделается и залезет под стол — то нет.

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