Python'da neden bu kadar popüler? [kapalı]


54

Boşlukta bir sözdizimi olarak rahatsız olmaktan başka, ben hater değilim, sadece Python'a hayranlık duymuyorum.

Perl'in şiirini takdir ediyorum ve bash & korn'da güzel web servisleri ve shebang'ı programladım gnuplot. Belge yazıyorum troffve REXX'e aldırış etmiyorum. Tcl'yi daha yıllar önce hiç bulamadınız mı, ama Python'un en büyük kokusu nedir? İş listelerini ve bununla birlikte birçok adayı özgeçmişlerine ödül ve ödül olarak görüyorum.


Sanırım gerçekte bu konuda şahsen satılmaya çalışıyorum, bir sebep bulamıyorum.


81
İnsanların neden Python'un ihtiyaç duydukları girintiliğe kızdıklarını asla anlamadım. Ben umut , doğru Neyse kodunuzu girinti gittiğini?
Greg Hewgill

10
@GregH, elbette, fakat sözdizimim zorunlu mu olmalı? Makefiles gibi mi?
Jé Que,

5
@Xepoch: Ama Makefiles sadece girintiye ihtiyaç duymaz, genellikle diğer türden ayırt edilemeyen belirli bir girintiye ihtiyaç duyarlar. Makefiles , özellikle yerine herhangi bir boşluk girintisine ihtiyaç 0x09duyuyorsa, muhtemelen itirazda bulunmazsınız ve muhtemelen tercih ettiğiniz girinti genişliğinde tutarlı girinti kullanırsınız. Bu Python'un izin verdiği şey.
Greg Hewgill

31
Perl'in Şiiri? Ciddi anlamda? Başkalarının Perl kodunu koruma onuruna sahipseniz, Perl’in popülerlik açısından neden düştüğünü anlarsınız.
grokus

6
@Greg, sana katılıyorum. Bunu daha önce söyledim ve tekrar söyleyeceğim, Python'un girinti kuralından şikayet eden kimsenin, girintisiz kodunu korumasının istenmesi gerekir. Sadece söylüyorum ...
grokus

Yanıtlar:


61

Python, oldukça temiz bir sözdizimi, kapsamlı bir standart kütüphane, mükemmel dahil ve üçüncü taraf dokümantasyonu, yaygın kullanımı ve "betik" tarzı bir dilin (yani açık bir derleme adımı yok) olduğu iyi tasarlanmış bir dildir.


36
İyi tasarlanmış? Hiç küresel bir işleve sahip olduğunuzu fark ettiniz lenmi?
alternatif

65
len ile yanlış olan ne? Sadece 5 dakika boyunca python hakkında okuduğunuz izlenimini
edindim

5
Şahsen, dil yapısını kavramak o kadar basitti ki, genel olarak dillerin şirket içinde nasıl çalıştığını daha iyi anlayabilmemi sağladı. Bunlar küçük şeyler. Birinci sınıf fonksiyonlar, sadece bir dış modülün ilgili kısımlarını akıntıya aktarabilme, kavrama, tuples, özün bir metod parametresi olarak dahil edilmesi, fonksiyonlar ve metotlar arasındaki farkı anlamamı sağladı (diğer diller sadece şekerin arkasına saklandı). Şimdi C # gibi dilleri kullanmam beni üzüyor çünkü sezgisel olarak kodun bana nasıl dahili olarak çalıştığı hakkında bir şey öğretmediğini sezgisel olarak biliyorum.
Evan Plaice,

1
Python nasıl iyi tasarlanmış bir dil olabilir? Garip kullanır __double_underscore_names__, bu karıştırır alllowercasefunctionamesile mixed_underscoreve mixedCamelCaseadları. :Sonunda defveya döngüler sonunda gerektirir . Garip kısaltmanın bir çok kullanır str, dict, islice. Hiç kongre yokmuş gibi görünüyor. Saf bir kaos. Pepsler, tırtıllar, zensler ... bir dilden çok piton dinine benziyor. Bazı güzel özelliklere sahip olabilir, ancak neden bu kadar çok insanın bu kadar heyecanlandığını açıklamıyor. Pyhon hakkında özel bir şey yok. Sadece kötü tasarlanmış bir başka ürün.
t3chb0t

1
Ve kesmek nedir def? Neden bir işlevi a defile değil de tanımlarım func? Python kadar sezgisel olan başka bir dil yoktur.
t3chb0t

76

Python'u şimdiye dek kodları yazdığım en doğal programlama dili olarak buldum. Python'dan önce ve sonra birçok dilde kod yazdım ve daha büyük ölçüde veya daha az bir dille mücadele etmek zorundasınız. ne istersen onu yap. Python bu mücadeleyi büyük ölçüde azaltır. Eric S Raymond neden Python'da olabileceğimi çok daha iyi söyledi.

İlgili bir nokta olarak, Python hızla gelişirken bile temizliğini korur. Çalıştığım çoğu dilde, yeni dil özelliklerinin tanıtılması birçok kırışıklığa neden oluyor. Ancak Python ile ana dil özellikleri bile (dekoratörler akla gelir) çirkin saldırılar gibi hissetmeden her zaman eklenir.


8
Temel olarak bunu söylemek için buraya geldi. Sözdizimi sadece çok doğal hissediyor, sanki sahte kod yazıyor gibisin.
James Davies

2
Python kompakt: tüm özellik setini (ve en azından kütüphanelerinin konsept dizinini) kafanızda tutabilirsiniz.
systempuntoout

2
@ Zoomzoom83 Sözde kodlarım başlıyor ve bitiyor - bu
python'da

1
@ mbq Ve sözde kodlarımda diş telleri var, ama bu başka bir hikaye;)
Chris diyor ki

26

Umarım bu çok sinirli değildir, ancak IMO Python Java, C # ve Objective-C'nin aynı sebepten dolayı çok popülerdir. Dillerin kendisiyle ilgili muhteşem bir şey olmadığı için değil, fakat her birinin çok fazla yutturmaca, çok fazla reklam ve çok sayıda kütüphane üretebileceği ve tercih ettikleri dil için destek alabilecekleri bir makroaktif sponsoru olduğu için değil.


6
C # özel, linq var
Daniel Little

39
Python'un arkasında büyük bir şirketi var mı? (orijinal soru)
Jé Queue

11
Evet, demek istediğim buydu. Python, Google böyle bir ilgi göstermeye başlamadan önce çok daha az "cool" oldu.
Mason Wheeler

10
@Mason - ama elbette, Google gibi büyük bir kurumun bunu "havalı" yapması için bir neden olmalı mı?
Jas

7
İnsanlar neden pitonun kurumsal sponsorları olduğunu düşünüyor? Herkes büyük Java / j2ee kurallarına karşı pycon'un boyutunu fark etti mi? Bu bir David ve Goliath kurumsal finansman hikayesidir.
rox0r

11

Tecrübelerime göre programlamada gerçek neşe bulan insanlar genellikle okulda veya üniversitede öğrendiklerinden daha iyi uyan bir dil ararlar. Temel olarak bu, varsayılan PHP / Visual Basic / C ++ / Java / C # 'dan, Python, Ruby, Haskell ve hatta perl gibi daha egzotik bir şeye (iş / kariyer yönünden) geçecekleri anlamına gelir (muazzam korsanlık değeri ve belirsizliği nedeniyle).

Beni yanlış anlamayın, çalışmalarında ve kodlarında büyük gurur ve neşe duyan çok deneyimli C # / VB.net programcıları var (StackOverflow adamları çok iyi bir örnektir), ancak sadece bir piton programcısı değilsiniz Sana okulda öğrettikleri şey buydu; kendi kararın olmalı.

Jeff Atwoord'un bu konuda bir blog yazısı olduğunu düşünüyorum, ancak bulamıyorum. Onu bulursam bu yorumu güncelleyeceğim.


1
Python okulumda 101'de öğretilen ilk
dildi.

Neredeyse her dilin var olmak için bir nedeni vardır ve en azından bir şeyde iyidir. Kanımca bu sadece “başkalarının sevdiği için hoşuma gidiyor” diyor.
NtFreX

9

Gerçekten havalı olan ve şaşırtıcı Code Golf'leri üreten Ruby ile karşılaştırıldığında, Python, "aptalca Python" anlamına gelen "[- bir şeyi yapmanın tek ve açık bir yolu olmalı" olan "bu temel felsefeye sahiptir. Bunu Ruby'ye kıyasla çok büyük bir avantaj olarak buldum.


4
.. ya da görünüşte sınırsız yollarla Perl'e kıyasla?
Jé Queue

@Xepoch - aslında Perl'de işlerin iyi / doğru şekilde yapılmasının sonsuzluğundan çok daha az şey var ve bir ipucuna sahip çoğu kişi TOO olmadan ne kadar anlaşmazlık yarattığını kolayca anlatabilir. (Ya da en çok 2) vardır. Bana inanmıyorsanız, SO'daki Perl sorularına bakın. Evet, bazı soruların 10 farklı çözümü var. Ancak çoğu, "koşullar için en doğru" çözüm üzerinde açıkça kararlaştırılmış bir çözüme sahiptir.
DVK

@DVK, biliyorum ama bir tasarım hedefinden bakıyorum.
Jé Queue

8

Python'u, Eric S. Raymond'un tanımladığı nedenlerle sevmeye başladım: Python'da program yazma eylemi kavramsal olarak kafamda kod tasarlama eylemini düşünmeye çok benzer.

İyi bir Python programcısı olmayı öğrenmek beni daha iyi bir C # programcısı yaptı. LINQ'un anlaşılmasını bir kez daha kolaylaştırdı. Python'da sınıflar ve jeneratörler Dictionary<string, Func<T>>kullanmasaydım yield return, asla böyle bir türü benimsemiş ya da kullanma konusunda rahatlamış olmayabilirdim. AOP, Python dekoratörleri kullandığımı anlamak artık çok daha kolay. Liste devam ediyor.


6

İlk olarak, önemsiz dilin dili Python'daki zorla girintinin girintisi gibi parlar, dilin kendisinin güçlü bir şekilde ifade edici ve yararlı olması durumunda çok az önemi olur. Ayrıca ilk başta bunun yüzünden geri çevrildim, ama yakında geçmişe bakmayı öğrendim ve şimdi onu bir engel olarak bile hissetmiyorum, çünkü dil benim için çalışmam çok daha kolay. , onun zararsız bir dil tuhaflığı ve dilde rahat olan herkes onun tarafından rahatsız hissetmiyorum.

Python'un bu kadar çok insanın harika olduğunu düşünmesinin nedenlerini anlamak için sadece dili öğrenmeye çalışın. Sebepler çoğunlukla Perl ile aynıdır. Python'daki (örneğin liste kavramaları, OOP sözdizimi, vb.) Sözdizimini sevdiğimi anlıyorum, ancak bu gerçekten özneldir ve fikriniz farklı olabilir. Daha büyük projeler için Python'u tercih ederken, daha küçük senaryolar için hala Perl'i kullanıyorum.

Ve bu sorunuzun cevabı. Python'u Perl, bash ve tcl ile karşılaştırırsınız. Mesele şu ki bu adil bir kıyaslama değil. Bash gibi diller, ortak görevleri otomatikleştirmek için küçük komut dosyaları yazmak için tasarlanmıştır. Bazı insanlar, eğer kod yeterince büyük olursa Perl’nin de rahatsız olduğunu düşünüyor (iyi yazılmış bir Perl yok, ama iyi yazılmış bir kodun büyük bir projede gelmesi zor). IMHO Python diğer 'betik' dillerinden farklıdır, çünkü büyük projelerle küçük bir kerelik komut dosyaları için çok iyi ölçeklenir. Sanırım Ruby de aynı kaliteye sahip.


6

Yardımsever Diktatörün, iyi stil fikrini [1], iyi programlama fikrini, programlanma fikrini beni düzenli olarak zorlaması gerektiği felsefesi. Van Rossum gibi düşünmüyorum. Ancak, dili van olmayan Rossum düşüncelerini ifade etme girişimlerine direniyor. Onun düşüncesi birçok (çoğu) programcı için gerçekten iyi çalışıyor . Ama nasıl programlanacağına dair modeline uymadım.

Bu yüzden Perl'in üstün bir dil olduğuna inanıyorum.

[1] Kaldırma ile ilgili bloguna bakın reduce.


Düşünce sürecindeki nedenlerinizi açıklar mısınız, daha fazlasını duymak ister misiniz?
Jé Queue

3
@Xepoch - bir programlama dili ifade aracı olarak işlev görür. Deyimler ve düşünce tarzları, “uyum” dan “sığması çok zor” arasında bir düşünce süresinde ifade edilebilir. Mesela liste anlamayı düşünmüyorum. Sorun çözümleri hakkında nasıl düşündüğüme yabancı. Ancak Common Lisp'in azaltması aklımda önemli bir zorluk çekmeden akan bir şey. Ancak, van Rossum açıkça karşıtıdır. Java her şeyin nesnede olmasını gerektirir. Dolayısıyla Java'da nesne yönelimli olmayan çözümler oluşturmak çok zorlaşıyor. Ve böylece -
Paul Nathan

5

Bir dereceye kadar Python'un bir işletim sistemi çekirdeği yazmak istemediğiniz sürece, ihtiyacınız olan tek programlama dili olduğunu düşünüyorum. İnteraktif kullanım, rastgele kesmeler, sistem yönetimi, bilimsel uygulamalar, işletim sistemi araçları, web uygulamaları, GUI uygulamaları, gömme vb. İçin uygundur, taşınabilir, ücretsiz ve yaygın olarak kullanılır. Başka hiçbir programlama dili pratikte tüm bu alanları kapsamaz. Bir kişi ve şirket için gerçekten iyi bir stratejik yatırım.


4
Burada Python'dan şüphe etmiyorum, ama Perl daha iyi olmasa da yukarıdaki açıklamanıza tam olarak uyuyor.
Jé Que

Ruby de bunu çok iyi yapıyor.
ocodo

1
2015 yılı itibariyle Python, bilimsel hesaplamaların fiili genel amaçlı dilidir. Geriye kalan her şey, sadece kütüphaneler ve altyapı için kullanılan (Java), rastgele komut dosyası araçları (bash için kullanılan birkaç nişle rekabet eden klasik MAT-C) , Perl) veya .... şey ... yukarıdakilerin hiçbiri.
Paul,

5

2004'ten beri geliştirmek için Python kullandım:

  • GUI
  • Python'dan C ++ ciltlerine kadar kod izleyici sahneleri
  • Çapraz platform otomatik yapı sistemleri
  • Test komut dosyaları
  • Günlük meselelerinizi çözmek için genel amaçlı araçlar
  • Web siteleri ve web uygulamaları

2004'te Python tercih edilen dildi çünkü Python scriptleri Windows, Linux ve Mac'te çok az değişiklikle taşınabilir.


4
Farklı yanıtlardan bir yorumda alıntı yapmak için: "Burada Python'dan şüphe duymamak, ancak Perl'in açıklamanıza daha iyi olmasa da oldukça iyi uyduğunu düşünüyorum".
DVK

4

Bana göre Python çok sevilen bir arkadaş oldu. İyi bir betik ve prototip dilidir. Aklıma gelen en önemli şeyler:

  • Temiz sözdizimi, çok basit ve anlaşılması kolay
  • Çok paradigma, zorunlu bir dil olarak kullanmak? Elbette. OOP? Sorun değil. Ayrıca lambda, liste anlama, vb.
  • Temel bilgi işlem ihtiyaçları için, temel veri yapıları, dizi, sıra, sözlük (ilişkisel dizi), küme, vb. İçin doğal desteği vardır.
  • Diğer özellikler bir programcının çok verimli olmasını sağlayabilir, örneğin ördek yazma, yansıma, meta programlama, dekoratörler, jeneratörler vb.
  • Zengin kütüphane desteği

lambda pitonda kırıldı.
Paul Nathan

@Paul Fikrinizi yedeklemek için bir link vermek incitmez.
Piotr Dobrogost

@Piotr: docs.python.org/reference/expressions.html#lambda İfadeleri içeremez. Bu isimsiz bir fonksiyonun matematiksel fikrini ihlal ediyor.
Paul Nathan

Bu Lamda'nın kırılmadığı anlamına gelmiyor mu?
rox0r

4

Zarif ve öğrenmesi gerçekten kolay ve bir kez temel türlerini (özellikle listeler) aşina olduğunuzda verimliliğinizin bir sınırı yok. Prototipleme algoritmaları veya bunları doğrudan makineye yerleştirebilecek sahte kod benzeri bir dilde yazmak için mükemmeldir ve tekrarlayan işler yapmak ya da dosyalar üzerinde can sıkıcı işlemler yapmak için gerçekten bir betik dili olarak iyidir. Alt işlemlerin birbirleriyle iletişim kurmasını sağlamak için bir tutkal dili olarak kullanıyorum: bazı kolay işler için bash kadar güçlü değil, ancak tek bir kod satırından daha fazlasını yapmanız gerekirse, WAY daha kolay.

Ve sonra işlevler ve alt yordamlar arasında ayrım yapmaz, ne demek istediğimi anlarsın.


3

Gördüğüm Birçok Python severler sadece C çevreden açık ve benzeri şeylerle etkilendik "Hello "+ "World"olduğunu "Hello World". Bu yüzden, bunun ezoterik / spesifik bir etiket toplamamış ve kurutulmuş bir ormandaki ateş gibi şehitler arasında dolaşan ilk betik dili olduğunu söyleyebilirim. Ve böylece yaratılan moda artık kendi başına yaşıyor.


2

Artık biraz daha az yorgun olduğum sorusunu yeniden cevaplamak:

Python, popülaritesinin oldukça arttığı yerlerden biri olan bilimsel programlama çalışmaları için özellikle uygun bulduğum bir dil. Bunun birkaç nedeni:

  • Oldukça güçlü bir topluluk desteği, bazı güçlü kütüphanelerin var olduğu anlamına gelir ve Python, MATLAB ve bu alandaki diğer popüler dillerin bazıları için iyi bir alternatif olarak çalışır.
  • Eğer zaman C ile iyi oynar yapmak hızı gerekir, ancak genellikle hız gerçekten bu gerekli değildir, bu nedenle Python'un yorumlanır doğa hepsi bir anlaşma büyük değildir.
  • Yabancılara, garip rastgele sözdizimi kuralları gibi hissettiklerini çok fazla olmayan oldukça ulaşılabilir bir dil olarak buldum. Sahte kod ile Python arasında çeviri yapmak oldukça hızlı.
  • "Alın ya da OOP bırakın". Pek çok bilimsel programlama projesi, kapsamlı OOP'dan bu kadar fayda sağlamıyor. Bazıları yapar. Kolayca ikisi arasında geçiş yapabilen bir dilin olması güzel.
  • Güçlü platformlar arası destek. Özellikle nadiren çalıştığım GUI'leri içerdiği için, hangi işletim sistemlerini çalıştırdıkları konusunda endişelenmeden Python programını başkasına gönderebilmeye güvenebilirim.

Hepsi bu, programlama dillerinin hepsi değil, ama onun nezih bir "Evet, muhtemelen her ne problem çıkarsa çözülecek bir araç var" dili, bu yüzden şu anda popüler olmasının nedeni budur.


Listede bulunduğunuz diğer tüm öğelerin yanı sıra, bence en önemli öğelerden biri "Hangi işletim sistemi çalıştırdıkları konusunda endişelenmeden Python programını başka birine gönderebilmeye çok güvenebilirim." Bu, işletim sistemi türüyle sıkışmak istemediğiniz zaman da çok uygundur.
Tarik

1

Python, hem mevcut çerçevelerde (Django, Zope vb.) Hem de yine birçok web fonksiyonunu kapsayan, kolayca alınabilen kütüphanelerde çok 'webby' dilidir.

Sadece bir HTML’den harekete geçen web geliştiricileri için, CSS + JS becerisi (son birkaç yıl içinde büyük bir yeni programcı kaynağı), bunun çok cazip bir teklif (bence Ruby) olduğunu düşünüyorum.

Ayrıca, Google Microsoft değil ....


Java MS değildir, bu yüzden eğer mantığınız doğruysa, Java'ya python değil hareket ediyorlardı. Farklı bir sebep olmalı.
rox0r

0

Bence ana sebeplerden biri google’ın% 90’ının Python’dan yapılmış olması.

Ancak, Python da öğrenmesi kolay, güçlü bir programlama dilidir. Verimli yüksek seviye veri yapılarına ve nesne yönelimli programlamaya basit ama etkili bir yaklaşıma sahiptir. Python'un zarif sözdizimi ve dinamik yazımı, yorumlanmış doğası ile birlikte, çoğu platformda birçok alanda komut dosyası oluşturma ve hızlı uygulama geliştirme için ideal bir dildir.

Python yorumlayıcısı ve geniş kapsamlı standart kütüphane, Python Web sitesinden, http://www.python.org/ adresindeki tüm büyük platformlar için kaynak veya ikili formda serbestçe kullanılabilir ve serbestçe dağıtılabilir. Aynı site birçok ücretsiz üçüncü taraf Python modülüne, programlarına ve araçlarına ve ek belgelere dağıtımlarını ve göstericilerini de içerir.

Python yorumlayıcısı, C veya C ++ ile (ya da C'den çağrılabilen diğer diller) uygulanan yeni fonksiyonlar ve veri tipleri ile kolayca genişletilebilir. Python, özelleştirilebilir uygulamalar için bir uzantı dili olarak da uygundur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.