характеристиками.
Мова С є мовою програмування загального призначення. Звідси випливає, що її можна застосувати для вирішення самих різних задач. Є тенденція використання С для написання автономних програм, а не для програмування Web-вузлів. Можливо, однією із них є те, що мова програмування С не настільки зручна для обробки текстів і управління пам’яттю, як мови Perl i PHP, які мають тенденцію активно використовуватися для написання Web-програм.
Мова Perl, як і мова С, відмінно підходить для написання автономних програм. Однак у відношенні до мови Perl справедливо і те, що вона сповна підходить для розробки Web-вузлів, наприклад за допомогою модуля CGI.pm. Це робить мову Perl дуже зручним інструментом для створення програм, які зв’язують СУБД MySQL з Internet. Така програма може підключатись до Internet через модуль CGI.pm, взаємодіючи при цьому через інтерфейс DBI з СУБД MySQL.
Мова РНР розроблялась як інструмент розробки Web-програм, тому є середовищем, в якому її використання буде найбільш правильним. В той же час, доступ до бази даних є її самим великим привілеєм. Таким чином, її цілком зрозуміло, необхідно, використовувати в програмах, які здійснюють доступ до бази даних через Internet. Звичайно, можна використовувати РНР і в ролі автономного інтерпретатора.
Беручи до уваги все вище сказане, можна зробити висновок, що мови С і Perl є найбільш вірогідними кандидатами для створення автономної програми. Для написання Web-програм найбільше підходять мови PHP i Perl.
Продуктивність. При рівних умовах необхідно забезпечити високу швидкість роботи програми. Однак реальний вплив фактора продуктивності має тенденцію залежати від частоти використання програми. Слід зауважити, що якщо програма запускається наприклад один раз в місяць, фактор продуктивності не буде дуже критичним. Але коли програма запускається на перевантаженому Web-вузлі декілька раз в секунду, кожна мілісекунда виграшу важлива. В другому випадку продуктивність може зіграти важливу роль у віддачі, отримуваній від вашого Web-вузла і його популярності. Повільний вузол, незалежно від його призначення завжди дратує відвідувачів. І якщо Web-вузол є джерелом вашого прибутку, зменшення продуктивності зразу ж вдарить по вашій кишені. Вузол буде не спроможний одночасно обслуговувати декілька запитів, і відвідувачі просто перестануть заходити на нього.
Оцінка продуктивності є складною задачею. Ліпшим індикатором того, як програма проводить операцію запису при використовуванні деякого інтерфейсу буде створення тестового прикладу, який працює з цим АРІ. Але найліпшим порівняльним тестом буде створення тестових програм для різних АРІ і порівняння їх роботи. Напевно це не дасть повної робочої картини. Але частіше всього необхідно писати свою програму. Після того як вона запрацює, вже можна буде подумати, яким чином її модифікувати, щоб вона запрацювала швидше, менше завантажувала пам’ять. По крайній мірі, існує два фактори, на які можна покластися як на фактори, які мають найбільший вплив на продуктивність.—
Відкомпільовані програми працюють швидше інтерпретованих сценаріїв.—
Швидкість виконання у інтерпретованих мов, які використовуються у Web-контексті, вища, коли інтерпретатор викликається як модуль, який є частиною Web-сервера, а не окремим процесом.
Порівняння компільованих і інтерпретованих мов. З великою ймовірністю можна сказати, що відкомпільовані програми більш ефективні: вони потребують менше пам’яті і виконуються швидше, ніж їх аналоги, створені на мовах написання сценаріїв. Це відбувається через підвищення накладних витрат, які необхідні для роботи інтерпретатора. Мова С є мовою компільованого типу, а Perl i PHP є мовами інтерпретованого типу, тому програми, які написані на С, за звичай працюють швидше сценаріїв, написаних на мовах Perl чи РНР.
Для програм, які будуть активно використовуватись, ліпше всього підійте мова С. хорошим прикладом цього може служити програма-клієнт mysql, яка працює із командним рядком.
Мають місце і фактори, які можуть згладити ці різниці. Написання програм на С дозволяє отримати досить швидкі програми, але існує ймовірність, що написана програма буде не ефективна. Написання програми за допомогою мови компільованого типу само по собі не є повною гарантією більш високої продуктивності. Знову необхідно думати про те, що ви робите. Крім цього, різниця між скомпільованими і інтерпретованими програмами зменшується, коли програма проводить більшу частину часу, виконуючи код з бібліотеки клієнта СУБД MySQL, яка підключена до механізму інтерпретатора.
Порівняння характеристик автономної і модульної версії інтерпретаторів мови. В Web-програмах інтерпретатори мов написання сценаріїв використовуються в двох формах. Це справедливо і для Web-сервера Apache, який використовувався для написання Web-програм.
Web-сервер має відповідні настройки для виклику інтерпретатора як окремого процесу. Коли Apache необхідно запустити який-небудь сценарій РНР або Perl, він запускає відповідну програму і передає їй цей сценарій на виконання. В цьому випадку Web-сервер Apache взаємодіє з інтерпретаторами як CGI-програма, тобто він здійснює з ними обмін даними по протоколу Common Gateway Interface (CGI).
Інтерпретатор може бути і модулем, прямо підключеним до двійкового коду Apache, який буде працювати як частина процесу Apache. В термінах сервера Apache інтерпретатори Perl i PHP являються модулями mod_perl i mod_php.
Ось рядок з конфігураційного файлу Apache-сервера, за допомогою якого інтерпретатор РНР підключається до сервера як модуль:
LoadModule php4_module "c:\usr\local\php4\php4apache.dll"
Очевидно, що будь-який інтерпретатор працює значно швидше в модульному режимі, а ніж у вигляді автономної CGI-програми.
В автономних програмах необхідно запускати інтерпретатор всякий раз, коли на виконання поступає сценарій. Таким чином вноситься деяка лепта в перевантаження системи і підвищується штраф на запуск інтерпретатора. В модульній системі інтерпретатор працює як частина вже працюючого процесу сервера Apache, і можливості інтерпретатора для Web-сторінок будуть доступні постійно. Це значно збільшує продуктивність системи, знизить її перевантаження