Ruby для чего используется. Язык программирования RUBY

Язык программирования Ruby - чисто объектно-ориентированный язык программирования, первоначально разработанный для сценариев. Она сочетает в себе синтаксис, впитавший Ада и Perl и Smalltalk объектно-ориентированные особенности, а также имеет общие черты с Python , Lisp и утилитой командной строки - это плюс при обучении основам программирования.
Язык программирования Руби в настоящее время имеет только одну реализацию Ruby интерпретатора, хотя предпринимаются усилия по реализации интерфейса Ruby (так называемый "Кардинал") для виртуальной машины Parrot .
Язык программирования Ruby имеет много полезных функций. Ruby поддерживает также оператор перегрузки и обработки исключений. В настоящее время, языку программирования Руби не хватает Unicode поддержки. Ruby имеет итераторы (которые напоминают CLU и Sather). Ruby поддерживает абстрактные представления функций (также как и в Smalltalk и многих функциональных языках программирования для начинающих). Руби имеет встроенную, синтаксическую поддержку регулярных выражений Perl на уровне языка (а не только в библиотеках, как в Python и многих других языках). Руби поддерживает автоматический сбор мусора и динамическую библиотеку загрузки / подключения модулей (в зависимости от архитектуры) на Microsoft Windows . Ruby был портирован на многие платформы, включая Unix , Microsoft Windows, DOS , Mac OS X , OS/2, Amiga , и многое другое.
Ruby является чисто объектно-ориентированным: каждый бит данных объектов, включая типы, которые определены как "примитивные" в остальных языках. Каждая функция является методом. Это похоже на Smalltalk, но в корне отличается от Java и Python. Каждое имя значения (имя переменной) в программе Ruby определяет ссылку на объект, а не сам объект. Ruby поддерживает наследства с динамической диспетчеризацией, Mixins , и Синглтон методами. Ruby не поддерживает множественное наследование, но классы могут импортировать модули. Хотя в Ruby можно пользоваться процедурным синтаксисом, но все в Руби является объектами в смысле Smalltalk, а не Perl или Python программирование для чайников.
Язык был создан Юкихиро Мацумото (ака "Мац") Yukihiro Matsumoto (a.k.a. "Matz") 24 февраля, 1993 . Текущая стабильная версия 1.8.0. Обратите внимание, что имя не акроним - это на самом деле игра слов как у Perl . По словам автора, Ruby предназначен принципу наименьшего удивления (POLS), это означает, что язык должен быть свободным от ловушек и несоответствия, которые мешают других языках.
Из Ruby FAQ: Если вам нравится Perl, тогда вы используя Ruby, будете чувствовать себя превосходно из-за его синтаксиса. Если вам нравится Smalltalk, вам понравится Ruby и понравится его семантика. Если вам нравится Python, то вы сможете, а может и нет почувствовать огромную разницу в философии дизайна между Python и Ruby / Perl.
Руби распространяется бесплатно и с открытым исходным кодом по лицензии GPL или Artistic License , как и Perl.

Примеры
Вот некоторые примеры кода Ruby:

>> -199.abs # номер -199 является объектом; для него вызывается метод ABS. => 199 >> "Ruby is cool".length # вызывается метод объекта String – длина строки => 13 >> "Rick".index("c") => 2 >> "John".swapcase => "jOHN" >> #Arrays ?> .sort => >> .sort.reverse => # следующий блок кода выполнится 10 раз 10.times { # Replace " " with ", " and store in string1 string1 = "Hello world".gsub(" ", ",") # append "!" to variable "string1" string1 += "!" # print variable "string1", followed by a newline puts string1 }

Как стать профессионалом по разработке сайтов и начать зарабатывать? Недорогие видео курсы с ознакомительным введением.

Ruby — один из самых молодых языков программирования. Его создатель Юкихиро Мацумото (Yukihiro Matsumoto, также известный под псевдонимом Matz), профессиональный японский программист, рассказывает: <<Я начал разработку Ruby 24 февраля 1993 года. Первая hello world программа на Ruby заработала летом того же года, а aльфа-версия была готова к декабрю 1994.>> Название языка происходит от имени драгоценного камня рубина (по аналогии с другим широко распространенным языком программирования Perl: pearl — жемчуг).

Вот как характеризует Ruby его автор: <<Это мощный и динамический объектно-ориентированный язык с открытыми исходниками. Ruby работает на многих платформах, включая Linux и другие реализации Unix, MS-DOS, Windows 9x/2000/NT, BeOS и MacOS. Главная цель Ruby — эффективность разработки программ, и пользователи найдут, что программирование на нем эффективно и даже забавно>> .

В Японии Ruby стал популярным с момента появления первой общедоступной версии в 1995 году, однако наличие документации только на японском языке сдерживало его дальнейшее распространение. Лишь в 1997 году появилось описание Ruby на английском языке, а в 1998 году открылся форум ruby-talk. С этого момента Ruby начал свое шествие по всему миру. За последний год появились три англоязычные книги, посвященные ему (см. ), хотя на русский язык, к сожалению, ни одна из них еще не переведена. Сейчас Ruby входит в большинство дистрибутивов ОС Linux, доступен он и пользователям других операционных систем.

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

Программисты говорят о 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

Начнем с примеров, показывающих, что знание библиотек ввода/вывода языков C и C++ пригодится и в Ruby.

printf "Число: %5.2f; Строка: %s", 1.23, "Привет!" endl = "n"; $stdout << 17 << " красных шариков" << endl line = gets; print line

Специальная глобальная переменная $_ всегда содержит результат последней операции чтения. Она же используется как аргумент по умолчанию во многих конструкциях. Следующая программа, например, печатает все строки из входного потока, которые содержат слово Ruby.

while gets # присваивание очередной строки переменной $_ if /Ruby/ # сопоставление ее с образцом Ruby print # печать $_ end end

ARGF.each { |line| print line if line =~ /Ruby/ }

ARGF в Ruby — это объект, который представляет собой конкатенацию содержимого всех файлов, имена которых заданы в командной строке, либо просто стандартный поток ввода (в случае отсутствия аргументов).

Вот как выглядит на Ruby программа вычисления факториала числа, указываемого в качестве аргумента командной строки:

def fact(n) return 1 if n == 0 f = 1 while n>0 f *= n n -= 1 end return f end print fact(ARGV.to_i), "n"

Для вычисления с помощью этой программы, размещенной в файле fact.rb, значения 100! достаточно выполнить команду ruby fact.rb 100.

Три программы, рекурсивно вычисляющие 30-е число Фибоначчи, приведенные ниже, позволяют сравнить производительность интерпретаторов Ruby, Python и Perl.

# Ruby def fib(n) if n<2 n else fib(n-2)+fib(n-1) end end print fib(30), "n" # Python def fib(n): if n<2: return n else: return fib(n-2)+fib(n-1) print fib(30) # Perl sub fib { my($n)=@_; if ($n<2) { return $n; } else { return fib($n-2)+fib($n-1); } } print fib(30), "n";

Еще одна классическая задача — определение с помощью решета Эратосфена списка всех простых чисел, не превосходящих заданного (100 по умолчанию).

max = Integer(ARGV.shift || 100) sieve = for i in 2 .. max sieve[i] = i end for i in 2 .. Math.sqrt(max) next unless sieve[i] (i*i).step(max, i) do |j| sieve[j] = nil end end puts sieve.compact.join ", "

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

freq = Hash.new(0) while gets() for word in $_.split(/W+/) freq += 1 end end for word in freq.keys.sort! print word, " -- ", freq, "n" end

Приведем два простых примера использования стандартной библиотеки классов. В результате выполнения первой программы будет найдено, что 7/8+1/8=1, а 7/8*1/8=7/64; вторая из них вычислит (1 + i)64.

require "rational" a = Rational(7,8) b = Rational(1,8) print a, "+", b, "=", a+b, "; ", a, "*", b, "=", a*b, "n" require "complex" a = Complex(1,1); print a**64

Без подробных объяснений приведем две эквивалентные программы, иллюстрирующие переопределение оператора для класса SongList. Ассоциативный массив (associative array, hash или dictionary) допускает индексирование произвольными объектами, а не только целыми числами. В данном случае оператор позволяет находить нужную песню не только по номеру, но и по ее названию.

class SongList def (key) if key.kind_of?(Integer) return @songs else for i in [email protected] return @songs[i] if key == @songs[i].name end end return nil end end class SongList def (key) return @songs if key.kind_of?(Integer) return @songs.find { |aSong| aSong.name == key } end end

Так как Ruby унаследовал лучшие особенности многих языков, то для выполнения достаточно стандартных действий обычно имеется несколько разных возможностей. Вот 13 (!) различных способов напечатать числа от 0 до 9:

i = 0 i = 0 while i < 10 begin print i , " " print i , " " i += 1 i += 1 end end while i < 10 i = 0 i = 0 until i >= 10 begin print i , " " print i, " " i += 1 i += 1 end end until i >= 10 for i in for i in (0..9) print i, " " print i, " " end end for i in (0...10) 10.times do |i| print i, " " print i, " " end end 0.upto(9) do |i| 9.downto(0) do |i| print i, " " print i, " " end end (0..9).each do |i| (0...10).each do |i| print i, " " print i, " " end end i = 0 loop do if i < 10 then print i, " " else break end i += 1 end

В заключение вопрос для тех, кто не знает языка Ruby: что напечатает следующая программа?

print ["L", "R", "H", "T"].collect { |x| x.succ }

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

Ruby и новички

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

Не менее важны мультиплатформенность Ruby и его принадлежность к миру свободно распространяемого ПО. Еще один весомый аргумент в его пользу — возможность практического использования языка в самых разных областях, что не позволит впоследствии профессионалу, который вырастет из новичка, пожалеть о напрасно потраченном времени.

Можно заметить, что значительному числу перечисленных выше требований удовлетворяют и Python, и Java, и C++ и даже (в меньшей степени) Delphi. Последний из них, правда, является коммерческим продуктом, что автоматически должно было бы повлечь исключение его из рассмотрения. Однако в России даже среди организаторов олимпиад по программированию для школьников находятся люди, утверждающие, что стоимость дистрибутива Delphi составляет около 70 рублей!

Попробуем сначала сравнить языки Ruby и Java, посмотрев на них глазами человека, только начинающего знакомиться с миром программирования. Для такого человека чрезвычайно важна ясность и краткость программ, отсутствие в них странных и непонятных <<магических>> слов. А именно из них и состоит в основном Java-вариант традиционной первой программы!

public class Hello { public static void main(String args) { System.out.println("Здравствуй, мир!"); } }

Аналогичную программу на Ruby долго объяснять не придется:

puts "Здравствуй, мир!"

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

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

Неприятная неожиданность для человека, только приступающего к изучению программирования!

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

Компактность дистрибутива Ruby и простота его установки в любой операционной системе позволяют школьнику или студенту без проблем работать на домашнем компьютере. Опять сравнение не в пользу Java!

Язык Python по многим параметрам похож на Ruby. Из приведенных выше различий этих двух языков для рассматриваемой нами ситуации начального обучения программированию особенно значимым оказывается <<двумерный>> синтаксис, используемый в языке Python. Эта особенность не является изначально понятной и на первых порах мешает. Вообще, основным аргументом в пользу Ruby в качестве первого языка программирования является именно его интуитивная ясность и предсказуемость, а не многие другие его преимущества.

Ruby и профессионалы

Чем же хорош Ruby для профессионального программиста и системного администратора? Многое уже было сказано выше, но вот еще несколько интересных примеров и кратких комментариев.

Ruby - один из самых молодых языков программирования. Своим именем он обязан драгоценному камню рубину (по аналогии с другим широко распространенным языком программирования Perl - жемчуг). Вот как описывает Ruby его создатель, японский программист Юкихиро Мацумото (Yukihiro Matsumoto): "Это мощный и динамический объектно-ориентированный язык с открытыми исходниками, который я начал разрабатывать в 1993 году. Ruby работает на многих платформах, включая Linux и многие реализации Unix, MS-DOS, Windows 9x/2000/NT, BeOS и MacOS. Главная цель Ruby - эффективность разработки программ, и пользователи найдут, что программирование на нем эффективно и даже забавно".

В Японии Ruby сильно потеснил такие известные языки как Python и Perl (а книга "Ruby the Object-Oriented Scripting Language" стала бестселлером) и начал распространяться по всему миру. За последний год появились три англоязычных книги, посвященные Ruby (к сожалению, пока не имеющие русского перевода). У этого языка очень неплохие шансы стать действительно популярным - ведь он вобрал в себя достоинства других языков, учтя их недостатки.

Ruby входит в стандартную поставку ОС Linux (начиная с версии 7.2), а пользователям MS Windows для первого знакомства стоит порекомендовать его несколько устаревшую версию, которая включает, помимо интерпретатора языка и библиотек, руководство пользователя, FAQ (ответы на часто задаваемые вопросы) и множество примеров. Ruby является свободно распространяемым продуктом, поэтому вы можете не беспокоиться ни о его стоимости, ни об ограничениях в его использовании.

Этот язык несомненно является одним из лучших в качестве первого языка программирования, изучаемого студентами и школьниками. Быстрый цикл разработки (редактирование - запуск - редактирование), использование интерпретатора, изначальная объектно-ориентированность языка, нетипизированные переменные, которые не требуют объявления - все это позволяет учащимся сконцентрировать свое внимание на общих принципах программирования. В дальнейшем изложении мы будем ориентироваться на работу в ОС Linux. Использование Ruby в других операционных системах практически ничем не отличается, а результаты выполнения не зависят от используемой ОС.

Сначала проверим, установлен ли интерпретатор Ruby в системе или нет. В окне shell введите команду ruby -v (этот ключ требует вывода версии языка). Если следующее сообщение появится, то Ruby установлен (версия, дата и платформа могут отличаться):

ruby 1.6.4 (2001-06-04)

puts "Hello, World!"

Для выполнения этой программы в командной строке введите

В результате выполнения программы в командном окне будет напечатана требуемая фраза.

Второй способ выполнения программ доступен пользователям не всех операционных систем, в которых функционирует Ruby. Пользователям ОС Linux следует поместить в начало файла с текстом программы следующую строку:

#!/usr/bin/env ruby

Она обязательно должна начинаться с первой позиции. Затем нужно изменить права доступа файла с программой, сделав его исполняемым: chmod +x hello.rb Теперь для запуска программы достаточно ввести команду

Для того чтобы сделать программу более понятной человеку, который ее читает, вставляются комментарии. Однострочные комментарии начинаются с символа # и продолжаются до конца строки. Многострочные комментарии заключают в специальные "скобки" - все, что располагается между строками =begin и =end, считается комментарием. Например,

#!/usr/bin/env ruby =begin Это комментарий =end puts "Hello, World!" # Это тоже комментарий

Программа на языке Ruby, часто называемая скриптом, есть последовательность инструкций (утверждений, предложений). Каждая инструкция по умолчанию заканчивается концом строки. Если же по каким-либо причинам требуется разместить несколько инструкций на одной строке, то их нужно разделять символом; (точка с запятой). С другой стороны, иногда инструкция не помещается на одной строке. В этом случае символ \ сигнализирует о том, что ее продолжение располагается в следующей строке.

Пример

#!/usr/bin/env ruby # Инструкция заканчивается концом строки puts "Hello, World!" # Несколько инструкций в одной строке puts "Это тест, "; puts "демонстрирующий работу Ruby." # Незаконченная инструкция, # продолжение которой на следующей строке puts "Программирование на Ruby - " + "приятное занятие." # Утверждение, разделенное на несколько строк puts \ "И мы обязательно этому научимся!"

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

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

В сегодняшней статье мы рассмотрим три наиболее популярных языка, применяемых в веб-разработке: PHP , Ruby и Python . Мы узнаем, как они выглядят, чем отличаются друг от друга, насколько и среди какой аудитории они популярны.

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

PHP: самый популярный язык для Интернета

PHP (Hypertext PreProcessor , препроцессор гипертекста) – язык программирования, исполняемый на стороне веб-сервера, спроектированный Расмусом Лердорфом (Rasmus Lerdorf ) в качестве инструмента создания динамических и интерактивных веб-сайтов.

Этот язык оказался достаточно гибким и мощным, поэтому приобрёл большую популярность и используется в проектах любого масштаба: от простого блога до крупнейших веб-приложений в Интернете:

Преимущества PHP:

  • является свободным программным обеспечением, распространяемым под особой лицензией (PHP license);
  • легок в освоении на всех этапах;
  • поддерживается большим сообществом пользователей и разработчиков;
  • имеет развитую поддержку баз данных;
  • имеется огромное количество библиотек и расширений языка;
  • может использоваться в изолированной среде;
  • предлагает нативные средства организации веб-сессий, программный интерфейс расширений;
  • является довольно полной заменой проприетарной среды ASP (Active Server Pages ) от Microsoft ;
  • может быть развёрнут почти на любом сервере;
  • портирован под большое количество аппаратных платформ и операционных систем.

Недостатки PHP:

Популярность:

Согласно Википедии , на 1 января 2013 года PHP был установлен на более чем 240 миллионах веб-сайтов (39% от всего объёма исследованных) или на 2,1 миллионах веб-серверов.

Использование

Скрипты, написанные на языке PHP , обычно хранятся в файлах с расширением .php , которые содержат в себе смесь обычных HTML -тэгов со специальной разметкой: открывающим тэгом :

Ruby: интерпретируемый, чистый ООП-язык

Ruby – динамический императивный объектно-ориентированный язык программирования, разработанный Юкихиро Матсумото . Ruby был создан под влиянием таких языков, как Perl , Eiffel и Smalltalk .

Он характеризуется динамической типизацией и автоматическим управлением памятью. Язык Ruby используется в веб-разработке в составе открытого веб-фреймворка Rails , чаще называемого Ruby on Rails (RoR ):

Преимущества Ruby:

  • открытая разработка;
  • работает на многих платформах;
  • может внедряться в HTML -разметку;
  • относится к языкам программирования сверхвысокого уровня (VHLL ), то есть обладает высоким уровнем абстракции и предметным подходом в реализации алгоритмов;
  • реализует концептуально чистую объектно-ориентированную парадигму;
  • предоставляет продвинутые методы манипуляции строками и текстом;
  • легко интегрирует в свои программы высокопроизводительные серверы баз данных (DB2, MySQL, Oracle и Sybase );
  • благодаря VHLL программы на Ruby хорошо масштабируются и легко сопровождаются;
  • простой и чистый синтаксис значительно облегчает программистам первые шаги в обучении этому языку;
  • имеется простой программный интерфейс для создания многопоточных приложений;
  • имеет продвинутые средства для работы с массивами;
  • возможности языка можно расширить при помощи библиотек, написанных на C или Ruby ;
  • зарезервированные слова могут являться идентификаторами, если это не создаёт неоднозначности для парсера;
  • дополнительные возможности для обеспечения безопасности;
  • встроенный отладчик.

Недостатки Ruby:

  • обучение языку выше начального уровня может оказаться непростым;
  • информационных ресурсов, посвящённых Ruby , явно недостаточно;
  • Ruby менее производителен по сравнению со многими другими языками, применяемыми в веб-разработке;
  • Ruby относительно медленно разрабатывается и развивается.

Проекты, использующие Ruby:

  • Google SketchUp ;
  • 37signals ;
  • GitHub ;
  • Shopify ;
  • Indiegogo ;
  • Basecamp .

Популярность

Согласно официальному сайту Ruby , этот язык входит в десятку наиболее популярных языков программирования. Рост популярности самого языка обусловлен популярностью программных продуктов, написанных на Ruby , в особенности RoR .

Использование

Файлы программ, написанных на Ruby , имеют расширение .rb . Эти файлы можно запустить как скрипты командной оболочки при помощи интерпретатора. Например, учитывая, что интерпретатор Ruby находится в /usr/bin :

Python: язык программирования общего назначения

Python широко применяется как интерпретируемый язык для скриптов различного назначения (хотя существуют и трансляторы языка Python ).

Как и Ruby , Python имеет целью приблизить синтаксис реальной программы, написанной на нём, к описывающему задачу псевдокоду, что позволяет программисту уменьшить объём программы. Идея создания данного языка возникла в конце 1980-х и была реализована Гвидо ван Россумом .

Элегантный дизайн и эффективный, дисциплинирующий синтаксис этого языка облегчают программистам совместную работу над кодом. Python – мультипарадигмальный язык программирования: он позволяет совмещать процедурный подход к написанию кода с объектно-ориентированным и функциональным:

Преимущества Python:

  • открытая разработка;
  • довольно прост в изучении, особенно на начальном этапе;
  • особенности синтаксиса стимулируют программиста писать хорошо читаемый код;
  • предоставляет средства быстрого прототипирования и динамической семантики;
  • имеет большое сообщество, позитивно настроенное по отношению к новичкам;
  • множество полезных библиотек и расширений языка можно легко использовать в своих проектах благодаря предельно унифицированному механизму импорта и программным интерфейсам;
  • механизмы модульности хорошо продуманы и могут быть легко использованы;
  • абсолютно всё в Python является объектами в смысле ООП , но при этом объектный подход не навязывается программисту.

Недостатки Python:

  • не слишком удачная поддержка многопоточности;
  • на Python создано не так уж много качественных программных проектов по сравнению с другими универсальными языками программирования, например, с Java ;
  • отсутствие коммерческой поддержки средств разработки (хотя эта ситуация со временем меняется);
  • изначальная ограниченность средств для работы с базами данных;
  • бенчмарки показывают меньшую производительность Python по сравнению с основными Java VM , что создаёт этому языку репутацию медленного.

Проекты с использованием Python:

  • Yahoo Maps ;
  • Zope Corporation ;
  • Linux Weekly News ;
  • Shopzilla ;
  • Ultraseek .

Популярность

Согласно Wikipedia , Python прочно вошёл в 8 наиболее популярных языков программирования по версии TIOBE Programming Community Index . А если не считать отдельно языки с C-подобным синтаксисом (C++, C#, ObjectiveC, Java и т. д.), то Python является третьим по популярности языком.

Использование

Интерпретатор python можно использовать как для запуска скриптов, так и в режиме интерактивной оболочки.

Наберите в командной строке:

$ python чтобы получить приглашение интерпретатора: Python 2.4.3 (#1, Nov 11 2010, 13:34:43) on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> Теперь можно набрать строку на языке Python и нажать Enter, чтобы выполнить её: >>> print "Put some text here" Put some text here

Потребность в специалистах

Основываясь на анализе Jobs Tractor , учитывающем более 45000 вакансий разработчиков, опубликованных в Twitter за последний год, потребность в программистах такова:

  • PHP – требуется 8238 человек;
  • Ruby – 2937 человек;
  • Python – 1587 человек.

Разумеется, статистика – не единственный фактор, который стоит принимать во внимание при изучении языка программирования.

Какой же язык программирования стоит изучать?

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

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

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

Развитые фреймворки, включающие в себя функции для работы с пользовательскими данными (статьями, темами, постами, фотографиями и т. д.) называются фреймворками управления контентом (Content Management Framework – CMF ).

Если добавить к этому элементы интерфейса для конечного пользователя сайта, получается так называемая система управления контентом или CMS (Content Management System ). CMS позволяет получить сайт с прототипом интерфейса и минимальной функциональностью сразу после установки или после определённой настройки, то есть вообще без программирования.

При этом большинство CMS предоставляют программисту как программный интерфейс CMF , так и интерфейс для расширения своей функциональности.

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

Краткое описание

Язык Ruby, который отличается открытым исходным кодом, был создан в начале 90-х годов японским разработчиком, в открытый доступ он попал в 1995 году. За пределы Японии Ruby вышел не сразу, ведь в первые годы его существования ни один документ не был переведен на европейские языки. Лишь в конце 90-х годов появилась тех. документация на английском, а рассматриваемым языком программирования заинтересовались многие разработчики.

Заметим, что до сих пор существует очень мало технической литературы, переведенной на русский, поэтому разработчик обязательно должен знать английский или японский язык. Сегодня этот язык программирования входит в Топ-5 самых популярных, уступая лидирующие позиции Java, JavaScript и PHP.

Ruby человеку без профильного образования будет сложно освоить. Работать с ним смогут лишь те программисты, которые в течение нескольких лет использовали C#, C++ или Java. Ruby отличается простым синтаксисом, многопоточным программированием, поддержкой обработки исключений, в нем данные — это объекты.

Особенности профессии

Работа программистов Ruby не отличается от труда разработчиков, использующих язык JavaScript или PHP. В их задачи входит создание программного обеспечения, его отладка и дальнейшее сопровождение. Обязанности программиста определяет компания, в которой он работает:

  • совершенствование и доработка функционала интернет-магазинов, приложений и т. д.;
  • техническая поддержка плагинов в различных системах;
  • создание приложений для Android, веб-приложений, игр, платформ и других продуктов;
  • проектирование архитектуры баз данных;
  • тестирование и отладка созданного ПО;
  • взаимодействие с дизайнерами, разработчиками и другими членами команды;
  • управление проектом.

Плюсы и минусы профессии

Плюсы

  1. Простой и понятный динамический язык программирования.
  2. Небольшое количество опытных Ruby-разработчиков, что повышает ценность профессии в глазах работодателя.
  3. При наличии профессиональных знаний освоить Ruby можно достаточно быстро.
  4. Стабильная и высокая заработная плата, получение бонусов при условии успешной работы.
  5. Трудиться можно в офисе или удаленно, самостоятельно планируя рабочий день.
  6. Постоянный карьерный рост.
  7. Разработчики добиваются успеха очень быстро, ведь можно стать Ruby Senior в возрасте 25-30 лет.
  8. Начинать работать можно еще во время обучения, что принесет и прибыль, и опыт.
  9. Большое количество онлайн-курсов и свободных программистов, готовых обучать студентов.

Минусы

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

    1. Спокойствие, ведь часто приходится выполнять работу в авральном режиме.
    2. Полная самоотдача и терпеливость, что особенно касается отсутствия графика рабочего дня, внесения бесконечных изменений, исправления ошибок.
    3. Коммуникабельность, ведь необходимо находить общий язык с дизайнерами, заказчиками, сторонними программистами.
    4. Скромность и интеллектуальность.
    5. Честность и техническая грамотность.
    6. Творческий поход.
    7. Добросовестность.
    8. Отсутствие вредных привычек.
    9. Находчивость.

    Обучение на программиста Ruby

    Вузы

    Место работы

    1. IT-компании.
    2. Рекламные агентства.
    3. Частные разработчики ПО.
    4. Банковская система.
    5. Другие организации, которым для работы необходим программист.

    Карьера

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

    • Junior (до 18 месяцев опыта);
    • Middle (до 3-4 лет опыта);
    • Senior (более 4 лет опыта).

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

    Зарплата Программиста Ruby

    Зарплата на 03.02.2020

    Россия 30000—120000 ₽

    Москва 50000—230000 ₽

    Профессиональные навыки

    1. Знание Ruby и Ruby on Rails.
    2. Опыт работы с PHP, Java, C++ и т. д.
    3. Желателен опыт работы в сфере программирования не менее 2-3 лет.
    4. Обязательное знание иностранных языков.
    5. Знание MySQL, PostgreSQL, JSP, HTML, UnitTest, Grails, CSS.
    6. Git, Subversion или Mercurial.
    7. Разработка технической документации.

    Полезные материалы

    1. Русскоязычный форум о Ruby: onrails.club.
    2. Сайт с переводами для Ruby: rusrails.ru.
    3. Крис Пайн «Учись программировать».
    4. Майкл Фитцджеральд «Изучаем Ruby».
    5. Giovanni Sakti, Nia Mutiara, Хафис Бари Лубис «Learning Devise for Rails».