Neden Python ?

Başlatan gomugomuno, 20 Haziran 2012 - 00:21:14

« önceki - sonraki »

0 Üyeler ve 2 Ziyaretçi konuyu incelemekte.

gomugomuno

Python dilinin compiler derleyici nasıl çalışır ? Pyhton dilini neden tercih etmeliyiz (kolay kodlanır olması dışında)? NLP çalışmalarında neden Google ve diğer şirketler python'u seçiyor ?  NLP dışında başarlılı olduğu(önde geldiği) başka alan var mı ?

alorak

Öncelikle merhabalar. pythonda derleme işlemi gerçekleşmez. Temel olarak yorumlamalı dildir. ama python programı içerisinde kendisi derlenmektedir. python'u tercih etmenin bir nedeni sizin de belirttiğiniz gibi kolay kodlanabilmesidir. Bu internette her konuda bir çok modül bulabileceğiniz anlamına da gelmektedir. kolaylıkla bir masaüstü(gui) uygulaması oluşturabilrsiniz. diğer daha ağır dillerin aksine sektöre yabancı değilseniz script dili gibi de düşünebilirsiniz. Bazı istisnalar dışında büyük uygulamalar için kullanmanız tavsiye edilmez. Ek olarak çoklu platformda geçerli olduğundan çokça tercih edilmektedir. NLP çalışmalarında kullanılmasının bir nedeni modülünün diğer dillere göre daha çok olması olsa gerek. bir çok alanda eğer küçük bir işiniz varsa kesinlikle python kullanmalısınız. burdaki küçüklük kavramını kendiniz belirlemelisiniz. Ticari bir program yapacaksanız python ile yapılması çok sağlıklı olmaz ama ticari bir programcık yaparsanız boşuna ağır dilleri kullanmanıza gerek yoktur.
özgürlük için

empax

Alıntı yapılan: alorak - 20 Haziran 2012 - 13:05:07
Öncelikle merhabalar. pythonda derleme işlemi gerçekleşmez. Temel olarak yorumlamalı dildir. ama python programı içerisinde kendisi derlenmektedir. python'u tercih etmenin bir nedeni sizin de belirttiğiniz gibi kolay kodlanabilmesidir. Bu internette her konuda bir çok modül bulabileceğiniz anlamına da gelmektedir. kolaylıkla bir masaüstü(gui) uygulaması oluşturabilrsiniz. diğer daha ağır dillerin aksine sektöre yabancı değilseniz script dili gibi de düşünebilirsiniz. Bazı istisnalar dışında büyük uygulamalar için kullanmanız tavsiye edilmez. Ek olarak çoklu platformda geçerli olduğundan çokça tercih edilmektedir. NLP çalışmalarında kullanılmasının bir nedeni modülünün diğer dillere göre daha çok olması olsa gerek. bir çok alanda eğer küçük bir işiniz varsa kesinlikle python kullanmalısınız. burdaki küçüklük kavramını kendiniz belirlemelisiniz. Ticari bir program yapacaksanız python ile yapılması çok sağlıklı olmaz ama ticari bir programcık yaparsanız boşuna ağır dilleri kullanmanıza gerek yoktur.

Sebebi nedir? Yanlış anlamayın bu konuda çok bilgim yok ama bildiğim kadarıyla Blender Python ile geliştirilmiş, dikkatimi çekti.  :)
71
veya
upuzun bir liste
بسم الله الرحمن الرحيم
|ACEMİLER İÇİN İLK DURAK|Çözüldü|Kod etiketi|

gogobeko

Google ve Youtubeda da tamamen olmasada kullanılmış diye biliyorum ben de.

Bir de anlamadığım şu derleme mevzusu nasıl bir farklılık?Mesela javaya nazaran derleme farkı ne?
"Ömür umuttan önce bitmeli." [Talip Dalkılıç]

sem

@empax

arkadaşın büyük proje ile kastı nedir, en iyi kendisi açıklama yapacaktır. Fakat dediği gibi genelde büyük işlerde Python doğrudan değil, prototip oluşturmak için kullanılıyor. Çünkü derleme gibi bir derdi yok. 400 er satır dan 10 tane kaynak kod dosyamız mı var, birisinde değişiklik yapılır ve kaydedilir. Olay bundan ibarettir. Ama C/C++ ile geliştirilen bir uygulamada durum böyle değildir. Değişiklik yapılan kaynak kodu kullanan dosyaların tekrar derlenmesi gerekir ki derleme işi büyük projelerde hello world örneği kadar sürmüyor =) Çekirdek derlemeye çalışan arkadaşlara sormak lazım =) Ya da QT'yi derleyen varsa o da epey bir vakit alıyor.

Yani Python yorumlanan bir dil, bildiğimiz gibi. Bu dillerde kolaylıkla bir uygulama geliştirilebilir. Hem derleme zamanı gibi bazı özel durumlardan tasarruf edilmiş olur, hem de arkadaşın çok doğru söylediğini düşündüğüm modül bulma gibi faydaları var. Bu kadar kullanışlı, kolay ve zahmetsiz olduğu için internette bir çok modül bulabiliyoruz.

Yalnız yorumlanan ve bu kadar basit olmasının götürüsü büyük projelerin geliştirilmemesinde bir  o kadar da etken oluyor. Çünkü çalışma zamanında (rum time) yorumlandığı için doğal olarak, önceden derlenmiş bir çalışan dosyaya göre yavaş kalıyor. Yavaşlık görece tabi, bir toplama işlemindeki farkı algılamayız tabii fakat bu toplama işlemi 50 000 kere olursa fark ciddi şekilde, anlaşılabilir hale gelecektir.
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

hckr

Alıntı yapılan: sem0900 - 20 Haziran 2012 - 19:29:14
@empax

arkadaşın büyük proje ile kastı nedir, en iyi kendisi açıklama yapacaktır. Fakat dediği gibi genelde büyük işlerde Python doğrudan değil, prototip oluşturmak için kullanılıyor. Çünkü derleme gibi bir derdi yok. 400 er satır dan 10 tane kaynak kod dosyamız mı var, birisinde değişiklik yapılır ve kaydedilir. Olay bundan ibarettir. Ama C/C++ ile geliştirilen bir uygulamada durum böyle değildir. Değişiklik yapılan kaynak kodu kullanan dosyaların tekrar derlenmesi gerekir ki derleme işi büyük projelerde hello world örneği kadar sürmüyor =) Çekirdek derlemeye çalışan arkadaşlara sormak lazım =) Ya da QT'yi derleyen varsa o da epey bir vakit alıyor.

Yani Python yorumlanan bir dil, bildiğimiz gibi. Bu dillerde kolaylıkla bir uygulama geliştirilebilir. Hem derleme zamanı gibi bazı özel durumlardan tasarruf edilmiş olur, hem de arkadaşın çok doğru söylediğini düşündüğüm modül bulma gibi faydaları var. Bu kadar kullanışlı, kolay ve zahmetsiz olduğu için internette bir çok modül bulabiliyoruz.

Yalnız yorumlanan ve bu kadar basit olmasının götürüsü büyük projelerin geliştirilmemesinde bir  o kadar da etken oluyor. Çünkü çalışma zamanında (rum time) yorumlandığı için doğal olarak, önceden derlenmiş bir çalışan dosyaya göre yavaş kalıyor. Yavaşlık görece tabi, bir toplama işlemindeki farkı algılamayız tabii fakat bu toplama işlemi 50 000 kere olursa fark ciddi şekilde, anlaşılabilir hale gelecektir.
Hocam şimdi pyhton ile çalıştırılabilir bir dosya üretemiyor muyuz?Ya da kapalı kaynak?

ersinkandemir

Where there's a shell, there's a way.



ekremsenturk

#7
Bu soruya doğrudan "neden olmasın diye" cevap verilebilir.
Python, çok tercih edilen programlama dillerinden sadece bir tanesi. Python, yazdığınız kodları doğrudan okur ve çalıştırır. Bazı Programlama dillerinde kod'lar önce dönüştürülür ve sonra dönüştürülmüş kod'lar derleyiciden bağımsız olarak İşletim sistemi tarafından çalıştırılırlar. Java kod'ları ise bytecode veya yorumlanmış kodlara dönüştürülür ve Java yürütücüsü  JRE kurulu olan Bilgisayarlarda JRE tarafından çalıştırılır.

Python ile tercih edilen ilk yöntem, programlamaya yeni başlayanlar için daha kolay ve Ticari kullanım içinde daha kullanışlı, ama kodların eş zamanlı dönüştürülüp çalıştırlması biraz daha yavaş işleyen bir işlem. Günümüzün Bilgisayarlarında bu bir sorun değildir. Derlenmiş kod'lar çok daha hızlı çalıştırılabilir ve içeriği okunamadığı için Ticari kullanım için, sahtelerinin çıkmasına karşı daha güvenli. Java kod'ları ise hız bakımından her ikisinin ortasında. Java'nın tercih edilebilecek en önemli tarafı, programlarınız İşletim sisteminden bağımsız olarak bir sanal Makina üzerinde çalıştıklarından dolayı, her Java programı, her Java kurulu olan veya Java kurulumunu destekleyen sistemde çalışır.

Python'da, her yaygın İşletim sistemine kurulabildiğinden, ve İşletim sistemine özel kod'larında farkları OS modülü sayesinde en aza indirilmiş olduğundan dolayı, en yaygın tercih edilen diller arasında bulunuyor. Python ile her boyutta programlar geliştirmek mümkün. Java ile ise, tek bir satırlık kod çıktısı için bile bir Klass (Sınıf) oluşturmak gerekiyor. Bu da yeni programlamaya başlayanlar için, anlaşılabilmesi biraz zor oluyor sanıyorum. Python kod'larıda yine Bytecode'lara dönüştürülebiliyor ve bu şekilde hızlı çalışabilen Modül'ler geliştirilebiliyor. Python ile Klass'larda ( Sınıf'lar ) oluşturulabiliyor ve bu şekilde çok büyük programlar için sık kullanılan kodlar, her seferinde yeniden yazılmak gerektirmeden, bulunduğu Klass'tan ( Sınıf'tan ) çağrılabiliyor. Bu özellik ile de, Programcının çalışma süresi kısaltılmış oluyor ve Şirketler içinde, az iş, az ücret demek oluyor. Ayrıyetten, Ürün daha kısa sürede Piyasaya çıkmış olabiliyor.

sem

Alıntı yapılan: hckr - 20 Haziran 2012 - 19:45:15
Alıntı yapılan: sem0900 - 20 Haziran 2012 - 19:29:14
@empax

arkadaşın büyük proje ile kastı nedir, en iyi kendisi açıklama yapacaktır. Fakat dediği gibi genelde büyük işlerde Python doğrudan değil, prototip oluşturmak için kullanılıyor. Çünkü derleme gibi bir derdi yok. 400 er satır dan 10 tane kaynak kod dosyamız mı var, birisinde değişiklik yapılır ve kaydedilir. Olay bundan ibarettir. Ama C/C++ ile geliştirilen bir uygulamada durum böyle değildir. Değişiklik yapılan kaynak kodu kullanan dosyaların tekrar derlenmesi gerekir ki derleme işi büyük projelerde hello world örneği kadar sürmüyor =) Çekirdek derlemeye çalışan arkadaşlara sormak lazım =) Ya da QT'yi derleyen varsa o da epey bir vakit alıyor.

Yani Python yorumlanan bir dil, bildiğimiz gibi. Bu dillerde kolaylıkla bir uygulama geliştirilebilir. Hem derleme zamanı gibi bazı özel durumlardan tasarruf edilmiş olur, hem de arkadaşın çok doğru söylediğini düşündüğüm modül bulma gibi faydaları var. Bu kadar kullanışlı, kolay ve zahmetsiz olduğu için internette bir çok modül bulabiliyoruz.

Yalnız yorumlanan ve bu kadar basit olmasının götürüsü büyük projelerin geliştirilmemesinde bir  o kadar da etken oluyor. Çünkü çalışma zamanında (rum time) yorumlandığı için doğal olarak, önceden derlenmiş bir çalışan dosyaya göre yavaş kalıyor. Yavaşlık görece tabi, bir toplama işlemindeki farkı algılamayız tabii fakat bu toplama işlemi 50 000 kere olursa fark ciddi şekilde, anlaşılabilir hale gelecektir.
Hocam şimdi pyhton ile çalıştırılabilir bir dosya üretemiyor muyuz?Ya da kapalı kaynak?

python -m compileall  deneme.py

Şeklinde oluyordu yanılmıyorsam... Farklı yolları da mevcut. Üretilen dosyayı (pyc) Python olmayan bir bilgisayarda denemek lazım ne olduğunu tam olarak anlamak için. Çünkü ./deneme.pyc şeklinde çalıştıramamıştım.

Windows tarafında da bir kaç yolu varmış... Bu şifrelenmiş bir dosya mı yoksa ikilik dosyamı emin değilim, dediğim gibi Python olmayan bir sistemde denemek lazım... Yani kapalı kaynak yazılabilir çünkü python ile bu pyc uzantılı dosya çalıştırılabiliyor. Çalışan dosya da üretilebiliyordur büyük ihtimal ama dediğim gibi bu normalin dışında bir kullanım Python için...
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

raspacı

Alıntı yapılan: empax - 20 Haziran 2012 - 13:21:01


Sebebi nedir? Yanlış anlamayın bu konuda çok bilgim yok ama bildiğim kadarıyla Blender Python ile geliştirilmiş, dikkatimi çekti.  :)
71
veya
upuzun bir liste
empax ben de duymuştum bunu eskiden. Blender python ile yazılmamıştır. Bu genel bir yanılgı. c ve c++ ile yazılmış.
"Blender is at this point a quite large program of 300.557 lines: 211.035 lines C, 88.029 C++ and 894 Python. "
http://blenderartists.org/forum/showthread.php?37409-What-language-is-Blender-written-in
Python masaüstü uygulamaları için yavaş sayılır ama openshot gibi orta derecede şeyler de yazılmış (tabi o da yavaş :) )

nereye gidersen git kendini de götürürsün.

ekremsenturk

#10
@sem0900
Python Bytcode'larda yine Python ile çalışır. Java Bytcode'larda olduğu gibi. Program içinden Modül olarak, diğer Modül'ler gibi içe aktarılılarak çalıştırılırlar.

@raspacı
Ben de Blender için Processing ile geliştirilmiş olduğunu okumuştum gibi hatırlıyorum. Belki sürümler geliştikçe, farklı araçlara yönelinilmiştir, veya Linux sürümü için Python'ada gerek duyulmuştur. Genellikle gelişmiş Program'lar, boyutundan bağımsız olarak, bir çok uygulama ile birlikte geliştirilirler. Bu sebepten, bazı Program'ların kurulumu esnasında, bir çok bağımlılıkta birlikte kurulur.

Düzeltme: Processing ile ilgili yazıyı yanlış hatırlamışım.

raspacı

ekremsenturk python kullanılmış ama çok çok az miktarda ve API (uygulama programlama arabirimi )denilen kısmında.
"The Blender core is mostly written in C, the game engine is mostly C++, and there is a tiny bit of Python for the API, and the included scripts. " yine aynı adresten bir ileti.
nereye gidersen git kendini de götürürsün.

alorak

Alıntı yapılan: empax - 20 Haziran 2012 - 13:21:01
Sebebi nedir? Yanlış anlamayın bu konuda çok bilgim yok ama bildiğim kadarıyla Blender Python ile geliştirilmiş, dikkatimi çekti.  :)
71
veya
upuzun bir liste

Öncelikle merhabalar. Dün internete girmediğim için cevap yazamamıştım. Aslında aşağıda arkadaşlarımızın dediklerine ek ben de benzer şeyler diyeceğim. Kaynağımızı http://en.wikipedia.org/wiki/Python_%28programming_language%29#Usage alarak biraz başlayalım. 2. paragrafın ilk cümlesinde anlatıldığı gibi: "Python has been successfully embedded in a number of software products as a scripting language" yani python yazımı kolay ve kullanımı da rahat olduğu için bir çok programın içerisinde script işlevi görmektedir. API'lerine ulaşımın kolaylığı ve anlaşılmasının kolay olması ile bazı basit işlerin çözümünü kolay ve kısa yoldan sağlar.

Ve daha teknik açıdan cevaplar için. Türkiye'deki bence en büyük python kaynağı olan forumdaki kaliteli insanların cevapları önemli olur:

http://www.istihza.com/forum/viewtopic.php?f=4&t=477
özgürlük için

empax

Python'a yeni baslamistim, bunlari ogrendigim iyi oldu. Herkese tesekkurler :)
بسم الله الرحمن الرحيم
|ACEMİLER İÇİN İLK DURAK|Çözüldü|Kod etiketi|

doganaydin

Kusura bakmayın ama şu Python yavaştır zırvalığından vazgeçin artık. Gerçekten hala python a sadece prototip dili olarak bakıyorsak bırakıp gidelim bu işleri tarla bağ bahçeyle uğraşalım.

sem

#15
Bu ne şiddet bu ne celâl =)

Ama aynen öyle bir düşüncem var, ileride uydurabilirsem bağ bahçe olaylrına girebilirim =)=) Bağ olmasa da bahçe isterim =)

Anekdot olarak ise; yalnız yoğun işlemler gerektiren işlemlerde, evet Python gerçekten yavaş.

Örnek C kodu

#include <stdio.h>

int main()
{
     int a = 0;
     long b;
     while(a++ < 500000){
          b = a * a * 2;
          printf("%lu\n",b);
     }
}



Alıntı Yapreal   0m23.157s
user   0m0.310s
sys   0m1.550s


Örne Python kodu

a = 0
b = None
while a < 500000:
    b = a * a * 2
    print b
    a += 1



Alıntı Yapreal   0m39.390s
user   0m1.680s
sys   0m1.530s

NOT: Tabii bu kodlar ile yapılan doğrudur, kesindir, öyledir böyledir dememek lazım...

Fakat şunu düşünüyorum; en iyi optimize edilmiş iki kodu da karşılaştırsak C/C++ gibi derlenen dillerin yoğun işlemlerde mutlaka öne çıkacağını düşünüyorum.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 22 Haziran 2012 - 08:25:14

Tabii yavaşlık konusundan göreceli olarak bahsettiğimin altını çizeyim. Gördüğüm kadarı ile Python C/C++ gibi derlenen dillerden daha yavaş çalışıyor.
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

gomugomuno


canosayan

hız noktasına biraz yanlıiş takılmıyor musunuz. hani hello world yazmak için bash dilide kullanırsınız javascriptte. önemli olan o dilin proje içerisine katacağı hızdır. nerede ne şikilde kullanmanıza izin verdiğidir.
burada aslın düşünmeniz gereken derlemenin kolaylığı bence.

örneğin forumda kullandığımız bir yazılım olsun. yazılıma da 100 mb diyelim ve senkronlu kullanmamız gerekiyor. bu yazılımda bir değişiklik olduğunda ne yapacağız. mesela derlenen bir dil ise bir kişi değişikliği yapıp derleyecek 100 mblık dosyayı diğerlerine aktaracak. 20 kişi isek 2000 mb veri akacak sunucudan. eğer derlenmeyen bir dil ise değişikşliğin satır numarasını söyleyerek hepinizin değiştirmesini sağlayabiliriz. hatta uygulamayı kendini değiştirecek şekilde yazarak bu olayı çok rahat otomatize edebiliriz.

tamamen ne beklediğinizle alakalı bu durum.

diğer yandan google appengine java python ve go kullanıyor. sanırım onlardan zamanında c alternatifini düşünmüşlerdir.
Chmod bizim işimiz.

sem

Aynen, bence de; tamamen ne beklenildiği ile alakalı bir konu...

Mesela bazı projeler için 3 saniyelik fark kabul edilemez olabilir ama bazı projeler için 3 saniye için sunucudan 2000 mb veri akması gerekli görülmez. Ama bir diğer proje için 2 saniye için bile sunucudan 5000 mb veri akabilir. Gerçi 100 mb lık bir şeyi derledikten sonra tüm dosyayı paylaşmak için 100 mb lık tek bir kaynak kod dosyası olması gerekir! Aksi halde, yani 100 mb örneğin 40 dosyada duruyorsa değişiklik 2 dosyada yapıldı ise bu değişiklik yapılan kaynak kodların paylaşılması yeterli. Diğer dosyalar zaten diğer kişilerde de derlenmiş olarak duruyor olacak.

Ama söylendiği gibi beklenti ve ihtiyaçlarla alakalı bir durum tabii ki.

Bu arada Google tarafında Python tercih edilmesinin, Python çok güçlü, kullanışlı vs olması yanı sıra yorumlanan bir dil olmanın avantajı olarak sunucular üzerinde doğrudan CGI olarak çalışabilmesi gibi bir çok nedeni de vardır.

Hız ile ilgili sıkıntıları olsa idi mutlaka başka yollara giderdi tabii. Google'a kadar gittikten sonra hız konusunda donanım yazılımdan daha öne de çıkabilir belki. Detaylıca araştırmak gerekir.

".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

burk

Alıntı yapılan: gomugomuno - 25 Haziran 2012 - 14:39:29
Teşekkürler  :)
@gomugomuno sanırım sorun çözüldü, değil mi?

husonet

Aslında bu husus çok göreceli bir durum. Ben hemen hemen bir çok konuda webbase qt yani visual ortamda çalışan kodlar geliştirdim. Ama önemli olan en çok kullanım alanları eğer php ide iyi bir noktada iseniz bence Django öğrenmek te yersiz olacaktır. Tabi multi thread php çalışmıyor diyip Django ya sırf bu sebepten de geçiş yapabilirsiniz. Ben Python ile neler yapılabilir adlı bir makaleyi bu konunun daha iyi anlaşılabilmesi ve en çok tercih edilen kullanım alanlarını belirlemek için hazırladım okumanızı tavsiye ederim.