Совсем недавно(этак месяца два назад) открыл для себя такой язык программирования как Ruby(англ. «Рубин», читается ['ɹu:bɪ]).
Поначалу пересаживаться, с платформы .Net было очень тяжко хоть и язык считается низкоуровневым и Объектно Ориентированным, но имеющий строгую динамическую типизацию, да и синтаксис довольно свободный. Первые две недели я думал что я сойду сума пока освою синтаксис, и пойму философию программирования. Самое, сложное было необязательность вставки ';' в конце строки, и динамическая политизированность, по началу очень дико кажется..
Но по долгу службы пришлось изучить, и после просто настроился на волну и вошел во вкус, я бы сказал что .Net скоро придет к тем же концепциям что и в Руби.
Преимущества:
- Имеет лаконичный и простой синтаксис, частично разработанный под влиянием Ада, Эйфель и Python.
- Позволяет обрабатывать исключения в стиле Java и Python.
- Позволяет переопределять операторы, которые на самом деле являются методами.
- Полностью объектно-ориентированный язык программирования. Все данные в Ruby являются объектами в понимании Smalltalk. Единственное исключение — управляющие конструкции, которые в Ruby в отличие от Smalltalk не являются объектами. Например, число «1» — это экземпляр класса Fixnum. Также поддерживается добавление методов в класс и даже в конкретный экземпляр во время выполнения программы.
- Не поддерживает множественное наследование, но вместо него может использоваться концепция «примесей», основанная в данном языке на механизме модулей.
- Содержит автоматический сборщик мусора. Он работает для всех объектов Ruby, в том числе для внешних библиотек.
- Создавать расширения для Ruby на Си очень просто частично из-за сборщика мусора, частично из-за несложного и удобного API.
- Поддерживает замыкания с полной привязкой к переменным.
- Поддерживает блоки кода (код заключается в
{
…}
илиdo
…end
). Блоки могут использоваться в методах или преобразовываться в замыкания. - Целые переменные в 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.
Cылки:
http://ru.wikipedia.org/wiki/Ruby
Ivan a Sense
2 комментария:
Кто работал с Руби??? меня больше интересует компиляция файлов... чет уже голову сломал как это делается... уже пробовал JRuby, .NET ничего не получается...
Руби не компилируется, а интерпретируется;)
Отправить комментарий