Хочу поделиться своими соображениями. Я читал много топиков на тему Ruby, Ruby on Rails, Ruby vs PHP, Python vs PHP. «Каждый кулик свое болото хвалит». Я считаю, что это дело сугубо каждого — какую систему или язык программирования использовать, личные предпочтения, как говорится, на вкус и цвет товарищей еще поискать. Но суть даже не в этом. Я хорошо знаю PHP, не так давно взялся за изучение Ruby и Ruby on Rails. Знаете, как ни странно это звучит, но мне нравятся обе системы — и PHP, и Ruby, возможно даже одинаково. В Ruby есть свои прелести, которые привлекают — мощность самого языка, очень понятный и лаконичный синтаксис (если с толком подойти к изучению), в PHP — простота и все та же лаконичность языка. Хорошие системы, хорошие инструменты, но все же Ruby как-то в роли догоняющего. Что же тут не так?
И вот над чем я задумался. Если Ruby — столь привлекательный и модный ныне язык разработки, то почему же его продвижение идет с неком скрипом? Вроде там все ясно и понятно, но вот чего-то явно не хватает. А не хватает по сути самого главного — хорошей документации. Предвижу много возражений. Да, она есть, но в каком виде? На официальном сайте есть несколько ссылок на доки. Все вроде бы хорошо, всего с избытком. Но! Позвольте-ка, как я могу доверять документации в которой не нашел описания элементарного метода core (!) method_missing, зато в другом источнике — на-то пожалуйста! Плюс ко всему нет каких-то перекресных ссылок на сопутствующие, похожие методы.
И как это все рознится с документацией по PHP. Вот вам сайт, вот вам тут же ВСЯ документация — и описание языка, и функции, и перекрестные ссылки. Я помню, как я начал писать на PHP — я просто открыл сайт и шаг за шагом начал исследовать сначала сам язык, попутно узнавая о функциях. Просто прелесть! За месяц с нуля я написал небольшой сайт вообще без всяких проблем.
Совсем иная картина с Ruby. К изучению Ruby я подошел более основательно — купил книгу, досконально все изучил (кстати, очень рекомендую «Язык программирования Ruby» Д.Флэнаган, Ю.Мацумото), затем приступил к Rails — нашел перевод книги, последовательно по примерам изучал. В принципе там все ясно и понятно изложено. Но вот после окончания прочтения возникает такое чувство, как-будто тебе кратко чего-то объяснили («от опушки леса до чащи лесной довели»), а потом — «дальше давай уж сам как-нибудь, браток, по темному лесу топай, а фонарик и компас, не, мы тебе не дадим — тут же и так все ясно-понятно, мы сами, вон, спокойно по этому лесу бродим и не блуждаем, и ты не заблудишься». А ничего, что я в этом «лесу» впервые?..
Документация по RoR просто отвратительная — там не найти того, о чем не знаешь — нет полного и понятного описания методов, нет описания параметров методов, нет примеров, нет описаний классов и их взаимосвязей. Опять же, парируя возражения, скажу, что те описания, которые есть — это как раз на уровне учебника для начинающих — описано то, что и так в принципе понятно. А куда же дальше идти? Исходники ковырять? Но, позвольте, я не сторонник автоВАЗа, например, именно потому, что эти машины надо почти сразу же после покупки «допиливать». Тут похожая ситуация — изучить авто, чтобы нормально ездить на нем. И к чему это? Я машину покупаю, потому что водителем хочу быть, а не автомехаником. Я хочу пользоваться инструментом, а не познавать его в деталях, да к тому же без инструкции — опять же отсутствие документации. Многие совершенно не представляют, как работает их мобильник, но с успехом им пользуются. Будет интерес — залезу в исходники, но пока вот мне это совершенно ни к чему. Что-то я не припомню, чтобы мне функционал того же PHP на официальном сайте предложили изучать по исходникам. Я хочу использовать язык программирования, фреймворк, при чем хочу на полную мощность, а не только на уровне того, что мне в учебнике преподнесли, развиваться и двигаться дальше, а не топтаться на месте, ковыряясь в исходниках. Поймите правильно, мне не важны детали работы того инструмента, которым я пользуюсь, лишь бы он выполнял все свои функции правильно, и знать обо всех этих функциях хочу, но из документации, «инструкции по использованию инструмента», а не выспрашивать у кого попало и не ползать по инету в поисках.
Насколько я уже убедился на собственном опыте (я в IT-индустрии более 20 лет), выигрывают чаще удобные и доступные системы, и наличие хорошей, удобной документации — это практически половина успеха, а не те системы, где внутри все круто, но стороннему наблюдателю не понятно, да и рассказать некому.
Вот, собственно, мои соображения. PHP, Ruby, Python, C++, Java — лишь один из способов общения с машиной, не более того. И нам всем повезло в том, что мы можем выбирать на чем писать и как писать. Но пока система остается мало доступной для легкого изучения для любого пользователя или программиста, то грош цена всей той крутости, которую она скрывает за отсутствием документации. За примерами ходить далеко не нужно — популярность и широкое использование какого-либо средства разработки — лишь следствие его доступности и наличие удобной и полной документации в частности.
Сразу оговорюсь, что наличие форумов или других разрозненных источников информации я за документацию не считаю. Любая мощная система должна обладать прежде всего полной и удобной документацией. И, я думаю, многие со мной согласятся, что тратить свое драгоценное время на исследование исходников, вместо того чтобы заниматься делом — не самое приятное и полезное занятие. Оно конечно хорошо — знать исходники — типа развивает и все такое, но у меня дел своих полно, а разработчикам Ruby и Ruby on Rails пора бы задуматься над хорошей документацией, иначе так и будут плестись в хвосте столь превосходные средства разработки.
Автор: Sega100500