Python neden yüksek performanslı / bilimsel bilgi işlem için kullanılıyor (ancak Ruby değil)?


106

Devam eden bir PyCon 2011 konuşmasından bir alıntı var :

En azından mağazamızda (Argonne Ulusal Laboratuvarı) bilimsel bilgi işlem için kabul edilen üç dile sahibiz. Bu sırada C / C ++, tüm lehçelerinde Fortran ve Python. Mutlak ve toplam Ruby, Perl, Java eksikliğini göreceksiniz.

Yüksek performanslı bilgi işlemin daha genel bağlamındaydı. Verilen teklife yalnızca bir dükkandan geliyor, ancak HPC'nin dilleriyle ilgili başka bir soru da Python'u öğrenecek (Ruby değil) olarak listeliyor.

Şimdi, C / C ++ anlayabileceği ve Fortran o problem alanlarda kullanılabilme (ve Perl / Java değil kullanılıyor). Ancak, HPC için Python ve Ruby kullanımında oldukça benzer oldukları göz önüne alındığında, büyük bir fark olacağına şaşırdım. (Not - Ben Python hayranıyım ama Ruby'ye karşı hiçbir şeyim yok ).

Bir dilin kaçmasının özel bir nedeni var mı ? Kütüphaneler hakkında mı? Bazı özel dil özellikleri? Topluluk? Ya da belki sadece tarihi bitişiklik , ve diğer tarafa geçebilirdi?


2
Her ikisinin de dinamik dil olmasına rağmen, Python ve Ruby'nin oldukça farklı olduğunu söyleyebilirim . Benzerinden daha farklı.
Adam Crossland

20
Bunun bir cevap olduğunu bilmiyorum, ama - Ruby'nin Rails ile küçük bir topluluk dışına çıkmadan önce Python'un daha fazla “çekiş” yaptığını unutmayın (yaklaşık 2005-2006). Google bir süredir Python'u kullanıyordu, bu da profilini yükseltti (2000'li yılların başında). Python'un sözdizimi, öğrenmesi ve okuması kolay ve kolaydır (ve bunun Perl'in gerçekten tek ana seçenek olduğu çağda olduğunu hatırlayın), bu yüzden bilimsel hesaplamayı ona doğru ittiğini düşünüyorum. Ondan sonra, insanlar NumPy / SciPy, MatPlotLib ve diğer birçok bilimsel hesaplama paketlerini yarattıkları için muhtemelen kendini pekiştiriyordu.
hafta

4
Bu soru ile ilgilenen kişiler, aynı zamanda Hesaplamalı Bilim yığını değişim sitesine göz atmakla da ilgileniyor .
Mark Booth,

2
"okunabilirlik sayar"
jsbueno

1
Bazı Hesaplamalı Kimya perspektifi sunmak için, bir hesaplamayı Python ile paralel hale getirmek önemsiz ve ucuzdur. Belki bunların ikisi de Ruby'de doğrudur. Bilmiyorum.
Jonathan Landrum

Yanıtlar:


108

Yorumumu genişleteceğim.

Bilimsel hesaplamada Python'un kullanımını etkileyen birkaç faktör olduğunu düşünüyorum, ancak söyleyebileceğiniz kesin bir tarihsel nokta olduğunu düşünmüyorum, "Evet, Python'un Ruby / diğer şeylerde kullanılmasının nedeni budur. "

Erken tarih

Python ve Ruby neredeyse aynı yaşta - Wikipedia'ya göre Python resmen ilk olarak 1991'de, Ruby ise 1995'te piyasaya sürüldü.

Ancak, Python, Google'ın zaten Python kullandığı ve milenyumun başında Python geliştiricilerini aradığı için Ruby'ninkinden daha öne çıktı. Programlama dillerinin kullanımıyla ve onları kullanan insanlar üzerindeki etkilerinin küratörlüğünde bir geçmişi olmadığı için, Python'un Google tarafından bu erken benimsenmesinin, sadece Matlab, C ++ kullanmanın ötesine geçmeyi isteyen insanlar için büyük bir motivasyon kaynağı olduğu teorisini çıkaracağım. Fortran, Stata, Mathematica, vb.

Yani, Google’ın Python’u binlerce makineye sahip oldukları (paralelleştirme ve ölçeklendirme) ve sürekli olarak milyonlarca veri noktasını (yine ölçekleme) işlediği bir sistemde kullandığı anlamına geliyor.

Etkinlik Birleşimi

SGI ve Crays gibi özel makinelerde yapılan bilimsel bilgi işlem (bunları hatırlıyor musunuz?) Ve tabii ki FORTRAN, göreceli sadeliği nedeniyle ve daha kolay bir şekilde optimize edilebildiğinden yaygın olarak kullanılıyordu.

Son on yılda, emtia donanımları (sizin veya benim milyonerler olmadan kazanabileceğim şeyler) bilimsel ve büyük bilişim aleminde görev aldı. Şu anki en iyi 500 sıralamaya bakın - dünyadaki en üst sıradaki 'süper bilgisayarların' çoğu normal Intel / AMD donanımıyla üretildi.

Python, Google’ın Python’u tanıttığından ve Google’ın meta donanımını kullandığından ve binlerce makineye sahip olduklarından beri iyi bir zamanda geldi.

Ayrıca, bazı eski bilimsel bilgi işlem makaleleriyle uğraşırsanız, 2000 çağında ortaya çıkmaya başladılar.

Önceki Destek

İşte 2000'de yazılmış olan ve Astronomik Veri Analizi Yazılımı ve Sistemleri için yazılmış, Python'u bilimsel hesaplama dili olarak öneren bir makale .

Makalede Python hakkında bir alıntı var:

Python, bilimsel uygulamalarda büyük ilgi görmeye başlayan, yorumlanmış bir nesne yönelimli programlama dilidir (Python, 1999). Bunun nedeni, Python'un ve genel olarak kodlama dillerinin, birçok bilimsel proje için bir sonraki mantıklı adımı temsil etmesidir (Dubois 1994). İlk olarak, Python, bilimsel programlar tarafından zaten kullanılan basit komut dillerinin bir uzantısı olarak görülebilen tercüme edilmiş bir programlama dili sağlar.

İkincisi, Python diğer dillerde yazılmış bir yazılıma kolayca entegre edilebilir. Sonuç olarak, hem mevcut programları sürmek için bir kontrol dili hem de farklı sistemleri birleştirmek için bir tutkal dili olarak işlev görebilir. Son olarak, Python, üçüncü taraf modüllerden oluşan geniş bir koleksiyon, yerleşik bir kullanıcı tabanı ve kitap ve çevrimiçi referanslar şeklinde çeşitli belgeler sunar. Bu sebeple, bir bilim insanının kendi komut tercümanlarını yazarken genellikle başarmaya çalıştığı şeylerin çok parlak ve genişletilmiş bir versiyonu olarak görülebilir.

Böylece, Python'un 90'ların sonlarına dayanan bir çekişe sahip olduğunu görüyorsunuz, çünkü o zamanki mevcut sistemlere işlevsel olarak benziyordu ve Python'u C ve mevcut programlarla entegre etmek kolaydı. Makalenin içeriğine dayanarak Python, 1995-1996 dönemine dayanan bilimsel kullanımdaydı.

Popülerlik Büyümesindeki Fark

Ruby'nin popülaritesi, ilk olarak 2004'te çıkan Ruby On Rails'in yükselişiyle birlikte patladı. İlk kez Ruby ile ilgili bir vızıltı duyduğumda kolejdeydim ve 2005-2006 yıllarındaydı. Python için django, aynı zaman diliminde (Wiki'ye göre Temmuz 2005) yayınlandı, ancak Ruby topluluğunun odağı, web uygulamalarında kullanımını teşvik etmeye çok yoğunlaştı.

Python, diğer taraftan, zaten bilimsel hesaplamaya uygun kütüphanelere sahipti:

  • NumPy - NumPy 2005 yılında resmen başladı, ancak üzerine kurulu iki kitaplık daha önce yayınlandı: Numeric (1995) ve Numarray (2001?)

  • BioPython - python için biyolojik bilgi işlem kütüphanesi, en azından 2001 yılına kadar uzanıyor

  • SAGE - 2005'in başlarında ilk halka açık olan matematik paketi

Ve daha pek çoğu, zaman çizelgelerinin çoğunu bilmeme rağmen (sadece indirme sitelerine göz atmanın dışında), ancak Python'da SciPy (2006'da yayımlanan NumPy üzerine kurulmuş), R (istatistik dili) 2000'li yılların başında MatPlotLib ve ipython'da da gerçekten güçlü bir kabuk ortamı elde edildi.

ipython ilk 2000'li yılların başında piyasaya sürüldü ve entegre matplotlib grafikleme ve hesaplama kümelerini yönetme gibi bilimsel hesaplama için çok güzel kılan birçok özelliğe sahipti .

Yukarıdaki makaleden:

Ayrıca Python ile ilgili bilimsel bilgi işlem projelerinde dikkat çekiyor. Sayısal Python uzantısı Python'a hızlı dizi ve matris manipülasyonu ekler (Dubois 1996), MMTK moleküler modelleme için Python tabanlı bir araç setidir (Hinsen 1999), Biopython projesi yaşam bilimleri araştırması için Python tabanlı araçlar geliştirmektedir (Biopython 1999), ve Görselleştirme Araç Takımı (VTK), Python bağlayıcıları olan gelişmiş bir görselleştirme paketidir (VTK, 1999). Ek olarak, Python topluluğunda devam eden projeler, görüntü işleme ve komplo için uzantıları geliştiriyor. Son olarak, (Greenfield, 2000) 'de sunulan çalışma, STScI'deki projelerde Python'un kullanımını açıklar.

Python için iyi bir bilimsel ve sayısal paket listesi .


Bu yüzden büyük olasılıkla erken tarih ve 2000'li yıllara kadar Ruby'nin göreceli belirsizliğinden kaynaklanıyor, Python ise Google’ın evrenciliği sayesinde çekiş kazanmıştı.

Öyleyse, 1995 - 2000 arasındaki dönemde senaryo dillerini değerlendiriyorsanız, gerçekte neye bakıyordunuz? İnsanların kullanmak istemediği, muhtemelen sözdizimsel olarak farklı olan Perl vardı ve daha net bir sözdizimi ve daha iyi okunabilirliği olan Python vardı.

Ve evet, kendini takviye bir sürü muhtemelen orada - Yakut bilim kullanımını savunan bir azınlık sesi var ise Python zaten bilimsel hesaplama için tüm bu harika, kullanışlı kütüphaneleri vardır ve benzeri, yukarı filizlenme bazı kütüphaneler vardır SciRuby ama Python'un araçları son on yılda olgunlaştı.

Ruby'nin genel olarak Ruby'yi bir web dili olarak ilerletmekle çok daha fazla ilgilendiği görülüyor, çünkü Python farklı bir yoldan başladı ve daha sonra bir web dili olarak yaygın bir şekilde kullanıldı.


8
C entegrasyonu hakkında biraz unuttum. Birçok durumda, bilimsel bir hesaplama oldukça yoğundur ve sadece bu bit için ac rutinini yazabilmek önemli bir avantajdır.
Spencer Rathbun

1
@ SpencerRathbun Bağlandığım makale, sarmalayıcılar üretmek ve Python'un C / C ++ koduyla birlikte çalışmasına izin vermek için SWIG ile Python kullanmaktan bahsediyor. SWIG, 2004'te piyasaya sürülen Ruby 1.6'ya kadar resmi Ruby desteğini alamadı. Bu yüzden Python, insanların Python'u mevcut sistemlerine sokmalarına izin vermek için tam da akılda bir kafa kafaya ve takım oluşturmaya başladı. Kullanılmakta olan tüm mevcut, optimize edilmiş FORTRAN / C kodunu kaldırmak zorunda kalmamak muhtemelen en büyük sürücüydü.
wkl

3
1991'de sayısal kütüphaneleri, C / Fortran kütleleri yazmak zorunda kalmadan verileri analiz etmenin bir yolu olarak bir araya getirmek için TCL kullanıyorduk. Python, TCL’nin yerine tam zamanında geldi. 'C' ile (ve fortla ile F2C ile) etkileşim kolaylığı PERL'ye kıyasla çok büyüktü, TCL arayüzü 'C' ile çok kolaydı
Martin Beckett

Tercihli Ek Süreçleri , hangi dillerin kullanıldığı hakkında çok fazla şey açıklar. Bu Zipfian! Bkz . Zipf Myatery "PAP" 12: 50'de açıklanmıştır.
radarbob

37

Python'u mühendislik uygulamaları için, Ruby ise web uygulamaları için kullandım.

Ruby ile bilimsel bir dil olarak gördüğüm sorun, verilen bir işlem için çok fazla sözdizimi seçeneğinin olmasıdır.

Python şu öncül ile tasarlanmıştır: "Bunu yapmak için bir tane olmalı ve tercihen sadece bir tane açık yolu". Bu, birinin kodunu okumayı ve amacını belirlemeyi daha kolay hale getirir. Bu, mühendislik vb. Akran değerlendirmeleri için anahtardır.

Ruby'yi seviyorum ve bazı görevler için harika, ancak Ruby kodum aynı şeyi yapan farklı bir programcının kodundan sözdizimsel olarak tamamen farklı olabilir. Bu, bilimsel veya mühendis bir ortamda çok fazla belirsizlik neden olur.


3
Evet kesinlikle. Ruby TIMTOWTDI geleneğinde ve bu nedenle sadece biraz daha iyi bir Perl. Yazılım programcılar için yazılmıştır. Derleyiciler / tercümanlar bu anlamda ikincil bir izleyici kitlesidir. Bilim adamları, gereksiz yere zor yazılımlardan çok fazla müdahale etmeden işlerini yapma konusunda ciddi olma eğilimindedirler. QED
Dominic Cronin

4
Bu tartışmayı takip ettiğimden emin değilim. Programcı ve bir makine değil, temel izleyici ise, farklı şeyler söylemenin netliği arttırdığı ve amacını vurguladığı zamanlar vardır. Daha esnek bir dil, yumuşak insan beynimizin anlaşılmasına yardımcı olmuyor mu?
Andrew Vit,

10
Ancak C, ASCII Fabrikasında da bir patlama gibi görünebilir. C de, bir dizinin işaretçiler etrafındaki bir ten olduğunu hatırlayın. Bu yüzden, dizi [5] alternatif olarak, alternatif olarak 5 [dizi] olarak yazılabilen * (5 + dizi) olarak yazılabilen * (dizi + 5) olarak yazılabilir. Bu aptalca.
Jonathan Landrum

1
Çok uzun vadeli bir perl programcısıyım ve çoğu amaç için en sevdiğim dilim. Yine de matematikten emin değilim. TIMTOWTDI yaklaşımına bu tutuma katılmıyorum. Birçok yaklaşıma sahip olmak, elbette ki bunların hepsinin iyi olduğu anlamına gelmez, ancak ifadenizi, hem insan hem de makine izleyicileriniz için açıkça ve doğrudan ifade ettiğiniz fikirle eşleştirecek şekilde uyarlayabilmeniz önemlidir. Sözdizimsel seçeneklerin olmayışı buna yardımcı olmaz.
mc0e

@AndrewVit: mutlaka değil. TIMTOWTDI, bir geliştiriciniz varsa veya küçük, sıkı entegre bir geliştirici ekibiniz varsa, mükemmel çalışır. Ama en kısa sürede aynı kod üzerinde çalışan görmedim insanlar, kendinize soruyor başlayacağız sahip olarak "Ah, neden yapacağını o yol?" Veya, alternatif olarak, herkesi aynı şekilde yapmaya zorlamak için bir stil rehberi yazacaksınız ve daha sonra artık TIMTOWTDI yapmıyorsunuz.
Kevin,

17

Tahminen, bunun büyük bir kısmı birçok araştırmacının matlab'a güvenmesiydi . Python'un adaçayı gibi alternatifleri vardır . Oysa yakut yok ya da en azından bariz olanları yok.

İkincisi, Ruby SSS’ye göre , python hem prosedürel hem de nesne yönelimli iken, yakut prosedürel bir dil olarak maskelenir . Matematik amaçlı küçük bir senaryo yazıyorsanız, matlab'da yaptığınız gibi OO paradigması baş ağrısıdır. Sadece bu değil, aynı zamanda araştırmacıların kullandığı işlevsel / prosedürel paradigmalardan kavramsal bir atlamaya zorlar. Matematik OO değil . Matematik işlevseldir, ardından prosedür uygulanır (mantık kanıtlarını düşünün).

Son olarak, Ruby SSS’nin yakutun pythondan daha karmaşık olduğunu belirtti. Programlama, bizim gibi değil, araştırmacılar için ikinci sırada.


22
Bence OO olayı biraz kırmızı bir ringa balığı. Araştırmacı ifadenin 1 + 1iletiyi +nesneye gönderip göndermemesini ne umursar 1? Bu, programınızın yapısını en küçük şekilde değiştirmez.
sepp2k

1
@ sepp2k, Spencer'ın Ruby'nin bilim adamlarının farklı programlar yapmasını gerektireceğini öne sürdüğünü düşünüyorum . Ruby'yi tanımıyorum, ancak Ruby'de bir program yazmak için nesneler oluşturmanız gerektiğini varsayarsak , Python prosedürlere izin verir - bu zihinsel yükü arttırır. Çok değil, programlayıcı olmayan kişilere verilen fazladan her iş, başka bir dili kullanmak için bir neden olabilir.
Tepegöz

7
@Cyclops Ne önerdiğini anlıyorum. Yanlış olduğunu söylüyorum. Bir prosedür dili olarak yakut maskelenmesi ile ilgili alıntıların amacı, programınızı nesne yönelimli bir şekilde yapılandırmanıza gerek olmamasıdır. "2 + 2" gibi bir şey yazarsanız, iki Integer nesnesi yaratıyor ve bir tanesini çağırıyorsunuz (diğerini argüman olarak geçiyorsunuz). Ancak bu, yakutta "2 + 2" yazmanın, diğer dillerde "2 + 2" yazmadan daha fazla çaba göstermesini sağlamaz.
sepp2k

5
Sepp2k ile birlikteyim, ben de bu tartışmayı satın almıyorum. Java gibi bazı diller, OO paradigmasını üzerinize zorlar - Ruby'de öyle değil. Ruby'de tamamen yordamsal veya işlevsel bir program yazmanızı engelleyen şey nedir?
Mike Baranczak

2
Tam olarak @Cyclops. Ruby, ussalmış gibi davranıyor olsa da, önemsiz bir bağlamda, OO paradigmasının dili belirli bir şekilde çalışmasını sağlayan durumlarla karşılaşırsınız. Bunu anlamıyor veya görmezden geliyorsanız, ya istediğinizi yapamazsınız ya da dağınık bir kesmeyle karşılaşırsınız.
Spencer Rathbun

14

BDFL (Guido van Rossum) Python'u ilk kez yazdığında amaç, ortak kodlama hatalarını ortadan kaldıracak basit İngilizce (DARPA fonlama teklifi) kadar anlaşılır olmasıydı.

Oldukça görünen bir konu blokları sınırlamak için girinti kullanımıdır. Açıkça karmaşık ifade sınırlayıcıları olan dillerde (örn. C parantezleri, Pascal BEGIN / END) boşluk, kodu lexer'a vermeden önce tek bir boşluk karakterine daraltılır. Bu, kodun nasıl yerleştirileceği konusunda büyük farklılıklar sağlayacaktır.

Profesyonel programcılar için bu bir sorun değildir, çünkü haftada 30 veya daha fazla saat çalışmayla başa çıkmak için kendilerini eğitmişlerdir.

Programlamanın bir araç olduğu diğer profesyoneller için bu sorun büyük bir problem haline gelir. Bu grup matematikçiler, fizikçiler, kimyagerler, mühendisler vb. İçerir.

Python, profesyonel olmayan programcıların hatalarını azalttığından, çözmeye çalıştıkları sorun hakkında düşünmelerini sağlar ve dilin mekaniği ile ilgilenmeleri gerekmez.

Bu, programlama mesleği dışında neden popüler olduğuna dair tek bir örnektir. Piller, Python Zen ( import this), Monty Python mizah kullanımı vb. Gibi aynı noktayı göstermek için kullanılabilecek başka örnekler de vardır .


Guido'nun özgeçmiş veya yayınlar listesindeki bir tez veya doktora programına referans bulamıyorum . Bunun için bir alıntı yaptın mı? Bu röportaj , CWI'de araştırmacı olduğunu söylüyor.
M. Dudley

Bu konuyu tamamen berbat ettim: Yaptığını tezinin üzerinde olduğunu okudum ama uygun bir araştırma yapmadım. Bu yazıyı yazdıktan sonra hatamı buldum ancak düzeltmeyi burada hiçbir zaman yapmadım. Teşekkürler.
Lance Helsten,

5

Bu harika bir tartışma, bence buradaki yayınlar, python'un neden bilimsel toplulukta daha popüler olduğunu sordu. Ancak, yakut bilimler için bazı sayaç argümanları vardır:

  • yakut python'dan (DSL vb.) daha sezgisel olarak kodlanabilir: kullanılan doğru paketler göz önüne alındığında:

    bioruby'yi kontrol edin: http://bioruby.org/ bir dizi rezervi basit olabilir: s.reverse vs. eğer veritabanları kullanıyorsanız: ruby ​​veritabanı bağlama API'si python'dan daha iyidir.

  • yakut, veciz olmakla aynı zamanda daha yüksek soyutlamalara izin verir.

  • daha iyi paket yönetim sistemi: yakutlu taşlar çok daha kolaydır: setuptools, pip etc

Ancak, Ruby'nin benimsenmesi karmaşıklığı ile engellenmiştir / engellenecektir. Lisp'in çok iyi / güçlü bir dil olduğunu düşünüyorum ama neden genel bir dil olarak işe yaramadı? benzer durum burada da yakutla ilgilidir - lisp, küçük konuşma ve perl'den çok fazla güç devralır! Sonunda, belirli niş / özel alanlarda (ağdaki ray, konfigürasyondaki kukla gibi) güçlü kalabilir, 'programcı olmayan' kişilerin tamamen zevk alması zor, ancak programcının iyi arkadaşı olabilir (bazı bilgisayarlarda gördüm) bilim adamları dilin tadını çıkarır: http://www.cleveralgorithms.com/nature-inspired/index.html )

Bazı en yeni güncelleme: python zaten manzarayı ele geçiriyor gibi görünüyor. Son zamanlarda gibi kitaplar: http://www.amazon.com/Python'daki-Analysis-Wes-McKinney/dp/1449319793 ve diğer birçok kitap (veri analizi, makine öğrenmesi vb.), Kullanılan dil olarak python ile yazılmıştır. . Yakut yakalamak istiyorsa, ciddi çabalara ihtiyacı var. Pyphon'da matplotlib düşünülürse, muhtemelen şu an bulunduğu duruma gelmesi birkaç yıl alabilir. Yakutta bazı ciddi çabalar olmadığı sürece, muhtemelen önümüzdeki 2-3 yıl içerisinde python veri analizi / bilimsel hesaplama aşamasına yetişemez.


3

Bir süre için veri analizi için python kullandıktan sonra (ruby, lua ve R ile çalışan deneyimlerden gelen), numpy paketi (ve ilgili birçok bilimsel kitaplık) hızlı hesaplama ('C'ye benzer şekilde, numpy gibi hızlı) çalıştırmayı mümkün kılar. python programlama kolaylığı ile C kodlarıyla yazılmıştır / yazılmıştır.

Numpy, bir süredir varlığını sürdürdü; scipy, pandalar ... vb. Gibi diğer ilgili bilimsel paketlerin inşa edilmesine yardımcı oldu. Harika araçlar python'u bilimsel hesaplama için harika bir ekosistem haline getirirken, Ruby'de benzer daha hızlı matris hesaplama kütüphanesi henüz geliştiriliyor (NMtrix: https://github.com/SciRuby/nmatrix ). Bu devasa zamanlama farkı python'u bilimsel bilgi işlem için bariz seçenek haline getiriyor.


5
"sonunda, python herkesin dili gibidir", bunu yedeklemek için bir kaynak sağlamanız gerekir.
Walter,

2

Ben de aynı şeyi merak ediyordum. Sanırım, Spencer Rathbun'un dediği gibi, Python'un usule ilişkin yönü yüzünden. Kendimi "programcı olmayan" biri olarak, Ruby'de kodlama şeklinin çok güzel buluyorum ve Rails çerçevesinde kullanım kolaylığı için mükemmel. Bununla birlikte, bilimsel amaçlar için kodlama yaparken (matematik, biyoloji, vb.), Normal olarak "matematiksel" bir dilde düşünürsünüz, yani,

Person.find_by_name 'Juanito'

ama sen daha çok önemsiyorsun

A = B*C + D

Bu yüzden Ruby'nin birçok özelliğinin bilimsel bir programda kullanılmayacağı konusunda güçlü olduğunu düşünüyorum. Sadece prosedürlerde düşünmek daha kolaydır.


0

Python, Numpy paketi ile N boyutlu diziler için daha iyi desteğe sahiptir. Ruby için benzer bir şey görmedim.

Python yaptığım sayısal hesaplama / bilimsel hesaplamada daha hızlı görünüyor. Python ve Ruby'de benzer algoritmalar yazdığımdan başka hiçbir kanıtım yok, Python algoritmaları daha hızlı çalıştı (YMMV).


2
Bu gerçekten tartışmaya fazla katkıda bulunmuyor. Numpy'nin etkinliği, kabul edilen cevapta zaten (daha ayrıntılı olarak) ele alınmıştır . Performans argümanınız ikna edici değil; Tarihsel performansı tartışırken fıkralara güvenmekten hoşlanmam, özellikle de bu tür argümanlar muhtemelen zaten yeterince güvenilir (iyi, bağlamsız bir fıkra ile kıyaslandığında) ölçütleriyle kaplıdır.
Brian,

@ Briç, kabul etti.
Josh Petitt 16:13

@Brian, benim özel katkım N boyutlu diziler üzerine yapılan yorumdu. Bu, Numpy'nin etrafına kurulduğunun temelini oluşturuyor, evet, ama ND dizilerinden hiç bahsetmedim. Bu, lineer cebirin özüdür ve Matlab ve Numpy'nin iyi yaptığı şeydir. Ruby, programcılar gibi diziler kullanır, mühendisler gibi değil diziler kullanır, bilim adamları diziler kullanır (matris gibi). Yardımcı olacağını düşünüyorsanız, kabul edilen cevaba ND dizileri hakkında bir yorum ekleyeceğim.
Josh Petitt,

@Brian ve hala bilimsel bilgi işlem için Ruby için ND konusunda iyi bir ND dizi desteği görmediğime dair yorumumun yanındayım.
Josh Petitt,

0

Bunun bir nedeni, Python'un C / C ++ kodunu kullanmak / bütünleştirmek / çağırmak için iyi bir desteğe sahip olmasıdır, oysa ki, Ruby aynı derecede (kolay) bir entegrasyon sunmuyor. Bu, C / C ++ dilinde yüksek performanslı kod bileşenlerini yazabileceğiniz ve daha sonra her şeyi bir arada yapıştırmak için Python'u (örneğin, üst düzey / göze kolay bir dil) kullanabileceğiniz anlamına gelir. Bunun Google tarafından kurumsal olarak erken benimsenmesinin sebeplerinden biri olduğunu hayal ediyorum.


0

Python'un veri bilimi için bu kadar popüler olmasının asıl nedenlerinden birinin senaryolarımızı gerçek çözüm (örneğin, yazılım sistemi) için genişletmek için zamandan / çabadan (yani paradan) tasarruf etmemizden kaynaklandığını düşünüyorum. Python ile veri bilimi için yazdığımız koda dayalı bir sistem çözümünü daha kolay oluşturabiliriz.

Yaklaşık 15 yıl önce bu özelliğe sahip bir tercüman dili arama konusunda deneyimlerim var. O sırada Python, veri bilimi için mükemmel bir dil olduğu için değil, aynı zamanda C / C ++ / gibi diğer dillerle etkileşime girebilen daha hızlı ve taşınabilir bir tercümana sahip nadir bir OOP dili olduğu için seçildi. Java. Günümüzde aksine, bunlar doğrudan veri bilimi için uygulanmış olan temel koddan doğrudan çözümler oluşturmak için kullanılan nadir ama muhteşem özelliklerdir.

Veri-bilim dili yapmak için zaman bir başka kritik faktör olabilir. 15 yıl önce, Python'da sayısal hesaplama için sayısal ve scipy gibi temel paketler olduğunu bulduk, ancak Ruby'nin bir programlama dili olduğunu bile bilmiyorduk. 2018 sonunda, veri bilimi için Ruby'yi kullanarak birkaç proje bulabildim. Belki 10 yıl sonra, neden Ruby'nin AI için bu kadar popüler olduğunu sorabiliriz.

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.