Сегодня один из самых популярных языков программирования - Питон. С неделю назад я решил выучить его, чтобы получить сертификат и повысить свою привлекательность на рынке труда. По работе мне программировать уже несколько лет не приходится, а для души - тех языков, что я знаю, мне хватает. Но давненько я ничего такого не учил, для мозгов это плохо.
Сертификат я решил получить PCAP (возможно, вытяну PCEP, но маловероятно), а учиться на бесплатных курсах от Cisco.
Язык Питон был создан на досуге голландским программистом Гвидо ван Россумом. Задуман он был как максимально доступный для изучения и для использования, а назван в честь комик-группы "Монти Пайтон". И, чем больше я его учу, тем больше убеждаюсь, что не зря. И все больше укрепляюсь во мнении, что, в первую очередь, Гвидо руководствовался скетчем "Министерство глупых походок". Потому что как-то так Питон и работает.
Пока ничего, за что Питон можно было бы назвать плохим языком, я не узнал. Но такого количества граблей, присыпанных костылями, мне встречать еще не доводилось. Раздражает немного, что язык пытается быть умнее меня (программиста). Ладно бы у него это получалось (как у Haskell, например), нон нет.
Начать с того, что есть 2 ветви Питона: 2 и 3. Они друг с другом не совместимы. Актуальна для изучения третья, вторая, слава Кнуту, не обновляется. Но если вы хотите поддерживать старый код, ее тоже придется изучить.
Теперь о типах данных. Питон - язык с динамической типизацией. Объявление типа переменной там отсутствует, она автоматически объявляется в момент вызова. Зато есть функции приведения типа. А еще Питон любит назначать тип переменной как ему удобно, например, если ты делишь одно число на другое, результат будет float, даже если он целый. И многие функции работают по разному, в зависимости от того, какого типа переменные им скормить. То есть, вроде бы, удобно, переменные не надо объявлять. Но чтобы программа работала предсказуемо, надо при каждом присвоении переменной значения вызывать приведение типа. Ну или держать весь код в уме!
Для поименования переменных есть простая конвенция (это хорошо). Также можно использовать для имени все языки юникода (это, скорее, плохо). Но самое забавное, что имена переменных чуствительны к регистру. Нельзя назвать переменную print, потому что это служебное слово, зато можно Print или PRINT, и это будут разные переменные, что превратит отладку в источник нескончаемого веселья. Да, вменяемый человек так делать не будет, но язык такое позволяет, так что, иметь в виду это надо.
Кстати, про print. На первый взгляд, функция работает как в большинстве адекватных языков: принимает х аргументов, разделенных запятой, текст от переменной отличается кавычками. Но это на первый взгляд. Потому что после каждого аргумента функция печатает пробел, а в конце - перенос каретки. Удобно же! А если надо, чтобы функция печатала только то, что я передаю, без творчества? Всего-то надо добавить служебные операнды sep="", end="". Ну зашибись оптимизация.
Еще условные операторы: всякие if и while. В нормальном языке, ты проверяешь условие, и если оно выполняется, выполняешь набор инструкций. Набор этот отделен от основного кода начальной и конечной метками. Например, {}. Или if - end if. Но в Питоне конечной метки нет, выполняется все, что отделено от условного оператора табом. Или 4 пробелами. При этом, мешать нельзя, хотя на экране они выглядят одинаково. В итоге, язык диктует стиль разметки (что может быть неудобно) и отладка еще усложняется. Кстати, для while и for определено ключевое слово else. Я не смог придумать зачем это может понадобиться, похоже, это просто прикол.
А вот еще про типы данных: в питоне нет boolean. Но булевские операции есть. При этом, аж 2 набора. И применять их предлагается к типу integer. Один набор берет 0 за 0 и за 1 все, что не 0. Второй - конвертирует int в двоичную систему и производит операции побитово. При этом, вывод результата, естественно, десятичный. Удобно шопипец.
В общем, пока впечатления такие: для человека не отягощенного теорией программирования и прочей метаматематикой, Питон должен быть проще и понятнее, чем более... традиционные языки программирования. Для человека, глубоко разбирающегося в этих вещах, язык этот глупый и неудобный. Но, поскольку Питон стал массовым, разбираться в нем не повредит. Тем более, за счет массовости он оброс огромным количеством интересных модулей и библиотек, которые могут сильно упростить решение любой алгоритмизируемой задачи. Так что, буду продолжать душить Питона вечерами после работы.
Кстати, какое название вы считаете наилучшим для отечественного языка программирования, претендующего на роль самого популярного (считая, что название Питона ему помогло)?
1. Аншлаг
2. Каламбур
3. Большая Разница
4. Смехопанорама
5. Ваш вариант