Конечно, правильно — "пайтон": от английского слова Python, которое образовалось не в честь змеи, а благодаря комик-группе «Монти Пайтон» (Monty Python), чьим поклонником был основатель языка Гвидо ван Россум (Guido van Rossum). Однако в профессиональной русскоговорящей среде сложилась традиция произношения «питон», и это следует в русле международного подхода, где символом языка является змея. Это можно усмотреть и в официальном логотипе.

В общем, говорить «пайтон» не в тренде. Потому он «питончик»: сильный, гибкий и очень дружелюбный, как к новичкам, так и профессионалам. Читаемый и понятный код, подкреплённый масштабным сообществом и открытыми доступными готовыми решениями, которыми можно расширять собственные приложения.
Python зародился в конце 80-х, когда спрос на компьютеры и ПО стихийно утраивался, а используемые языки программирования были ещё заточены на полугениальных гиков, перемежавших бутерброды с машинным кодом.
Приведём самое простое сравнение, которое можно представить. Язык Си — живая легенда мира разработчиков, на котором написано огромное количество программ, и который является основой и родителем многих языков, включая Python.
Вот так бы мы написали на Си программу, которая подсчитывает среднее значение введённых пользователями чисел:
#include <stdio.h>
#include <stdlib.h>
int main() {
double sum = 0.0;
int count = 0;
double num;
printf("Введите числа (для окончания ввода нажмите Ctrl+D / Ctrl+Z):\n");
while (scanf("%lf", &num) == 1) {
sum += num;
count++;
}
if (count > 0) {
printf("Среднее значение: %f\n", sum / count);
} else {
printf("Числа не были введены.\n");
}
return 0;
}
Гораздо проще и понятнее для человека это передаёт Python:
numbers = input("Введите числа через пробел: ").split()
numbers = [float(num) for num in numbers]
average = sum(numbers) / len(numbers)
print("Среднее значение:", average)
Обе программы решают одну задачу. Только в Си это 18 строк, а у питона 4, и разобрать вложенный смысл проще у последнего. Input, значит что-то вводится. Sum — узнаваемое англоязычное «сумма». Нет лишних знаков, вроде фигурных скобок, точек с запятыми. Си ждёт специальной команды для завершения ввода, а Python обрабатывает одну строку. Но даже это показывает разницу в подходах.
К тому же, питон ещё и построен на объектно-ориентированной архитектуре. У него каждая сущность это объект, который имеет свойства и методы, что уменьшает объём кода. Например, буква «A» (для чистоты пусть латинская). Для Си это числовой код из таблицы ASCII (обычно 1 байт), просто символ. Собственно, всё.
Питон смотрит иначе. Для него это строковый объект, который сам про себя знает: что он строка, свою длину, что с другой строкой его можно соединить, а напрямую с числом нет, что буква в верхнем регистре, и многое другое.
>>> foo = 'A'
>>> foo.isupper()
True
>>> foo.isdigit()
False
Разумеется, такое удобство стоит дорого. Видимые операции подкреплены спрятанным кодом, в основном на том же самом Си, который не стал меньше или компактнее. И преобразование из Python в Си расходует ресурсы компьютера: память, время процессора. Собственно, в этом и есть некоторая критикуемая, «слабая» сторона питона. По сравнению с компилируемыми, более низкоуровневыми языками, он отстаёт в производительности.
Однако нюанс, что ощущается это лишь в незначительной части приложений, где требуются серьёзные расчёты или в условиях минимальных ресурсов аппаратной архитектуры (например, микроконтроллеры). Благодаря возросшей за последние десятилетия мощности «железа» недостатки производительности Питона уступили его достоинствам в части элегантности и простоты кода.
Пользователи, которые каждый день открывают миллионы сайтов, созданных с помощью Python, и не замечают, что в чём-то он там отстаёт. Они не заметят также и разницу, если их переписать на другом языке программирования.
Хотя да, например, современный компилируемый Rust быстрее. Значительно быстрее, чем Python. Вот код и время, которое затрачивает «змейка» на вычисление числа Фибоначчи в 10-миллионом ряду (напомню, это из развлечений математиков — формировать в бесконечном наборе последовательность, где очередное число равно сумме двух предыдущих).
>>> import time
>>> def fib(n):
... a, b = 0, 1
... for _ in range(n):
... a, b = b, a + b
... return a
...
>>>
>>> def calculate():
... with timer():
... fib(1_000_000)
...
>>> calculate()
🕒 Elapsed time: 781.716635 сек.
Выглядит довольно долго: 781 секунда (13 минут!). Впрочем, процессору пришлось обработать что-то вроде 40-50 миллионов арифметических и логических операций, только внутри цикла функции, а плюс ещё сопутствующие на уровне процессора. Что на это ответит Rust?
use std::time::Instant;
use num_bigint::BigUint;
use num_traits::{One, Zero};
fn main() {
let result = time_it!("Elapsed time", { fib(10_000_000) });
}
pub fn fib(n: u128) -> BigUint {
let mut a = BigUint::ZERO;
let mut b = BigUint::one();
for _ in 0..n {
let tmp = a + &b;
a = b;
b = tmp;
}
a
}
...
...
> 🕒 Elapsed time: 296.043734s
Что, простите? 300 секунд! То есть разница в 2,6 раза. Если бы это была поездка на Сапсане в Петербург, то вместо 4 часов нам понадобилось бы 10,6 (наверное, как раньше, в купе, с чайком и курочкой).
Отмечу, что вычисления производились на домашнем компьютере с многоядерным процессором Intel(R) Core(TM) i7-12700 (2.10 GHz), 32 Гб ОЗУ. Его теоретический пик ~750 миллиардов операций с плавающей запятой в секунду (GFLOPS). Короче, достаточно мощная машина для таких расчётов.
Конечно, в повседневности никто не считает последовательность Фибоначчи, а разрыв по времени в миллисекундах незаметен или незначителен, на рядовых операциях.
Да, для некоторых задач производительность Python уступает, но, кстати, и этот грех постепенно нивелируется. В том числе за счёт оптимизации интерпретатора Питона, встраивания высокопроизводительных модулей и решений на более эффективных языках на тех участках, где производятся ресурсные операции. Когда же пользователь заказывает носочки в онлайн-маркетплейсе, чаще всего, серверной мощности и возможностей Python будет достаточно, чтобы не создать ему проблем и ощущения длительного ожидания завершения покупки.

Посмотрим, как будет дальше разматываться кривая разработки программного обеспечения, но Python в ней занял достойное место. При своей элегантности и кажущейся простое, на самом деле, он сильнейший профессиональный язык. В том числе именно с его помощью создаются многие приложения для машинного обучения, где мощные и глубокие расчёты одна из базовых потребностей.
Кстати. Этот блог также создан с помощью Python. Спасибо, Гвидо!