Tw-city.info

IT Новости
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Ruby это язык программирования

Почему Ruby — особенный язык

Юки­хи­ро Мацу­мо­то, автор Ruby, захо­тел создать совер­шен­ный объектно-ориентированный язык, что­бы в нём мак­си­маль­но пол­но рабо­тал ООП-подход. Кро­ме это­го, новый язык дол­жен соблю­дать свод пра­вил, кото­рых при­дер­жи­вал­ся сам Юки­хи­ро и кото­рые сей­час назы­ва­ют­ся «Путь Ruby». Вот неко­то­рые из них:

  1. Язык для чело­ве­ка, а не для ком­пью­те­ра — про­грам­ма долж­на читать­ся лег­ко даже при мини­маль­ном зна­нии Ruby, а всё осталь­ное берёт на себя ком­пью­тер.
  2. Про­сто, но не слиш­ком про­сто — всё долж­но быть про­стым в про­грам­ме, но толь­ко если для это­го не при­дёт­ся услож­нять что-то дру­гое.
  3. Прин­цип наи­мень­шей неожи­дан­но­сти — все коман­ды и дей­ствия в Ruby долж­ны рабо­тать имен­но так, как от них ожи­да­ет про­грам­мист. Если он встре­ча­ет­ся с чем-то новым в язы­ке, то это не долж­но его уди­вить, а, наобо­рот, он вос­при­мет это как что-то есте­ствен­ное.
  4. «Не нуж­но с этим бороть­ся» — про­грам­ми­сту нуж­но исполь­зо­вать то, что есть в язы­ке, вме­сто того, что­бы пытать­ся под­стро­ить язык под себя.

Пер­вая вер­сия Ruby вышла в 1995 году, и за это вре­мя язык вырос от про­ек­та одно­го чело­ве­ка до боль­шо­го комью­ни­ти и 1,27 мил­ли­о­на строк кода. Сей­час Ruby — уни­вер­саль­ный крос­сплат­фор­мен­ный язык про­грам­ми­ро­ва­ния и под­дер­жи­ва­ет­ся все­ми совре­мен­ны­ми вер­си­я­ми Linux и MacOS.

Особенность языка

Пре­лесть и сила Ruby в том, что в нём вооб­ще всё — это объ­ект. Даже чис­ла, зна­че­ния пере­мен­ных и типы дан­ных — это тоже объ­ек­ты. Напри­мер, у вас есть сло­же­ние, кото­рое реа­ли­зу­ет­ся так:

7 и 5 — чис­ла, за кото­рые отве­ча­ет класс Numeric, и этот класс зна­ет про знак сло­же­ния. Давай­те немно­го рас­ши­рим воз­мож­но­сти это­го клас­са:

С это­го момен­та у всех чисел появ­ля­ет­ся метод plus, кото­рый скла­ды­ва­ет это чис­ло со вто­рым. И таким же спо­со­бом мож­но рас­ши­рить свой­ства и воз­мож­но­сти каж­до­го эле­мен­та в про­грам­ме. Сде­лать авто­ма­ти­че­ский пере­вод из минут в секун­ды? Лег­ко:

И так мож­но делать с чем угод­но, без огра­ни­че­ний и несов­ме­сти­мо­сти типов. Да и какая может быть несов­ме­сти­мость, если типы — это тоже объ­ек­ты, кото­рые мож­но изме­нить. Это дела­ет Ruby похо­жим на C++, где есть пере­груз­ка опе­ра­то­ров и воз­мож­ность исполь­зо­вать коман­ды не так, как заду­ма­но изна­чаль­но.

Синтаксис

На пер­вом месте в Ruby сто­ит чита­бель­ность и про­сто­та, поэто­му этот язык реаль­но осво­ить за неде­лю на базо­вом уровне.

Из замет­ных штук — не нуж­но ста­вить в кон­це каж­дой коман­ды точ­ку с запя­той и все вло­жен­но­сти обо­зна­ча­ют­ся про­бе­ла­ми, точ­но так же как в Python.

Ком­мен­та­рии. Пишем в нача­ле стро­ки знак решёт­ки #, и за ней — ком­мен­та­рий любой дли­ны. Ещё мож­но напи­сать ком­мен­та­рий в несколь­ко строк:

При­сва­и­ва­ние и мате­ма­ти­че­ские опе­ра­то­ры. Тут всё про­сто: при­сва­и­ва­ние — это знак рав­но «=», а мате­ма­ти­че­ские опе­ра­то­ры такие же, как в жиз­ни — +, -, * и т. д.

Типы дан­ных. Так как в Ruby всё объ­ек­ты, то даже типы дан­ных — это тоже объ­ек­ты, а зна­чит мож­но менять их свой­ства и пове­де­ние. По этой при­чине в Ruby очень мало встро­ен­ных типов дан­ных. Если про­грам­ми­сту пона­до­бит­ся что-то слож­нее, чем встро­ен­ные типы, он лег­ко может создать свой тип с нуля или на осно­ве встро­ен­но­го.

Целые чис­ла: Fixnum (до 2³⁰) и Bignum . Вто­рой тип может хра­нить в себе целые чис­ла вооб­ще любо­го раз­ме­ра, если для них хва­тит места в опе­ра­тив­ной памя­ти.

Дроб­ные чис­ла: Float (чис­ло с пла­ва­ю­щей запя­той), Rational (раци­о­наль­ные чис­ла) и Complex (ком­плекс­ные чис­ла с мни­мой еди­ни­цей).

Стро­ка: String , после­до­ва­тель­ность бай­тов в коди­ров­ке UTF-8, могут быть любой дли­ны.

Сим­вол в Ruby — это не один какой-то сим­вол, а про­сто любая стро­ка, кото­рая оста­ёт­ся неиз­мен­ной. Что­бы ком­пью­тер понял, что это сим­вол, перед ним ста­вит­ся двое­то­чие: symbol = :это_тоже_символ .

Диа­па­зон — за него отве­ча­ет класс Range и в нём хра­нит­ся непре­рыв­ная после­до­ва­тель­ность целых чисел:

d1 = 1..5 # Две точки — от 1 до 5 включительно.
d2 = 1. 5 # Три точки — от 1 до 4, а 5 уже не входит в этот диапазон.

Услов­ный опе­ра­тор. Стан­дарт­ная фор­ма выгля­дит при­выч­но:

if x > 0 then
puts «x — положительное число» #puts выводит значение на экран
elsif x
puts «x — отрицательное число»
else
puts «x — нуль»
end

Но есть и несколь­ко дру­гих вари­ан­тов услов­но­го опе­ра­то­ра, напри­мер такой:

# Unless означает «Если условие не выполняется, то. »
unless x > 3 then
puts x.to_s # Выведет значение x, если оно НЕ больше трёх.
else
puts «очень много, не сосчитать»
end

Цик­лы. В Ruby семь видов цик­лов, пото­му что мож­но менять места­ми нача­ло цик­ла и усло­вия выхо­да из него, добав­лять счёт­чи­ки или опе­ра­тор при­ну­ди­тель­ной оста­нов­ки. Вот как выгля­дят клас­си­че­ские цик­лы со счёт­чи­ком, с пред­усло­ви­ем и с посту­сло­ви­ем:

Клас­сы, объ­ек­ты и мето­ды. Так как Ruby пол­но­стью объектно-ориентированный язык, то в нём рабо­та­ет всё, что толь­ко есть в ООП:

  • пуб­лич­ные и при­ват­ные мето­ды,
  • кон­струк­то­ры,
  • насле­до­ва­ние (с помо­щью встро­ен­ных при­ме­сей),
  • пере­опре­де­ле­ние клас­са,
  • и всё осталь­ное, что вам толь­ко пона­до­бит­ся сде­лать с объ­ек­та­ми или клас­са­ми.

Для чего нужен Ruby

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

Так­же на Ruby пишут мобиль­ные игры и при­ло­же­ния под Android и iOS, исполь­зуя Ruboto или RubyMotion.

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

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

Что сделано на Ruby

Ruby исполь­зу­ют ком­па­нии раз­но­го уров­ня, в том чис­ле NASA, Motorola, Google или GitHub. Вот часть про­ек­тов, кото­рые напи­са­ны на Ruby или Ruby on Rails:

  • Twitter,
  • Kickstarter,
  • SoundCloud,
  • Redmine (систе­ма баг­тре­кин­га),
  • Inkscape (рабо­та с век­тор­ной гра­фи­кой),
  • GitLab (управ­ле­ние репо­зи­то­ри­я­ми кода),
  • SketchUp (трёх­мер­ное моде­ли­ро­ва­ние),
  • Netflix (сери­а­лы),
  • Bloomberg (новост­ное агент­ство).

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

С чего начать

Для стар­та вам даже не нуж­но ниче­го уста­нав­ли­вать на ком­пью­тер — исполь­зуй­те онлайн-интерпретатор onlinegdb или rextester.

Что­бы луч­ше разо­брать­ся в язы­ке или его воз­мож­но­стях, почи­тай­те руко­вод­ство «Ruby за 20 минут» на офи­ци­аль­ном сай­те Ruby. Един­ствен­ный момент — это машин­ный пере­вод ори­ги­наль­ной ста­тьи, как и всех осталь­ных рус­ско­языч­ных мате­ри­а­лов на этом сай­те. Поэто­му если зна­е­те англий­ский — луч­ше сра­зу читай­те на нём.

Если есть жела­ние дос­ко­наль­но разо­брать­ся в язы­ке, реко­мен­ду­ем кни­гу Хэла Фул­то­на «Про­грам­ми­ро­ва­ние на язы­ке Ruby» (The Ruby Way).

Почему Ruby — идеальный язык для начинающего разработчика

Марат Хуснетдинов, основатель консалтингового проекта HowToHireMe, рассказал блогу Нетологии о своём пути в IT и о том, почему начинающим разработчикам стоит выбрать Ruby.

В разработке я около 5 лет. Начинал с фронтенда: вёрстка, стили и JavaScript, затем попробовал Ruby, немного поигрался с Python. В последнее время работаю с Elixir — это новый язык на erlang virtual machine — и с базами данных, и как технический специалист, кроме того управляю, продаю, выступаю как ментор. Есть опыт управления проектами, лидирование и продаж в IT. Сейчас у меня на двоих с партнёром консалтинговое агентство HowToHireMe.

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

Мы стараемся развивать наш проект в Open source — я очень активно пишу в open source Github-проекты, чтоб поддерживать опыт на уровне, не смотря на то, что уже ушел на управленческие позиции. За пять лет накопилось много багажа, о котором рассказываем ребятам, когда они приходят к нам на стажировку.

Сегодня расскажу, как эффективно построить карьеру в роли Ruby-разработчика и почему это более эффективно, чем в других языках. Расскажу, почему я пришёл в IT, какие были трудности, почему выбрал Ruby — выбор был непростой, но очень интересный.

Как я пришёл в IT

Хотел бы начать с простой идеи: у меня нет АК-47 с серебряными пулями — есть только опыт и путь, который я прошёл.

Для многих стоит вопрос, как вообще войти в IT: с чего начать, какие есть плюсы, какие минусы. Лично я вообще начинал со станков — работал на производстве. В прямом смысле: крутил гайки, запускал станки токарно-фрезерные. Программировать начал в 28 лет и думал, что это уже возраст, когда не очень просто сменить профессию.

Начинал с HTML и CSS. Пытался писать на 4-й версии PHP по книгам Котерова, после чего это всё успешно забросил. В аспирантуре, когда уже работал с оборудованием, меня познакомили с Python — я даже пытался писать на нём интерпретатор истории станков, чтобы нашим руководителям можно было отслеживать историю нажатия клавиш.

О трудностях, которые возникли при входе

Основная проблема — у меня не было знакомых разработчиков, не было наставника. Я примерно полгода изучал HTML и CSS, чтобы дойти до какого-то уровня в разработке. Были простые проекты, но они были маловостребованны для работодателя. В тот момент я не знал, у кого молодому разработчику спросить совета.

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

Самое трудное в карьере — это выбрать свой язык, свой стек. Когда входил в мир фронтенда, нужно было знать очень много решений и фреймворков, уметь верстать правильно, понимать, какие используются приёмы при вёрстке, хорошо работать со стилями. В то время не было такого многообразия, как сейчас, но тоже было трудно выбрать набор скиллов. Сейчас же очень разросся стек фронтенда и молодым разработчикам всё труднее выбирать.

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

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

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

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

Про Open source и сообщество

Ruby on Rails сам по себе был написан как opensource-проект, где каждый может поучаствовать в разработке этого проекта. Когда входил в Ruby-мир, то работал с тремя ребятами, которые на тот момент находились в core team разработки Ruby on Rails. Сейчас они уехали работать за границу или же работают удалённо на иностранные компании — в этом им как раз очень помог open source.

У меня не было open source-портфолио. Всем молодым разработчикам я всегда говорю: если вас нет Github-аккаунта, то заводите как можно быстрее.

Не важно, сколько вы напишете опыта в резюме, работодатель всё равно пойдёт смотреть на ваш Github-аккаунт и дату его регистрации — это и будет считаться официальным стартом вашей IT-карьеры.

И сейчас вам советую: просто возьмите и зарегистрируйтесь на Github.

Поработав с Python и Pyramid, я понял, что есть более развитые языки, с более развитой инфраструктурой и более отзывчивым сообществом разработчиков. Например, у Ruby сейчас самое развитое комьюнити: его можно сравнить только с JavaScript. Можно сказать, что Ruby-сообщество создало стандарты для тестирования приложений и многие решения мигрировали потом в JavaScript, Python и другие языки.

Читать еще:  Сетевая ошибка 0x80070035

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

Плюсы Ruby для новичка

Когда я входил в Ruby-мир, на Ruby уже было реализовано достаточно большое количество решений: были написаны Twitter, Aviasales, OneTwoTrip, Onlinetours. Множество решений для выкатки приложений тоже написаны на Ruby, например Puppet, Chef — это инструменты, с помощью которых приложения выкатывают на сервер, или Vagrant — виртуализация приложений — написана тоже на Ruby.

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

Многие воспринимают Ruby как кукольный, детский язык, но это только начальное восприятие. Первое моё ощущение от Ruby — язык показался магически простым, потому что очень многое происходит за кадром. Он читается, как обычный текст. Меня подкупило, что можно опускать какие-то скобочки, какие-то вещи можно было писать более нативно. Когда вы понимаете язык, вы понимаете, что там нет никакой магии и всё достаточно предсказуемо работает.

Когда узнаёшь этот язык, начинаешь его любить, потому что вещи, которые делаются очень долго на других языках, здесь можно сделать очень быстро. В среднем скорость разработки на Ruby на 30−50% выше, чем на других языках. В два раза, если мы говорим о Java и .NET. Язык действительно очень красивый и простой для понимания, что привлекает всё большее количество разработчиков.

Я вошёл в Ruby-мир как фронтендер. После чистого фронтенда для Pyramid меня пригласили работать в компанию, которая занимается разработкой на Ruby on Rails. В компанию зашёл как фронтенд-разработчик на Ruby и именно в это время и познакомился с самим фреймворком Ruby on Rails. Очень часто ребята начинают сразу учить сам фреймворк с минимальными знаниями языка. Моё мнение, что это ошибка и надо знать язык, потому что понимание языка даст вам большее понимание фреймворка Ruby on Rails.

Не будем забывать, что у Ruby on Rails тоже есть свои проблемы, которые сейчас пытаются решить. Нет ни одного языка, который мог бы решить все задачи: каждый язык берётся под определённое решение, идеального языка нет. Ruby on Rails и Ruby заняли свою нишу как стандарт разработки веб-приложений. Есть библиотеки, которые помогают писать JavaScript, такие как Opal, компилируются из Ruby в JavaScript; есть фреймворки, которые помогают писать приложения для мобильной разработки, например, RubyMotion.

Почему Ruby и Ruby on Rails перспективны

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

Качественный вход. На Ruby очень просто изучать объектно-ориентированное программирование. Здесь проще читается код, проще приводятся примеры и проще само понимание кода — для новичка это плюс. В некоторых проектах доходит до того, что вы можете читать без скобок код и понимать, что он выглядит почти как обычный текст, за исключением некоторых уникальных программ, которые пролетают где-то в коде.

Высокая конкурентная мотивация. Я могу судить по Воронежу, где годовалый джуниор-разработчик на Ruby может просить зарплату в районе 90 тыс. руб. в месяц. Это достаточно серьёзные деньги. А на входе можно получать от 30 до 40 тыс. руб.

Если вы будете искать работу, то вы должны понимать, что Ruby on Rails — это комьюнити, где люди привыкли работать в стартапах. В 80% это будут небольшие компании, зарубежные или нет, и в меньшей степени — большие компании. Государственные компании также в последнее время переходят на разработку на Ruby on Rails. Они понимают, что платить джависту или дотнетчику за то, что он будет писать год — это очень дорого. Проще заплатить Ruby-разработчику, который стоит чуть подороже, но напишет решение за 2−3 месяца.

Возможность релокации. Здесь речь идёт о знании английского языка: если знаете английский на разговорном уровне или хотя бы можете переписываться, то ваша цена сразу растёт. Есть компании, которые работают на российский рынок и ограничения у таких русскоязычных компаний где-то в районе 3000 долларов. Если вы выйдете на уровень зарубежных компаний, то зарплата будет варьироваться от 2500 до 5000 долларов в американских компаниях. Поэтому советую как можно скорее начинать учить английский язык.

Opensource-головорезы. Open source — это не инхаус-разработка, а разработка на комьюнити: любой человек сможет прийти и оценить ваши наработки, а работодатели и заказчики очень часто требуют показать Github-профиль. Поэтому я советую не только завести аккаунт на Github, но и начать прокачивать его.

Как расти в профессии

Самая главная проблема для начинающих — понять, как правильно писать, что использовать, как использовать. Тут я бы просто посоветовал почитать блоги ведущих разработчиков и изучать практики — именно они позволяют ребятам расти быстрее.

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

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

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

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

Касательно построения карьеры в разработке, считаю, что каждый разработчик должен знать фронтенд в той или иной степени, и не важно — вы будете чистый бекенд или нет. С фронтендом, вёрсткой и разметкой вам всегда придётся работать. Стоит развиваться не только вглубь, но ещё и вширь — поглощать другие сферы.

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

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

Моё мнение: чтобы стать современным разработчиком, надо знать фронтенд — хотя бы чуть-чуть, затем изучить бекенд, если это основное направление, а после этого ещё и получить базовые знания DevOps и QA.

Мнение автора и редакции может не совпадать. Хотите написать колонку для «Нетологии»? Читайте наши условия публикации. Чтобы быть в курсе всех новостей и читать новые статьи, присоединяйтесь к Телеграм-каналу Нетологии.

Обзор возможностей языка программирования Ruby

Статья просмотрена: 4752 раза

Библиографическое описание:

Сапего Ю., Николаев А. Б. Обзор возможностей языка программирования Ruby // Молодой ученый. — 2011. — №4. Т.3. — С. 53-55. — URL https://moluch.ru/archive/27/3103/ (дата обращения: 03.04.2020).

5 . times < print " We *love* Ruby -- it's outrageous! ">Во многих языках, числа и другие примитивные типы не объекты. Ruby следует влиянию Smalltalk , который дает методы и переменные экземпляра всем его типам. Это облегчает использование Ruby, т.е. правила, применяемые к объектам, применяются для всего Ruby. Переменные Ruby содержат не сами объекты, а ссылки на них. Присваивание — это не передача значения, а копирование ссылки на объект. Для программиста, привычного к распространённым гибридным языкам программирования, некоторые эффекты такого решения могут показаться неожиданными. Например :

b #=> «abcRefg» то есть при изменении значения переменной a, неявно изменилось и значение b, так как они содержат ссылку на один объект. То есть механизм присваивания действует одинаково для всех объектов, в отличие от языков типа C, Object Pascal, где присваивание может означать как копирование значения, так и копирование ссылки на значение. Имеются библиотеки для создания всех типом приложений: XML, GUI привязки, сетевые протоколы, библиотеки игр и многое другое. Программисты Ruby также имеют доступ к мощной программе RubyGems 3 . Сопоставимый с CPAN Perl, RubyGems позволяет легко импортировать библиотеки других программистов вашу программу. Ruby рассматривается как гибкий язык, так как позволяет пользователям свободно изменять его части. Любые части языка могут быть удалены или переопределены, а также может что-то добавлено, по желанию. Ничто не ограничивает деятельность программиста. Например, сложение выполняется с помощью операции (+). Но, если бы вы предпочли использовать явное слово plus, вы могли бы добавить такой метод к встроенному в Ruby классу Numeric.

class Numeric
def plus ( x )
self .+( x )
end
end

y = 5 . plus 6
# y is now equal to 11 Операции в Ruby – это просто “подслащённый синтаксис” для методов. Вы также можете переопределить их. Блоки в Ruby также представляются мощным источником гибкости. Программист может присоединить к любому методу замыкание, где описывается, как должен выполняться этот метод. Замыкания называются блоками, и они стали одной из наиболее популярных возможностей для тех, кто перешёл на Ruby с других императивных языков, наподобие PHP или Visual Basic. Идея блоков почерпнута из функциональных языков. Matz говорил: “Замыканиями в Ruby я хотел отдать дань уважения культуре языка Lisp.”

search_engines =
%w[ Google Yahoo MSN ]. map do | engine |
» http://www. «+ engine . downcase +» .com »
end В приведённом выше коде, блок описан в конструкции do… end . Метод map применяет этот блок к имеющемуся списку слов. В отличие от многих объектно-ориентированных языков в Ruby не поддерживается множественное наследование, но вместо него может использоваться концепция «примесей», основанная в данном языке намеханизме модулей. Модули – это собрания методов. Классы могут “подмешать” какой-нибудь модуль, получая все его методы. Например, любой класс, который реализует метод each, может “подмешать” модуль Enumerable, который добавит ему целую кучу методов, использующих each для организации циклов.

class MyArray
include Enumerable
end Как правило, Ruby-сты видят в этом гораздо больше ясности, чем способ множественного наследования, которое является сложным и запутанным. Хотя в Ruby часто используется очень ограниченный набор знаков пунктуации и обычно отдаётся предпочтение английским ключевым словам, некоторые знаки препинания используются для украшения Ruby. Но тем не менее имеет лаконичный и простой синтаксис, частично разработанный под влиянием Ада, Eiffel и Python. Ruby не требует объявления переменных. Он использует простые соглашения об именах для обозначения видимости переменных. var может быть локальной переменной; @ var является переменной экземпляра (член или поле объекта класса); @@var — переменная класса; $ var является глобальной переменной. Эти префиксы переменных улучшают читабельность, позволяя программисту легко определять роль каждой переменной. Также становится ненужным использовать надоедливый префикс self. перед каждой переменной экземпляра. Содержит автоматический сборщик мусора. Стоит отметить, что Ruby является многоплатформленным языком. Он разрабатывался на Linux, но работает на многих версиях Unix, DOS, Microsoft Windows (в частности, Win32), Mac OS, BeOS, OS/2 и т. д.
Список информационных источников


1это парадигма программирования, в которой выполнение программы представляет собой вычисление некоторого выражения, описывающего применение функций (в математическом понимании) ко входным данным

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

3 менеджер пакетов для языка программирования Руби который предоставляет стандартный формат для программ и библиотек Руби (в самодостаточном формате «gems»), инструменты, предназначенные для простого управления установкой «gems», и сервер для их распространения

Читать еще:  Ошибка 0x80070035 как исправить

Похожие статьи

Работа с элементами GUI на примере приложения.

Способ хранения указателей на объекты разных классов в одном контейнере демонстрирует такое свойство языка C++ как полиморфизм.

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

Теоретические аспекты создания обозревателя файловой.

В статье подробно разобран пример программы, написанной на языке C++ на основе

В качестве операндов функция принимает значения строки, столбца и ссылку на индекс

Ж. Бланшет, М. Саммерфилд. Qt 4: Программирование GUI на C++. 2-е дополненное издание.

Организация доступа к реляционной базе данных на основе.

Рис. 1. Пример наследования в ООП (язык C#).

По заданному XML-описанию сущностей и связей NHibernate автоматически создает SQL-запросы для загрузки и сохранения объектов [9].

Doctrine — объектно-реляционный проектор (ORM) для PHP 7.1+, который базируется на.

Интеграция MS-DOS приложений в современные операционные.

Для исполнения MS-DOS приложений в современном мире существует несколько способов.

Рис. 2. Связывание XML данных. Ядро RCPML позволяет реализовать любые XML UI языки под платформу Eclipse.

Анализ инструментов для построения онтологии.

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

Он имеет обоснованную поддержку и обеспечивает множественную среду онтологии.

наследование и. обнаружение циклов.

Анализ уязвимости переполнения буфера | Статья в журнале.

Следствием такого переполнения может быть как ситуация отказа в обслуживании (DoS), так и

Дело в том, что библиотечная функция strcpy не проверяет размеры буфера-приемника, копирование строки

Пусть у нас имеются некоторые переменные в программе (на языке C).

Обучение объектно ориентированной парадигме.

Sparx Systems Enterprise Architect. — генерирование и обратное проектирование на более чем 10 языках программирования (C и C++, C#, Java, ObjectPascal, PHP)

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

Подходы к архитектурному проектированию веб-приложений

require_once(«welcome_page.php«); >; ?> Данное приложение написано на языке PHP. Входной точкой в приложение служит файл index.php, который и обрабатывает все входящие запросы.

Сетевые атаки. Виды. Способы борьбы | Статья в сборнике.

Классический пример — атака DoS, которая начинается с чужого адреса, скрывающего истинную личность злоумышленника.

PHP-инъекция — один из способов взлома веб-сайтов, работающих на PHP.

XML (eXtensible Markup Language) – это всем известный язык разметки, с.

Искусство Ruby №1

В последнее время Ruby, что называется «на
слуху». Однако, не смотря на то, что в
Интернете есть достаточно много материала
по этой теме, разобраться с тем, что же собою
представляет Ruby, в чем его преимущества и в
том, как и где его использовать не совсем
просто. В этой статье я попытаюсь не только
рассказать о языке Ruby, но и о технологиях,
связанных с ним. Я позволю себе снабдить
этот обзор некоторыми комментариями,
которые, возможно, покажутся вам
субъективными. Тем не менее, надеюсь, что
они помогут понять причины такой
популярности нового языка и оценить,
насколько же эффективно его можно
использовать в собственных разработках.

Прежде всего, во избежание путаницы,
давайте разберемся с терминологией. Что
такое
Ruby? В чистом виде, это просто язык
программирования. Кроме того, это
транслятор кода (ruby.exe, если мы говорим о
версии для Win32).

Ruby on Rails – платформа (framework) для
разработки Web приложений на базе Ruby.
FreeRIDE и SciTE — IDE и редактор кода для Ruby.

Инсталляция и начало работы

На сегодняшний день последней версией Ruby
является 1.8.4. С сайта http://www.ruby-lang.org/
можно скачать интерпретатор Ruby и
библиотеки. Можно так же скачать FreeRIDE и SciTE.
К слову, если вы не можете скачать несколько
десятков мегабайт – не расстраивайтесь.
Все это входит в комплект Ruby on Rails, который
публиковался
в Спеце, посвященном
Web.

Для запуска Ruby программы достаточно
набрать ruby .
Естественно при этом не стоит забывать о
путях. Если же вы хотите воспользоваться
FreeRIDE под Windows, то сразу включите опцию «Run
process in terminal» в Debugger Preferences. Конечно, FreeRIDE не
слишком функциональная среда разработки,
но, тем не менее, минимальный набор
необходимых функций она обеспечивает.
Помимо редактора, со стандартным набором
функций и подсветкой синтаксиса
присутствует дебаггер, а также
автоматизирован запуск и остановка
программ. Что еще надо для отладки скриптов?
Итак, запускаем первую программу:

puts ‘hello world ‘

Жмем F5, открывается так называемое
терминальное окно, в котором и отображается
искомая фраза. Не забывайте, что вы имеете
дело с транслятором, поэтому перед запуском
программы модифицированный код
обязательно нужно сохранить в файл. Я
попробовал сразу поставить птичку «save files
before running/debug» (меню «edit/ Preferences… /Debugger/Run»), но
ожидаемого эффекта это не дало. Такие
мелкие багги, конечно, имеют место в IDE.

Я позволю себе маленькое лирическое
отступление. За несколько дней, до того, как
приступить к написанию данного обзора я
общался со своим коллегой на предмет
сравнения языков и принципиальной
возможности и целесообразности «отсечения
тупиковых путей развития языков».
Соответственно, мы затронули и вопрос «строгости»
языков. Нужно ли четко определять типы
переменных, нужно ли обязательно вручную
высвобождать объекты и т.д. И вот здесь была
озвучена прекрасная, на мой взгляд, мысль.
Отсутствие строгости в языках – прекрасно,
более того, оно предоставляет кодерам
некоторые замечательные возможности и в
значительной мере упрощает их работу. Но
все это справедливо тогда и только тогда,
когда программист четко представляет, как
это работает и к каким последствиям это
может привести. В противном случае это
может сильно навредить разработчику и не
только затруднить процесс отладки
программы, но и привести к неявным ошибкам в
алгоритмах, которые очень трудно отловить.
Поэтому, возможно, ответ на часто
задаваемый вопрос о том, какой язык стоит
начинать учить – не столь очевиден. Здесь
следует понимать, что имеет в виду
вопрошающий. Или он знает основы
программирования и пытается выбрать для
себя среду разработки для практической
работы с перспективой на будущее. Или он
просто хочет научиться программировать «с
нуля».

Теперь давайте посмотрим, что собою
представляет Ruby, с точки зрения
вышесказанного. Сразу скажу, что Ruby не
является «Си-образным» языком. Создатели
языка называют это преимуществом. Мне же
синтаксис Ruby напомнил одновременно
синтаксис Бейсика и Паскаля. Здесь имеют
место конструкции «BEGIN … END», «IF … THEN ..» и т.д.
Но есть некоторые особенности синтаксиса,
которых лично я не встречал нигде.

Прежде всего, сразу скажу, что этот язык
чувствителен к регистру. Но не в
классическом понимании, как в С, где нельзя
использовать переменную MyVar вместо myvar. Имя
переменной всегда должно начинаться с
маленькой латинской буквы (например myVar).
Если же мы напишем в коде MyVar, то это уже
будет константа. Весьма интересно, не
правда ли? Возможно, у вас возникнет вопрос:
«А зачем?». Ответ очевиден. Ruby –
транслируемый язык, и компилятор не сможет
вам указать на ошибку при попытке присвоить
константе новое значение. А когда вы
наглядно видите отличие между константой и
переменной (даже в чужом коде), вы постоянно
будете начеку. Как по мне – весьма удобно.

Переменные в Ruby объявлять не надо. При
первом вызове Ruby сам догадается о типе
переменной. Второй пример более интересный:

print(‘Enter your name: ‘ )
name = gets()
puts( «Hello #» )

Здесь программа спрашивает имя пользователя и после его ввода выводит его на экран вместе со словом «Hello». Обратите внимание на то, как передается значение переменной name. Оно как бы врезано непосредственно в строку, при этом признаком переменной является набор символов #<…>. Эквивалентным выражением будет и следующая строка
puts( «Hello » + name). Вместо двойных кавычек можно использовать одинарные, но при этом «врезать» значение переменной уже не удастся.
С тем же успехом можно подставлять значения не только строковых переменных, используя #<…>. Результатом следующего выражения будет вывод на экран числа 9.

Отличие print от puts в том, что в последнем случае происходит перевод строки. Перевод строки можно так же реализовать и с помощью директивы n, а вставку табуляции — t. Но это будет работать так же только тогда, когда используется двойная кавычка. Эквивалентом puts(‘Enter your name: ‘ ) будет print(“Enter your name:n” ).

К слову, круглые скобки – опциональны. Выражение puts «#<(1+2) * 3>» так же будет работать.

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

print(‘Введите ваше имя: ‘ )

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

Объектно-ориентированная концепция Ruby

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

taxrate = 0.175
print «Enter price (ex tax): »
s = gets
subtotal = s.to_f
tax = subtotal * taxrate
puts «vat on $# is $#, so grand total is $# «

Смысл кода, приведенного выше – очевиден. Считается сумма с налогом. Но обратите внимание на строчку

Несложно догадаться, что to_f это метод объекта s. Следовательно, становится очевидным, что любой тем данных в Ruby – класс, а любая переменная – объект, или, если хотите, экземпляр класса. Это очень похоже на концепцию .Net вообще и C# в частности. Более того, если анализировать следующий фрагмент кода x = 1 + 2, то + будет методом, а 2, соответственно, передаваемым ему параметром. С точки зрения концепции языка логичнее было бы написать x=1.+(2) . Мне захотелось проверить это предположение, и я ввел в редакторе кода следующее выражение

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

Здесь я не могу не вспомнить одного из интервью David’а I, в котором он сказал, что мечтает реализовать IDE для Ruby в рамках BDS. Лично мне совершенно понятна его заинтересованность в этом. Объектно-ориентированный подход дает массу технологических преимуществ, позволяющих создавать качественные и функциональные IDE продукты и, тем самым, повышать скорость разработки конечных решений. Достаточно вспомнить, что MDA реализация от Borland получила перспективы лишь с переходом на .Net. Учитывая примитивность FreeRide (как же хочется увидеть в редакторе, после нажатия точки, выпадающий список всех методов), у DevCo есть прекрасная перспектива создать средство разработки, которое может стать реальным конкурентом ASP .Net в своем сегменте рынка.

И еще одна маленькая ремарка. В своей предыдущей статье я делал краткий
обзор нового языка
D. И автор этого языка Уолтер Брайт высказывал мысль о том, что объекты уместны лишь там, где это действительно нужно. В Ruby реализован другой принцип – объектами является все. Я не буду судить у преимуществах каждого из этих подходов. На мой взгляд, основной вопрос заключается в том, как правильно этим распорядиться.

Теперь давайте посмотрим, как в Ruby создаются классы. Но прежде немного определимся с терминологией.
Декларация класса начинается со слова class (нижний регистр), затем следует его имя (начинаться должно с верхнего регистра). Заканчивается декларация класса ключевым словом
end.

class Magazine
def set_mag(aName)
@myname=aName
end
def get_mag
return(@myname)
end
end

В теле класса определены два метода set_mag и get_mag. Следующий фрагмент кода проиллюстрирует, как создается экземпляр класса.

likedMagazine = Magazine.new
likedMagazine.set_mag(‘Xakep’)
puts(likedMagazine.get_mag)

Обратите внимание на переменную @myname, используемую внутри методов. Знак «@» перед именем переменной означает, что она определена для каждого экземпляра класса и не может вызываться вне класса. Своеобразный способ задать область видимости или, если угодно, реализовать инкапсуляцию.

Кстати, слово return в методе get_mag – опционально. На самом деле, Ruby в качестве возвращаемого значения возьмет последнее выражение.

То, что Ruby полностью объектно-ориентированный язык доказывает следующая строка.

Читать еще:  Ошибка 60 01

В качестве результата будет выведено слово Object.
puts self выдаст – main. Обратите внимание на то, что Object с синтаксической точки зрения – константа.

На самом деле все создаваемые в Ruby классы наследуются от класса Object. Среди методов, описанных в этом классе, есть такой как to_s, определяющий строковое представление класса. Что бы проверить это, достаточно в последнем примере дописать еще одну строку

Программа выдаст вполне корректный, хотя и малоосмысленный результат.
Классы в Ruby никогда не бывают закрытыми. В существующий класс всегда можно добавить метод. Это работает как для стандартных классов, так и для «самописных». Иными словами мы всегда можем переопределить метод стандартного класса в наследнике.

class Magazine
def set_mag(aName)
@myname=aName
end
def get_mag
return(@myname)
end
def to_s
@myname
end
end

likedMagazine = Magazine.new
likedMagazine.set_mag(‘Xakep’)
puts likedMagazine.to_s

В приведенном выше коде показано переопределение метода to_s. Теперь результатом выполнения программы буде не внутренний идентификатор объекта, а название (точнее, значение внутренней переменной myname) журнала.

Еще один метод, описанный в классе Object – initialize. Это специальный метод, который вызывается при создании объекта. Он может оказаться очень удобным для задания начальных значений переменных создаваемого объекта.

Теперь давайте попробуем разобраться с наследованием в Ruby. Естественно, что эта концептуальная идея ООП так же реализована. Вот пример реализации:

class Magazine
def set_mag(aName)
@myname=aName
end
def get_mag
return(@myname)
end
def to_s
@myname
end
end

Ruby это язык программирования

Ruby (рус. Рубин, транс. Руби, униз. Раби) — интерпретируемый (скриптовый) язык программирования общего назначения, а также DSL для Rails.

Содержание

[править] История

Некий расовый японский программист Юкихиро Мацумото aka Matz, несмотря на более чем десятилетний опыт разработки, так и не смог осилить ни один из скриптовых языков и, сославшись на их ущербность, создал свой собственный язык, состоящий почти полностью из ништяков, спиженных из других популярных языков, чего и не скрывает. При этом на данный момент языку уже 20 лет, а известен он стал буквально последние несколько лет, и то благодаря написанному на нем фреймворку Rails и наконец-то доведенной до ума документации.

[править] Плюсы и минусы

[править] За что любят

  • ООП, причем в стиле SmallTalk, а не крестов
  • Активное комьюнити
  • Няшный синтаксис
  • Высокая зарплата
  • Поддержка кучи модных фич
  • Rails
  • Гемы, тысячи их (хотя по сравнению с другими языками, либ в рубях таки маловато)
  • Можно пилить либы на C, что выводит производительность приложения на космический уровень (если не наговнокодить)
  • Поднимает ЧСВ пишущих на нем

[править] За что ненавидят

  • Плохо работает на венде
  • Отсутствие реальной многопоточности и этот ваш GIL [1]
  • Очень мало вакансий и 95% из них на рельсы [2]
  • Родной интерпретатор MRI достаточно медленный, и умеет использовать только одно ядро процессора
  • Жрет памяти, как не в себя
  • Проект, написанный ранее на руби и получивший должное развитие, как правило, переписывается на жабу или скалу [3]
  • Нету нормальных доков на русском
  • Высокий порог входа
  • Минималистичная стандартная библиотека, из-за чего на любой чих приходится доставлять сторонние либы, каждая из которых, в свою очередь, зависит еще от десятка-двух, что приводит к настоящему аду зависимостей в проекте
  • Стандартная библиотека, а вслед за ней и все остальные жутко любят менять API, что ломает не только обратную, но и прямую совместимость, причем в минорных версиях — проект, написанный на 2.1.5, вполне может не запуститься на 2.2.0
  • Одиночное наследование без абстрактных классов и интерфейсов порою может вылезти боком
  • Некоторые новоиспеченные адепты настолько увлекаются переопределением всего и вся и конструированием классов на лету, что порождают тонны абсолютно нечитаемого кода в лучших традициях Perl’а
  • Хипстерский

[править] Чем доставляет

Руби ценится в первую очередь за скорость разработки, синтаксис, ориентированный на рутину, кучу готовых решений, а так же уникальное сочетание поддержки всякой функциональной модноты и традиционного императивного подхода. Встроенная в язык поддержка профайлеров и тестов заставляет здорово оргазмировать тех, кто знает, что это такое, и просто повышает ЧСВ у остальных. При этом степень задротства регулируется в зависимости от задач, а наличие хорошей документации на английском, а иногда и на русском, снижает порог входа до минимума. Скорость работы скриптов на руби сливает аналогичным пистоновским всего в 7 из 10 тестов, что вполне вменяемый результат для интерпрайзного языка. Ну а еще говорящие на C могут высказаться тут, и если повезет, то стать соавтором языка.

[править] Имплементации

Существует несколько вариантов интерпретаторов языка ruby, основным считается MRI, который пилит Matz.

  • MRI — Matz ruby implementation, является тем самым православным и расово верным руби интепретатором японца
  • JRuby — Интерпретатор, выполняющий ruby код в JVM машине, за счет чего получает реальную многопоточность и возможность юзать ништяки из жабы. Используется, впрочем, редко, так как во-первых, теряется возможность юзать библиотеки, напиленные с рассчетом на MRI, а во-вторых, по отжиру памяти и тормознутости является бесспорным лидером среди большого семейства интерпретаторов, использующих JVM
  • IronRuby — то же, что и JRuby, только под .Net
  • Rubinius — уже давно грозится показать все другим имплементациям кузькину мать, но на данный момент так и не взлетел, не смотря на большое кол-во инвестиций.

[править] Rails

Веб-фреймворк некой компании 37signals Basecamp, внезапно вызвавшая интерес, как и к самому фреймворку, так и в целом к языку ruby. Бытует мнение, что, если б не рельсы, вполне вероятно, что о японской поделке никто бы и не узнал. На данный момент по праву считается одним из самых развитых веб-фреймворков, однако пальма первенства уже давно и успешно проебана: та же питоновская Джанга развивается в разы быстрее и обрастает фичами чуть ли не каждый день, да и всякие похапешные поделки типа Symfony и Yii и даже серверный жабоскрипт в лице Node.js уже обогнали Рельсы по популярности [4].

  • За простоту и удобство
  • Скорость разработки
  • Не надо знать этот ваш SQL, ведь есть удобный ActiveRecord
  • Даже jquery ставится с помощью rubygems
  • Поддержка таких ништяков как CoffeeScript, SASS, LESS из коробки
  • Рельсы решето
  • Для масштабирования проекта на рельсах требуется вливание тонн нефти, алсо это проблема скорее интерпретатора MRI, чем веб-фрейморка и языка в целом
  • Хоть сколько-нибудь серьезную работу с базой ActiveRecord не вывозит, и SQL учить таки приходится
  • Кроме того ActiveRecord сам по себе демонстрирует не самый удачный подход к построению ORM, и при достаточно сложной структуре базы даже при условии не сильно большой нагрузки работать становится неудобно
  • Разработка под windows = боль

[править] Рельсы — решето

Локальный мем в ruby комьюнити, носит схожий смысл с не падающей плазмой. Долгое время, рельсоводов не заботила ситуация с безопасностью: считалось, что уязвимости — удел пехапэ со всякими cms by Vasya Opasniy, а их это не касается. Внезапно это оказалось не так.

[править] Истоки

Все началось, с того, что ояш школьник из этой страны Егор Хомяков обнаружил уязвимость, и отправил репорт в багтрекер rails на гитхабе. Но был послан контрибьютарами, после чего разгневанный школьник решил устроить экстерминатус и вообще показать кузькину мать. И таки сделал это, используя ту же самую уязвимость в гитхабе, который в качестве веб-фрейморка использует… да, анон, таки рельсы. После чего Егор смог отправить коммит в репозиторий rails, несмотря на то, что как таковых прав на данное действие он не имел. От этого и гитхаб, и контрибьюторы рельсов начали срать кирпичами, школьника на время забанили, а багу таки исправили.

[править] Продолжение банкета

В целом весь последующий 2013 год, параллельно с 4 версией рельсов, пилились периодические секьюрити фиксы. А очередное обновление рельсов всегда сопровождалось фразами: решето, друшлак, рельсы решето, etc…

[править] Холивары

[править] Ruby vs Python

Так как оба языка довольно похожи, то периодически какой-нибудь пэхапэшник, уставший от постоянных унижений со стороны программистов, решается перейти на что-то крутое и, естественно, задает вопрос на какой-нибудь хабре [5], [6]. В качестве аргументов пистонщики традиционно тыкают в свою интерпрайзность, серьезность, четкий code-style и производительность (весьма относительную, но в сравнении с рубями таки нехилую). На что рубисты отвечают, что джанга хуйня, а рельсы рулят, и не забывают про давнюю боль пистона со второй и третьей версией, от которой питоноводы так и не избавились (справедливости ради, в рубях при переходе даже между минорными версиями можно огрести достаточно похожие проблемы). Потом обычно идут унылые обсуждения синтаксиса, отступов питона и библиотек. Стоит отметить, что в плане web-разработки большой разницы между этими двумя языками нет, а ни для чего, кроме этого, Ruby, в отличии от Python’а, практически не используется.

[править] Rails != Ruby

Ruby? Это такой DSL для написания Rails-приложений?

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

[править] Ruby и Windows

Сущий ад и погибель ждут любого, кто попытается разрабатывать на этом языке под вендой. Суть в том, что Ruby разрабатывался как язык максимально открытый, и родная платформа для него Linux. Большинство гемов (местное название библиотек) просто не тестируется под вендой. Инсталлятор языка выглядит как убогий костыль, содержит в себе вперемешку исходники интерпретатора, компилятор Си и еще какие-то хаки, которые не работают, если, например, в пути к папке установки есть кириллица или пробелы (причем ошибка выяснится только при попытке установить какой-нибудь гем, написанный на Си и требующий нормального компилятора). А, например, драйвер для Mysql вообще не работает, пока не перекинешь dll из папки мускула в папку с гемами. Можно, конечно, использовать SQLite, но кому он нахуй нужен. А также отправка почты, настройка веб-сервера, отличного от стандартного, и еще тонна всяких проблем, о которых лучше не знать. Поэтому грамотный анон заранее ставит виртуальную машину с бубунтой и наслаждается разработкой под рельсы, ну или качает готовый образ с настроенным окружением [7].

[править] Что в итоге

В реальности же руби вполне вменяемый язык с высокой зарплатой, почти как у жабы и шарпа, при этом в разы их няшнее и продуманнее, с кучей синтаксического сахара и годным, хоть и относительно небольшим комьюнити. Но, несмотря на простоту и юзерфрендливость, сделать что-то годное без полного понимания, что ты делаешь не получится: нужно будет читать и вникать в манулы на английском. Свой вклад вносит коварный Python — порог входа ниже, комьюнити сильно больше, как следствие предыдущего — наличие сотен библиотек и фреймворков на все случаи жизни, при этом область применения не ограничивается одним только вебом, а по количеству вакансий одна только Джанга сопоставима со всеми рубями. И все, чем придется пожертвовать за эту радость — это отсутствие некоторого синтаксического сахара, что на самом деле заставляет писать более однообразный и, соответственно, понятный код. Profit жи. И самое главное, почему начинающий быдлокодер не любит руби — это то, что поднять визитку и правда быстрее и легче на пыхе, а объяснить заказчику, почему первокурсник Вася может сделать сайт за 5к рублей, а ты за 50к, очень сложно. При этом, когда твой уровень и уровень твоих заказчиков поднимается до такого, что за указание пыха в твоем резюме будут громко смеяться, ты уже вряд ли захочешь вообще программировать, и скорее всего будешь каким-нибудь анал-итиком или менеджером проекта, которому уже глубоко похуй, на чем там пишут его прогеры, да и зарплата там уже совсем другая. С другой стороны, если ты джуниор и готов учиться, то руби научит писать более-менее красивый код. Ну или не научит ничему.

Ссылка на основную публикацию
ВсеИнструменты 220 Вольт
Adblock
detector