Ruby on rails как начать

Ruby on rails как начать

Содержание:

Язык программирования Ruby

Введение

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

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

В стране восходящего солнца Ruby стал пользующимся популярностью с момента возникновения 1 ой общедоступной версии в одна тысяча девятьсот девяносто пять году, тем не менее наличие документации лишь на японском языке сдерживало его предстоящее распространение. только в одна тысяча девятьсот девяносто семь году возникло описание Ruby на британском языке, а в тысяча девятьсот девяносто восьмом году раскрылся форум ruby-talk. отныне Ruby начал своё шествие по всему миру. За крайний год возникли 3 англоязычные книжки, посвященные ему же (см.. [два-пять]), хотя на российский язык, к огорчению, ни 1 на из их ещё не переведена. на данный момент Ruby входит в большая часть дистрибутивов ОС Linux, доступен он и юзерам иных операционных систем.

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

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

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

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

* <<ежели для исследования языка Perl для вас необходимо издержать, скажем, 3 недельки, то Python Вы изучите за недельку, а Ruby -- за 1 день!>>

* <>.

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

* имеет обычный синтаксис;

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

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

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

* дозволяет функционировать с целыми числами случайной величины;

* не просит объявления переменчивых;

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

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

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

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

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

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

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

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

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

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

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

Дэйв Томас (Dave Thomas) и Энди Хант (Andy Hunt), соавторы 1 ой книжки по Ruby, вышедшей на британском языке, в интервью журнальчику “Dr. Dobb’s Journal” (январь две тысячи один) молвят: <<Возьмите сугубо объектно-направленный язык 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 с иными языками рассмотрением 1-го из ближайших <<конкурентов>> — языка Python. Это сопоставление в особенности любопытно так как конкретно Python рассматривается на данный момент многочисленными, как неплохой кандидат на роль 1-го языка программирования. Итак, сопоставим Ruby с языком Python:

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

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

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

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

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

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

* часто Ruby резвее, чем Python.

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

Программисты пишут на Ruby

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

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

Ruby-стиль, тем не менее, советует задействовать итератор each:

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

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

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

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

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

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

приведём 2 обычных примера эксплуатации обычной библиотеки классов. В итоге исполнения 1 ой программки будет обнаружено, что семь/восемь+один/восемь=один, а семь/восемь*один/восемь=семь/шестьдесят четыре; 2-ая из их вычислит (один + i)шестьдесят четыре.

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

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

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

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

Ruby и новички

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

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

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

Язык C++ фактически никто и ни разу не советовал в качестве 1-го языка — очень он сложноват. Java, напротив, употребляется как 1-ый язык, довольно нередко. Python на данный момент рассматривается многочисленными как хороший кандидат на данную роль.

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

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

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

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

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

семнадцать!=-288522240.

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

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

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

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

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

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

по дефлоту строчка, заключенная в оборотные апострофы, сменяется результатом исполнения команды, в ней данной. Можно, тем не менее, и переопределить это поведение:

CGI-скрипты, формы, работа с <<ключиками>> (cookies) — это лишь начало. программки на Ruby могут быть внедрены прямиком в HTML, что эквивалентно применению таковых денег, как ASP, JSP либо PHP. при всем этом сохраняется вся мощь Ruby, а для увеличения производительности можно задействовать особый модуль для Apache.

Ниже приведена программка, иллюстрирующая Tk расширение языка Ruby. Левая кнопочка грызуны дозволяет отрисовывать прямые полосы, а правая — производить Postscript-файл с построенным изображением.

Отметим, в конце концов, что конфигурация и монтаж дистрибутива Ruby исполняется при помощи скриптов, напечатанных на нём самом.

Заключение

Выпускники МГИУ специальности две тысячи двести четыре данного и предшествующего годов (многие из коих являются на данный момент аспирантами) могут найти, что язык Ruby почти во всем похож на узнаваемый им по занятиям на первом курсе язык C-Talk. сей язык, коий разрабатывался в нашем институте категорией программистов под управлением Игоря Вячеславовича Абрамова (см.. [девять-одиннадцать]), был основан в значимой мере на тех же самых идеях, коие заимствованы в качестве основополагающих создателем Ruby.

осенней порою одна тысяча девятьсот девяносто семь года студенты-программеры в нашем институте начали учить язык Java. МГИУ был тогда одиним единственным университетом в городе Москва, в каком первым языком программирования стал сей сейчас признанный язык.

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

Сексшоп: порнофильмы и интимные товары.

Закрыть меню
×

Корзина