Mengapa popularitas seperti itu dengan Python? [Tutup]

54

Selain kesal di whitespace sebagai sintaks, saya bukan pembenci, saya hanya tidak mendapatkan daya tarik dengan Python.

Saya menghargai puisi Perl, dan telah memprogram layanan web yang indah di bash & korn, dan shebang gnuplot. Saya menulis dokumen troffdan tidak keberatan REXX. Tidak menemukan tcl lagi yang berguna bertahun-tahun lalu, tapi apa masalah besar tentang Python ? Saya melihat daftar pekerjaan dan banyak kandidat dengan ini sebagai hadiah & trofi di resume mereka.


Saya kira pada kenyataannya, saya mencoba untuk secara pribadi dijual pada ini, saya hanya tidak dapat menemukan alasan.

Xepoch
sumber
81
Saya tidak pernah mengerti mengapa orang-orang kesal pada indentasi yang diminta Python. Saya harap Anda akan membuat indentasi kode Anda, kan?
Greg Hewgill
10
@ Greg, tentu saja, tetapi apakah sintaksis saya akan dimandatkan olehnya? Jenis seperti Makefiles?
Jé Queue
5
@ Xepoch: Tetapi Makefile tidak hanya membutuhkan indentasi, mereka juga memerlukan jenis indentasi tertentu yang biasanya tidak dapat dibedakan dari indentifikasi lainnya. Jika Makefiles dibutuhkan setiap spasi indent bukan khusus 0x09, Anda mungkin tidak akan keberatan dan mungkin akan menggunakan Indentasi konsisten lebar indent pilihan Anda. Ini adalah hal yang sama yang diizinkan Python.
Greg Hewgill
31
Puisi Perl? Serius? Jika Anda mendapat kehormatan mempertahankan kode Perl orang lain, Anda akan mengerti mengapa Perl telah jatuh dalam hal popularitas.
grokus
6
@ Greg, saya setuju dengan Anda. Saya mengatakan ini sebelumnya dan saya akan mengatakannya lagi, siapa pun yang mengeluh tentang aturan lekukan Python harus diminta untuk mempertahankan kode lekukan yang buruk. Katakan saja ...
grokus

Jawaban:

61

Python adalah bahasa yang dirancang dengan baik dengan sintaksis yang cukup bersih, pustaka standar yang komprehensif, dokumentasi pihak ketiga yang sangat baik disertakan, penyebaran luas, dan kedekatan bahasa gaya "scripting" (mis. Tidak ada langkah kompilasi eksplisit).

Greg Hewgill
sumber
36
Didesain dengan baik? Pernah memperhatikan bahwa Anda memiliki fungsi global yang disebut len?
alternatif
65
apa yang salah dengan len? Saya mendapat kesan Anda hanya membaca tentang python selama 5 menit
Kugel
5
Secara pribadi, struktur bahasa sangat sederhana untuk dipahami sehingga memberi saya pemahaman yang lebih baik tentang bagaimana bahasa pada umumnya bekerja secara internal. Ini hal-hal kecil. Fungsi kelas satu, kemampuan untuk mengimpor hanya bagian yang relevan dari modul eksternal ke dalam arus, pemahaman daftar, tupel, dimasukkannya diri sebagai parameter metode membantu saya memahami perbedaan antara fungsi dan metode (bahasa lain hanya bersembunyi di balik gula). Sangat menyakitkan saya untuk menggunakan bahasa seperti C # sekarang karena saya tahu secara intuitif bahwa kode tidak mengajari saya bagaimana cara kerjanya secara internal.
Evan Plaice
1
Bagaimana python bisa menjadi bahasa yang dirancang dengan baik? Ini menggunakan aneh __double_underscore_names__, bercampur alllowercasefunctionamesdengan mixed_underscoredan mixedCamelCasenama. Itu membutuhkan :pada akhir defatau loop. Ini menggunakan banyak singkatan yang aneh str, dict, islice. Sepertinya tidak ada konvensi sama sekali. Ini benar-benar kekacauan. Peps, pips, zens ... lebih seperti agama python daripada bahasa. Ini mungkin memiliki beberapa fitur bagus tetapi tidak menjelaskan mengapa begitu banyak orang yang terlalu bersemangat tentangnya. Tidak ada yang istimewa tentang pyhon. Hanya produk yang dirancang dengan buruk.
t3chb0t
1
Dan apa retas itu def? Mengapa saya mendefinisikan fungsi dengan a defdan bukan func? Tidak ada bahasa lain yang tidak intuitif seperti python.
t3chb0t
76

Saya telah menemukan Python sebagai bahasa pemrograman paling alami yang pernah saya tulis kode. Saya telah mengkodekan dalam banyak bahasa sebelum dan sesudah Python, dan pada tingkat yang lebih besar atau lebih kecil, Anda harus berjuang melawan bahasa untuk mendapatkannya untuk melakukan apa yang Anda inginkan. Python mengurangi perjuangan ini secara besar-besaran. Eric S Raymond mengatakan itu jauh lebih baik daripada yang saya dapat di Why Python?

Sebagai titik terkait, Python mempertahankan kebersihannya bahkan saat berevolusi dengan cepat. Di sebagian besar bahasa yang saya gunakan, pengenalan fitur bahasa baru menimbulkan banyak kerutan. Tetapi dengan Python, bahkan fitur bahasa utama (penghias datang ke pikiran) ditambahkan setiap saat, tanpa merasa seperti peretasan yang buruk.

Chinmay Kanchi
sumber
8
Datang ke sini untuk mengatakan pada dasarnya ini. Sintaksnya terasa sangat alami, hampir seperti Anda menulis kodesemu.
James Davies
2
Python kompak: Anda dapat menahan seluruh rangkaian fitur (dan setidaknya indeks konsep pustaka) di kepala Anda.
systempuntoout
2
@ Zoomzoom83 pseudocodes saya telah dimulai dan berakhir - itu tidak berfungsi dengan python :-(
mbq
1
@mbq Dan pseudocodes saya memiliki kawat gigi, tapi itu cerita lain;)
Chris mengatakan Reinstate Monica
26

Saya harap ini tidak terdengar terlalu sinis, tetapi IMO Python sangat populer untuk alasan yang sama persis seperti Java, C # dan Objective-C. Bukan karena ada sesuatu yang spektakuler tentang bahasa itu sendiri, tetapi karena mereka masing-masing mendapat sponsor perusahaan yang mampu menghasilkan banyak hype, banyak iklan, dan banyak perpustakaan dan dukungan untuk bahasa pilihan mereka.

Mason Wheeler
sumber
6
C # spesial, ia memiliki linq
Daniel Little
39
Python memiliki perusahaan besar di belakangnya? (pertanyaan asli)
Jé Queue
11
Ya, itulah yang saya maksud. Python jauh lebih sedikit "keren" sebelum Google mulai tertarik padanya.
Mason Wheeler
10
@ Alasan - tapi tentu saja, pasti ada alasan mengapa perusahaan besar seperti Google akan membuatnya "keren"?
Jas
7
Mengapa orang berpikir ada sponsor perusahaan python? Adakah yang memperhatikan ukuran pycon versus konvensi Java / j2ee yang besar? Ini adalah kisah David dan Goliath tentang pendanaan perusahaan.
rox0r
11

Pengalaman saya adalah bahwa orang-orang yang menemukan kebahagiaan sejati dalam pemrograman sering mencari bahasa yang lebih cocok untuk mereka daripada apa yang mereka pelajari di sekolah atau universitas. Pada dasarnya ini berarti bahwa mereka akan beralih dari PHP default / Visual Basic / C ++ / Java / C # ke sesuatu yang lebih eksotis (bisnis / karir) seperti Python, Ruby, Haskell dan bahkan perl (karena itu nilai hack yang sangat besar dan ketidakjelasan).

Jangan salah paham, ada programmer C # / VB.net yang sangat berpengalaman yang sangat bangga dan gembira dalam pekerjaan dan kode mereka (orang-orang StackOverflow adalah contoh yang sangat baik), tetapi Anda tidak menjadi programmer python hanya karena itulah yang mereka ajarkan di sekolah; itu harus menjadi keputusan Anda sendiri.

Saya pikir Jeff Atwoord memiliki posting blog tentang ini, tetapi saya tidak dapat menemukannya. Jika saya menemukannya saya akan memperbarui komentar ini.

Ivo van der Wijk
sumber
1
Python adalah bahasa pertama yang diajarkan di sekolah saya untuk 101.
Morgan Herlocker
Hampir setiap bahasa memiliki alasan untuk eksis dan baik setidaknya pada sesuatu. Menurut pendapat saya ini hanya mengatakan "Saya suka karena orang lain melakukannya".
NtFreX
9

Dibandingkan dengan Ruby, yang benar-benar keren dan menghasilkan Golf-off Code yang luar biasa, Python memiliki filosofi inti bahwa "Seharusnya ada satu - dan lebih disukai hanya satu - cara yang jelas untuk melakukan [hal-hal]," yang berarti cara Python idiomatis. Saya telah menemukan ini menjadi keuntungan besar dibandingkan dengan Ruby.

Dan Rosenstark
sumber
4
..atau dibandingkan dengan Perl dengan cara yang tampaknya tak terbatas?
Jé Queue
@ Xepoch - sebenarnya, sering kali jauh lebih sedikit daripada tak terbatas cara yang baik / benar dalam melakukan sesuatu di Perl, dan kebanyakan orang dengan petunjuk akan dengan mudah dapat memberi tahu Anda tanpa TERLALU banyak perbedaan pendapat tentang apa yang menjadi top 1 (atau paling banyak 2) adalah. jika Anda tidak percaya, lihat pertanyaan Perl di SO. Ya, beberapa pertanyaan memiliki 10 solusi berbeda. Tetapi sebagian besar memiliki solusi "paling tepat untuk keadaan" yang telah disepakati.
DVK
@DVK, saya tahu, tetapi melihatnya dari tujuan desain.
Jé Queue
8

Saya mulai menyukai Python karena alasan yang sama seperti yang dijelaskan Eric S. Raymond: tindakan menulis program dengan Python secara konseptual sangat mirip dengan memikirkan tindakan merancang kode di kepala saya.

Belajar menjadi programmer Python yang baik membuat saya menjadi programmer C # yang jauh lebih baik. Itu membuat memahami LINQ jauh lebih mudah, misalnya. Saya mungkin tidak akan pernah menggunakan tipe suka Dictionary<string, Func<T>>, atau merasa nyaman menggunakan yield return, jika saya tidak menggunakan kelas dan generator dengan Python. AOP jauh lebih mudah dipahami sekarang karena saya telah menggunakan dekorator Python. Daftarnya berlanjut.

Robert Rossney
sumber
6

Pertama, kebiasaan bahasa yang sepele seperti lekukan paksa dalam Python tidak banyak berarti jika bahasa itu sendiri sangat ekspresif dan bermanfaat. Saya juga pada awalnya ditolak karena itu, tetapi segera belajar untuk melewatinya dan sekarang bahkan tidak merasakannya sebagai penghalang, karena bahasa ini jauh lebih mudah bagi saya untuk bekerja. Ini seperti sigils dalam variabel di Perl , kekhasan bahasa yang tidak berbahaya dan siapa pun yang nyaman dalam bahasa tersebut tidak merasa terganggu olehnya.

Untuk memahami alasan mengapa banyak orang berpikir Python hebat, coba saja dan pelajari bahasanya. Alasannya kebanyakan sama dengan Perl. Saya menemukan saya suka sintaks dalam Python (mis daftar pemahaman, sintaksis OOP, dll), tapi itu benar-benar subjektif dan pendapat Anda mungkin berbeda. Saya lebih suka Python untuk proyek yang lebih besar, sementara saya masih menggunakan Perl untuk skrip yang lebih kecil.

Dan itu adalah jawaban untuk pertanyaan Anda. Anda membandingkan Python dengan Perl, bash dan tcl. Masalahnya adalah itu bukan perbandingan yang adil. Bahasa seperti bash dirancang untuk menulis skrip kecil untuk mengotomatiskan tugas umum. Beberapa orang berpikir Perl juga menjadi sulit jika kode menjadi cukup besar (Perl tidak ditulis dengan baik, tetapi kode yang ditulis dengan baik sulit didapat dalam proyek besar). IMHO Python berbeda dari bahasa-bahasa 'scripting' lainnya dalam hal skala yang sangat baik untuk proyek-proyek besar serta skrip satu kali kecil. Saya pikir Ruby juga memiliki kualitas yang sama.

MAK
sumber
6

Filosofi bahwa Diktator Kebajikan harus menegakkan idenya tentang gaya yang baik [1], idenya tentang pemrograman yang baik, idenya tentang cara memprogram membuat saya frustrasi secara teratur. Saya tidak berpikir seperti van Rossum. Namun, bahasanya menentang upaya untuk mengekspresikan pemikiran non-van Rossum. Pemikirannya bekerja sangat baik untuk banyak programmer (kebanyakan?). Tapi sepertinya saya tidak cocok dengan model programnya.

Itu sebabnya saya percaya Perl adalah bahasa yang unggul.

[1] Lihat blognya tentang menghapus reduce.

Paul Nathan
sumber
dapatkah Anda menjelaskan alasan Anda dengan proses pemikiran, ingin mendengar lebih banyak.
Jé Queue
3
@Xepoch - bahasa pemrograman berfungsi sebagai alat ekspresi. Idiom dan gaya berpikir dapat diekspresikan dalam rangkaian pemikiran dari 'cocok' menjadi 'sangat sulit untuk cocok'. Sebagai contoh, saya tidak berpikir tentang pengertian daftar. Mereka asing dengan cara saya berpikir tentang solusi masalah. Tetapi pengurangan Common Lisp adalah sesuatu yang mengalir tanpa kesulitan signifikan dari pikiran saya. Namun, van Rossum ternyata sebaliknya. Java mengharuskan semua benda berada di objek. Jadi menjadi sangat sulit untuk membuat solusi non-berorientasi objek di Jawa. Dan seterusnya -
Paul Nathan
5

Saya pikir sedikit banyak Python adalah satu-satunya bahasa pemrograman yang Anda perlukan, kecuali jika Anda ingin menulis kernel OS. Sangat cocok untuk penggunaan interaktif, peretasan acak, administrasi sistem, aplikasi ilmiah, alat sistem operasi, aplikasi web, aplikasi GUI, penyematan, dll., Ini portabel, gratis, dan banyak digunakan. Tidak ada bahasa pemrograman lain yang benar-benar mencakup semua bidang dalam praktek. Ini adalah investasi strategis yang sangat baik untuk seseorang dan perusahaan.

Peter Eisentraut
sumber
4
Tidak meragukan Python di sini, tapi saya pikir Perl cocok dengan deskripsi Anda di atas dengan baik jika tidak lebih baik.
Jé Queue
Ruby juga sangat baik dalam hal ini.
ocodo
1
Pada 2015, Python adalah bahasa tujuan umum dari komputasi ilmiah. Yang lainnya adalah barang tingkat rendah klasik (C, C ++, FORTRAN), kompetitif di beberapa ceruk (MATLAB, Mathematica, R, Julia, Lua), digunakan untuk perpustakaan dan infrastruktur saja (Jawa), alat skrip acak (bash , Perl) atau .... yah ... tidak ada yang di atas.
Paul
5

Sejak 2004, saya menggunakan Python untuk mengembangkan:

  • GUI
  • Scripting pelacak adegan adegan dengan binding Python ke C ++
  • Sistem pembangunan otomatis lintas platform
  • Skrip uji
  • Alat tujuan umum untuk menyelesaikan masalah sehari-hari Anda
  • Situs web dan aplikasi web

Kembali pada tahun 2004, Python adalah bahasa pilihan karena skrip Python portabel di Windows, Linux dan Mac dengan sedikit modifikasi.

Thierry Lam
sumber
4
Mengutip komentar dari jawaban yang berbeda: "Tidak meragukan Python di sini, tapi saya pikir Perl cocok dengan deskripsi Anda di atas dengan baik jika tidak lebih baik".
DVK
4

Bagi saya Python telah menjadi teman baik. Ini adalah bahasa scripting dan prototipe yang layak. Hal-hal kunci yang dapat saya pikirkan adalah:

  • Sintaksis bersih, sangat sederhana dan mudah dimengerti
  • Multi-paradigma, gunakan itu sebagai bahasa imperatif? Tentu. OOP? Tidak masalah. Ini juga memiliki beberapa fitur bahasa fungsional ringan, misalnya lambda, daftar pemahaman, dll.
  • Untuk kebutuhan komputasi dasar, ia memiliki dukungan asli untuk struktur data penting, array, tuple, kamus (array asosiatif), set, dll.
  • Fitur lain dapat membuat programmer sangat produktif, misalnya mengetik bebek, refleksi, pemrograman meta, dekorator, generator, dll.
  • Dukungan perpustakaan yang kaya
grokus
sumber
lambda rusak dengan python.
Paul Nathan
@ Paul Tidak ada salahnya memberikan tautan untuk mendukung pendapat Anda.
Piotr Dobrogost
@Piotr: docs.python.org/reference/expressions.html#lambda Tidak dapat memuat pernyataan. Itu melanggar ide matematika dari fungsi anonim.
Paul Nathan
Bukankah itu berarti lambda tidak terputus?
rox0r
4

Ini elegan dan sangat mudah dipelajari, dan begitu Anda terbiasa dengan tipe dasarnya (terutama daftar) produktivitas Anda tidak memiliki batas. Ini sempurna untuk membuat prototipe algoritma, atau untuk menuliskannya dalam bahasa pseudocode-like yang pada akhirnya dapat diletakkan langsung pada mesin, dan itu sangat bagus sebagai bahasa scripting untuk melakukan pekerjaan berulang atau melakukan operasi yang menjengkelkan pada file. Saya menggunakannya sebagai bahasa lem untuk membuat subproses berkomunikasi satu sama lain: tidak sekuat bash untuk beberapa tugas yang mudah, tetapi JAUH lebih mudah jika Anda perlu melakukan lebih dari sekadar satu baris kode.

Dan kemudian itu tidak membedakan antara fungsi dan subrutin, Anda tahu apa yang saya maksud.

Lorenzo Stella
sumber
3

Banyak pecinta Python yang saya lihat baru saja beralih dari lingkungan C dan terkesan dengan hal-hal seperti "Hello "+ "World"ini "Hello World". Jadi saya akan mengatakan ini adalah bahasa scripting pertama yang tidak mengumpulkan tag khusus / esoteris dan menyebar di antara orang-orang yang mati syahid seperti api di hutan kering. Dan fashion yang diciptakan sekarang hidup dengan sendirinya.

mbq
sumber
2

Mengajukan kembali pertanyaan sekarang karena saya sedikit kurang lelah:

Python adalah bahasa yang saya temukan sangat cocok untuk tugas pemrograman ilmiah, yang merupakan salah satu tempat di mana popularitasnya tumbuh cukup kuat. Beberapa alasan mengapa:

  • Dukungan komunitas yang cukup kuat berarti ada beberapa perpustakaan yang kuat di tempat, dan Python berfungsi sebagai pengganti yang layak untuk MATLAB dan beberapa bahasa populer lainnya di bidang itu.
  • Hal ini memainkan dengan baik dengan C ketika Anda melakukan kecepatan kebutuhan, tetapi sering kecepatan tidak benar-benar diperlukan, sehingga alam ditafsirkan Python adalah tidak semua yang besar dari kesepakatan.
  • Saya telah menemukan itu menjadi bahasa yang cukup mudah didekati tanpa banyak hal, bagi orang luar, terasa seperti aturan sintaksis yang sewenang-wenang. Cukup cepat menerjemahkan antara kode semu dan Python.
  • "Ambil atau tinggalkan OOP". Banyak proyek pemrograman ilmiah tidak mendapatkan banyak manfaat dari OOP yang luas. Beberapa melakukannya. Sangat menyenangkan memiliki bahasa yang bisa melompati keduanya dengan mudah.
  • Dukungan lintas platform yang kuat. Terutama karena apa yang saya kerjakan jarang melibatkan GUI, saya cukup bisa mengandalkan kemampuan mengirimkan program Python ke orang lain tanpa khawatir tentang OS apa yang mereka jalankan.

Ini bukan akhir semua, semua-bahasa pemrograman, tetapi bahasa yang layak "Ya, saya mungkin memiliki alat untuk memecahkan masalah apa pun yang muncul" bahasa, yang mungkin mengapa itu menikmati popularitas saat ini.

Fomite
sumber
Selain semua item lain yang Anda daftarkan, saya pikir salah satu item yang paling penting adalah "Saya sangat bisa mengandalkan kemampuan mengirimkan program Python kepada orang lain tanpa khawatir tentang OS apa yang mereka jalankan.". Ini juga sangat menguntungkan ketika Anda tidak ingin terjebak dengan jenis sistem operasi.
Tarik
1

Python adalah bahasa yang sangat 'webby' baik dalam kerangka yang tersedia (Django, Zope dll) dan di perpustakaan yang mudah diimpor, yang lagi-lagi mencakup banyak fungsi web.

Untuk pengembang web yang beralih dari hanya HTML, CSS + JS skillset (secara anekdot merupakan sumber besar programmer baru selama beberapa tahun terakhir), saya pikir ini membuatnya menjadi proposisi yang sangat menarik (selain Ruby).

Juga, Google bukan Microsoft ....

Jon Hadley
sumber
Java bukan MS, jadi jika alasan Anda benar, mereka akan pindah ke Java bukan python. Pasti ada alasan berbeda.
rox0r
0

Saya pikir salah satu alasan utama adalah bahwa 90% google dibuat dari Python.

Namun, Python juga mudah dipelajari, bahasa pemrograman yang kuat. Ini memiliki struktur data tingkat tinggi yang efisien dan pendekatan yang sederhana namun efektif untuk pemrograman berorientasi objek. Sintaksis Python yang elegan dan pengetikan dinamis, bersama dengan sifatnya yang ditafsirkan, menjadikannya bahasa yang ideal untuk skrip dan pengembangan aplikasi yang cepat di banyak area di sebagian besar platform.

Penerjemah Python dan perpustakaan standar yang luas tersedia secara bebas dalam bentuk sumber atau biner untuk semua platform utama dari situs Web Python, http://www.python.org/ , dan dapat didistribusikan secara bebas. Situs yang sama juga berisi distribusi dan pointer ke banyak modul Python pihak ketiga gratis, program dan alat, dan dokumentasi tambahan.

Penerjemah Python mudah diperluas dengan fungsi dan tipe data baru diimplementasikan dalam C atau C ++ (atau bahasa lain yang bisa dipanggil dari C). Python juga cocok sebagai bahasa ekstensi untuk aplikasi yang dapat disesuaikan.

blackhat
sumber