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

★★★★☆
Ответ на: комментарий от Legioner

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

Разница в том, что наличие побочных эффектов становится явно видно из сигнатуры. В ООП, напротив, a priori можно говорить, что метод не является чистым (что ставит под сомнение его thread-safety и логику).

dmfd
()

Я не нашел для себя существенных преимуществ руби над python, и использую последний.

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

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

действовать как охранник

Это как? Это у них в каком нибудь «кодексе чести» прописано чтоли?

Если жидко обделается и залезет под стол — то нет.

А если ему предписано нажать заветную кнопу и «залезть под стол жидко обделавшись»?

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

Разница в том, что наличие побочных эффектов становится явно видно из сигнатуры. В ООП, напротив, a priori можно говорить, что метод не является чистым (что ставит под сомнение его thread-safety и логику).

Является ли это реальной проблемой? Зачем методу быть thread-safe? Таких методов при нормальном дизайне должно быть очень мало. Про логику не понял, что имеется в виду.

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

Это у них в каком нибудь «кодексе чести» прописано чтоли?

В требованиях работодателя.

А если ему предписано

Ты начинаешь понимать, ага.

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

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

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

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

Зачем методу быть thread-safe?

Чтобы после "а давайте вынесем это в другой поток" не было "срань господня, 2+2==7?!"

Является ли это реальной проблемой?

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

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

В требованиях работодателя.

Ты начинаешь понимать, ага.

Зато ты перестаешь..

Человек берет на себя ответственность - охранник бумажку у работодателя подписывает, призывник присягу принимает - «Торжественно клянусь защищать Родину и Отечество, выполнять приказы командиров и начальников, добросовестно исполнять свой Воинский Долг»

Все - не может быть никаких «так - да, а вот так - уже нет», если он перестал/не выполняет взятые на себя обязательства - ответит, он при любом раскладе тот, кем «назвался»..

uin ★★★
()

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

и швец, и жнец, и на дуде игрец. Умеет всё делать, причём одинаково хреново. Типичный Windows Way.

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

призывник присягу принимает - «Торжественно клянусь защищать Родину и Отечество, выполнять приказы командиров и начальников, добросовестно исполнять свой Воинский Долг»

а может не принять? Защитники блин. В большинстве своем - неоткосившие неудачники, которые теперь отмазываются.

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

Ну да, он помоему еще и башем может

uin ★★★
()

Ураааа, у Ruby день рождения и у меня тоже :) Всем срочно поздравлять меня.

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

призывник присягу принимает - «Торжественно клянусь защищать Родину и Отечество, выполнять приказы командиров и начальников, добросовестно исполнять свой Воинский Долг»

Все - не может быть никаких «так - да, а вот так - уже нет», если он перестал/не выполняет взятые на себя обязательства - ответит, он при любом раскладе тот, кем «назвался»..

Проблема в неспособности этого вашего «работодателя» отдать приказ, лол. Всё, что они могут приказать - это генеральский дом строить, от забора и до заката.

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

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

про то, что его папа - генерал армии, он тебе не сказал?

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

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

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

В enterpriZe есть место только для тебя, смирись.

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

С днюхой, Alve, всего наилучшего в этой (и будущей) жизни!

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

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

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

Ну вот, еще один голос с дивана..

Проблема

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

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

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

Армия для идиотов? Это бы многое объяснило.

и уж тем более не стоит хвататься за чужие

Помогать другим не нужно? Да эта ваши армия достойное место, я смотрю, лол.

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

Чтобы быть защитником отечества, нужно защищать отечество, а не ехать в центр Москвы, чтобы в случае чего отстоять главного врага этого самого отечества.

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

Да разогнать. Солдат слишком много для текущих угроз.

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

У русских всегда была гамбитная стратегия, для этого нужно много готовых юнитов в буфере быстрого использования :)

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

Лишняя сущность. Приведи пример того, что нельзя сделать в другой парадигме.

Языки высокого уровня — лишняя сущность. И ассемблер — лишняя сущность. Всё можно сделать прямо в машинных кодах!

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

ЯП
синтетический

Да ты что?

Ну, формально — да. В Руби же есть модификаторы поведения, которые меняют смысл корня :)

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

Тогда на нормальную обстановку для себя. Вот такое уж точно бывает.

Это — безусловно :) Но пока не начнёшь думать и о своих детях с внуками.

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

видик-то видел?

нет. по ссылке пошёл, первого кадра мне хватило. Слушай его сам.

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

Я не это имел в виду. Хорошо, уточню: мне хочется увидеть пример системы, которую нельзя нормально описать в рамках другой парадигмы, не реализовав при этом руками половину ООП.

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

У русских всегда была гамбитная стратегия, для этого нужно много готовых юнитов в буфере быстрого использования :)

луркать тут

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

Хорошо, уточню: мне хочется увидеть пример системы, которую нельзя нормально описать в рамках другой парадигмы

Думаю, такого нет. Как и не задачи, которую нельзя нормально «описать» в «рамках машинных кодов» :)

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

Армия для идиотов? Это бы многое объяснило.

Естественно, более того - тебе прямо сообщают «кто ты есть на самом деле»

Помогать другим не нужно?

Вот как раз то, о чем я и говорю - полное не понимание сути вещей..

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

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

Опять не то. Под "описать систему" я понимаю биекцию между подробным словесным описанием и кодом. В машинном коде смысл каждого действия не понятен. И да, не нужно с помощью regressio ad absurdum маскировать признание, что

Думаю, такого нет.

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

Чтобы быть защитником отечества, нужно защищать отечество, а не ехать в центр Москвы, чтобы в случае чего отстоять главного врага этого самого отечества.

Ты такой смешной - Чтобы быть патрульным, нужно патрулировать, а не хватать меня и отправлять в вытрезвитель, когда я «культурно отдыхаю» с друзьями под окнами жилых домов..

Да разогнать. Солдат слишком много для текущих угроз.

А на границе повесим табличку «Осторожно! Злая собака» и к нам никто не войдет.

Ну да и ладно, я понял к чему ты..

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

Чтобы быть патрульным, нужно патрулировать, а не хватать меня и отправлять в вытрезвитель, когда я «культурно отдыхаю» с друзьями под окнами жилых домов..

путинистов надо банить.

А на границе повесим табличку «Осторожно! Злая собака» и к нам никто не войдет.

Таблички не продажны, а эффективность такая же. Может, они действительно лучеш?

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

Я про то, что ЯП нормально, не человеческий же. Да и там временами не вредит :)

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

Опять не то.

Именно то. Сделать можно что угодно. Вопрос в соотношении затрат/результата. Переход к ассемблеру от машинных кодов и к ЯВУ от ассемблера значительно ускоряет разработку (и упрощает поддержку). Так же, как и переход к ООП от классического процедурного программирования.

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

Там это довольно быстро чинят

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

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