Программисты говорят о Ruby



Дата16.09.2014
Размер60.5 Kb.
ТипДокументы
Некоммерческая организация «Ассоциация московских вузов»

Государственное образовательное учреждение

высшего профессионального образования
Московский государственный индустриальный университет

ГОУ ВПО МГИУ

Научно-образовательный материал

«Программисты говорят о Ruby»

Состав научно-образовательного коллектива:

Курасов Ю.В., ведущий инженер

Виноградова Л.А., ведущий инженер

Москва 2010 г.


Программисты говорят о Ruby


В этом разделе мы изложим собранные из различных источников высказывания о языке Ruby, отложив на некоторое время рассмотрение примеров, иллюстрирующих их. Большая часть вопросов, которые будут затронуты, предполагает наличие определенных знаний у читателя в области теории языков и объектно-ориентированного программирования. Легче всего понять Ruby тем, кто знает Smalltalk, Lisp, C, C++ и Perl. <<Джентльменский>> набор из Perl, Java и C++ тоже является весьма хорошей стартовой позицией для изучения Ruby.

Тем же, кто не может похвастаться подобными знаниями, весьма приятно будет узнать, что



  • <<если для изучения языка Perl Вам нужно потратить, скажем, три недели, то Python Вы изучите за неделю, а Ruby -- за один день!>>

  • <первой попытки>>.

Во введении мы уже цитировали Юкихиро Мацумото -- создателя Ruby. Вот что еще он сам говорит об этом языке. Итак, Ruby

  • имеет простой синтаксис;

  • поддерживает обработку исключений;

  • позволяет переопределять операторы;

  • является чисто объектно-ориентированным языком (complete, full, pure object oriented language), в котором, в отличие от Java или Perl, все -- объекты;

  • позволяет работать с целыми числами произвольной величины;

  • не требует объявления переменных;

  • использует префиксы (@, $, @@) для задания области видимости (scope) переменных;

  • поддерживает многопоточное программирование.

Одной из первых работ, привлекших внимание к Ruby, была уже несколько устаревшая статья Хала Фултона (Hal Fulton) <<Тридцать семь причин, по которым мне нравится Ruby>>. Вот некоторые из них.

Ruby является динамическим языком. В отличие от статических языков, подобных C++ или Java, методы и переменные в Ruby могут быть добавлены или переопределены во время выполнения программы. Это позволяет, например, обойтись без директив условной компиляции #ifdef, необходимых для языка C. Здесь проявляется сходство Ruby с такими языками, как Lisp и Smalltalk.

Ruby -- интерпретируемый язык.
Так как это свойство отрицательно сказывается на производительности, то хочется дать некоторые комментарии. Во-первых (и это самое главное), быстрый цикл разработки является важнейшим достоинством, которое <<перевешивает>> некоторые недостатки. Во-вторых, хотя Ruby и не является катастрофически медленным, в тех случаях, когда скорость абсолютно необходима, можно написать часть кода на языке C. Наконец, в-третьих, никто не сказал, что когда-нибудь не будет написан компилятор с языка Ruby.

В Ruby имеется возможность работы с регулярными выражениями. Когда-то они использовались только в некоторых утилитах UNIX-систем (grep, sed, vi). Затем, благодаря языку Perl, значительное число людей признало их мощь при обработке текстов. Ruby дает возможность использовать эту силу с еще большей легкостью.

Помните известную фразу Исаака Ньютона <<Если я видел дальше, чем другие, то только потому, что стоял на плачах гигантов>>? Ruby, безусловно, <<стоит на плечах гигантов>>, среди которых Smalltalk, CLU, Lisp, C, C++, Perl, Kornshell и другие языки. В Ruby собрано все лучшее, что накоплено человечеством в области языков программирования. При этом соблюдены следующие три принципа: не изобретать колесо, не чинить не сломанное, использовать имеющиеся у программистов знания и опыт. В Ruby пригодятся и знания о файлах и потоках из ОС UNIX, и спецификации функции printf из стандартной библиотеки ввода/вывода языка C, и умение работать с регулярными выражениями в Perl.



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

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

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

Для языка Ruby уже написано большое число библиотек. Потоки, сокеты, объекты, сохраняемые между запусками программ, CGI-программы, базы данных, GUI -- все это можно использовать, программируя на Ruby.

Дэйв Томас (Dave Thomas) и Энди Хант (Andy Hunt), соавторы первой книги по Ruby, вышедшей на английском языке, в интервью журналу ``Dr. Dobb's Journal'' (январь 2001) говорят: <<Возьмите чисто объектно-ориентированный язык Smalltalk и избавьтесь от его причудливого синтаксиса. Добавьте комфорт и мощь языка Perl, но без всяких специальных случаев и магических преобразований. Заверните получившееся в ясный синтаксис, основанный частично на языке Eiffel, и добавьте понемногу от Scheme, CLU, Sather и Common Lisp. У вас получится Ruby.>> Фактически это означает, что Ruby -- естественный и практически неизбежный результат эволюции современных языков программирования. Авторы данной статьи согласны с такой точкой зрения.

Хочется подчеркнуть, что Ruby не является панацеей для решения всех проблем программистов. Не следует отказываться от использования языков Java и C++ там, где их применение оправдано. С другой стороны, не разумно недооценивать возможности практического применения Ruby в реальных проектах.

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

Начнем с языка Java:


  • Ruby -- интерпретируемый язык;

  • в Ruby все является объектом (в Java есть типы int и Integer, что создает определенные неудобства);

  • переменные в Ruby не являются статически типизированными и не требуют объявления;

  • модули (modules) в Ruby позволяют с помощью <<миксинов>> (mixins) конструировать подобие интерфейсов (interfaces) языка Java, допуская при этом в них реализацию методов.

Теперь сравним с языком Perl:

  • Ruby значительно легче освоить, на нем легче программировать, а написанные программы проще сопровождать;

  • в Ruby префиксы (@, $, @@) описывают область видимости (scope), а не тип переменной;

  • Ruby позаимствовал из языка Perl регулярные выражения, переменную $_ и многое другое.

Завершим сопоставление Ruby с другими языками рассмотрением одного из ближайших <<конкурентов>> -- языка Python. Это сравнение особенно интересно потому, что именно Python рассматривается сейчас многими, как хороший кандидат на роль первого языка программирования. Итак, сравним Ruby с языком Python:

  • управляющие конструкции и методы в языке Ruby завершаются ключевым словом end, в то время как Python использует так называемый <<двумерный>> синтаксис, когда признаком завершения является изменение количества лидирующих пробелов в очередной строке программы;

  • вместо self в Ruby для обозначения переменных экземпляра используется префикс @;

  • в Ruby, в отличие от языка Python, понятия типа и класса являются синонимами;

  • Python не поддерживает наследования и не позволяет добавлять методы к существующим типам;

  • используемый в Ruby алгоритм сборки мусора позволяет проще писать реализации методов на языке C;

  • расширения для Ruby, написанные на C/C++ позволяют определять новые классы;

  • зачастую Ruby быстрее, чем Python.

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

loop do


read and reply mails

write code

write document/article/book

write code



end

Похожие:

Программисты говорят о Ruby iconRuby-новые грани Автор: Евгений Охотников
Когда некоторое время назад я выбрал Ruby для реализации одной конкретной и не очень сложной задачи, то мне не удалось оценить основные...
Программисты говорят о Ruby iconЧто такое Ruby? Ruby – это открытый, объектно-ориентированный скриптовый язык, изобретенный Юкихиро Мацумото в начале 90-х
БД. В нашей mvc-архитектуре он играет роль модели. Использует orm – object-relational mapping
Программисты говорят о Ruby iconВопросы по языкам Java и Ruby
Целые – byte, short, int, long, Числа с плавающей точкой float, double, Символы char, и Логические или булевы boolean. А так дядя...
Программисты говорят о Ruby iconПрограммисты шутят: скрытый код
А вот программисту редко можно «схалтурить» — либо написанный код верен и программа работает, либо нет. Поэтому, чтобы расслабиться,...
Программисты говорят о Ruby iconСамостоятельная работа №3 (Условная вероятность, независимость, умножение вероятностей)
В группе из 25 человек каждый говорит по-французски или по-английски. Ровно 18 человек говорят по-французски. Ровно 15 говорят по-английски....
Программисты говорят о Ruby iconУмберто Эко Баудолино
Гальяудо парню такая фортуна от богоматери Роборетской не иначе еще мальцом заслышит от кого V или X слов любую молвь запоминает...
Программисты говорят о Ruby iconВа впво вс РФ
Математики и программисты хорошо знают, что такое рекурсия и активно ею пользуются
Программисты говорят о Ruby iconКурсовой проект студента 3 курса 3 группы "Допустить к защите"
...
Программисты говорят о Ruby iconRuby и новички
Быстрый цикл разработки (редактирование запуск редактирование), использование интерпретатора, изначальная объектно-ориентированность,...
Программисты говорят о Ruby iconВопросы, задаваемые в каждой войне
В этот раз нам говорят, что война в Ливии отличается от всех предыдущих. Но ведь то же самое говорили и в прошлый, и в позапрошлый...
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org