Подтвердить что ты не робот

Является ли Python достаточно хорошим для больших приложений?

С того момента, как я столкнулся с Python, единственное, что я могу сказать, это "Это потрясающе". Я использую Django framework, и я поражен тем, как быстро происходят события и насколько дружелюбен разработчик к этому языку. Но со многих сторон я слышу, что Python - это скриптовый язык и очень полезен для мелочей, экспериментов и т.д.

Итак, вопрос в том, может ли большое и тяжелое загруженное приложение быть построено в Python (и django)? Поскольку я в основном сосредоточен на веб-разработке, примерами таких приложений могут быть Stack Overflow, Facebook, Amazon и т.д.


P.S. По многим ответам, может быть, мне придется перефразировать вопрос. Есть несколько больших приложений, работающих с Python (лучший пример - You Tube), поэтому он может их обрабатывать, но почему тогда он не так популярен для больших проектов, как (например) Java, С++ и .NET?

4b9b3361

Ответ 1

Python с удовольствием работает с большими приложениями. По сравнению с другими популярными на предприятиях языками вы получаете:

  • Нет времени компиляции, если вы когда-либо работали над большим проектом на С++, знаете, сколько времени это может получить.
  • Краткий и чистый синтаксис, который упрощает чтение кода, а также большую экономию времени при чтении кода другого пользователя или даже вашего, когда он был написан давно.
  • Переносимость на базовом уровне, если для вашего приложения важно работать на нескольких платформах, это, безусловно, помогает
  • Это достаточно быстро для большинства вещей, а когда нет, переписывание горячих точек на C тривиально с такими инструментами, как Cython и numpy. Люди, выступающие против динамических языков по причинам скорости, забыли правило 80-20 (или никогда не слышали об этом). При выборе языка для высокопроизводительного приложения IMHO важно учитывать, насколько легко вы можете получить доступ к уровню C, когда это необходимо, и Python отлично подходит для этого

Однако это не волшебный язык, вам нужно использовать те же методы, которые используются для больших проектов на других языках: TDD (некоторые могут утверждать, что это более важно, чем на других языках, из-за отсутствия проверки типа, но это не выигрыш для других языков, модульные тесты всегда важны для больших проектов), чистый дизайн OO и т.д., или поддержание вашего приложения станет кошмаром.

Основная причина отсутствия приема на предприятии по сравнению с .NET, Java et al. вероятно, не имеет стада консультантов, а "сертифицированные специалисты" хвастаются, что их инструмент является лучшим на Земле. Я также слышал, что Java был легко принят, потому что его синтаксис напоминал С++... это может быть не такая глупая идея, учитывая, что С# также выбрал этот маршрут.

Ответ 2

Google, как правило, использует python для многих, поэтому я предполагаю, что он готов к большому времени. Мы используем python как клей для наших продуктов, поэтому мы довольны этим.

Ответ 3

Ответ на ваш вопрос действительно сводится к тому, что вы имеете в виду, когда говорите "большое приложение". Простой ответ будет "да". Python служит основой для невероятно сложных систем, и он делает это элегантно (просто взгляните на то, насколько велики, но хорошо разработаны Twisted и Django). Однако это инструмент, как любой другой. Он содержит компромиссы производительности, которые могут или не подходят для вашего домена приложения.

Если вы хотите построить высокопроизводительный имитатор полета, который должен выполнять сложные вычисления на частоте более 1000 Гц... тогда Python, вероятно, не является правильным выбором для всего проекта. Если, с другой стороны, производительность одного процессора не является преобладающим фактором или приложение будет распространено на нескольких серверах для достижения требований к масштабируемости, Python, вероятно, будет хорошим выбором.

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

Ответ 4

Задний конец YouTube почти полностью находится на Python. Здесь - это интервью Куонг Ку Куонга, инженера-разработчика команды масштабирования YouTube, в которой подробно описываются проблемы, с которыми они столкнулись, и как они решили их. Он указывает, что скорость lanaguage почти никогда не является узким местом.

Я подозреваю, что YouTube имеет значительно более высокую нагрузку, чем бы вы ни работали.

Ответ 5

В общем, да, вы можете.

В основном я сосредоточен на веб-разработке, поэтому для примеров я могу предоставить Stack Overflow, Facebook, Amazon и т.д.

Reddit.com написано на Python. Он имеет большую пользовательскую базу и получает достаточное количество трафика и, кажется, преуспевает. Однако Reddit не использует Django.

Ответ 6

Python идеально подходит для веб-разработки. Он легкий, легкий и превосходит при склеивании других бит вместе, и работает с интерфейсами высокого уровня. Если и когда я создаю "веб-разработку", я бы больше ничего не использовал.

Update0

Это также превосходный язык для сценариев, небольших кросс-платформенных приложений и прототипирования. Он действительно начинает рушиться, когда экстремальные требования к производительности строгие. То есть, он держит вещи в большой степени. Мне также трудно реорганизовать (свойство динамической типизации) и использовать привязки к платформе. Эти вещи можно обойти (довольно просто, из-за реализации Python C и многочисленных модулей для этой цели), как и на большинстве других хороших языков.

Python - лучший язык высокого уровня, единственным языком, который он не может заменить, является C.

Ответ 8

Есть два очень важных фактора с python:

1) Прост в использовании

2) Легкий интерфейс с другими языками программирования

ФАКТОР 1

Поскольку python - это язык, который подчеркивает, простоту, удобочитаемость кода как для собственного синтаксиса, так и для библиотек, равный написанию меньшего кода. И для большого программного обеспечения это очень важно. Это просто, проще понять кем-то другим, легче отлаживать, проще перекодировать, переписывать и изменять. Легко обмениваться между командой многих людей.

ФАКТОР 2

Зачем изобретать это колесо? Вы хотите использовать библиотеку C/С++? Как насчет библиотеки Java или .NET? Python позволит вам сделать именно это и даже испортит вам, позволяя вам наслаждаться опытом, не выходя из зоны комфорта синтаксиса python. Jython, Ironpython, Cython, ctypes, pyrex и т.д. - отличные инструменты, которые делают python безграничными благодаря своим возможностям, позволяя вам кодировать во всех этих diffirent языках /frameworks/runtimes всегда с синтаксисом python. О чем еще ты можешь попросить?

В конце концов, гибкость его питона ускоряет его популярность, всегда рука об руку с простотой использования. Власть и простота использования - это огромный соблазн, который слишком трудно устоять для маленьких, больших или огромных разработчиков.

Ответ 9

Я собираюсь ответить на ваш пересмотренный вопрос о том, почему кто-то использует другой язык или стек технологий. Во-первых, я люблю Python. Отличный язык и, безусловно, имеет свои достоинства. Однако я выбираю С#/.NET как свою технологию выбора и использую Python для создания сценариев.

Да, Python как язык очень прост/чист, и время компиляции отсутствует. Тем не менее, я нахожу, что во много раз проще работать с сильно/статически типизированным языком. Причина №1 - IntelliSense (и я имею в виду GOOD IntelliSense - не удовлетворены редакторами Python в этом отношении). IntelliSense имеет огромную разницу в скорости/скорости разработки.

С# поддерживается Microsoft (лучше или хуже). В то время как h8t3rs там могут бросать камни, трудно отрицать, что у Microsoft есть технология для всего стека (рабочий стол, сервер, сеть, мобильный и т.д.), И все это очень хорошо сочетается. Я также знаю, что он поддерживается сотнями разработчиков, которые предназначены для обеспечения наилучшего возможного опыта. Я также могу пойти на множество сайтов и посмотреть видео, прочитать статьи и найти то, что мне нужно для чего угодно. Поддержка хорошая.

Я знаю, что у Python есть превосходный (и большой) набор библиотек и фреймворков, но я также ощутил определенную нехватку преемственности между различными проектами. Используйте эту стороннюю библиотеку здесь, бросьте эту стороннюю библиотеку там, используйте этот проект с открытым исходным кодом здесь... И хотя я люблю открытый исходный код, требуется гораздо больше времени для достижения качества, в котором Microsoft выпустила.

Наконец, Visual Studio - одна из самых отличных IDE, которые я когда-либо испытывал. Я знаю, что там много текстовых редакторов (я люблю тебя, VIM!), Но сложно интегрировать исходный контроль, редактирование кода, компиляцию, сборку, публикацию, тестирование и развертывание всех завернутых в самый отличный пакет.

Все это говорит о том, что Python отличен и может прекрасно работать на больших сайтах - не путайте меня. Однако существуют веские аргументы в пользу использования корпоративных технологий. Это зависит от того, какие ресурсы вам (или вашей команде) вам понадобятся, с чем вы уже знакомы и как планируете масштабироваться, когда ваше приложение будет успешным. Если вам нравится технология и библиотеки, сообщество должно ответить на сложные вопросы и может разделить ваш код таким образом, чтобы, если вам когда-либо понадобится перезаписать его, он уже разбит, тогда я говорю, что вы будете делать все отлично.

Ответ 10

Производительность - Да, конечно, для веб-интерфейсов. Узким местом производительности всегда является база данных.

Ответ 11

Фактически, Python дает вам все возможности программирования. Легкий, мощный и быстрый! Наслаждайтесь этим в большом своем проекте!