Как стать автором
Обновить

Комментарии 18

Огромное спасибо, посмотрю на досуге. Всегда хорошо, когда есть какая-то программа ознакомления с материалом. Я зимой начинал самостоятельно изучать NodeJS, хотя я не разработчик, просто хотел для себя, в июне подвернулся курс по стеку MEAN, записался и сейчас хожу два раза в неделю, так вот я за эти три месяца научился по программе во много раз больше, чем я учился сам по книжкам и разрозненным роликам, сейчас уже сделал небольшой сайт и принялся делать второй проект.
Опасно начинать изучение с Ruby — после него многие другие языки кажутся страшными и неудобными) Я теперь не могу спокойно смотреть на PHP, JavaScript кажется каким-то инструментом для пыток.

С другой стороны, переходить с чего-то статически типизированного (хотя бы и с TypeScript, чем чёрт не шутит) на "динамику" — это тоже иногда боль, особенно если привыкнуть к хорошей поддержке со стороны IDE (да хотя бы и тот же VS Code для уже упомянутого TS). Хотя, конечно, я мог слишком быстро сдаться, и вообще давно пора RubyMine пощупать...

Меня динамическая типизация не напрягает совсем. Если понятно называть переменные и методы, до по смыслу будет понятно какого они типа. Либо я просто ещё не сталкивался с такими случаями, когда так важна типизация. А RubyMine пощупать действительно стоит.
Не ожидал увидеть руби и рельсы тут ))

Ruby присутствует по умолчанию в комплекте любой современной операционной системы (или может быть доустановлен в Windows)

Вы, похоже, перепутали с питоном. руби (irb) не является стандартным софтом нигде.

В программах на Ruby крайне редко можно увидеть циклы типа for, while, loop. Они предусмотрены в синтаксисе, но почти не используются.

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

unless found_product.nil?
# Булочки нашли, делаем что-то полезное.
end

Нет никакой нужды писать так (через отрицание), если можно написать «if found_product».
Проще и легче воспринимается.

product.name.eql? 'булочка с маком'

На рубях так никто никогда не пишет. Явно вызывать метод eql нет никакой нужды. "==" вам в помощь.

Насчёт применения в машинном обучении — я думаю, это очень маловероятно.
Да и как академ.язык тоже вряд ли. Руби пал жертвой популярности рельс. А последний заточен исключительно под веб.

Ну такое…
Вы, похоже, перепутали с питоном. руби (irb) не является стандартным софтом нигде.

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

Явно вызывать метод eql нет никакой нужды. "==" вам в помощь.

Ну не всегда:
1 == 1.0     #=> true
1.eql? 1.0   #=> false


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

Прощу прощения, возможно я проглядел. Мне всегда почему-то казалось, что по дефолту руби там нет.
Ну не всегда:
Очень хороший пример. :) Исключение из правил при сравнении. И в реальной жизни, как мне кажется, малоприменимый случай.
Конкретно для строк в этом точно нет необходимости.
И когда это руби пал?

С тех пор, как руби стал прочно и безразрывно ассоциироваться с рельсами. Лет эдак 10 назад и по сей день. Даже несмотря на то, что на руби написаны многие утилиты и есть много других фреймворков.
Когда он стал ассоциироваться рельсами, он начал только сильней развиваться. И развивается по сей день. И прочие фреймворки и утилиты продолжают развиваться. В чём же заключается его падение?
«Падение», кмк, заключается в том, что руби по сути за редкими исключениями не нашёл себя ни в чём другом, кроме как веб-разработке.
Так он и не ориентирован на что-то большее. Хотя, если сильно захотеть, то можно и десктопное приложение на нём написать (shoes), и мобильное (rubymotion), и многое другое. В девопсе он хорош (chef). По назначению он аналогичен питону. И вполне себе с ним конкурирует. С компилируемыми языками его вообще нет смысла сравнивать.
Очень хороший пример. :) Исключение из правил при сравнении. И в реальной жизни, как мне кажется, малоприменимый случай.

Я ведь правильно понимаю, что это аналог (примерный) строгого и нестрогого сравнения в JS, где активно рекомендуется использовать строгое везде где только можно, чтобы не делать лишних приведений типов?
В принципе, да. Как правило, во многих классах методы == и eql? синонимы. Но в некоторых, как в данном случае (Numeric и производных), они различаются.
Ruby — это не очередной императивный язык программирования,
Википедия опять врёт?
на котором можно начать программировать за вечер, а за неделю постичь полностью.
Так нужно сразу предупреждать (у кого английский не родной и программировал на других языках), что в языке полно псевдонимов, которые работают аналогично с одинаковой скоростью (например, методы array.inject и array.reduce). В конце картинка в тему.

Под какую версию написан курс? Например, метод array.sum появился только в версии 2.4.
Вы серьезно, чувак который кодит на C++/Java в жизни не посмотрит на интерпретаторы (разве что у него есть куча свободного времени, и он хотел бы еще что-то обуздать), Ruby не годится для этого, это даже не PHP, который имеет канонический C-подобный синтаксис, и максимально приближенное ООП к реальности.
ИМХО, начинать изучать программирование, и понимание ООП в целом, как раз нужно с компилируемых языков, а комбинация C++/Java будем лучшим вариантом для достижения этой цели.
Ruby не годится для этого

Для чего он не годится? Для своей области применения и он отлично годится.
который имеет канонический C-подобный синтаксис

Как будто это что-то хорошее)
максимально приближенное ООП к реальности

И чем же оно ближе к реальности, чем ООП Ruby? Он же изначально был создан для выполнения простейших операций, без какой-либо внятной архитектуры. А потом на него начали натягивать некое ООП имеющимися средствами.
ООП в SmallTalk, Objective-C и Ruby как раз более приближенно к реальности.
НЛО прилетело и опубликовало эту надпись здесь
Спасибо, очень полезный и интересный материал по Ruby и веб-разработке на Ruby!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий