Почему такая популярность у Python? [закрыто]

54

Кроме того, что я раздражен пробелами как синтаксис, я не ненавистник, я просто не в восторге от Python.

Я ценю поэзию Perl и программирую красивые веб-сервисы на bash & korn и shebang gnuplot. Я пишу документы troffи не возражаю против REXX. Не нашел tcl более полезного несколько лет назад, но что в этом хорошего в Python ? Я вижу списки вакансий и многих кандидатов с этим призом и трофеем в своих резюме.


Я думаю, на самом деле, я пытаюсь лично стать проданным на этом, я просто не могу найти причину.

Xepoch
источник
81
Я никогда не понимаю, почему люди раздражаются из-за необходимости делать отступы в Python. Я надеюсь, что вы все равно собираетесь делать отступы для своего кода, верно?
Грег Хьюгилл,
10
@GregH, конечно, но будет ли мой синтаксис предписан им? Вроде как Makefiles?
Jé Queue
5
@Xepoch: Но Makefiles не просто требуют отступа, они требуют определенного вида отступа, который обычно неотличим от другого вида. Если бы Makefiles требовался какой-либо отступ для пробелов вместо конкретного 0x09, вы, вероятно, не возражали бы и, вероятно, использовали бы согласованный отступ в предпочитаемой ширине отступа. Это то же самое, что позволяет Python.
Грег Хьюгилл,
31
Поэзия Перла? Шутки в сторону? Если бы вы имели честь поддерживать Perl-код других людей, вы бы поняли, почему Perl упал в плане популярности.
Grokus
6
@ Грег, я согласен с тобой. Я говорил об этом раньше, и я скажу это снова, тех, кто жалуется на правило отступов в Python, следует попросить поддерживать код с плохим отступом. Просто
скажи

Ответы:

61

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

Грег Хьюгилл
источник
36
Хорошо продуманные? Вы когда-нибудь замечали, что у вас есть глобальная функция с именем len?
альтернатива
65
что не так с леном? У меня такое впечатление, что вы читаете о питоне только в течение 5 минут
Кугель
5
Лично структура языка была настолько проста для понимания, что она дала мне лучшее понимание того, как языки в целом работают внутри. Это мелочи. Функции первого класса, возможность импортировать только соответствующие части внешнего модуля в текущий, списки, кортежи, включение self в качестве параметра метода помогли мне понять разницу между функциями и методами (другие языки просто прячутся за сахаром). Сейчас мне больно пользоваться такими языками, как C #, потому что я интуитивно знаю, что код не учит меня тому, как он работает внутри.
Эван Плейс
1
Как Python может быть хорошо разработанным языком? Он использует странно __double_underscore_names__, он смешивается alllowercasefunctionamesс mixed_underscoreи mixedCamelCaseименами. Требуется :в конце defили петли. Он использует много нечетной аббревиатуру str, dict, islice. Похоже, что не было никакого соглашения вообще. Это чистый хаос. Peps, pips, zens ... это больше похоже на религию питона, чем на язык. У него может быть несколько приятных особенностей, но это не объясняет, почему так много людей так взволнованы по этому поводу. В Pyhon нет ничего особенного. Просто еще один плохо разработанный продукт.
t3chb0t
1
И что за хак def? Почему я определяю функцию с а, defа не с func? Нет другого языка, который был бы так не интуитивен, как питон.
t3chb0t
76

Я считаю Python самым естественным языком программирования, на котором я когда-либо писал код. Я кодировал на многих языках до и после Python, и в большей или меньшей степени вы должны бороться с этим языком, чтобы заставить его делать то, что вы хотите. Python значительно уменьшает эту борьбу. Эрик С. Рэймонд сказал, что это намного лучше, чем я, в « Почему Python?

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

оборота Чинмай Канчи
источник
8
Пришел сюда, чтобы сказать в основном это. Синтаксис кажется таким естественным, как будто вы пишете псевдокод.
Джеймс Дэвис
2
Python компактен: вы можете держать весь свой набор функций (и, по крайней мере, концептуальный индекс его библиотек) в своей голове.
Systempuntoout
2
@ Zoomzoom83 Мои псевдокоды начинаются и заканчиваются - это не работает в python :-(
mbq
1
@mbq А у моих псевдокодов есть фигурные скобки, но это уже другая история;)
Крис говорит, что восстановите Монику
26

Надеюсь, это не звучит слишком цинично, но IMO Python настолько популярен по той же причине, что и Java, C # и Objective-C. Не потому, что в самих языках есть что-то впечатляющее, а потому, что у каждого из них есть спонсор от magacorporate, способный произвести много ажиотажа, много рекламы, много библиотек и поддержку предпочитаемого языка.

Мейсон Уилер
источник
6
C # особенный, у него есть linq
Daniel Little
39
За Python стоит большая корпорация? (подлинный вопрос)
Jé Queue
11
Да, это то, что я имел в виду. Python был намного менее «крутым», прежде чем Google начал проявлять к нему такой интерес.
Мейсон Уилер
10
@ Мейсон - но, безусловно, должна быть какая-то причина, по которой такая большая корпорация, как Google, сделала бы ее "крутой"?
Jas
7
Почему люди думают, что есть корпоративные спонсоры python? Кто-нибудь заметил размер pycon по сравнению с огромными соглашениями Java / j2ee? Это история корпоративного финансирования Дэвида и Голиафа.
rox0r
11

Мой опыт показывает, что люди, которые находят истинную радость в программировании, часто ищут язык, который подходит им лучше, чем тот, который они изучали в школе или университете. По сути это означает, что они перейдут с PHP / Visual Basic / C ++ / Java / C # по умолчанию на что-то более экзотическое (бизнес / карьера), такое как Python, Ruby, Haskell и даже perl (из-за его огромной ценности хака и незаметности).

Не поймите меня неправильно, есть очень опытные программисты на C # / VB.net, которые гордятся своей работой и кодом (парни из StackOverflow - очень хороший пример), но вы не становитесь программистом на Python только потому, что это то, чему вас учили в школе; это должно быть ваше собственное решение.

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

Иво ван дер Вейк
источник
1
Python был первым языком, который преподавали в моей школе в течение 101 года.
Морган Херлокер
Почти у каждого языка есть причина для существования, и он хорош хоть в чем-то. На мой взгляд, это просто говорит: «Мне это нравится, потому что другим это нравится».
NtFreX
9

По сравнению с Ruby, который действительно крут и производит потрясающие Code Golf off-off, у Python есть основная философия: «Должен быть один - и предпочтительно только один - очевидный способ сделать [вещи]», то есть идиоматический путь Python. Я считаю, что это огромное преимущество по сравнению с Ruby.

Дэн Розенстарк
источник
4
... или по сравнению с Perl с бесконечным количеством способов?
Jé Queue
@Xepoch - на самом деле, очень часто гораздо меньше, чем бесконечность хороших / правильных способов ведения дел в Perl, и большинство людей с подсказкой легко смогут сказать вам без СЛИШКОГО большого разногласия, какой топ 1 (или максимум 2) находятся. если вы мне не верите, посмотрите на вопросы Perl о SO. Да, некоторые вопросы имеют 10 различных решений. Но большинство из них имеют четко согласованное решение «наиболее правильное по обстоятельствам».
ДВК
@DVK, я знаю, но с точки зрения дизайна.
Jé Queue
8

Я начал любить Python по той же причине, что описывает Эрик С. Рэймонд: сам процесс написания программ на Python концептуально очень похож на мысль о разработке кода в моей голове.

Благодаря тому, что я стал хорошим программистом на Python, я стал намного лучше на C #. Это значительно облегчило понимание LINQ. Я мог бы никогда не принять такой тип, как Dictionary<string, Func<T>>, или не чувствовал yield returnбы себя комфортно , если бы не использовал классы и генераторы в Python. Теперь AOP намного проще понять, когда я использовал декораторы Python. Список можно продолжить.

Роберт Россни
источник
6

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

Чтобы понять причины, по которым так много людей считают Python великолепным, просто попытайтесь выучить язык. Причины в основном те же, что и в Perl. Я нахожу, что мне нравится синтаксис в Python (например, списки, синтаксис ООП и т. Д.), Но это действительно субъективно, и ваше мнение может отличаться. Я предпочитаю Python для больших проектов, хотя я все еще использую Perl для небольших скриптов.

И это ответ на ваш вопрос. Вы сравниваете Python с Perl, Bash и Tcl. Дело в том, что это не честное сравнение. Такие языки, как bash, были разработаны для написания небольших скриптов для автоматизации общих задач. Некоторые люди думают, что Perl также становится громоздким, если код становится достаточно большим (хорошо написанный Perl - нет, но хорошо написанный код трудно найти в большом проекте). ИМХО Python отличается от других «скриптовых» языков тем, что он очень хорошо масштабируется как для больших проектов, так и для небольших одноразовых скриптов. Я думаю, что Руби также имеет то же качество.

MAK
источник
6

Философия, согласно которой Benevolent Dictator должен поддерживать его идею хорошего стиля [1], его идею хорошего программирования, его идею о том, как программировать, расстраивает меня регулярно. Я не думаю, как ван Россум. Однако его язык сопротивляется попыткам выразить мысли не ван Россума. Его мышление работает очень хорошо для многих (большинства?) Программистов. Но я, кажется, не вписываюсь в его модель программирования.

Вот почему я считаю Perl превосходным языком.

[1] Смотрите его блог об удалении reduce.

Пол Натан
источник
Не могли бы вы изложить свои рассуждения с мыслительным процессом, хотели бы услышать больше.
Jé Queue
3
@Xepoch - язык программирования служит средством выражения. Идиомы и стили мышления могут быть выражены в непрерывной мысли от «подгонки» до «очень трудно приспосабливаемой». Например, я не думаю с точки зрения понимания списка. Они чужды тому, как я думаю о решении проблем. Но сокращение Common Lisp - это то, что без особых проблем вытекает из моего сознания. Тем не менее, Ван Россум явно противоположен. Java требует, чтобы все было в объектах. Поэтому становится очень трудно создавать не объектно-ориентированные решения в Java. И так далее -
Пол Натан
5

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

Питер Айзентраут
источник
4
Не сомневаюсь в Python, но я думаю, что Perl вполне подходит под ваше описание, если не лучше.
Jé Queue
Руби тоже очень хорошо справляется с этим.
ocodo
1
С 2015 года Python является де-факто универсальным языком научных вычислений. Все остальное - это либо классические низкоуровневые вещи (C, C ++, FORTRAN), конкурентоспособные в нескольких нишах (MATLAB, Mathematica, R, Julia, Lua), используемые только для библиотек и инфраструктуры (Java), инструменты для случайных сценариев (bash). , Perl) или .... ну ... ничего из вышеперечисленного.
Пол
5

С 2004 года я использую Python для разработки:

  • ГПИ
  • Создание сценариев трассировки лучей с привязками Python к C ++
  • Кроссплатформенные автоматизированные системы сборки
  • Тестовые сценарии
  • Универсальные инструменты для решения ваших повседневных задач
  • Веб-сайты и веб-приложения

Еще в 2004 году Python был предпочтительным языком, поскольку скрипты Python переносимы на Windows, Linux и Mac с очень небольшими изменениями.

Тьерри Лам
источник
4
Цитирую комментарий из другого ответа: «Не сомневаюсь в Python здесь, но я думаю, что Perl вполне подходит под ваше описание выше, если не лучше».
ДВК
4

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

  • Чистый синтаксис, очень упрощенный и легкий для понимания
  • Мультипарадигма, использовать это как обязательный язык? Конечно. ООП? Нет проблем. Он также имеет некоторые легкие функциональные языковые функции, например лямбда, списки и т. Д.
  • Для базовых вычислительных потребностей он имеет встроенную поддержку основных структур данных, массива, кортежа, словаря (ассоциативного массива), множества и т. Д.
  • Другие функции могут сделать программиста очень продуктивным, например, утка, рефлексия, метапрограммирование, декораторы, генераторы и т. Д.
  • Богатая поддержка библиотек
оборота грокус
источник
лямбда сломана в питоне.
Пол Натан
@Paul Не мешало бы дать ссылку, подтверждающую ваше мнение.
Петр Доброгост
@Piotr : docs.python.org/reference/expressions.html#lambda Не может содержать заявления. Это нарушает математическую идею анонимной функции.
Пол Натан
Разве это не значит, что лямбда не сломана?
rox0r
4

Он элегантен и действительно прост в освоении, и как только вы ознакомитесь с его основными типами (особенно списками), ваша производительность не будет ограничена. Он идеально подходит для прототипирования алгоритмов или для написания их на языке, подобном псевдокоду, который в конечном итоге может быть помещен непосредственно на компьютер, и он действительно хорош как язык сценариев для выполнения повторяющихся заданий или выполнения раздражающих операций над файлами. Я использую его в качестве связующего языка для обеспечения взаимодействия подпроцессов друг с другом: не так мощно, как bash для некоторых простых задач, но НАСТОЛЬКО проще, если вам нужно сделать больше, чем просто одну строку кода.

И тогда он не различает функции и подпрограммы, вы понимаете, о чем я.

Лоренцо Стелла
источник
3

Многие любители Python, которых я вижу, просто перешли из среды C и были впечатлены такими вещами, как "Hello "+ "World"is "Hello World". Поэтому я бы сказал, что это первый язык сценариев, который не собирает эзотерические / специфические теги и поэтому распространяется среди мучеников, как огонь в засушливом лесу. И поэтому созданная мода теперь живет сама по себе.

МБк
источник
2

Подходя к вопросу теперь, когда я немного менее устал:

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

  • Достаточно сильная поддержка сообщества означает, что есть несколько сильных библиотек, и Python работает как достойная замена MATLAB и некоторым другим популярным языкам в этой области.
  • Он хорошо играет с C , когда вы делаете скорость нужно, но часто скорость не так уж необходима, так истолковано природа Пайтона не все , что крупные сделки.
  • Я обнаружил, что это довольно доступный язык без огромного количества того, что для посторонних ощущается странно произвольным синтаксическим правилом. Это довольно быстро переводить между псевдокодом и Python.
  • «Возьми или оставь это ООП». Многие проекты по научному программированию не получают такой большой выгоды от обширного ООП. Некоторые делают. Приятно иметь язык, который может легко переключаться между ними.
  • Сильная кроссплатформенная поддержка. Тем более, что то, с чем я редко работаю, связано с графическим интерфейсом, я могу в значительной степени рассчитывать на то, что смогу отослать программу на Python кому-то другому, не беспокоясь о том, какую ОС он использует.

Это не конец, а все языки программирования, но это приличный язык «Да, у меня, вероятно, есть инструмент для решения любой проблемы», поэтому, вероятно, сейчас он пользуется популярностью.

фомиты
источник
Помимо всех других элементов, которые вы перечислили, я думаю, что одним из наиболее важных элементов было: «Я могу в значительной степени рассчитывать на то, что смогу отослать программу Python кому-то другому, не беспокоясь о том, какую ОС он использует». Это также очень удобно, когда вы не хотите застрять с типом операционной системы.
Тарик
1

Python - это очень «webby» язык как в доступных фреймворках (Django, Zope и т. Д.), Так и в легко импортируемых библиотеках, которые снова охватывают многие веб-функции.

Я думаю, что для веб-разработчиков, которые делают переход от простого набора навыков HTML, CSS + JS (за последние несколько лет он стал большим источником новых программистов), это делает его очень привлекательным (то же самое, Ruby).

Кроме того, Google не Microsoft ....

Джон Хэдли
источник
Ява не MS, поэтому, если ваши рассуждения верны, они перешли бы на Java, а не на python. Должна быть другая причина.
rox0r
0

Я думаю, что одной из основных причин является то, что 90% Google сделан из Python.

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

Интерпретатор Python и обширная стандартная библиотека свободно доступны в исходном или двоичном виде для всех основных платформ на веб-сайте Python http://www.python.org/ и могут свободно распространяться. На этом же сайте размещены раздачи и ссылки на многие бесплатные сторонние модули Python, программы и инструменты, а также дополнительная документация.

Интерпретатор Python легко расширяется новыми функциями и типами данных, реализованными в C или C ++ (или других языках, вызываемых из C). Python также подходит в качестве языка расширения для настраиваемых приложений.

blackhat
источник