Neden Python öğrenmeliyim? - Sorcev
Ana Sayfa » Bilgisayar » Bilgisayar Programlama » Neden Python öğrenmeliyim?
Arkadaşlar Python'nun kolay öğrenilmesi dışında neden Python seçeyim? Birde Python perfomans konusunda kötü diye duymuştum doğru mu ?
18 yildir kullaniyorum, bir zararini gormedim.. Performans konusunda ne duydugunuzu bilmiyorum. Ama uygulamanizin hizli calismasi pek cok seye baglidir. En hizli dediginiz dilde, algoritmaniz kotu ise, python ile yazilmis ama algoritmasi iyi olan uygulamadan daha yavas kalabilirsiniz.. Yurtdisinda yazilimcilarin ortalama kazanclarina bakacak olursaniz, python yazilimcilarinin oldukca ustlerde yer aldiklarini da gorursunuz.. Ogrenmesi kolaydir. Daha anlasilir kodlar yazarsiniz.. Kimilerine sacma gelse de, dilin kendisi girintileri kullanarak kod bloklarinin baslangic bitislerini saptadigindan, adam gibi kod yazmaniz ( adam gibi olmayan koddan kastim, girintileri dert etmeyen dillerde hic girinti kullanmadan yazmak gibi) zorunludur.
Tek sorunu söz dizimi (benim açımdan). Parantez yerine tab karakteriyle fonksiyon yazmak beni ayar ediyor açıkçası Her programlama dili gibi python'da bir gün tarih olacak yaşlı bir dil. 2016 başında swift ile linux'a uygulama geliştirebiliyor olacağız. Popüler tüm programlama dillerinin iyi yanlarının tek bir dilde birleştirilmiş güçlü bir dil konumunda aklınızda bulunsun
ne için kullanacağına göre neden sorusunun cevabı da değişebilir. Sırf öğreneyim her şeyi bunda yazayım diyorsan, yanlış yoldasın bence
Yazacağınız yazılıma göre performans için python iyi de olabilir kötü de. Ondan bahsetmelisiniz. Neden Python u seçeyim sorusuna da; 1-) evet öğrenme sürecin hızlı olur,
2-) Geliştirme sürecin sancısız ve hızlı olur
3-) Revizeleri daha kolay yaparsın.
'perfomans konusunda kötü'
Evet, C++ kadar hızlı değil, ancak neden olsun ki? 1995'te değiliz ki, herkeste en az 2 ghz işlemci var. Eskiden yazdığın programın hızlı olması gerekiyordu, artık senin ürünü hızlı çıkarman gerekiyor, bu yüzden python kesinlikle 'kötü bir tercih' değil. Ancak evet, 100x100 bi matrisi python'da çarpmak mı daha mantıklı, C++'ta mı dersen tabiki C++ derim ancak, şöyle bi durum var, numpy C++ ile yazılmış bir python kütüphanesi, yani python'dan bu işi rahatlıkla yapabiliyorum. Dolayısıyla yine python yine python
Python Nesne tabanlı bir dildir. Eğer hıza ihtiyaç duyuyorsanız Fonksiyonel bir dil seçmeniz ve Parallel programlama ile ilerlemeniz daha doğru olacaktır.
Python performansı kötü olsaydı nasa envanterine girmezdi
GS Serhat Uludag
Paralel programla hemde
GS Serhat Uludag 3 ay
aslina bakarsan, ornegin biyoenformatikte, cokca python kullanilir.. Nereden biliyorsun diye soracak olursan, paralel hesaplama merkezinde calisiyorum.. Cogu python kutuphanesi, zaten c/c++ ile yazilmis olanlarin wrapperidir. Diger dillerle yazilmis uygulamalarin yaninda, python ile yazilmis olan ve superbilgisayar uzerinde kosan pek cok uygulama var. Paralel network arabirimi dedigin seyi tam anlayamadim.. Biz burada Infiniband kullaniyoruz.. Infiniband, fiziksel ag altyapisi, sistemler arasinda 40 Gbit/sn hizinda haberlesmeyi sagliyor.. O altyapiyi kullanan kutuphaneler var. Ornegin Openmpi. Openmpi c/c++ ile yazilmis bir mesajlasma kutuphanesi. Infiniband ya da normal ethernet uzerinden de calisabiliyor. Python uygulamasinin openmpi ile calismasi icin, python kaynak kodlarini openmpi kullanacak sekilde yeniden derliyoruz.. O zaman elimizde mpi adli bir modul oluyor. Bu modulu kullanarak, sistemler arasi haberlesmeyi sagliyor, algotritmamizi paralel yazabiliyoruz.. Uzun zaman once kendi yuksek lisans tezimde yazdigim simulasyonu python ve mpi ile yazmistim. http://manap.se/tez adresinden bakabilirsiniz.. Paralel programlama konusunda detay isterseniz biraz daha anlatabilirim tabii ki..
Ilker Cevher 3 ay
Sonuç olarak pyhton kusursuz diyebiliriz o zaman
saf python ile yazilmis pupyMPI var. Ping pong testlerinde openmpi iyi gorunurken allgather gibi collective operasyonlarda neredeyse ayni sonuclari almislar.. Makalenin yazarlari Rune Bromer, Frederik Hantho, Brian Vinte.
Demek performans konusunda o kadar kötü değil diyorsunuz
Bende genellikle Web sitesi ve Linux üzerine uygulama geliştirmek istiyorum
yanlış bilgi Python performans olarak en hızlı dil olabilir şeklinde duyumlar duymuştum
abi öyle birşey olma ihtimali yok, ilk olarak python'da bütün stringler unicode, ayrıca çok fazla soyutlama katmanı var, python'un optimize C++ kodu kadar iyi performans vermesinin yolu yok, ancak Pypy'ın içinde gelen JIT kesinlikle uzun süren işleri hızlandırıyor, ilerleyen zamanda gelecek olan STM ise birden fazla thread'in birbirlerini bloklamasını önleyecek, keza async ve await geldi 3.5'te, o da coroutine'lar ile concurrent uygulama yazmanı sağlıyor, yani leş durumda değili fakat en hızlı durumda hiç değiliz, fiyat/performans birincisi olabiliriz ama
Umut Çakıray 3 ay
Derlenen diller varken pythonun en hızlı olmamaz mesala 3d olayına gireceksen kesınlıkle python yanlış bir seçim yada cpu ile hallay çekeceksen aşırı yanlış bir seçim olay ne kadar büyürse o kadar yavaşlıyor python bkz: Inkspace Gımp
abi yazdığının çoğuna katılsam da 'olay ne kadar büyürse o kadar yavaşlıyor python' cümlesine katılmıyorum çünkü python ile devasa uygulamalar yazabilirsin, çok yüksek hızda çıktılar üretebilirsin, veya gerçekten çok detaylı hesaplar yapabilirsin, tek problem ne kadar işlemciyi yoracağın. Eğer 1000x1000 iki matrisi çarpacaksan numpy ile python kullanırsan kötü bi seçim olmaz.
biyoenformatik uygulamalarini inceleyin, cogunun python oldugunu gorursunuz.. Milyonlarca 500kb text dosyalarin okunup, istatistik olarak yanyana gelecek olanlarini bulmaya calisirlar dna dizilimi yapan uygulamalar. Paralel programlamada marifet, her node icin uygun veri miktari ve islem gucunu, algoritmanizda iyi ayarlayabilmektir. Cogu yerde, yanlis sistem tasarimi nedeniyle, cpu degil disk I/O icin beklersiniz..
500kb mi? Abi bize gelen 1 sample 100 mb falan, onu alıp belli analiz tool'larından geçiriyoruz, çoğu C bu toolların ve python bindingleri yok, dolayısıyla subprocess yapmamız gerekiyor. Uygulamayı bi kere debugladım, C uygulaması olmasına rağmen %80'lik vakti io alıyor. Daha sonra bu uygulamanın çıktısını alıp python'da başka kütüphanelere sokuyoruz, onlar da C ile yazılmış kütüphaneler. İşimizi hızlandıracak tek şey elimizdeki bütün C uygulama ve kütüphanelerini Python ile sıfırdan yazıp hadoop'ta mapreduce yaparak kullanmak, çoğu thread'li çalışmasına rağmen io'da vakit kaybediyor. Bi kere io ile vakit harcayıp, sonra bütün işini map'leyip işlemciyi dibine kadar sömürüp reduce'layacaksın. (üstte bahsedilen iş genelde dna'nın dizilenmesi ile ilgili, bazı analizleri hadoop'a portlamayı hayal etmek bile zor geliyor bana, biyoenformatik firmasında çalışsam bile biyoenformatik algoritmalar benden üç dört gömlek büyük geliyor)
Benim bahsettigim 2010-2012 yilindan kalma.. Dna dizilim cihazi dnayi parcalayip duvara firlatiyor, firlatilan parcalarin resmini cekip dizilimleri cikariyor, sonra da istatistiksel olarak birlestirmeye calisiyor.. Size gelen veri dizilimden gecmis veridir buyuk ihtimalle.
Umut Çakıray sizin donanim altyapinizin duzenlenmesi gerek.. Hersey bulutta mi, kendi sistemleriniz var mi?
Arkadaşlar Python'nun Web'de başarılı olduğunu duydum Markofoniydi herhalde Python kullanıyorlarmış çoğunlukla bende genellikle Web ve Masaüstü uygulamaları için kullanacağım sorun çıkarmaz demi ?
Birde Linux tabanlı sistemler var
Linux tabanlı sistem derken
Linux'ta biraz zor çalışır ama denemek lazım: D
Oğuzhan Kayak 3 ay
Ctn Burak 3 ay
Linux çekirdeği kullanan sistemler Geliştirme kartları, Tizen, Android gibi
Geliştirme kartları içersinde beaglebone, rpi, bananapi, vs. Vs. Sorun değil, hatta rpi özellikle python öneriyor. Android'e uygulama yapma şansın var, ancak pek önerdiğim birşey değil, android en güzel java ile gidiyor, keza bütün işletim sistemi java. Tizen'le problem yaşarmısın, bilmiyorum ama pek problem yaşayacağını sanmıyorum. FirefoxOS ile kesin yaşarsın, UbuntuMobile ile kesin yaşamazsın.
Ubuntu Mobile, Tizen de sorun yaşamazmıyım ?
Mustafa Yuvarlak 3 ay
Mustafa Yuvarlak Ubuntu Mobile zaten bildiğin ubuntu, özel birşey değil. Tizen ile python'un çalıştığını biliyorum ama hiç detaylıca araştırmadım.
Tizen'nin sadece C/C++ desteklediğini biliyordum Pythonuda destekliyorsa harika
Normal Ubuntu'ya yazdığımız kodu hiç değiştirmeden Mobilde de mi çalışıyor ?
Demek istediğini anlamadım bu sistemlerde uygulama mı yazıcaksın
Androidde kesinlikle deneme. Linux çekirdeğine bakmaz bu işler.
Biliyorum Android'i Java haric hiç bir şey kesmez
Ferhat Tatlısuluoğlu 3 ay
Android Java ile yazıldığından
C++ ile Java, JDK dışında NDK da sunuyorlar uzun süredir.
C/C++ yazıldığını biliyorum ama C/C++ neredeyse her şeyde kullanıyor
Android C++'da yazıldı demek istememiştim, Android'e Java ya da C++ yazabilirsin demek istemiştim. C++ desteği de ilk sürümlerde yoktu, sanırsam 4 ile gelmişti NDK.
Mobil platformlara ilk etapta native olarak yazmayı deneyin. Eğer zaman ve maliyet konularında kısıtlı iseniz, Hibrit olarak geliştirme yapabilirsin. Ionic Framework, Onsen UI, Cordova.. Gayet başarılı kütüphaneler.
Kivy pek beni tatmin edecek gibi değil
Netice Java dışı oluyor da Hibrit geliştirme ne oluyor ?
Mustafa Yuvarlak Hibrit, web sitesi yazıyorsun, webview ile normal uygulama gibi açılıyor. facebook, linkedin, birçok uygulama hibrit.
Kesmesinden değil yeterince geliştiricileri yok bir avuç geliştiricisi var ve gelişimide haliyle yavaş
Anladığım kadarıyla Python'nun performansı geliştirildiği platforma göre değişiyor. Neredeyse tüm geliştirme kartları destekliyor Ubuntu Mobile ve Tizen'de çalışabilir Android'de ise sıkıntı doğru anlamışmıyım ?
Evet androidde sıkıntı büyük
Neyse bizde Android'den şimdilik vazgeçelim ilerde belki sıkıntılar çözülür
Yakın dönemde, hayır, uzun dönemde, sanmıyorum. Android'de java dışında birşey kullanmak çok mantıklı gelmiyor. Hibrit istisna, hibrit de java kullanıyor, ama sadece webview widget'ını kullanıyor, kalan herşey webview içinde dönüyor. Özetle, Android == Java.
Python'la hibrit yaparsın demedik ki, webview ve websitesi dedik, dolayısıyla sadece html css ve js ile yapıyorsun uygulamayı
javayı c++ keser androide azda olsa. Onlarca framework sdk var android ndk, Marmalade sdk(3d game), cocos2d, corona sdk daha ne olsun hem uygulama hem oyun yapabılırsın bunları bu kadar saysamda artık tavsıye etmıyorum c++'nin syntax beni aşırı yormaya başladı