Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пример диплома специалиста / 002 Пояснювальна записка.docx
Скачиваний:
15
Добавлен:
28.03.2016
Размер:
323.39 Кб
Скачать

11

02070743.00569-01 81 01

Рис. 2.1. Загальна схема побудови Web-застосування

Будучи безкоштовним і практично першим простим і новаторським в своєму напрямі, він по праву набув швидкого поширення серед Web- програмістів. PHP надає розробникам велику кількість найрізноманітніших функцій, які потрапили до мови із розширень, що створюються різними групами програмістів. В результаті синтаксис мови не погоджений. Багато задач, наприклад розбиття рядка на масив або підрядки, вирішуються неймовірною кількістю всіляких наборів функцій. Все це пов'язано з сильним впливом Perl, в якому неортогональність є частиною концепції. Проте PHP замислювалася як промислова і ортогональна мова, і альтернативні набори функцій для вирішення одних і тих же завдань сильно заважають створювати код в єдиному стилі. На жаль, проблема швидше за все не буде вирішена з міркувань зворотної сумісності. До інших складнощів слід віднести:

  • Відсутність зворотної сумісності між версіями мови.

  • Відсутність підтримки Unicode в ядрі мови.

  • Відсутність багатопоточності.

12

02070743.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].

Замикання можуть застосовуватися, наприклад, розробниками програмних бібліотек, аби дозволити користувачеві бібліотеки розширювати її, передаючи замикання як аргументи певних функцій. За допомогою замикань можна визначати структури типа галужень і циклів, що управляють. Декілька функцій можна замкнути на одну зону видимості, так що вони зможуть обмінюватися між собою значеннями.