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


54

Окрім того, що роздратований у просторі пробілів як синтаксис, я не ненависник, я просто не захоплююся Python.

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


Я думаю, що насправді я намагаюся особисто продати це, я просто не можу знайти причину.


81
Я ніколи не розумію, чому люди дратуються необхідним відступом Python. Я сподіваюся, що ви все-таки збиралися відрізнити свій код, правда?
Грег Хьюгілл

10
@ GregH, звичайно, але чи повинен це мати мої синтаксиси? Наче подібні до Makefiles?
Черга Jé

5
@Xepoch: Але Makefiles не просто вимагають відступу, вони вимагають певного виду відступу, який зазвичай не відрізняється від іншого виду. Якщо Makefiles потребував будь-якого відступу пробілу, а не конкретно 0x09, ви, ймовірно, не заперечуєте та, ймовірно, буде використовувати послідовне відступ у бажаній ширині відступу. Це те саме, що дозволяє Python.
Грег Хьюгілл

31
Поезія Перла? Серйозно? Якби вам випала честь підтримувати чужий код Perl, ви зрозуміли, чому Perl впав у популярності.
grokus

6
@Greg, я з вами згоден. Я говорив це раніше, і я повторю це знову, тому, хто скаржиться на правило відступу Python, слід попросити зберегти погано відрізаний код. Просто
скажи

Відповіді:


61

Python - це добре розроблена мова з досить чистим синтаксисом, вичерпною стандартною бібліотекою, відмінною включеною документацією та сторонніми документами, широким розгортанням та безпосередньою мовою стилю «сценаріїв» (тобто, без явного кроку компіляції).


36
Добре розроблений? Ви коли-небудь помічали, що у вас є глобальна функція len?
альтернатива

65
що не так з len? У мене складається враження, що ти читав про пітон лише 5 хвилин
Кугель

5
Особисто мовна структура була настільки простою для розуміння, що дала мені краще розуміння того, як мови взагалі працюють всередині. Це дрібниці. Функції першого класу, можливість імпортувати лише відповідні частини зовнішнього модуля в поточний, розуміння списків, кортежі, включення self в параметр методу допомогло мені зрозуміти різницю між функціями та методами (інші мови просто ховаються за цукром). Мені боляче зараз використовувати такі мови, як C #, тому що я інтуїтивно знаю, що код не вчить мене, як нічого про те, як він працює всередині.
Еван Плейс

1
Як python може бути добре розробленою мовою? Він використовує дивно __double_underscore_names__, він змішується alllowercasefunctionamesз mixed_underscoreі mixedCamelCaseіменами. Це вимагає в :кінці defабо петель. Він використовує багато непарної абревіатуру str, dict, islice. Схоже, взагалі не було конвенції. Це чистий хаос. Peps, pips, zens ... це більше схоже на пітон-релігію, ніж на мову. У нього може бути кілька приємних особливостей, але це не пояснює, чому так багато людей так надто хвилюються з цього приводу. У pyhon немає нічого особливого. Просто ще один погано розроблений продукт.
t3chb0t

1
А що таке хак def? Чому я визначаю функцію з a, defа не a func? Немає жодної іншої мови, настільки неінтуїтивної, як пітон.
t3chb0t

76

Я знайшов Python як найбільш природну мову програмування, на яку я коли-небудь писав код. Я кодував багато мов до і після Python, і в більшій чи меншій мірі вам доведеться боротися з мовою, щоб змусити його робити те, що ти хочеш. Пітон масово зменшує цю боротьбу. Ерік С Реймонд сказав це набагато краще, ніж я можу в " Чому Python?"

Як пов'язаний момент, Python підтримує свою чистоту навіть при швидкому розвитку. У більшості мов, з якими я працював, впровадження нових мовних функцій вводить багато зморшок. Але з Python, навіть основні мовні особливості (декоратори приходять на думку) постійно додаються, не відчуваючи себе некрасивими хаками.


8
Прийшов сюди, щоб сказати це в основному. Синтаксис просто такий природний, він майже так, як ви пишете псевдокод.
Джеймс Девіс

2
Python є компактним: ви можете зберігати весь набір функцій (і принаймні індекс поняття його бібліотек) у своїй голові.
systempuntoout

2
@ Zoomzoom83 Мій псевдокод починається і закінчується - він не працює в python :-(
mbq

1
@mbq І у моїх псевдокодів є дужки, але це вже інша історія;)
Кріс каже, що повернути Моніку

26

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


6
C # є особливим, він має linq
Daniel Little

39
Python має за собою велику корпорацію? (справжнє запитання)
Jé Queue

11
Так, це я мав на увазі. Python був набагато менш "крутим", перш ніж Google почав захоплюватися цим.
Мейсон Уілер

10
@ Мейсон - але, безумовно, має бути якась причина, чому такий великий корпус, як Google, зробив би його "крутим"?
Жас

7
Чому люди думають, що є корпоративні спонсори python? Хтось помічав розмір pycon порівняно з величезними умовами Java / j2ee? Це історія корпоративного фінансування Девіда та Голіафа.
rox0r

11

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

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

Я думаю, що Джефф Атворд мав допис про це, але не можу його знайти. Якщо я знайду це, я оновлю цей коментар.


1
Пітон був першою мовою, яку викладали в моїй школі протягом 101 року.
Морган Херлокер

Майже в кожній мові є причина існувати і добре хоч у чомусь. На мій погляд, це просто говорить "Мені подобається, тому що це роблять інші".
NtFreX

9

У порівнянні з Ruby, яка справді крута і створює дивовижні Code Golf-offs, у Python є така основна філософія, що "повинен бути один - і бажано лише один - очевидний спосіб зробити [речі]", маючи на увазі ідіоматичний спосіб Python. Я вважав це величезною перевагою порівняно з Рубі.


4
.. або порівняно з Perl з, здавалося б, безліччю способів?
Черга Jé

@Xepoch - насправді в Perl дуже часто існує набагато менше, ніж нескінченність добрих / правильних способів робити справи, і більшість людей, які мають підказки, легко зможуть вам сказати без особливих розбіжностей, який топ 1 (або максимум 2) є. якщо ви мені не вірите, подивіться на питання Perl на ТАК. Так, деякі квести мають 10 чітких рішень. Але більшість мають чітко узгоджене рішення "найбільш правильного для обставин" рішення.
DVK

@DVK, я знаю, але дивлюся на це з метою дизайну.
Черга

8

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

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


6

По-перше, дріб'язкові вигадки на мові, як примусові відступи в Python, мало мають значення, якщо сама мова є сильно виразною та корисною. Спочатку я також був відвернутий через це, але незабаром навчився дивитись повз нього, а зараз навіть не сприймаю це як перешкоду, тому що мова мені набагато простіше працювати. Це як сигіли в змінних Perl , це нешкідлива вигадка з мови, і хтось, хто зручно розмовляє мовою, не турбує це.

Щоб зрозуміти причини, чому так багато людей вважають Python чудовим, просто спробуйте вивчити мову. Причини здебільшого такі ж, як і Perl. Мені здається, що мені подобається синтаксис в Python (наприклад, розуміння списку, синтаксис OOP тощо), але це дійсно суб'єктивно, і ваша думка може відрізнятися. Я віддаю перевагу Python для великих проектів, тоді як я все ще використовую Perl для менших сценаріїв.

І що це відповідь на ваше запитання. Ви порівнюєте Python з Perl, bash та tcl. Вся справа в тому, що це не справедливе порівняння. Такі мови, як bash, були розроблені для написання невеликих сценаріїв для автоматизації загальних завдань. Деякі люди думають, що Perl також стає непростим, якщо код стає досить великим (добре написаний Perl цього не робить, але добре написаний код важко підійти у великому проекті). IMHO Python відрізняється від інших «скриптових» мов тим, що він дуже добре підходить для великих проектів, а також для невеликих одноразових сценаріїв. Я думаю, що Рубі теж має таку ж якість.


6

Філософія того, що доброзичливий диктатор повинен нав'язувати свою ідею гарного стилю [1], свою ідею хорошого програмування, свою думку про те, як програмувати, мене дуже зриває. Я не думаю, що Ван Россум. Однак його мова чинить опір спробам висловити не-ван Россум думки. Його мислення дуже добре працює для багатьох (більшості?) Програмістів. Але я, здається, не вписуюся в його модель того, як програмувати.

Тому я вважаю, що Perl - це чудова мова.

[1] Дивіться його блог про видалення reduce.


Чи можете ви, будь ласка, пояснити свої міркування за допомогою продуманого процесу, хотіли б почути більше.
Черга Jé

3
@Xepoch - мова програмування служить засобом вираження. Ідіоми та стилі думки можна виразити в континуумі думки від «підходить» до «дуже важко підходить». Наприклад, я не думаю про розуміння списку. Їм чуже те, як я думаю про рішення проблем. Але зменшення загального Ліппа - це те, що без особливих труднощів витікає з мене. Однак у Ван Россума, очевидно, все навпаки. Java вимагає, щоб усі речі були в об'єктах. Тому стає дуже важко створювати не Java-об'єктно-орієнтовані рішення на Java. І так далі -
Пол Натан

5

Я думаю, певною мірою Python - це єдина мова програмування, яка вам коли-небудь знадобиться, якщо ви не хочете написати ядро ​​ОС. Він підходить для інтерактивного використання, випадкових хаків, системного адміністрування, наукових додатків, інструментів операційної системи, веб-додатків, GUI-додатків, вбудовування тощо тощо, портативний, безкоштовний і широко використовується. Жодна інша мова програмування на практиці не охоплює всіх цих полів. Це дійсно хороша стратегічна інвестиція для людини та компанії.


4
Тут не сумніваюся в Python, але я думаю, Perl цілком відповідає вашому опису, якщо не краще.
Черга Jé

Рубі теж дуже добре справляється з цим.
ocodo

1
Станом на 2015 рік, Python є фактичною мовою загальних цілей наукових обчислень. Все інше - це або класичний матеріал низького рівня (C, C ++, FORTRAN), конкурентоспроможний у кількох нішах (MATLAB, Mathematica, R, Julia, Lua), який використовується лише для бібліотек та інфраструктури (Java), інструментів випадкових сценаріїв (bash , Perl) або .... ну ... нічого з перерахованого.
Пол

5

З 2004 року я використовував Python для розробки:

  • GUI
  • Сценарій сцени відстеження променів із прив'язкою Python до C ++
  • Системи автоматизованого побудови крос-платформ
  • Тестові сценарії
  • Інструменти загального призначення для вирішення ваших повсякденних питань
  • Веб-сайти та веб-додатки

Ще в 2004 році Python була мовою вибору, оскільки сценарії Python є портативними для Windows, Linux та Mac з дуже невеликими модифікаціями.


4
Цитуючи коментар з іншої відповіді: "Не сумніваючись у Python тут, але я думаю, Perl цілком відповідає вашому опису, якщо не краще".
DVK

4

Для мене Python був дорогим другом. Це гідна мова сценаріїв та прототипів. Ключові речі, про які я можу придумати:

  • Чистий синтаксис, дуже спрощений і легкий для розуміння
  • Багатопарадигма, використовувати її як імперативну мову? Звичайно. OOP? Нема проблем. Він також має деякі легкі функціональні мовні особливості, наприклад, лямбда, розуміння списку тощо.
  • Для основних обчислювальних потреб він має вбудовану підтримку основних структур даних, масиву, кортежу, словника (асоціативного масиву), набору тощо.
  • Інші функції можуть зробити програміста дуже продуктивним, наприклад, набирання качок, рефлексія, метапрограмування, декоратори, генератори тощо.
  • Багата бібліотечна підтримка

лямбда розбита пітоном.
Пол Натан

@Paul Не завадило б надати посилання, щоб підкріпити свою думку.
Пьотр Доброгост

@Piotr: docs.python.org/reference/expressions.html#lambda Неможливо містити заяви. Це порушує математичну ідею анонімної функції.
Пол Натан

Чи це не означає, що лямбда не порушена?
rox0r

4

Це елегантно і дуже легко засвоїти, і коли ви ознайомитесь з основними його типами (особливо списками), ваша продуктивність не обмежує. Він ідеально підходить для алгоритмів прототипування або для запису їх на мові, що нагадує псевдокод, який, зрештою, може бути розміщений безпосередньо на машині, і це справді добре, як мова сценаріїв для виконання повторюваних завдань або виконання дратівливих операцій над файлами. Я використовую її як мову клею для того, щоб змусити підпроцеси спілкуватися між собою: не настільки потужні, як баш для легких завдань, але ШЛЯХО простіше, якщо вам потрібно зробити більше, ніж один рядок коду.

І тоді він не розрізняє функції та підпрограми, ви знаєте, що я маю на увазі.


3

Багато любителів Python, яких я бачу, щойно перейшли з оточення C та були вражені такими, як "Hello "+ "World"це є "Hello World". Тому я б сказав, що це перша мова сценаріїв, яка не зібрала езотеричну / специфічну мітку і так поширилася серед мучеників, як вогонь у засушеному лісі. І так створена мода зараз живе самостійно.


2

Повторюю питання зараз, коли я трохи менше втомився:

Python - це мова, яку я вважаю особливо придатною для завдань наукового програмування, і це одне з місць, де її популярність зростає досить сильно. Кілька причин:

  • Досить сильна підтримка спільноти означає, що є кілька потужних бібліотек, і Python працює як гідна заміна MATLAB та деяких інших популярних мов у цій галузі.
  • Він добре грає з C , коли ви робите потрібна швидкість, але часто швидкість не так вже необхідно, так витлумачено природа Пайтона не всі , що великі угоди.
  • Я виявив, що це досить доступна мова без величезної кількості того, що, для сторонніх людей, здається дивним довільним синтаксичним правилам. Досить швидко перекласти між псевдо-кодом і Python.
  • "Візьміть або залиште його". Багато наукових програм програмування не отримують великої користі від великого OOP. Деякі так і роблять. Приємно мати мову, яка легко скаче між ними.
  • Сильна міжплатформна підтримка. Тим більше, що те, з чим я працюю, рідко включає графічні інтерфейси, я можу в значній мірі розраховувати на те, що зможу відправити програму Python комусь іншому, не турбуючись про те, яку ОС вони працюють.

Це не все-таки, будь-яка, мова мов програмування, але це гідна мова "Так, я, мабуть, маю інструмент для вирішення будь-якої проблеми, що виникає", тому, мабуть, вона користується популярністю на даний момент.


Окрім усіх інших перерахованих вами пунктів, я думаю, що одним із найважливіших пунктів було "Я майже можу розраховувати на те, що зможу відправити програму Python комусь іншому, не турбуючись про те, яку ОС вони працюють." Це також дуже сприятливо, коли ви не хочете зациклюватися на типі операційної системи.
Тарік

1

Python - це дуже «веб-мова» як у доступних рамках (Django, Zope тощо), так і в легко імпортних бібліотеках, які знову охоплюють багато веб-функцій.

Для веб-розробників, які рухаються лише з набору навичок HTML, CSS + JS (анекдотично, велике джерело нових програмістів за останні кілька років), я вважаю, що це робить його дуже привабливою (ditto Ruby).

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


Java не є MS, тому якщо ваші міркування правильні, вони переходять на Java, а не на python. Має бути інша причина.
rox0r

0

Я думаю, що однією з головних причин є те, що 90% google зроблений з Python.

Однак Python - це також легка у вивченні, потужна мова програмування. Він має ефективні структури даних високого рівня та простий, але ефективний підхід до об'єктно-орієнтованого програмування. Елегантний синтаксис та динамічний набір Python разом із інтерпретованою суттю роблять його ідеальною мовою для сценаріїв та швидкого розвитку додатків у багатьох областях на більшості платформ.

Інтерпретатор Python та широка стандартна бібліотека є у вільному доступі у вихідному чи двійковому форматі для всіх основних платформ веб-сайту Python, http://www.python.org/ , і можуть розповсюджуватися вільно. Цей же сайт також містить дистрибутиви та покажчики на багато безкоштовних сторонніх модулів, програм та інструментів Python та додаткову документацію.

Інтерпретатор Python легко розширюється новими функціями та типами даних, реалізованими на C або C ++ (або інших мовах, які можна викликати з C). Python також підходить як мова розширення для налаштованих програм.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.