- •Затверджений
- •02070743.00569-01 81 01
- •2.1. Вступ
- •02070743.00569-01 81 01
- •2.2.1.1. Статичний html
- •5 02070743.00569-01 81 012.2.1.2 Cgi
- •2.2.1.3. Active Server Pages і asp.Net
- •02070743.00569-01 81 01
- •702070743.00569-01 81 012.2.1.4. Asynchronous Javascript and xml
- •2.3. Мови реалізації мережевих технології
- •9 02070743.00569-01 81 012.3.3. C# і vb.Net
- •02070743.00569-01 81 01
- •2.4. Безкоштовні технології
- •02070743.00569-01 81 01
- •02070743.00569-01 81 01
- •2.5. Мова програмування Ruby
- •02070743.00569-01 81 01
- •02070743.00569-01 81 01
- •2.6. Конкретизація задачі
- •2.6.1. Ruby для Web-застосувань
- •02070743.00569-01 81 01
- •2.6.1.2. Ruby on Rails
- •2.6.1.3. Принципи і техніка
- •02070743.00569-01 81 01
- •02070743.00569-01 81 01
- •02070743.00569-01 81 01
- •2.6.1.5. Додаткові інструменти і бібліотеки
- •02070743.00569-01 81 01
- •2.7. Ruby і Web-сервер
- •02070743.00569-01 81 01
- •2.7.1. Модуль mod_ruby
- •02070743.00569-01 81 01
- •2.2.2. Сервер weBrick
- •02070743.00569-01 81 01
- •2.7.3. Сервер Mongrel
- •02070743.00569-01 81 01
- •26 02070743.00569-01 81 012.8. Особливості розробки алгоритмів для Ruby
- •02070743.00569-01 81 01
- •02070743.00569-01 81 01
- •02070743.00569-01 81 01
- •02070743.00569-01 81 01
- •02070743.00569-01 81 01
- •02070743.00569-01 81 01
1102070743.00569-01 81 01
Рис. 2.1. Загальна схема побудови Web-застосування
Будучи безкоштовним і практично першим простим і новаторським в своєму напрямі, він по праву набув швидкого поширення серед Web- програмістів. PHP надає розробникам велику кількість найрізноманітніших функцій, які потрапили до мови із розширень, що створюються різними групами програмістів. В результаті синтаксис мови не погоджений. Багато задач, наприклад розбиття рядка на масив або підрядки, вирішуються неймовірною кількістю всіляких наборів функцій. Все це пов'язано з сильним впливом Perl, в якому неортогональність є частиною концепції. Проте PHP замислювалася як промислова і ортогональна мова, і альтернативні набори функцій для вирішення одних і тих же завдань сильно заважають створювати код в єдиному стилі. На жаль, проблема швидше за все не буде вирішена з міркувань зворотної сумісності. До інших складнощів слід віднести:
Відсутність зворотної сумісності між версіями мови.
Відсутність підтримки Unicode в ядрі мови.
Відсутність багатопоточності.
1202070743.00569-01 81 01
Мовою програмування,
позбавленою цих недоліків є відносно
нова мова Ruby [6-9].
2.5. Мова програмування Ruby
Ruby – це скриптова мова програмування, що інтерпретується, для швидкого і простого об'єктно-орієнтованого програмування. Вона включає різні засоби для обробки текстових файлів і вирішення завдань адміністрування. Мова Ruby розширювана, портовна, вільно-поширювана.
Характеристики Ruby [8] і переваги в порівнянні з іншими подібними мовами програмування (зокрема PHP):
Простий синтаксис, частково запозичений з таких мов, як Ada і Eiffel.
Підтримка виключень.
Перевизначення операторів.
Чиста, повністю об'єктно-орієнтована мова. Всі дані є об'єктами, без виключень.
Можливість додавати методи до об'єкту або до класу під час виконання так, що при необхідності, два екземпляри одного класу можуть відрізнятися один від одного.
Підтримується лише єдине спадкування. Але існує поняття модуля, як колекції методів, які можна імпортувати в клас. Існує думка, що такий спосіб – красивіший, ніж множинне спадкування, яке складніше і рідше використовується.
Анонімні функції і замикання (closures).
Можливо структурувати код в блоки { ... } або do ... end, які можна передавати методам як аргумент.
Збирання сміття.
Можливість написання розширень на C, з використанням спеціального API, в якому підтримується збірка сміття. Є підтримка генератора C-розширений для скриптових мов SWIG.
13
02070743.00569-01 81 01
Підтримується два типи цілих чисел: малі Fixnum і великі Bignum. При цьому програмістові не потрібно турбуватися про те, якого типа використовувати, перетворення відбувається автоматично.Не потрібне оголошення змінних. Зона видимості змінної описується в її імені за допомогою наступної угоди: var – локальна змінна @var – змінна екземпляра класу $var – глобальна змінна.
Незалежна від платформи підтримка багатопоточності.
Зупинимось детальніше на деяких використаних вище поняттях.
Скриптовими зазвичай називають мови, що володіють більшістю з наступних характеристик: мова спроектована для вживання в конкретної наочної області або може бути легко модифікований для цього, володіє спрощеним синтаксисом, не компільований, інтерпретатор може працювати в режимі діалогу, простота програмування в збиток продуктивності, динамічна типізація [9].
Анонімна функція – це функція, яка може не мати імені. Звичайно це проста функція, використовувана в програмі єдиний раз. Анонімну функцію можна створювати безпосередньо на етапі виконання програми і передавати як аргумент [9].
Часто анонімні функції застосовують як callback-процедур.
Замикання (closure) – це функція, яка звертається до вільних змінних у власному контексті. Замикання – це об'єднання коду функції і її власної зони видимості змінних на момент створення[9].
Замикання можуть застосовуватися, наприклад, розробниками програмних бібліотек, аби дозволити користувачеві бібліотеки розширювати її, передаючи замикання як аргументи певних функцій. За допомогою замикань можна визначати структури типа галужень і циклів, що управляють. Декілька функцій можна замкнути на одну зону видимості, так що вони зможуть обмінюватися між собою значеннями.