Skąd taka popularność w Pythonie? [Zamknięte]

54

Poza tym, że jestem zirytowany białą spacją jako składnią, nie nienawidzę, po prostu nie fascynuje mnie Python.

Doceniam poezję Perla i zaprogramowałem piękne serwisy internetowe w bash & korn i shebang gnuplot. Piszę dokumenty troffi nie mam nic przeciwko REXX. Nie znaleziono żadnych tcl bardziej użyteczne lat temu, ale co to za wielki smród o Pythonie ? Widzę oferty pracy i wielu kandydatów z nagrodą i trofeum w swoich życiorysach.


Chyba w rzeczywistości staram się osobiście sprzedać to, ale nie mogę znaleźć powodu.

Xepoch
źródło
81
Nigdy nie rozumiem, dlaczego ludzie denerwują się wymaganym wcięciem Pythona. Mam nadzieję, że i tak wciśniesz swój kod, prawda?
Greg Hewgill
10
@GregH, oczywiście, ale czy moja składnia będzie przez to nakazana? Coś w stylu Makefiles?
Jé Queue,
5
@Xepoch: Ale pliki Makefile nie wymagają tylko wcięcia, wymagają określonego rodzaju wcięcia, które zwykle jest nie do odróżnienia od innego rodzaju. Jeśli Makefile potrzebne żadnej białymi wcięcie zamiast konkretnie 0x09, to prawdopodobnie nie będzie sprzeciwiał i prawdopodobnie użyć spójnego wcięcia w preferowanej szerokości wcięcia. To jest to samo, na co pozwala Python.
Greg Hewgill
31
Poezja Perla? Poważnie? Jeśli miałbyś zaszczyt utrzymywać kod Perla innych ludzi, zrozumiałbyś, dlaczego Perl spadł pod względem popularności.
grokus
6
@Greg, zgadzam się z tobą. Powiedziałem to wcześniej i powiem to jeszcze raz, kto narzeka na zasadę wcięcia Pythona, powinien zostać poproszony o zachowanie źle wciętego kodu. Po prostu
powiedz

Odpowiedzi:

61

Python jest dobrze zaprojektowanym językiem z względnie czystą składnią, wszechstronną biblioteką standardową, doskonałą dołączoną dokumentacją i dokumentacją stron trzecich, szerokim wdrożeniem oraz bezpośredniością języka „skryptowego” (tj. Bez wyraźnego kroku kompilacji).

Greg Hewgill
źródło
36
Dobrze zaprojektowany? Czy zauważyłeś kiedyś, że masz funkcję globalną o nazwie len?
alternatywny
65
co jest nie tak z Len? Mam wrażenie, że czytałeś o Pythonie tylko przez 5 minut
Kugel
5
Osobiście struktura języka była tak łatwa do zrozumienia, że ​​pozwoliła mi lepiej zrozumieć, w jaki sposób języki ogólnie działają wewnętrznie. To są drobnostki. Funkcje pierwszej klasy, możliwość importowania tylko aktualnych części modułu zewnętrznego do prądu, listy ze zrozumieniem, krotki, włączenie self jako parametru metody pomogło mi zrozumieć różnicę między funkcjami i metodami (inne języki kryją się za cukrem). Boli mnie teraz używanie języków takich jak C #, ponieważ intuicyjnie wiem, że kod nie uczy mnie, jak coś w tym, jak działa wewnętrznie.
Evan Plaice,
1
Jak Python może być dobrze zaprojektowanym językiem? Wykorzystuje dziwne __double_underscore_names__, że miesza się alllowercasefunctionamesz mixed_underscorei mixedCamelCasenazwy. Wymaga :końca deflub pętli. Wykorzystuje wiele dziwnym skrótem str, dict, islice. Wygląda na to, że w ogóle nie było konwencji. To czysty chaos. Peps, pipsy, zens ... to bardziej religia python niż język. Może mieć kilka fajnych funkcji, ale nie wyjaśnia, dlaczego tak wielu ludzi jest tak podekscytowanych. W pyhon nie ma nic specjalnego. Kolejny źle zaprojektowany produkt.
t3chb0t
1
A co to jest hack def? Dlaczego definiuję funkcję za pomocą defa nie a func? Nie ma innej languague, która byłaby tak nieintuicyjna jak Python.
t3chb0t
76

Odkryłem, że Python jest najbardziej naturalnym językiem programowania, w jakim kiedykolwiek pisałem kod. Kodowałem w wielu językach przed i po Pythonie, i w większym lub mniejszym stopniu musisz walczyć z tym językiem, aby zrób to, co chcesz. Python znacznie zmniejsza tę walkę. Eric S Raymond powiedział to znacznie lepiej niż ja w Dlaczego Python?

W związku z tym Python utrzymuje swoją czystość nawet podczas szybkiej ewolucji. W większości języków, z którymi pracowałem, wprowadzenie nowych funkcji językowych powoduje wiele zmarszczek. Ale dzięki Pythonowi nawet najważniejsze funkcje językowe (przychodzą na myśl dekoratorzy) są dodawane przez cały czas, bez poczucia brzydkich włamań.

Chinmay Kanchi
źródło
8
Przybyłem tutaj, aby powiedzieć w zasadzie to. Składnia wydaje się tak naturalna, że ​​prawie piszemy pseudokod.
James Davies,
2
Python jest kompaktowy: możesz trzymać cały zestaw funkcji (i przynajmniej indeks koncepcji jego bibliotek) w swojej głowie.
systempuntoout
2
@ Zoomzoom83 Moje pseudokody zaczynają się i kończą - to nie działa w pythonie :-(
mbq
1
@mbq A moje pseudokody mają nawiasy klamrowe, ale to już inna historia;)
Chris mówi Przywróć Monikę
26

Mam nadzieję, że nie brzmi to zbyt cynicznie, ale Python IMO jest tak popularny z tego samego powodu, dla którego są Java, C # i Objective-C. Nie dlatego, że w samych językach jest coś spektakularnego, ale dlatego, że każdy z nich ma sponsora dla korporacji, który jest w stanie wygenerować dużo szumu, dużo reklam, a także wiele bibliotek i wsparcie dla ich preferowanego języka.

Mason Wheeler
źródło
6
C # jest wyjątkowy, ma linq
Daniel Little
39
Python ma za sobą dużą korporację? (prawdziwe pytanie)
Jé Queue
11
Tak, o to mi chodziło. Python był o wiele mniej „fajny”, zanim Google zaczął się nim tak interesować.
Mason Wheeler,
10
@Mason - ale z pewnością musi istnieć jakiś powód, dla którego duża korporacja, taka jak Google, sprawiłaby, że byłaby „fajna”?
Jas
7
Dlaczego ludzie myślą, że są korporacyjni sponsorzy Pythona? Czy ktoś zauważył rozmiar pycon w porównaniu z ogromnymi konwencjami Java / j2ee? To historia Dawida i Goliata dotycząca finansowania przedsiębiorstw.
rox0r,
11

Z mojego doświadczenia wynika, że ​​ludzie, którzy czerpią prawdziwą radość z programowania, często szukają języka, który im odpowiada, lepiej niż nauczył się w szkole lub na uniwersytecie. Zasadniczo oznacza to, że przejdą z domyślnego PHP / Visual Basic / C ++ / Java / C # do czegoś bardziej egzotycznego (biznesowego / zawodowego), takiego jak Python, Ruby, Haskell, a nawet Perl (z powodu jego ogromnej wartości włamań i niejasności).

Nie zrozum mnie źle, są bardzo doświadczeni programiści C # / VB.net, którzy są dumni i radują się ze swojej pracy i kodu (faceci StackOverflow są bardzo dobrym przykładem), ale nie zostajesz programistą pythonowym tylko dlatego, że tego nauczyli cię w szkole; to musi być twoja własna decyzja.

Myślę, że Jeff Atwoord miał na ten temat post na blogu, ale nie mogę go znaleźć. Jeśli go znajdę, zaktualizuję ten komentarz.

Ivo van der Wijk
źródło
1
Python był pierwszym językiem nauczanym w mojej szkole dla 101.
Morgan Herlocker
Prawie każdy język ma powód do istnienia i jest dobry przynajmniej w czymś. Moim zdaniem mówi to po prostu „Lubię to, bo inni to robią”.
NtFreX
9

W porównaniu z Ruby, który jest naprawdę fajny i daje niesamowite gry w golfa, Python ma tę podstawową filozofię: „Powinien być jeden - a najlepiej tylko jeden - oczywisty sposób na zrobienie [rzeczy]”, co oznacza idiomatyczny sposób Pythona. Przekonałem się, że jest to ogromna zaleta w porównaniu do Ruby.

Dan Rosenstark
źródło
4
.. lub w porównaniu do Perla z pozornie nieskończoną liczbą sposobów?
Jé Queue
@Xepoch - w rzeczywistości bardzo często jest dużo mniej niż nieskończenie wiele dobrych / poprawnych sposobów działania w Perlu, a większość osób ze wskazówkami z łatwością będzie w stanie powiedzieć TOO bez większego braku zgody co do pierwszego (lub najwyżej 2) są. jeśli mi nie wierzysz, spójrz na pytania Perla w SO. Tak, niektóre zapytania mają 10 różnych rozwiązań. Ale większość ma jasno uzgodnione rozwiązanie „najbardziej odpowiednie dla okoliczności”.
DVK
@DVK, wiem, ale patrząc na to z celu projektowego.
Jé Queue
8

Zacząłem kochać Pythona z tego samego powodu, który opisuje Eric S. Raymond: pisanie programów w Pythonie jest koncepcyjnie bardzo podobne do myślenia o projektowaniu kodu w mojej głowie.

Nauka bycia dobrym programistą Python uczyniła mnie znacznie lepszym programistą C #. Na przykład znacznie ułatwiło zrozumienie LINQ. Mógłbym nigdy nie zaakceptować takiego typu Dictionary<string, Func<T>>, ani nie poczułbym się swobodnie yield return, gdybym nie używał klas i generatorów w Pythonie. AOP jest teraz o wiele łatwiejsze do zrozumienia, kiedy używałem dekoratorów Python. I tak dalej.

Robert Rossney
źródło
6

Po pierwsze, drobne dziwactwa językowe, takie jak wymuszone wcięcia w Pythonie, nie mają większego znaczenia, jeśli sam język jest niezwykle wyrazisty i użyteczny. Początkowo byłem z tego powodu odwrócony, ale wkrótce nauczyłem się patrzeć za nią, a teraz nawet nie czuję jej jako przeszkody, ponieważ język jest dla mnie o wiele łatwiejszy do pracy. Jest jak sigile w zmiennych w Perlu , jest nieszkodliwym dziwactwem językowym i nikomu, kto dobrze zna ten język, nie będzie mu to przeszkadzać.

Aby zrozumieć powody, dla których tak wiele osób uważa, że ​​Python jest świetny, po prostu spróbuj nauczyć się języka. Powody są w większości takie same jak w Perlu. Uważam, że podoba mi się składnia w Pythonie (np. Listy, składnia OOP itp.), Ale to jest naprawdę subiektywne i twoja opinia może się różnić. Wolę Python dla większych projektów, podczas gdy wciąż używam Perla do mniejszych skryptów.

I to jest odpowiedź na twoje pytanie. Porównujesz Python do Perla, bash i tcl. Chodzi o to, że nie jest to uczciwe porównanie. Języki takie jak bash zostały zaprojektowane do pisania małych skryptów w celu automatyzacji typowych zadań. Niektórzy uważają, że Perl również staje się nieporęczny, jeśli kod staje się wystarczająco duży (dobrze napisany Perl nie, ale dobrze napisany kod jest trudny do zdobycia w dużym projekcie). IMHO Python różni się od innych języków „skryptowych” tym, że bardzo dobrze skaluje się zarówno do dużych projektów, jak i małych jednorazowych skryptów. Myślę, że Ruby ma tę samą jakość.

MAK
źródło
6

Filozofia, że ​​życzliwy dyktator powinien egzekwować swoją ideę dobrego stylu [1], swoją ideę dobrego programowania, jego ideę programowania, frustruje mnie regularnie. Nie myślę jak van Rossum. Jednak jego język sprzeciwia się próbom wyrażania myśli innych niż van Rossum. Jego myślenie działa naprawdę dobrze dla wielu (większości?) Programistów. Ale wydaje mi się, że nie pasuje do jego modelu programowania.

Dlatego uważam, że Perl jest lepszym językiem.

[1] Zobacz jego blog na temat usuwania reduce.

Paul Nathan
źródło
czy możesz wyjaśnić swoje rozumowanie w procesie myślowym, chciałbyś usłyszeć więcej.
Jé Queue
3
@Xepoch - język programowania służy jako środek wyrazu. Idiomy i style myślenia można wyrazić w kontinuum myśli od „dopasowań” do „bardzo trudnych do dopasowania”. Na przykład nie myślę o kategoriach. Są obce temu, co myślę o rozwiązaniu problemów. Ale redukcja Common Lisp jest czymś, co wypływa mi z głowy bez większych trudności. Jednak van Rossum jest wyraźnie odwrotny. Java wymaga, aby wszystkie rzeczy były w obiektach. Bardzo trudno jest więc tworzyć rozwiązania nie zorientowane obiektowo w Javie. I tak dalej -
Paul Nathan
5

Myślę, że do pewnego stopnia Python jest jedynym językiem programowania, jakiego kiedykolwiek potrzebujesz, chyba że chcesz napisać jądro systemu operacyjnego. Nadaje się do użytku interaktywnego, losowych włamań, administracji systemu, aplikacji naukowych, narzędzi systemu operacyjnego, aplikacji internetowych, aplikacji GUI, osadzania itp. Itp. Jest przenośny, bezpłatny i szeroko stosowany. Żaden inny język programowania tak naprawdę nie obejmuje wszystkich tych dziedzin w praktyce. To naprawdę dobra inwestycja strategiczna dla osoby i firmy.

Peter Eisentraut
źródło
4
Nie wątpię tutaj w Pythona, ale myślę, że Perl pasuje do twojego opisu powyżej całkiem dobrze, jeśli nie lepiej.
Jé Queue
Ruby też dobrze sobie z tym radzi.
ocodo
1
Począwszy od 2015 r. Python jest de facto uniwersalnym językiem obliczeń naukowych. Cała reszta to albo klasyczne rzeczy niskiego poziomu (C, C ++, FORTRAN), konkurencyjne w kilku niszach (MATLAB, Mathematica, R, Julia, Lua), używane tylko w bibliotekach i infrastrukturze (Java), losowe narzędzia skryptowe (bash , Perl) lub ... cóż ... żadne z powyższych.
Paul
5

Od 2004 roku używam Pythona do opracowywania:

  • GUI
  • Skryptowe sceny ray tracera z powiązaniami Pythona z C ++
  • Zautomatyzowane systemy kompilacji między platformami
  • Skrypty testowe
  • Narzędzia ogólnego przeznaczenia do rozwiązywania codziennych problemów
  • Witryny i aplikacje internetowe

W 2004 roku Python był wybranym językiem, ponieważ skrypty Pythona są przenośne w systemach Windows, Linux i Mac z niewielkimi modyfikacjami.

Thierry Lam
źródło
4
Cytując komentarz z innej odpowiedzi: „Nie wątpię tutaj w Pythona, ale myślę, że Perl pasuje do twojego opisu powyżej całkiem dobrze, jeśli nie lepiej”.
DVK
4

Dla mnie Python jest drogim przyjacielem. To przyzwoity język skryptowy i prototypowy. Kluczowe rzeczy, o których mogę myśleć to:

  • Czysta składnia, bardzo uproszczona i łatwa do zrozumienia
  • Multi-paradygmat, użyć go jako języka imperatywnego? Pewnie. OOP? Nie ma problemu. Ma również pewne lekkie funkcje języka, np. Lambda, listy, itp.
  • Do podstawowych potrzeb obliczeniowych ma natywną obsługę podstawowych struktur danych, macierzy, krotki, słownika (macierzy asocjacyjnej), zestawu itp.
  • Inne funkcje mogą uczynić programistę bardzo wydajnym, np. Pisanie kaczek, odbicie, metaprogramowanie, dekoratory, generatory itp.
  • Bogata obsługa bibliotek
grokus
źródło
lambda jest rozbita na pytona.
Paul Nathan
@Paul Nie zaszkodzi podać link do kopii zapasowej swojej opinii.
Piotr Dobrogost
@Piotr: docs.python.org/reference/expressions.html#lambda Nie może zawierać instrukcji. To narusza matematyczną ideę anonimowej funkcji.
Paul Nathan
Czy to nie znaczy, że lambda jest nieprzerwana?
rox0r,
4

Jest elegancki i bardzo łatwy do nauczenia, a kiedy znasz jego podstawowe typy (zwłaszcza listy), Twoja produktywność nie ma granic. Jest idealny do algorytmów prototypowych lub do pisania ich w języku pseudokodowym, który może ostatecznie umieścić bezpośrednio na maszynie, i jest naprawdę dobry jako język skryptowy do wykonywania powtarzalnych zadań lub wykonywania irytujących operacji na plikach. Używam go jako języka kleju do komunikacji między podprocesami: nie tak potężnego jak bash dla niektórych łatwych zadań, ale ZNACZNIE łatwiej, jeśli potrzebujesz zrobić więcej niż tylko jedną linię kodu.

A potem nie rozróżnia funkcji i podprogramów, wiesz o co mi chodzi.

Lorenzo Stella
źródło
3

Wielu miłośników Pythona właśnie przestawiło się z otoczenia C i byli pod wrażeniem rzeczy takich jak "Hello "+ "World"is "Hello World". Powiedziałbym więc, że jest to pierwszy język skryptowy, który nie zbiera ezoterycznych / specyficznych znaczników i rozprzestrzenia się wśród męczenników, takich jak ogień w wysuszonym lesie. I tak stworzona moda żyje teraz sama.

mbq
źródło
2

Ponownie podchodzę do pytania, kiedy jestem już trochę mniej zmęczony:

Python jest językiem, który uważam za szczególnie odpowiedni do naukowych zadań programistycznych, co jest jednym z miejsc, w których jego popularność rośnie dość mocno. Kilka powodów, dla których:

  • Dość silne wsparcie społeczności oznacza, że ​​istnieją pewne silne biblioteki, a Python działa jako porządny zamiennik MATLAB i niektórych innych popularnych języków w tej dziedzinie.
  • Odgrywa również z C kiedy zrobić trzeba prędkość, ale często prędkość nie jest naprawdę konieczne, tak interpretować charakter Pythona nie jest wcale tak wielkiego.
  • Odkryłem, że jest to dość przystępny język bez ogromnej liczby tego, co dla osób postronnych wydaje się dziwnie arbitralne reguły składniowe. Tłumaczenie między pseudo-kodem a Pythonem jest dość szybkie.
  • „Weź lub zostaw to OOP”. Wiele projektów z zakresu programowania naukowego nie korzysta w tak dużym stopniu z rozległego OOP. Niektórzy. Fajnie jest mieć język, który łatwo przeskakuje między nimi.
  • Silne wsparcie dla wielu platform. Zwłaszcza, że ​​to, z czym pracuję rzadko obejmuje GUI, mogę w zasadzie polegać na tym, że mogę wysłać program Python do kogoś innego, nie martwiąc się o to, z jakiego systemu operacyjnego korzystają.

To nie jest koniec wszystkich języków programowania, ale jest to przyzwoity język „Tak, prawdopodobnie mam narzędzie do rozwiązania wszelkich problemów”, dlatego prawdopodobnie cieszy się obecnie popularnością.

Fomite
źródło
Oprócz wszystkich innych elementów, które wymieniłeś, myślę, że jednym z najważniejszych elementów było: „Mogę w zasadzie polegać na tym, że mogę wysłać program Python do kogoś innego, nie martwiąc się o to, jaki system operacyjny działa”. Jest to również bardzo korzystne, gdy nie chcesz utknąć w systemie operacyjnym.
Tarik
1

Python jest językiem bardzo „webby” zarówno w dostępnych frameworkach (Django, Zope itp.), Jak iw łatwych do importowania bibliotekach, które ponownie obejmują wiele funkcji internetowych.

Dla twórców stron internetowych, którzy odeszli od zestawu umiejętności HTML, CSS + JS (anegdotycznie duże źródło nowych programistów w ciągu ostatnich kilku lat), myślę, że dzięki temu jest to bardzo atrakcyjna propozycja (podobnie jak Ruby).

Ponadto Google nie jest Microsoft ....

Jon Hadley
źródło
Java nie jest MS, więc jeśli twoje rozumowanie jest poprawne, przeniosą się na Javę, a nie Python. Musi być inny powód.
rox0r,
0

Myślę, że jednym z głównych powodów jest to, że 90% google pochodzi z Pythona.

Jednak Python jest również łatwym do nauczenia się, potężnym językiem programowania. Ma wydajne struktury danych wysokiego poziomu i proste, ale skuteczne podejście do programowania obiektowego. Elegancka składnia i dynamiczne pisanie w Pythonie, wraz z jego interpretowaną naturą, sprawiają, że jest to idealny język do tworzenia skryptów i szybkiego tworzenia aplikacji w wielu obszarach na większości platform.

Interpreter języka Python i obszerna biblioteka standardowa są bezpłatnie dostępne w formie źródłowej lub binarnej dla wszystkich głównych platform ze strony internetowej Python, http://www.python.org/ i mogą być swobodnie dystrybuowane. Ta sama witryna zawiera także dystrybucje i wskaźniki do wielu bezpłatnych modułów, programów i narzędzi Pythona innych firm oraz dodatkową dokumentację.

Interpreter języka Python można łatwo rozszerzyć o nowe funkcje i typy danych zaimplementowane w C lub C ++ (lub innych językach wywoływanych z C). Python nadaje się również jako język rozszerzeń dla dostosowywalnych aplikacji.

blackhat
źródło