Какова основная причина популярности Python как языка системного и прикладного программирования? - PullRequest
5 голосов
/ 12 июля 2010

Исходя из опыта работы с корпоративными системами (например, Java и Windows) - я удивлен популярностью python как языка прототипирования и пытаюсь точно определить причину этого. Примеры включают в себя один из четырех языков, которые использует Google. Возможные причины включают в себя:

  • обеспечивает быстрое прототипирование системных приложений с использованием библиотек c ++ с использованием оболочек swig
  • построен в соответствии с четко определенной спецификацией языка
  • инновационные функции на уровне синтаксиса, обеспечивающие высокий уровень выразительности
  • очень гибкие веб-фреймворки, созданные задолго до других языков (django)

Вопрос в том, что делает его таким популярным / высоко ценимым, но чтобы дать некоторое равновесие, я приведу несколько причин, по которым оно может быть не популярным:

  • меньше поддержки инструмента
  • меньше поддержки предприятия (т. Е. Служба поддержки поставщиков)
  • низкая производительность
  • BDFL не заботится об обратной совместимости в обновлениях версий

Или это было просто лучшее в определенный момент времени (около 8 лет назад), и другие языки и структуры с тех пор догнали?

Ответы [ 5 ]

19 голосов
/ 12 июля 2010
  1. Высоко выразительный язык.Люди часто говорят: «Python работает так, как работает мой мозг».
  2. Динамическая типизация означает, что вы тратите ноль времени на компиляцию компилятора.
  3. Большая стандартная библиотека означает, что у вас часто есть инструменты, необходимые длякончики ваших пальцев.
  4. Еще более стабильная версия сторонних пакетов (PIL, Numpy, NLTK, Django) означает, что большие проблемные домены часто хорошо поддерживаются.
  5. Реализация с открытым исходным кодом означает, что вывам не нужно ругаться в службу поддержки поставщиков, вы можете сами найти ответы и получить решения от большого сообщества пользователей.
6 голосов
/ 12 июля 2010
  • обеспечивает быстрое прототипирование системных приложений с использованием библиотек c ++ с использованием оболочек swig

... Что?

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

4 голосов
/ 12 июля 2010

Я начал двенадцать лет назад, чтобы заменить мои Perl-скрипты - а новые были короче и более читабельными. Таким образом, удобочитаемость и плавность обучения были главной причиной его использования.

После версии 2 язык стал более гибким, и с ним мои потребности в программировании, и я привык делать метапрограммирование, даже не замечая этого. Чтобы понять, что я имею в виду, взгляните на примеры в документации по SQLAlchemy.

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

Команда разработчиков очень заботится о совместимости - они годами размышляют, прежде чем вводить новый синтаксис. В стандартную библиотеку попадают только зрелые модули, и Python 3 обсуждался целую вечность. Помимо средств переноса, в настоящее время действует мораторий - никаких новых возможностей для языка не менее двух лет.

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

2 голосов
/ 12 июля 2010

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

Что касается поддержки предприятий, то существуют дистрибутивы, такие как ActiveState и Enthought в зависимости от ваших потребностей.Мы используем AIX в своей повседневной работе, и хотя в какой-то момент мы использовали AS Python, стандартный дистрибутив работает очень хорошо для нас.Нам просто не нужна поддержка поставщиков.

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

И основная причина выбора Python среди других языков, которыми я регулярно пользуюсь?Это весело, и мне нравится проводить в нем время.

0 голосов
/ 15 июля 2010

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

Относительно

  • обеспечивает быстрое прототипирование системных приложений с использованием библиотек c ++ с использованием оболочек swig

На самом деле я работаю над продуктом Python для математического и статистического анализа (PyIMSL Studio), специально разработанным для решения этой проблемы, хотя мы используем ctypes вместо swig. По разным причинам многие компании используют C / C ++ в своих корпоративных приложениях. Если они хотят добавить некоторую аналитическую функциональность, то создание прототипа в Python может быть намного быстрее, чем в C. Наши библиотеки Python обертывают наши числовые библиотеки C 1: 1, поэтому, когда прототипирование выполнено, разработка продукта может быть уверена, что те же алгоритмы доступны и те же результаты будут достижимы. При переходе от очень специфичного для предметной области языка, такого как R или MATLAB, к C может быть сложнее связать этот прототип с производственным разрывом, чем с языком очень общего назначения, таким как Python.

Относительно

  • построен в соответствии с четко определенной спецификацией языка

вам следует взглянуть на публичные комментарии для предложения Комиссии по безопасности и обмену сделать Python языком, используемым в новых правилах безопасности, поддерживаемых сборкой. Некоторые люди утверждают, что Python должен , а не быть языком именно потому, что он не имеет четко определенной спецификации языка, кроме (множественных) ссылочных реализаций. Мне нравится язык, но я бы не рассматривал аспект спецификации языка как причину.

Наконец, я думаю, что есть много Pythonistas, которые хотели бы, чтобы их организация разрешила использование Python или использовала его в большей степени. Из того, что я видел, Python вкрадывается вначале для общих проектов, связанных с IT-связями, и оттуда начинает использоваться многими другими способами.

...