-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathhistory.xml
More file actions
419 lines (397 loc) · 30 KB
/
history.xml
File metadata and controls
419 lines (397 loc) · 30 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: fecf93309b34b59e23dda35530d83b0f1b05ab84 Maintainer: mproshchuk Status: ready -->
<appendix xml:id="history" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Історія PHP та повʼязаних проектів</title>
<para>
Народившись в середині девʼяностих, PHP пройшла довгий шлях. Від скромного
початку і до того, як стати однією з найвидатніших мов Інтернету, еволюція PHP
виглядає, як казка для програмістів. Варто зауважити, що таке вибухове
зростання було непростим завданням. Ті з вас, хто хоче коротко побачити, як
PHP виросла і стала такою, якою вона є сьогодні — читайте далі. Якщо ви хочете
торкнутися частинки історії Інтернету, ви можете знайти старі випуски PHP в
<link xlink:href="&url.php.museum;">Музеї PHP</link>.
</para>
<sect1 xml:id="history.php">
<title>Історія PHP</title>
<sect2 xml:id="history.phpfi">
<title>PHP Tools, FI, Construction Kit та PHP/FI</title>
<para>
PHP, як вона відома сьогодні, фактично є наступницею продукту під назвою
PHP/FI. Перше втілення PHP, створене в 1994 році Расмусом Лердорфом, було
простим набором двійкових файлів під назвою Common Gateway Interface (CGI,
"Допоміжний шлюзовий інтерфейс"), написаних на мові програмування C. Набір
скриптів, що використовувався для відстежування відвідувань його
онлайн-резюме, він спершу назвав "Personal Home Page Tools" ("Інструменти
для особистої домашньої сторінки"), більш поширена назва — "PHP Tools". З
часом, бажаючи більше функціональних можливостей, Расмус переписав PHP
Tools, створивши набагато більшу та багатшу реалізацію. Нова модель була
здатна взаємодіяти з базами даних тощо, забезпечуючи структуру, з якою
користувачі могли розробляти прості динамічні вебдодатки, такі як гостьові
книги. У червні 1995 року Расмус <link
xlink:href="&url.php.release1.0.0;">опублікував</link> для громадськості
початковий код PHP Tools, що дозволило розробникам використовувати його на
свій розсуд. Це також дозволило — і спонукало — користувачам надсилати
виправлення помилок у коді та загалом покращувати його.
</para>
<para>
У вересні того ж року Расмус розширив PHP і на короткий час фактично
відмовився від назви "PHP" на користь "FI" (скорочено від "Інтерпретатор
форм"). Нова реалізація містила деякий основний функціонал PHP, яким ми його
знаємо сьогодні. Вона мала змінні у стилі Perl, автоматичну інтерпретацію
змінних з форм та вбудований в HTML-документ код. Сам синтаксис був подібним
до Perl, хоча й доволі обмеженим, простим і дещо непослідовним. Насправді,
щоб вставляти код у HTML-файл, розробники мали використовувати
HTML-коментарі. Оскільки такий метод не був прийнятним для усіх, FI
продовжував розвиватися та сприймався радше як інструмент CGI, але не мова.
Проте це почало змінюватися наступного місяця. У жовтні 1995-го Расмус
випустив повністю переписаний код. Повернувши назву PHP, тепер він (коротко)
називався "Personal Home Page Construction Kit" (або українською "Набір для
створення особистої домашньої сторінки"), і був першим випуском, який міг
похвалитися тим, що на той час вважалося вдосконаленим скриптовим
інтерфейсом. Мова була навмисно розроблена зі структурою, що нагадувала C,
щоб зробити легкою адаптацію розробників, знайомих з C, Perl чи схожими
мовами. Досі обмежуючись системами, сумісними з UNIX і POSIX, почала
досліджуватись можливість впровадження у Windows NT.
</para>
<para>
Код отримав ще одне повне оновлення, тож в квітні 1996-го, комбінуючи назви
попередніх випусків, Расмус представив PHP/FI. Ця реалізація другого
покоління почала справжню еволюцію PHP із набору інструментів у окрему мову
програмування. Вона містила вбудовану підтримку баз даних DBM, mSQL і
Postgres95, кукі, підтримку користувацьких функцій та багато іншого. У
червні того ж року PHP/FI отримала статус версії 2.0. Однак цікавим фактом є
те, що існувала лише одна повна версія PHP 2.0. Коли в листопаді 1997 року
нарешті закінчився статусу бета-версії, основний механізм парсингу вже був
повністю переписаний.
</para>
<para>
Хоча мова прожила короткий термін розробки, вона продовжувала користуватися
зростаючою популярністю у все ще молодому світі веброзробки. У 1997 та 1998
роках PHP/FI мала декілька тисяч прихильників по всьому світу. Дослідження
від Netcraft у травні 1998-го нарахувало близько 60'000 доменів, які містили
у заголовках "PHP", вказуючи, що сервер-хост дійсно встановив його. На той
час це дорівнювало приблизно 1% усіх доменів в Інтернеті. Незважаючи на ці
разючі цифри, дорослішання PHP/FI досягало межі: хоча було кілька
другорядних розробників, все ж його в основному розробляла одна особа.
</para>
<para>
<example>
<title>Приклад коду на PHP/FI</title>
<programlisting role="html">
<![CDATA[
<!--include /text/header.html-->
<!--getenv HTTP_USER_AGENT-->
<!--ifsubstr $exec_result Mozilla-->
О, ви використовуєте Netscape!<p>
<!--endif-->
<!--sql database select * from table where user='$username'-->
<!--ifless $numentries 1-->
Шкода, та такого запису не існує.<p>
<!--endif exit-->
Ласкаво просимо, <!--$user-->!<p>
На вашому рахунку залишилося <!--$index:0--> кредитів.<p>
<!--include /text/footer.html-->
]]>
</programlisting>
</example>
</para>
</sect2>
<sect2 xml:id="history.php3">
<title>PHP 3</title>
<para>
PHP 3.0 стала версією, з якою сучасна PHP дуже схожа. Виявивши, що PHP/FI
2.0 досі була неефективною, позбавленою функцій, необхідних для роботи
програми електронної комерції, яку розробляли для університетського проекту,
Енді Ґатменз та Зев Сураскі з Тель-Авіву, Ізраїль, почали ще одне повне
переписування основного парсера у 1997-му. Звʼязавшись з Расмусом онлайн,
вони обговорили різні аспекти поточного реалізації та подальшої переробки
PHP. Прагнучи вдосконалити рушій і почати розвивати наявну базу користувачів
PHP/FI, Енді, Расмус і Зев вирішили співпрацювати у розробці нової,
незалежної мови програмування. Вона отримала нову назву, яка більше не
означала обмежене особисте користування, що було закладено в назві PHP/FI
2.0. Вона була просто переназвана на "PHP", і стала розшифровуватися як
рекурсивний акронім — "PHP: Hypertext Preprocessor".
</para>
<para>
Однією з найсильніших сторін PHP 3.0 була її масштабованість. Кінцевим
користувачам було надано зрілий інтерфейс для багатьох баз даних, протоколів
і API, а простота розширення самої мови привабила десятки розробників, які
створювали для неї різноманітні модулі. Можливо, це і стало ключем до
величезного успіху PHP 3.0. Інші основні можливості, наявні у PHP 3.0 — це
підтримка обʼєктно-орієнтованого програмування та значно потужніший і
продуманий синтаксис.
</para>
<para>
У червні 1998-го, завдяки зусиллям багатьох нових розробників з усього
світу, новою Командою розробки PHP була представлена PHP 3.0, як офіційна
наступниця PHP/FI 2.0. Жвава розробка PHP/FI 2.0, яка майже припинилася в
листопаді попереднього року, так і не була завершена офіційно. Після близько
девʼяти місяців з часу відкриття публічного тестування, коли було випущено
офіційний реліз PHP 3.0, його вже було встановлено на понад 70'000 доменів
у світі і не тільки в POSIX-сумісних операційних системах. Відносно невелика
частка доменів повідомляли, що використовують PHP на серверах у Windows 95,
98, NT та Macintosh. На піку популярності PHP 3.0 було встановлено на
приблизно 10% вебсерверів в Інтернеті.
</para>
</sect2>
<sect2 xml:id="history.php4">
<title>PHP 4</title>
<para>
Перед зимою 1998-го, невдовзі після офіційного випуску PHP 3.0, Енді Ґатменз
і Зев Сураскі почали роботу над переписуванням ядра PHP. Задум полягав у
покращенні швидкодії складних застосунків та у покращенні модульності
кодової бази PHP. Ці застосунки були можливими завдяки новому функціоналу
PHP 3.0 та підтримці широкого спектру сторонніх баз даних і API, але
інтерпретатор PHP 3.0 не був розроблений для ефективного виконання таких
складних програм.
</para>
<para>
Новий рушій з назвою "Zend Engine" (складається з імен Зев та Енді)
повністю відповідав цим проектним цілям та був вперше представлений в
середині 1999-го. Версія PHP 4.0, що базувалася на цьому рушієві та поєднала
в собі багато нових можливостей, була офіційно випущена в травні 2000-го
року, майже через два роки після своєї попередниці. Разом з значно
збільшеною продуктивністю, PHP 4.0 містила такі нововведення, як підтримка
багатьох вебсерверів, HTTP-сесії, буферизація виводу, більше безпечних
способів обробки користувацького вводу та декілька нових мовних конструкцій.
</para>
</sect2>
<sect2 xml:id="history.php5">
<title>PHP 5</title>
<para>
PHP 5 була випущена в липні 2004-го року після тривалої розробки і кількох
пробних випусків. В основі інтерпретатора лежав рушій <literal>Zend Engine
2.0</literal> з новою обʼєктною моделлю і багатьма іншими можливостями.
</para>
<para>
До команди розробників PHP входять десятки розробників, а також десятки
інших, які працюють над пов’язаними та допоміжними проектами PHP, такими як
PEAR, PECL, документація, а також базова мережева інфраструктура з понад ста
окремих вебсерверів на шести із семи континентів світу. Хоча це лише
приблизні дані на основі статистики попередніх років, можна сміливо
припустити, що тепер PHP встановлено на десятках або навіть сотнях мільйонів
доменів у всьому світі.
</para>
</sect2>
</sect1>
<sect1 xml:id="history.php.related">
<title>Історія проектів, повʼязаних з PHP</title>
<!-- Hope Stig and/or Egon can do this
<sect2 xml:id="history.phpdoc">
<title>PHP Documentation Project</title>
<para>
</para>
</sect2>
-->
<sect2 xml:id="history.pear">
<title>PEAR</title>
<para>
<link xlink:href="&url.php.pear;">PEAR</link>, <literal>PHP Extension and
Application Repository (укр. Сховище розширень та застосунків PHP)</literal>
(спочатку було PHP Extension and Add-on Repository) це PHP-версія основних
класів. У майбутньому воно може стати одним із ключових способів
розповсюдження PHP-розширень серед розробників.
</para>
<para>
PEAR народилося під час обговорень, що відбулися на зустрічі PHP-розробників
("PDM"), що відбулася в січні 2000 року в Тель-Авіві. Творець Стіґ С. Баккен
присвятив його своєму первістку — доньці Малін Баккен.
</para>
<para>
З початку 2000-го PEAR виросло до значущого проекту з великою кількістю
розробників, які працюють над впровадженням спільного багаторазового
функціоналу на користь усій спільноті PHP. Сьогодні PEAR пропонує широкий
вибір класів основи інфраструктури для доступу до баз даних, кешування
наповнення, математичних обчислень, електронної комерції та багато іншого.
</para>
<para>
Докладніше про PEAR у <link
xlink:href="&url.php.pear.manual;">посібнику</link>.
</para>
</sect2>
<sect2 xml:id="history.phpqa">
<title>Ініціатива забезпечення якості PHP</title>
<para>
<link xlink:href="&url.php.prerelease;">Ініціатива забезпечення якості
PHP</link> започаткована влітку 2000-го року у відповідь на критику щодо
недостатнього тестування випусків PHP для виробничого середовища. Натепер
основу команди складає група розробників, котрі добре розуміють кодову базу
PHP. Вони постійно виявляють та виправляють вади PHP. Разом з цим багато
інших членів команди перевіряють виправлення та надсилають відгуки через
різноманітні платформи.
</para>
</sect2>
<sect2 xml:id="history.phpgtk">
<title>PHP-GTK</title>
<para>
<link xlink:href="&url.php.gtk;">PHP-GTK</link> це PHP-рішення для написання
користувацьких програм з графічним інтерфейсом (GUI). Андрей Змієвскі так
згадує процес планування та створення PHP-GTK:
</para>
<blockquote>
<para>
Я завжди цікавився GUI-програмуванням і виявив, що Gtk+ — це чудовий набір
інструментів за винятком того, що застосовувати це на C дещо нудно.
Побачивши реалізації PyGtk і GTK-Perl, я вирішив перевірити, чи можна
змусити PHP хоч би трішки взаємодіяти з Gtk+. З серпня 2000-го, маючи
більше вільного часу, я почав експериментувати. Моїм головним орієнтиром
була реалізація PyGtk, бо була достатньо функціональною та мала гарний
обʼєктно-орієнтований інтерфейс. Джеймс Генстридж, творець PyGtk, дав дуже
корисні поради на початках.
</para>
<para>
Про написання інтерфейсів до всіх функцій Gtk+ вручну не могло бути й мови,
тож я загорівся ідеєю генератора коду, схожого з тим, який зроблено в
PyGtk. Генератор коду — це PHP-програма, яка зчитує вміст файлу
<filename>.defs</filename>, де міститься інформація про класи, константи та
методи Gtk+, та генерує код на C, через який PHP взаємодіє з ними. Те, що
не генерується автоматично, можна записати вручну в файлі
<filename>.overrides</filename>.
</para>
<para>
Робота над генератором коду та інфраструктурою тривала довго тому, що
восени 2000-го я мав мало часу на PHP-GTK. Після того, як я показав
PHP-GTK Френку Кромману, він зацікавився та почав мені допомагати з
генератором коду та реалізацією для Win32. Коли ми написали першу "Hello
World"-програму і запустили її, це було надзвичайно захопливо. 1 березня
2001 року, після кількох місяців допрацювань, була випущена перша версія.
Ця історія відразу потрапила в SlashDot.
</para>
<para>
Розуміючи, що PHP-GTK буде розширюватися, я налаштував для неї окремий
список розсилки та CVS сховища, а ще вебсайт gtk.php.net з допомогою Коліна
Вайброка. Також необхідно було зробити документацію і Джеймс Мур згодився
допомогти.
</para>
<para>
З моменту випуску PHP-GTK набирає популярності. Ми маємо команду, що
розробляє документацію, посібник вдосконалюється, люди беруться писати
розширення для PHP-GTK та ще більше захопливих застосунків за
допомогою цього інструменту.
</para>
</blockquote>
</sect2>
<sect2 xml:id="history.php6">
<title>PHP 6</title>
<para>
Планувалося, що PHP 6 матиме глибоку підтримку Unicode в рушії та самій
мові. Згодом робота над цим нововведенням як і над версією загалом була
полишена, але інший функціонал, що призначався для PHP 6, був впроваджений в
PHP 5.3 (<link linkend="language.namespaces">простори імен</link>)
та PHP 5.4 (<link linkend="language.oop5.traits">трейти</link>, короткий
синтаксис масивів).
</para>
</sect2>
<sect2 xml:id="history.php7">
<title>PHP 7</title>
<para>
PHP 7.0 була випущена в 2015 році разом з оновленим ядром <literal>Zend
Engine 3.0</literal>. Ця версія мала значне покращення продуктивності (більш
ніж вдвічі швидша за PHP 5.6) та використання пам'яті, підтримку 64-бітних
інструкцій, вдосконалення роботи виключень, безпечний генератор випадкових
чисел, <link linkend="language.operators.comparison.coalesce">оператор
заміни null (??)</link>, <link linkend="language.oop5.anonymous">анонімні
класи</link> та інші нововведення.
</para>
<para>
Наступні випуски серії PHP 7 впроваджували в мову більше можливостей, як от
<link linkend="function.list">короткий синтаксис конструкції list</link>
(7.1), параметри типу <type>object</type>, типізовані значення, що
повертаються (7.2), новий гнучкий синтаксис
<link linkend="language.types.string.syntax.heredoc">heredoc</link>
і <link linkend="language.types.string.syntax.nowdoc">nowdoc</link>
(7.3), типізовані властивості (7.4), та новий
<link linkend="class.ffi">інтерфейс для зовнішніх функцій</link> (7.4).
</para>
</sect2>
<sect2 xml:id="history.php8">
<title>PHP 8</title>
<para>
Випущена у 2020 році, PHP 8.0 стала новою основною версією мови PHP.
Оновлення містило багато свіжих можливостей та покращень, як от
<link linkend="functions.named-arguments">названі параметри</link>,
<link linkend="language.types.declarations.composite.union">об'єднані
типи</link>, <link linkend="language.attributes">атрибути</link>,
<link linkend="language.oop5.decon.constructor.promotion">декларація
властивостей в параметрах конструктора</link>, вираз
<link linkend="control-structures.match"><literal>match</literal></link>,
оператор <link linkend="language.oop5.basic.nullsafe">nullsafe
(<literal>?-></literal>)</link>, новий JIT-компілятор, вдосконалення системи
типів, обробки помилок, а також узгодженості.
</para>
<para>
Наступні оновлення PHP 8 додали такі можливості мови:
<link linkend="language.enumerations">перелічуваний тип даних</link> (8.1),
<link linkend="language.fibers">т. зв. файбери</link> (8.1),
<link linkend="language.oop5.basic.class.readonly">класи тільки для
читання</link> (8.2), типи диз'юнктивної нормальної форми (DNF) (8.2),
типізовані константи класу (8.3).
</para>
</sect2>
</sect1>
<sect1 xml:id="history.php.books">
<title>Books about PHP</title>
<para>
У міру розвитку PHP почали визнавати всесвітньо популярною платформою
розробки. Одним із найцікавіших способів побачити цю тенденцію було
спостереження за книгами про PHP, які виходили протягом багатьох років.
</para>
<para>
Як нам відомо, першою книгою, присвяченою PHP, була "PHP — tvorba
interaktivních internetových aplikací" (<emphasis>PHP — створення
інтерактивних інтернет-застосунків</emphasis>) чеського автора
Jirka Kosek, опублікована у квітні 1999 року. Наступного місяця вийшла книга
Еґона Шміда, Крістіана Картуса та Річарда Блюме німецькою мовою.
Перша книжка про PHP англійською була опублікована невдовзі після того і
називалася "Core PHP Programming" (укр. Основи програмування на PHP), автор —
Леон Аткінсон. Ці книги охоплювали PHP 3.0.
</para>
<para>
Незважаючи на те, що ці книги були першими у своєму роді, після них з'явилася
велика кількість книг від безлічі авторів і видавців. Існує більше 400 книг
англійською, більше 100 німецькою, а також більше 50 книг французькою або
іспанською мовами! Також можна знайти книги про PHP багатьма іншими мовами,
включно з корейською, японською та івритом.
</para>
<para>
Очевидно, така значна кількість книг, написаних різними авторами, видана
багатьма видавництвами, та їхня доступність стількома мовами — це вагоме
свідчення світового успіху PHP.
</para>
</sect1>
<sect1 xml:id="history.php.publications">
<title>Публікації про PHP</title>
<para>
Наскільки нам відомо, перша стаття про PHP в друкованому журналі опублікована
у чеській версії Computerworld навесні 1998 року та розповідала про PHP 3.0.
Як і у випадку з книгами, це була перша з серії багатьох статей про PHP,
опублікованих в різних відомих журналах.
</para>
<para>
Статті про PHP з'явилися в Dr. Dobbs, Linux Enterprise, Linux Magazine та в
багатьох інших. Статті про перенесення програм на базі ASP на PHP у Windows
навіть з’являються на <acronym>MSDN</acronym> від
<productname>Microsoft</productname>!
</para>
</sect1>
</appendix>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->