PDA

View Full Version : Rails



Diver
26-04-2008, 13:41
Привет, друзья. Есть ли среди вас люди, следующие "the ruby way"?
Я уже около трех месяцев занимаюсь разработкой на RoR (http://www.rubyonrails.org/).
Хочу поговорить, поспорить. Может, holy war устроим тут.

TijAY
27-04-2008, 19:59
Не надо ничего устраивать! Мне рнр нравится, а всякие рельсы даже не смотрел... :) Чем он так хорош?

Digger
27-04-2008, 21:43
Например, я видел функцию авторизации на Ruby в 1500 строк! :-) Бедный Diver сидел, потел, разбирал код. Абстракция на высоте, но достигнуть ее можно и в PHP. Один мой знакомый написал движок сайта, который хранит данные в двух таблицах, причем типов записей и виртуальных таблиц - миллион. И нафига? :-) Нет ни одной задачи, к которой это можно применить - красиво, но бесполезно.

Другой вопрос - производительность. Diver, в двух словах, резюмируй сравнительные тесты ;-)

Diver
27-04-2008, 23:41
Ruby — интерпретируемый язык высокого уровня для быстрого и удобного объектно-ориентированного программирования. Язык обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, «сборщиком мусора» и многими другими возможностями.

Ruby on Rails — объектно-ориентированный программный каркас для создания веб-приложений, написанный на языке программирования Ruby. Ruby on Rails предоставляет каркас модель-представление-контроллер (Model-View-Controller) для веб-приложений, а также обеспечивает их интеграцию с веб-сервером и сервером базы данных.

Вся фишка в философии языка Ruby — писать код очень просто.

"Руби — это не "джава, только лучше". Это Взгляд На Вещи. И один из поинтов этого взгляда: писать код "вручную" должно быть просто. Тогда нет магии, нет зависимости от висюлек и нет софта, пожирающего тысячи пикселей экрана и сотни метров мозгов."

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

"Писать на руби много запутанного кода очень тяжело и опасно (в отличие от джавы). Поэтому пишите мало кода" (гм, пример про 1500 строк сейчас явно не добавляет мне очков ;).

Сам я проникся философией языка и прочувствовал прелесть MVC-модели, писать просто в кайф. Ahtqvdjhr делает большую часть работу за тебя с помощью генераторов. IDE (NetBeans) еще больше упрощает работу.
Да, кстати, я совсем почти не знаю php. Не знаю, как только буду вам оппонировать :)

Сравнение Ruby и PHP5:

Similarities
As in PHP, in Ruby…

* Ruby is dynamically typed, like in PHP, so you don’t need to worry about having to declare variables.
* There are classes, and you can control access to them like in PHP 5 (public, protected and private)
* Some variables start with $, like in PHP (but not all)
* There’s eval, too.
* You can use string interpolating. Instead of doing ”$foo is a $bar”, you can do ”#{foo} is a #{bar}”—like in PHP, this doesn’t apply for single-quoted strings.
* There’s heredocs
* Ruby has exceptions, like PHP 5
* There’s a fairly large standard library
* Arrays and hashes work like expected, if you exchange array() for { and }: array('a' => 'b') becomes {'a' => 'b'}.
* true and false behave like in PHP, but null is called nil

Differences
Unlike in PHP, in Ruby…

* There’s strong typing. You’ll need to call to_s, to_i etc. to convert between strings, integers and so on, instead of relying on the language to do it
* Strings, numbers, arrays, hashes, etc. are objects. Instead of calling abs(-1) it’s -1.abs
* Parentheses are optional in method calls, except to clarify which parameters go to which method calls
* Instead of naming conventions, like underscores, the standard library and extensions are organized in modules and classes
* Reflection is an inherent capability of objects, you don’t need to use Reflection classes like in PHP 5
* Variables are references.
* There’s no abstract classes or interfaces
* Hashes and arrays are not interchangeable
* Only false and nil are false: 0, array() and "" are all true in conditionals.
* Almost everything is a method call, even raise (throw in PHP).

Производительность:

http://www.indeed.com/trendgraph/jobgraph.png?q=java%2Cruby%2Cphp%2Cpython

Diver
15-06-2008, 20:00
Кто-нибудь работал с MVC-схемами? Для PHP есть PHP on Rails, кстати.