Почему Python такой популярный, если он такой медленный?

На Quora обсуждают «Почему Python такой популярный, хотя такой медленный». Тема, конечно, холиварная. Но порассуждать на неё интересно. Ведь Python действительно медленный. Медленный, если сравнивать его с C/C++, Java или C#. Это факт. Python — достаточно медленный скриптовый динамический язык программирования. Любая метрика покажет, что программа на C++ будет работать быстрее. Но есть у языков и другая, не менее важная метрика — скорость разработки. Вот тут динамические языки начинают выигрывать. Разрабатывать на Python, Ruby, JS быстрее, чем на Java. А скорость разработки — это прямая экономия для компании. Сегодня разработка продукта заканчивается, только если проект закрывают. В остальных случаях купить ещё один инстанс у Amazon дешевле, чем увеличить срок разработки какой‑либо фичи на пару недель. ...

14 декабря 2015 г.

Sublime Text 3 как Python IDE

Пока на RealPython разжигают войну IDE и объясняют, как настроить среду разработки на Python под: Sublime VIM Emacs Я расскажу, почему я (пока) переехал на Sublime Text 3 и как я его настроил. А также отмечу, чего в нём не хватает для счастливой разработки. PyCharm — замечательная IDE для Python. Это, несомненно, так, но если нужно разрабатывать full‑stack, то одним им не обойтись. На работе это не проблема. Но вот дома покупать лицензию на все продукты JetBrains ради экспериментов накладно. ...

7 декабря 2015 г.

Flask: что почитать

НЕ! Обновляемый список полезных ссылок с материалами по Flask Версия: 1.0. Последнее обновление: 30.11.2015. Начинающим «The Flask Mega‑Tutorial» — подробный пошаговый учебник по веб‑фреймворку Flask. Покрывает все основные темы: шаблоны, формы, базу данных, интернационализацию, деплоймент на сервере. «Flask Workshop» — трёхчасовое видео от того же автора. Демонстрация основных возможностей Flask на живом примере. Ещё один учебник — «Flask TodoMVC». На этот раз создают не блог, а список задач (To‑Do). Плюс этого учебника в том, что рассматривается не только Flask, но и его использование в связке с JS‑фреймворком Backbone.js. «Flask by Example» — учебный пример с Flask, Redis и Angular. Если ещё не устали от учебников и учебных проектов, посмотрите ещё один материал от Real Python — «Python Web Applications With Flask». Помимо того, что это хороший, подробный и понятный учебник, в нём описывается переход от небольшого приложения к среднему — во Flask это нетривиальная задача. В третьей части рассматриваются вопросы тестирования и отладки приложения. Опытным пользователям ...

30 ноября 2015 г.

Libgdx Impressions

Мой первый проект на LibGDX вышел на завершающую стадию. Ещё осталось сделать достаточно много для подготовки к запуску, но я уже могу сравнить эту библиотеку с Unity и Unreal Engine. Пару месяцев назад, когда я выбирал, на чём делать маленькую 2D‑игру, я очень долго колебался между Unity и Unreal Engine. С Unity у меня уже был опыт работы: пару проектов я на нём завершил. Основная проблема — отсутствие нормальной поддержки 2D. Она есть, но какая‑то несовершенная. Когда‑нибудь я обязательно про это напишу, но сегодня оставлю этот тезис без доказательств. ...

23 ноября 2015 г.

Конвертирование андроид приложения на Kotlin

На прошлой неделе наткнулся на очень интересную статью от Антонио Лева: «Converting Plaid to Kotlin: Lessons Learned». В ней автор на примере одного Android‑приложения сравнивает Kotlin и Java. Цель — выявить преимущества и недостатки разработки на Kotlin. Если посмотреть на числа, которые приводит автор, то по ним видно, что на Kotlin код получается значительно компактнее: на 22 % меньше строк, на 27 % меньше символов. Это значит, что программировать на Kotlin значительно быстрее, чем на Java. Да и приятнее (но это цифрами не измерить). ...

16 ноября 2015 г.

Highload++ 2015

На прошлой неделе прошла конференция Highload++ 2015. Конференция большая: доклады шли в 5 потоков. Казалось бы, выбор большой, но если отбросить секцию менеджмента и секцию фронтенд‑разработки, то в каждом втором докладе будет PostgreSQL. Один из моих коллег так высказался о конференции: «Highload++ 2015 — 40 % PostgreSQL, 40 % очереди, 20 % приправы». Не буду рассказывать о всех докладах, которые я посетил. Как и на всякой конференции, было много неудачных докладов. Я расскажу немного о трёх, на мой взгляд, самых достойных докладах конференции. Если будете покупать видео с этой конференции, то записи первых двух докладов стоят того, чтобы их посмотреть. Про третий доклад разговор отдельный. ...

11 ноября 2015 г.

Cpython Internals Walk Through

Ресурсов о том, как работает стандартная реализация Python (CPython) внутри, мало. Пробиваться самому сквозь не самый очевидный код на C — задача для питониста очень сложная. Чтение кода на C требует определённой практики. Серия лекций, прочитанная Филипом Гио, — хорошая отправная точка. Филип подробно рассказывает о внутренних структурах Python, проводя студентов от байт‑кода к структурам, написанным на C. Темы, охваченные курсом: Байт‑код и главный цикл интерпретатора. Фреймы, вызовы функций, области видимости. PyObject. Типы данных в Python. Объект с кодом, объект функции. Итераторы. Классы и объекты. Генераторы. Рассказ ведётся с большим количеством примеров. Каждое погружение внутрь Python начинается с конкретного кусочка кода на Python. Потом разбирается получившийся байт‑код. Дальше — уже команда за командой — разбирается реализация команд байт‑кода на C. ...

2 ноября 2015 г.

Самые слабые стороны программистов-самоучек

Меня огорчает реакция людей, когда на вопрос «Как мне стать хорошим программистом?» советуешь прочитать книгу по алгоритмам. Хорошо, если каждый десятый спрашивает, какую я посоветую. Остальные девять говорят, что им это не нужно. А ведь алгоритмы — это лишь одна из многих проблем у программистов‑самоучек. Я это очень хорошо знаю: я сам из самоучек. У меня план по закрытию пробелов в знаниях расписан года на два вперёд. Так что я провожу на Coursera по 3–4 часа в неделю, только чтобы добрать базу. А ведь надо ещё и новые технологии изучать, и работать с хорошей эффективностью. И я считаю, что мне ещё повезло: моих знаний в математике пока хватает. ...

26 октября 2015 г.

Kotlin - мой следующий JVM-язык

Утром, в дополнение к физическим упражнениям, я примерно час программирую. Для этого отлично подходят не очень сложные проекты, которые делаются в кайф. Для меня это маленькие игры и приложения для Android. Первый подобный проект я написал на Java. Второй стартовал так же — на Java. Но я решил его портировать на Kotlin. Основная проблема Java — её многословность. Проект очень быстро перестал «влазить» в голову, особенно по утрам. Обычно это означает, что пришло время рефакторинга и код придётся дробить, делать его похожим на «лютый энтерпрайз». Тоска. А так как проект делается для удовольствия, то я решил попробовать что‑нибудь новенькое и поменять язык разработки. ...

19 октября 2015 г.

Паттерн Singleton

lambda не так часто встречается в коде на Python. Есть большая вероятность, что если потребовался синглтон, то в проекте есть проблемы с архитектурой. В первую очередь это касается небольших и средних проектов. Да и в больших проектах синглтон в чистом виде встретишь нечасто. Когда я готовился к этой статье, я планировал написать о вариантах реализации паттерна. Но когда я начал исследовать, первым делом я наткнулся на следующий код в Википедии: ...

12 октября 2015 г.