Філософія мови Python
В подальших записах ми поринемо в криваві деталі історії Пітону. Але перед цим, хотілось би детально розповісти про філософські установки, якими я керувався під час створення цієї мови програмування.
Перш за все, Python започатковувався як виключно особистий проект – не було ніякого офіційного бюджету, хотілося швидких результатів, таких, щоб я міг підтримувати цей проект (в якому, чесно кажучи, я мав успіх). Це підказало мені певні правила збереження часу:
- Завжди запозичуй ідеї будь-де, коли це необхідно.
- «Речі мають бути настільки простими, наскільки це можливо, але не більше того» (Ейнштейн)
- Робіть щось одне, але добре.
- Не переймайтеся досконалістю – оптимізуйте, коли це буде необхідно.
- Не йдіть проти природи, пливіть за течією.
- Не робіть ідеального, бо «достатньо хороший» це інколи саме те, що треба.
- (Звідси) Зрізати шлях – це цілком нормально, особливо якщо пізніше ви навчитеся робити це правильним чином.
Інші принципи не входять до правил збереження часу, інколи вони є цілком протилежними:
- Робота Пітону не має бути прив’язана до певної платформи. Нехай деяка функціональність не завжди доступна, але сама основа має працювати завжди.
- Не перекладайте на користувачів ту роботу, яку може виконати машина. (Я не завжди дотримувався цього правила; катастрофічні наслідки цього я опишу нижче)
- Використовуйте підхід, незалежний від середовища, але не відмовляйтесь від можливостей та властивостей окремої платформи. (на противагу Java)
- Велика складна система повинна мати велику кількість рівнів розширюваності. Це дуже допомагає користувачам, незалежно від того, досвідчені вони чи ні.
- Помилки не мають бути фатальними. Це означає, що в будь-яких умовах користувацький код можна відновити, доки функціонує віртуальна машина.
- У той же час, помилки не мають бути непоміченими (виходячи з останніх двох пунктів, протягом створення проекту завжди необхідно використовувати виключення)
- Неполадки в користувацькому коді ні в якому разі не повинні призводити до невизначеної поведінки інтерпретатора; збій системи не є помилкою користувача.
Тож, я мав безліч ідей щодо проекту гарної мови програмування, які з'явились в мене під час роботи в компанії ABC Group, де я мав свій перший досвід проектування мови програмування. Ці ідеї найважче висловити, тому що вони всі переважно мають на увазі такі абстрактні поняття як витонченість, простота та читабельність.
І хоча нижче я ще напишу про вплив ABC на Пітон, зараз я б особливо хотів пригадати одне з правил читабельності: знаки пунктуації мають стояти так, як вони зазвичай вживаються на письмі або в математиці - тому ми зробили синтаксичні елементи, що відповідають з давніми традиціями мов програмування, наприклад "х*y" – це запис для множення, "а[i]" – для доступу до елементу масиву, “x.foo” – для вибору атрибутів. І тому Пітон не використовує "$" для позначення змінних та “!” для операцій з побічною дією.
Тім Пітерс, який довгий час був користувачем Пітону та став його найбільш продуктивним та завзятим розробником, зробив спробу викласти мої невисловлені принципи дизайну в так званому «Дзені Пітона».
І хоча мій досвід у компанії ABC Group сильно вплинув на Пітон, сама АBC Group мала певні принципи дизайну, як повністю відрізнялись від моїх. Тому, при створенні Пітону я свідомо відійшов від них:
- ABC Group завжди прагнула ідеалу. Наприклад, вони використовували ієрархічні моделі даних (розгалужені дерева) що, як відомо, є оптимальним для великої кількості даних (і ніяк не для малої).
- ABC Group бажала ізолювати користувача, наскільки це можливо, від «великого та страшного світу комп’ютерів». Вони мали за мету позбавитися від лімітів на числа, що перевищують діапазон представлення, лімітів на довжину рядка або на розмір баз даних (не враховуючи, що останні можуть займати більше, ніж те дозволяє загальний об’єм пам’яті). При цьому користувачу не потрібно було працювати з файлами, дисками, «збереженням» або іншими програмами. ABC мала стати всім, чого потребує користувач. Ця мета також змусила ABC Group створити спеціально для мови ABC цілісне інтегроване середовище розробки. (Її можна було уникнути, але це була переважно запізніла думка, до того ж напряму зробити це було неможливо)
- ABC Group вважала, що користувачі не мають попереднього досвіду роботи з комп’ютером (або намагаються про нього забути). Таким чином, вони ввели нову термінологію, яку вважали більш новою та «дружелюбною», ніж звичайна комп’ютерна термінологія. Наприклад, «дії» називалися «ЯКЦЕ» (англ. how-to), а змінні – «комірками».
- Створюючи мову ABC, ABC Group не передбачала її розвитку, при чому користувач теж не міг приймати участь у її удосконаленні. Таким чином, ABC була створена як замкнена система, настільки бездоганна, наскільки її змогли створити розробники. Користувачу не рекомендували «заглядати під капот». І хоча планувалося впровадження деякої підтримки для досвідчених користувачів, ця ідея так і не була реалізована.
В більшості випадків, використана мною філософія дизайну є, мабуть, однією з головних приводів для його остаточного успіху. Замість того, щоб прагнути ідеалу, перші користувачі Пітону помітили для себе, що він достатньо задовольняє їх потреби. По мірі того, як зростала кількість користувачів, ми вдосконалювали її відповідно до їх вимог. Далі ми побачимо, що багато з цих нововведень спричинили істотні зміни та переробку базису мови. Навіть сьогодні Пітон продовжує розвиватися.
переклад статті - Вікторія Сумська aka Kreved