27.08.2009

First Start With Ruby



Совсем недавно(этак месяца два назад) открыл для себя такой язык программирования как Ruby(англ. «Рубин», читается ['ɹu:bɪ]).
Поначалу пересаживаться, с платформы .Net было очень тяжко хоть и язык считается низкоуровневым и Объектно Ориентированным, но имеющий строгую динамическую типизацию, да и синтаксис довольно свободный. Первые две недели я думал что я сойду сума пока освою синтаксис, и пойму философию программирования. Самое, сложное было необязательность вставки ';' в конце строки, и динамическая политизированность, по началу очень дико кажется..

Но по долгу службы пришлось изучить, и после просто настроился на волну и вошел во вкус, я бы сказал что .Net скоро придет к тем же концепциям что и в Руби.

Преимущества:
  • Имеет лаконичный и простой синтаксис, частично разработанный под влиянием Ада, Эйфель и Python.
  • Позволяет обрабатывать исключения в стиле Java и Python.
  • Позволяет переопределять операторы, которые на самом деле являются методами.
  • Полностью объектно-ориентированный язык программирования. Все данные в Ruby являются объектами в понимании Smalltalk. Единственное исключение — управляющие конструкции, которые в Ruby в отличие от Smalltalk не являются объектами. Например, число «1» — это экземпляр класса Fixnum. Также поддерживается добавление методов в класс и даже в конкретный экземпляр во время выполнения программы.
  • Не поддерживает множественное наследование, но вместо него может использоваться концепция «примесей», основанная в данном языке на механизме модулей.
  • Содержит автоматический сборщик мусора. Он работает для всех объектов Ruby, в том числе для внешних библиотек.
  • Создавать расширения для Ruby на Си очень просто частично из-за сборщика мусора, частично из-за несложного и удобного API.
  • Поддерживает замыкания с полной привязкой к переменным.
  • Поддерживает блоки кода (код заключается в {} или doend). Блоки могут использоваться в методах или преобразовываться в замыкания.
  • Целые переменные в Ruby автоматически конвертируются между типами Fixnum (32-разрядные) и Bignum (больше 32 разрядов) в зависимости от их значения, что позволяет производить целочисленные математические расчёты со сколь угодно большой точностью.
  • Не требует предварительного объявления переменных, но для интерпретатора желательно, чтобы переменным присваивалось пустое значение nil (тогда интерпретатор знает, что идентификатор обозначает переменную, а не имя метода). Язык использует простые соглашения для обозначения области видимости. Пример: просто var — локальная переменная, @var — переменная экземпляра (член или поле объекта класса), @@var — переменная класса, $var — глобальная переменная.
  • В Ruby непосредственно в языке реализованы многие шаблоны проектирования, так, например, «одиночка» (singleton) может быть (хотя и не обязан) реализован добавлением необходимых методов к одному конкретному объекту (см. ниже).
  • Может динамически загружать расширения, если это позволяет операционная система.
  • Имеет независимую от ОС поддержку невытесняющей многопоточности.
  • Перенесён на множество платформ. Он разрабатывался на GNU/Linux, но работает на многих версиях Unix, DOS, Microsoft Windows (в частности, Win32), Mac OS, BeOS, OS/2 и т. д.
Недостатки:
  • Невысокая скорость работы. Ruby 1.8 является одним из самых медленных из используемых в практике веб-разработки языков программирования. Эта проблема решена в Ruby Core 1.9 и в JRuby. Быстродействие других альтернативных реализаций языка также несколько лучше чем у Ruby 1.8
  • Отсутствие поддержки потоков операционной системы (для Unix-подобных операционных систем есть поддержка процессов ОС), есть в версии 1.9.
  • Отсутствие встроенной поддержки Юникода (возможна работа с использованием дополнительных библиотек, есть в версии 1.9).
  • Отсутствие компиляции в байткод. (При этом есть возможность компилировать Ruby в Java и .NET байткод, используя компилятор JRuby и Ruby.NET). В в версию 1.9 входит виртуальная машина YARV, компилирующая Ruby в байткод и существенно ускоряющая исполнение. Кроме того, параллельно разрабатывается другие проекты виртуальных машин, включая Rubinus и Maglev.
Работая на нем уже два месяца, он остается для меня полным загадок. Все кто еще не слышал или не сталкивался, советую испытать философию Ruby.

Cылки:
http://ru.wikipedia.org/wiki/Ruby
Ivan a Sense

2 комментария:

Admin комментирует...

Кто работал с Руби??? меня больше интересует компиляция файлов... чет уже голову сломал как это делается... уже пробовал JRuby, .NET ничего не получается...

Ivan комментирует...

Руби не компилируется, а интерпретируется;)

LinkWithin

halt Related Posts with Thumbnails