Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Python i korištenje

[es] :: Python :: Python i korištenje

[ Pregleda: 3684 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

MarkoBalkan

Član broj: 141124
Poruke: 1624
..132.150-dsl.net.metronet.hr.



+19 Profil

icon Python i korištenje02.04.2009. u 15:46 - pre 182 meseci
zašto je python postao tako popularan, a dosta je sporiji u odnosu na recimo perl.
doduše sve radi skoro normalno ali......

znam da je dosta lako uči, učim i radim u njemu cca. pola godine.
 
Odgovor na temu

alex
Aleksandar Radulovic
Senior Software Engineer, Spotify
Stockholm, Sweden

Član broj: 71
Poruke: 2194
*.siminn.is.

Jabber: alex@a13x.info
ICQ: -1
Sajt: www.a13x.info


+1 Profil

icon Re: Python i korištenje02.04.2009. u 17:01 - pre 182 meseci
Poznato je da Python nije sampion brzine, ali sta uopste znaci pojam brzog programa? Postoji mnogo faktora
koji mogu uticati na brzinu izvrsavanja nekog programa (ili skripte); obicno je programski jezik poslednji (ili pretposlednji)
faktor.

Vodeci faktori su znanje osobe koja implementira odredjeni program (ili algoritam), poznavanje programskog jezika,
kao i iskustvo implementacije konkretnog resenja problema (ili algoritma). Cesto se desava da prostim nepoznavanjem
programskog jezika programeri implementiraju resenje koje se veoma sporo izvrsava. Takodje, izvrsavanje nekog
programa ne zavisi samo od samog programa, vec i okoline (recimo, ako program koristi bazu, ili koristi
neki web servis, itd). Sreo sam dosta python programa koji uz implementaciju problema pokusavaju da implementiraju
neke od klasa i tehnika koje su deo samog programskog jezika i koje su veoma optimizovane. Naravno,
mozes da zamislis iznenadjenje zbog ubrzanja izvrsavanja kada je taj kôd korektno refaktorisan (u nedostatku
bolje reci).

Interesuje me kako si dosao do zakljucka da je Python sporiji od Perla? Slazem se da sigurno postoje situacije
gde je Python sporiji, ali me zanima konkretno tvoj slucaj i tvoji utisci.

Python jezik je popularan iz vise razloga. Sam si rekao da je vrlo jednostavno nauciti ga (cak i naprednije tehnike
samog jezika je relativno jednostavno nauciti), a kôd je sam po sebi vrlo citljiv i veoma razumljiv (po meni, jedna
od veoma bitnih stavki). U python jeziku je vrlo jednostavno i brzo uraditi prototip neke ideje, odnosno vrlo brzo od
ideje doci do konkretne implementacije kojom se potvrdjuje sama ideja.


Meni je licno pre svega cilj da implementiram resenje problema i da implementacija korektno radi. Kada je taj
posao zavrsen i ako postoji ozbiljan problem performansi onda pristupam optimizaciji. Pre samog optimizovanja
kôd obicno provlacim kroz profajler (koji naznaci koji delovi kôda se sporije izvrsavaju).
Sledeci korak je optimizacija tih delova u samom Python jeziku. Ako i taj pristup nije dovoljan, onda trazim
nacin da taj problematican kôd zamenim brzim implementacijama u C ili C++ jeziku. Ovaj zadnji pristup koristio
sam samo jednom ili dva puta.

Alex: My favorite site is http://localhost/
R.J. Oppenheimer: "I am become death, destroyer of worlds" (1945 AD)
tweet.13x ||
linkedin.13x
 
Odgovor na temu

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.dynamic.stcable.net.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: Python i korištenje02.04.2009. u 17:22 - pre 182 meseci
Ja sam poceo da ucim Python najvise iz znatizelje i vremenom sam uvideo da ima dosta pozitivnih strana. Kao sto vec rece alex, brzo se moze stici od ideje do gotovog programa. Uvlacenje blokova whitespace-ovima zahteva odredjen nivo discipline, isto kao i predlog ogranicenja redova do 80 karaktera. Svidja mi se jer sa njim mogu napraviti i skript za neki administrativni zadatak, a i web i desktop aplikaciju.

Neku malu bezveznu desktop aplikaciju, koju sam napisao za Windows (za GUI sam koristio QT), kopirao sam na Ubuntu, instalirao QT, pokrenuo aplikaciju i radi bez ikakvih problema.

Sto se tice brzine, nedavno je pokrenut projekat unladen-swallow koji ima za cilj da se Python ubrza i do 5 puta: http://code.google.com/p/unladen-swallow/wiki/ProjectPlan

Edit: Evo, sad sam napisao za svega par minuta skripticu koja sa jednog sajta preuzima podatke i ispisuje ih, trenutno samo u konzoli. Sad samo da sprckam neki GUI i gotov program :)

[Ovu poruku je menjao kazil dana 02.04.2009. u 22:41 GMT+1]
 
Odgovor na temu

xaotuk
Sasha Shipka
Beograd

Član broj: 204719
Poruke: 15
*.dynamic.sbb.rs.



+4 Profil

icon Re: Python i korištenje02.04.2009. u 23:09 - pre 182 meseci
Za testiranje brzine jezika postoje benchmark testovi koji mere koliko brzo resava odredjeni algoritmi implementirani u tom jeziku.
Npr.: http://shootout.alioth.debian....est=all&lang=all&box=1
Python je relativno spor jer je interpreter. Medjutim, to sto je interpreter omogucilo je laku realizaciju dinamicnih tipova, sto daje mnogo prednosti u produktivnosti. Retko kad ce ti trebati veca brzina od one koje python omogucava. U mojoj firmi 95% koda je uradjeno u pythonu, heavy duty client/server sistem i za sada nemamo problema sa performansama. Kriticne elemente, koje bas zahtevaju izuzetnu brzinu smo radili u C-u, a sve se to lepo uklapa u python.
Ono sto je bitnije za jezik je produktivnost. Sa sto manje (citljivog) koda i sto elegantnije resiti problem.
Dinamicnost jezika daje sjajnu fleksibilnost prilikom programiranja, ali isto tako moze da bude mac sa dve ostrice.
 
Odgovor na temu

alex
Aleksandar Radulovic
Senior Software Engineer, Spotify
Stockholm, Sweden

Član broj: 71
Poruke: 2194
*.siminn.is.

Jabber: alex@a13x.info
ICQ: -1
Sajt: www.a13x.info


+1 Profil

icon Re: Python i korištenje03.04.2009. u 12:48 - pre 182 meseci
(mala digresija u vezi tih benchmark testova na shootout-u)
Na Erlang mailing listi je bila pocetkom marta diskusija na temu brzine izvrsavanja jednog algoritma implementiranog u Erlang jeziku.
Implementacija nije u potpunosti iskoriscavala potencijal Erlang jezika i napisana je bez paralelizma (za zainteresovane, Erlang je
funkcionalni jezik sa ugradjenom podrskom za paralelno izvrsavanje (concurrency) procesa u soft realtime, distributivno programiranje,
itd).

Neko je na listi implementirao isti algoritam ali uz koriscenje paralelizma i unapredjenje u performansama je bilo neverovatno. Zatim
se postavilo pitanje da li bi paralelizam bio dozvoljen na shootout igri (moje licno misljenje je da bi trebalo da bude dozvoljeno).

Konkretniji primer nepoznavanja ili nekoriscenja osobina programskog jezika za povecanje performansi ne mogu da nadjem :)
(kraj digresije)

Brzina izvrsavanja programa je veoma sirok pojam (citava grana industrije, reklo bi se) gde se dodatne performanse mogu dobiti
na razne nacine. Ako predstavimo performanse sa propusnom moci nekog programa (throughput, koliko ulaznih podataka program
moze da obradi i pretvori u izlazne podatke za jedinicu vremena) a skalabilnost programa predstavimo sa kolicinom novca potrebnom
da se poveca propusna moc (performansa) imamo za cilj da nam program pre svega bude skalabilan (u prevodu da sa sto manjom
kolicinom novca dobijemo najvecu propusnu moc).

U tom znacenju pitanje performansi je pre svega pitanje za narucioca posla (ili programa) - koliko su performanse izvedenog programa
prihvatljive za upotrebu i koliko novca zeli da ulozi u poboljsanje tih performansi.

Za dosta narucioca s kojima sam ja imao prilike da saradjujem najbitnija stavka je tacnost programa (u prevodu, program radi ono
za sta je dizajniran) u nekim normalnim okvirima performansi (za cije merenje koristim PLANGUAGE).

Sto se mene tice, odavno sam prestao da brinem o performansama, jer poznajuci jezik, meni i mojim klijentima performanse ne
predstavljaju nikakav problem. Slazem se da bi u nekom drugom jeziku neki od programa bili znatno brzi - narocito ako bi ih
implementirao neko ko je ekspert u tim jezicima. Meni licno bi to predstavljalo problem jer pogodnosti koje Python jezik pruza
ne bih menjao ni za sta drugo.

Verujte mi na rec, kada u timskom radu (tim od 5+ ljudi) pocnete da radite u Python jeziku vise ne zelite da radite ni u cemu drugom.
Nazalost, na poslu radim dosta u Javi i svaki put dodjem do zakljucka da bih konkretan problem znatno brze (i sa znatno manje kôda)
izveo u Python jeziku. Najbitnija stvar je da pritom ne bih izgubio nista na citljivosti i razumljivosti programa!


Alex: My favorite site is http://localhost/
R.J. Oppenheimer: "I am become death, destroyer of worlds" (1945 AD)
tweet.13x ||
linkedin.13x
 
Odgovor na temu

MarkoBalkan

Član broj: 141124
Poruke: 1624
...140.71-dsl.net.metronet.hr.



+19 Profil

icon Re: Python i korištenje03.04.2009. u 13:13 - pre 182 meseci
jel ima smisla koristiti wxpython za izradu GUI-a?

meni je wx jedan od boljih paketa za GUI.
bez obzira dali se radi o c++, python-u ili perlu.

a kakav je python sa grafikom, igrama?

recimo opengl, pygame?
 
Odgovor na temu

xaotuk
Sasha Shipka
Beograd

Član broj: 204719
Poruke: 15
*.dynamic.sbb.rs.



+4 Profil

icon Re: Python i korištenje03.04.2009. u 18:48 - pre 182 meseci
Mislim da su implementacije testova na pomenutom shootout-u dovoljno pouzdane. Kod testova je otvoren i svako moze da doprinese u implementaciji i poboljsanju performansi. Takodje, smatram da je broj i izbor samih algoritama koji se nalaze u benchmarku dobro odabran da pokrije sve aspekte u testiranju performansi. Slazem se da ima dosta primera neadekvatno uradjenih testova na netu kojim se 'dokazuje' inferiornost nekih jezika od strane ljudi koji ga ne poznaju.

Sto se tice odnosa performanse/skalabilnosti/cene/brzine_razvoja apsolutno se slazem da je python jedan od najboljih jezika na trzistu i iz istog razloga tim u mojoj firmi postize odlicne rezultate. Od jezika koje znam/ucim jedino mislim da haskell moze da mu parira po svakom od kriterijuma (mozda moze jos nesto, ali za haskell znam). Medjutim, u mojoj firmi su izuzetno zadovoljni pythonom da nemaju nameru da prelaze ninasta drugo - python fenomenalno odradjuje posao.

Za wx sam cuo da je dobar ali nisam radio sa njim. U mojoj firmi se koristi pyqt koji je sjajan za desktop aplikacije. Ja iz licnih preferenci koristim pygtk koji je takodje odlican, ali se smatra da je pyqt jednostavniji i bolji (licno ne mogu da tvrdim sta je bolje).

Sto se razvoja igara tice:
Opengl binding za python samo poziva c/c++ funkcije wrapovane u python pozive, pa performanse nisu tako lose kao sto bi na prvi pogled neko mogao da pretpostavi.
Preporucujem ti da pogledas ogre engine i python bindings za isti: http://www.ogre3d.org/wiki/index.php/PyOgre
U praksi se medjutim engine igara i dalje pretezno razvijaju u c++, dok je python sve cesce "glue" koji povezuje igru u celinu i odradjuje logiku. Tipican primer toga je i cuvena Eve Online, http://www.eveonline.com . Koristi c++ engine i stackless python ( http://www.stackless.com/ ) za skoro sve ostalo. Pomenuta igra je sampion u PvP-u, u istom sistemu moze po 1000 igraca istovremeno da ucestvuje u zestokom sukobu a da igra ne laguje.
 
Odgovor na temu

MarkoBalkan

Član broj: 141124
Poruke: 1624
78.134.138.*



+19 Profil

icon Re: Python i korištenje04.04.2009. u 17:04 - pre 182 meseci
@xaotuk

znači sve poslovne aplikacije radite u python-u sa PyQt?
 
Odgovor na temu

xaotuk
Sasha Shipka
Beograd

Član broj: 204719
Poruke: 15
*.dynamic.sbb.rs.



+4 Profil

icon Re: Python i korištenje04.04.2009. u 19:43 - pre 182 meseci
U pitanju je klijent aplikacija za sistem za distribuciju sadrzaja. Ona je razvijana u pyqt-u. Mozes da je skines i vidis kako izgleda i radi: http://www.aikeo.com . Jos uvek je u test fazi, ali sva funkcionalnost je tu.
 
Odgovor na temu

alex
Aleksandar Radulovic
Senior Software Engineer, Spotify
Stockholm, Sweden

Član broj: 71
Poruke: 2194
*.static.simnet.is.

Jabber: alex@a13x.info
ICQ: -1
Sajt: www.a13x.info


+1 Profil

icon Re: Python i korištenje05.04.2009. u 16:24 - pre 182 meseci
Kad smo kod EVE Online, CCP Games (islandske kompanije koja razvija softver) je veoma posvecena Python programiranju. Kod njih cak postoji sistem gde programer ili tim programera mora da pokaze i dokaze razlog sto bi nesto trebalo implementirati u bilo cemu drugom od Python-a.

Sto se tice igara, rado koristim Pyglet i Ogre, mada je ponekad i dovoljna PyOpenGL implementacija. Pyglet je vrlo slican Pygame-u.

Alex: My favorite site is http://localhost/
R.J. Oppenheimer: "I am become death, destroyer of worlds" (1945 AD)
tweet.13x ||
linkedin.13x
 
Odgovor na temu

[es] :: Python :: Python i korištenje

[ Pregleda: 3684 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.