Почему Instagram работает на языке программирования Python


Instagram, принадлежащий Facebook, подробно описал свое решение для улучшения приложения таким образом, чтобы усилить преимущества Python и уменьшить языковые препятствия для производительности в крупных проектах.

За многочисленными селфи в Instagram стоит целая социальная сеть, принадлежащая Facebook, построенная на популярном языке программирования Python. Не малое количество людей смогли построить бизнес и сделать себе имя благодаря Instagram. Кто-то шел к успеху долго, кто-то быстро, но есть те, кто использовал и продолжает пользоваться разными программами, например crm для инстаграм, с целью повысить рентабельность бизнеса.инстаграм работает на питоне

Как недавно выяснили инженеры Instagram, Instagram Server — серверное приложение для смартфонов, которое миллионы людей используют для обмена фотографиями друзей и себя — почти полностью работает на Python, третьем по популярности языке после Java и JavaScript.

Чтобы повысить производительность труда разработчиков, инженеры разработали инструменты с открытым исходным кодом, такие как Python.

Инженеры Instagram также создали инструменты разработчика, такие как LibCST, для анализа кода Python. Основная цель инженеров Instagram — максимально продуктивно работать с Python в больших масштабах, и они показали, как справляются со «слабыми местами» при использовании языка.

Компания планирует привлечь новых талантов, даже если программисты не обязательно являются экспертами Python, поэтому Facebook хочет объяснить кандидатам на программировании, как создаются инструменты, чтобы помочь им быть более продуктивными.

Facebook также хочет, чтобы разработчики, которым нравится использовать Python, были довольны, поэтому компания продвигает Python за его пределы. Вот почему инженеры Instagram разработали «строгие модули» для Python.

«Один разумный вывод может заключаться в том, что Python выходит за пределы того, для чего он предназначен. Он отлично работает для небольших команд на небольших кодовых базах, которые могут поддерживать хорошую дисциплину в отношении того, как его использовать, и мы должны перейти на менее динамичный язык» пишет Инстаграм инженер Карл Мейер. «Несмотря на некоторые уязвимые места, нам еще многое нравится в Python, и в целом нашим разработчикам нравится работать в Python. Мы должны выяснить, как мы можем заставить Python работать в таком масштабе и продолжать работать по мере роста».

Он объясняет, что Python великолепен, потому что вы можете вносить изменения и видеть результат без необходимости компиляции кода. «Но с несколькими миллионами строк кода (и беспорядочным графом зависимостей) это преимущество начинает портиться», — пишет он.

Запуск Instagram Server занимает до одной минуты, что приводит к критической задержке при тестировании новых функций и достаточно долго для того, чтобы разработчик отвлекся на другую работу и не выполнил задачу.

Несмотря на то, что Python позволяет ускорить разработку, существуют проблемы с его использованием в масштабах Instagram. «Поскольку импорт может иметь произвольные побочные эффекты, не существует безопасного способа постепенной перезагрузки сервера [в Python]. Независимо от того, насколько малы изменения, нужно начинать каждый раз с нуля, импортируя все эти модули, заново создавая все эти классы и функции, перекомпиляция всех этих регулярных выражений и т. д.» — пишет Мейер.

Проблемы Instagram с использованием Python в масштабе отражают некоторые трудности, которые Salesforce испытывает с его продуктом EinsteinAnalytics.

«Python отлично подходит для быстрого написания приложений высокого уровня, но не всегда обеспечивает высокую производительность, необходимую на уровне предприятия», — пояснил архитектор Salesforce.

Мейер описывает «строгие модули» как ответ Instagram на слабые стороны Python при использовании в крупномасштабных производственных средах.

«Строгие модули накладывают некоторые ограничения на то, что может происходить на верхнем уровне модуля. Весь код уровня модуля, включая декораторы и функции / инициализаторы, вызываемые на уровне модуля, должен быть чистым (без побочных эффектов, без ввода-вывода). Это проверено статически во время компиляции через абстрактный интерпретатор» — говорит он.

Learn Pascal » Блог
1 Star2 Stars3 Stars4 Stars5 Stars (1 оценок, среднее: 5,00 из 5)
Загрузка...

Добавить комментарий

Ваш адрес email не будет опубликован.