Perl vs Python
Cesto dolazim u dodir sa delovima koda koji su pisani u jednom od ova dva (perl i python) jezika, i odlucio sam da jedan od njih ubacim u svakodnevnu upotrebu (pored C-a i PHP-a).
Pitanje je za koji se odluciti ? Meni se licno vise svidja sintaksa Perl-a ali to ne treba da bude presudno. Cini mi se da Python ima svetlu buducnost i da Perl ostaje iza kao oldschool alat ... takodje me zbunjuje i opaska da Python menja svoj core u verziji 3. Vasa misljenja ? Koje su prednosti i mane ovih jezika ? Kakva su vasa iskustva ? Hvala, Ivan |
I ja sam pitao isto pre neke 4 godine
http://www.elitesecurity.org/t20836-Perl-vs-Python Perl koristim za "quick & dirty" skripte, a python u mojoj firmi koriste za jednu GUI aplikaciju i navodno su jako zadovoljni, mada je po mom mišljenju ta aplikacija grozno spora i izgleda kao Windows 3.1 Bojim se da ti nisam mnogo pomogao :D |
Evo vec nekih dva sata citam textove po netu i trazim odgovor ... i malo je tesko izabrati. Prvo mi se svideo Perl ali cini mi se da bi za vece aplikacije bio previse 'ruzan', a sa druge strane brinu me promene u Python v3 jer ne bih da gubim vreme na prebacivanje koda ...
Zato, ajmo podpitanja: 1. Kada se planira izlazak Python v3 ? 2. Koji jezik je brzi (sistemski pozivi i sl) i trosi manje memorije (ako ovo uopste ima smisla pitati sada) ? 3. Sa kojim jezikom ima vise posla ? I gde (web, sistem administracija) ? |
Citat:
dakle, njemu se perl sintaksa vise svidja od php-a (sto nije kod mene slucaj) perl ima frameworke koji su prosli detske bolesti i sad su opstepoznati i stabilni on kaze da je perl super za vece aplikacije zbog cpana i nekih njegovih modula CPAN je koristio agresivno i bio JAKO zadovoljan sto se tice tvojih pitanja, odgovoricu na 2 i 3.: 2: mislim da nema smisla pitati to danas :) 3: ne znam za perl vs pyton, moj prijatelj je presao na php jer je lakse naci posao sa istim, inace ga ne bi menjao. i sad licne projekte radi u perlu python - pojma nemam nemam ni nameru da ucim, dovoljno mi je sto pratim php i zbivanja oko njega |
Odma da kazem da Python "ne govorim".
Da se nadovezem na robi-robi: Postoji dosta kvalitetnih frejmworka za skoro sve upotrebe (network programming, web programming, templejting, etc, etc...), i sve se moze dosta lako nabaviti preko CPAN-a. Gotovo svaki problem na koji naidjes neko je vec resio, pa ako nista drugo, mozes da vidis kako je to neko drugi uradio. Perl + System programming = win-win kombinacija (ne sumnjam da je kod Pythona prica dosta slicna) Mnogi se "zale" da je u perlu tesko pisati enterprise software - na srecu, poprilicno je moguce, ali je najcesci problem u programeru a ne u jeziku. Perl ne postavlja NIKAKVA pravila, te je jednu istu stvar mozes da uradis na puno razlicitih nacina. Uvek mozes da pises quick'n'dirty kod, ako hoces nesto na brzinu da sklepas. Uz malo vezbe, mozes da pises vrlo citak kod koji se lako odrzava. Sto se brzine tice, to stvarno ne bi trebalo da te opterecuje. Ali ajde. Kao i svaki drugi interpretirani jezik, najvise vremena odlazi na kompajliranje u bytecode, posle toga stvari teku vrlo brzo. Pokretanje skripte koja koristi dosta kompleksan framework ne traje duze od sekund-dva prilikom inicijalnog pokretanja. Na izvrsavanje skripte najvise utice ljudski faktor (lose napisan kod). Toliko za sada.. Imas jos pitanja? |
Citat:
Citat:
Citat:
Bottom line je da je najbolje znati oba, naročito ako planiraš da se "zanimaš" sistemskom administracijom. Sa druge strane, ako si navikao "samo" na C i PHP korišćenje Perl-a bi ti možda bilo lakše jer je malo "bliži" tom načinu razmišljanja nego Python. E, kad sam sve to rekao ... kao neko ko je na Python prešao pre par godina (otprilike C->Perl->PHP->Python) i do dan-danas nije požalio zbog toga moram da ti preporučim Python od sveg srca - naučićeš jedan od najbolje dizajniranih (i najmoćnijih) jezika. |
prednost perla je ogromna raspostranjenost u linux svetu, pored shell scripta je najcesci jezik za razne sistemske alate i skripte... takodje extra je zgodan za upotrebu direktno iz komandne linije, za razne search & replace manipulacije nad text fajlovima... znaci ako ces se baviti cackanjem linuxa iz konzole perl je veoma dobro invstirano vreme..
python se nije toliko zapatio jos, ali ima extra cistu sintaxu, i dosta biblioteka, koliko sam shvatio (nisam probao licno) lako se integrise sa GUI, pa mozes da pravis razne aplikacije za X-e ili windowse, sve u svemu super je i on... po meni glavna prednost je sto je sintaxa prostija od perla i brze ces je nauciti (mada opet ja volim sve one $@% u perlu jer, kad se naviknes, to zapravo cini kod jasnijim, odmah vidis tip promenjive). Takodje ako volis OOP, python ima klasicniji pristup tome, perl ima objekte nalik javascriptu, ne koriste se klase, nego su objekti zasnovani na prototype-ovima, sto je u pocetku malo zbunjujuce (mada je u stvari vrlo prosto, i ima sve osobine OOP koje su ti potrebne) Razmisli takodje o Rubiju, on je kao perl sa jednostavnijom sintaxom i bolje resenim objektima. Meni se vise svidja o pythona... |
Bas je tesko odluciti ;)
Koristio bih taj novi jezik za administraciju (nista preterano komplikovano) ali ujedno i za web gde bi mi se ucinilo da je PHP "nemocan". Ne znam zasto kazem "nemocan" ali posle C-a neke stvari u PHP mi izgledaju nekako "nestabilno" ... Kod Perl-a mi se svidja sintaksa, a kod Python-a podrska za OOP i konzola ... |
Onda je odluceno, nauci oba :)
|
Citat:
|
Sta to moze da uradi python/perl sto ne moze PHP u cli rezimu? Da zanemarimo perfomanse, verujem da u 95% stvari taj deo totalno nije bitan.
|
Za skriptovanje je PHP skroz OK, posebno ako ti je primarna platforma, dobro ga poznaješ i nemaš vremena, živaca i volje da učiš drugi jezik da bi napisao par skripti koje će se vrteti u CLI-ju.
Doduše, zadnji put kada sam se igrao sa PHP-ovim interaktivnim modom bio je teško đubre (pre nekih godinu dana, na Windowsu - ne znam kako stvari stoje na drugim platformama). Na kraju sam uzeo i skuckao nešto svoje - jedan beskonačni while, eval i par prljavih hackova i sve radi kako očekujem :D |
Ah da, nisam mislio na razvoj desktop aplikacija na windowsu, vec na stvari koje su pomenute u inicijalnom postu :)
|
Off Topic: Citat:
|
Citat:
|
Hej, nisam hteo da otvaram nikakvu advocacy diskusiju oko jezika ovde. Moja poenta je sledeca ...
Zasto bih ja (ili bilo ko drugi) ucio Perl/Python samo da bih mogao da odradim stvari koje vec mogu da odradim u PHP-u, koji jelte vec odlicno poznajem. A to je covek upravo pitao. Ista analogija bi vazila i za ASP. Inace, ok je ako covek ima vremena da uci jezike, i lepo je znati sto vise programskih jezika (valjda), ali hajde da se zadrzimo na ovom pitanju. Dakle, sta to moze Python/Perl a da se ne moze odraditi u PHP-u, sto bi nateralo nekoga da uci pomenute jezike. |
Citat:
- Boje. - Line completion za ključne reči, metode, promenljive i fajlove u tekućem direktorijumu pomoću TAB tastera. - Dinamička introspekcija objekata čime dobijate njihovu dokumentaciju, prototip ili izvorni kod pomoću ? ili ?? na kraj linije. - Rad sam sesijama (snimanje, otvaranje, izmena). - Makro sistem. - Automatsko uvlačenje koda. - Istorija komandi sa pretragom. - Ulaz/izlaz je numerisan. - Pristup shell-u pomoću ! na početku linije sa shell komandom. - Automatsko postavljanje zagrade za callable objekte: sin 3 se pretvara u sin(3). - ... (ima još, ali nisam ih još uvek koristio) |
Citat Originalno napisao dinke
Sta to moze da uradi python/perl sto ne moze PHP u cli rezimu? Da parafraziram pitanje: šta to može da uradi PHP što ne može ASM, C++ ili Java? Da parafraziram pitanje: šta to može da uradi ASM, C++ ili Java sto ne moze da se uradi sa dovljno vremena i prekidacima? |
Citat:
PS: Prava razlika između prosečnog PHP i Python programera :D |
Citat:
|
Citat:
Perl je tipican predstavnik swissarmicus knifus porodice jezika, i kao takvog ga koristim 90% vremena. Kad se radi veci projekat, u igri je mnogo vise od puke sintakse i toga koliko je jezik zgodan za pisanje hackova, sto znaci da svaki ozbiljan projekat moze da se odradi u svakom jeziku. Najbolje je poznavati vise jezika, pa koristiti onaj koji je najbolje prilagodjen konkretnom zadatku. |
Citat:
|
@dinke
Pitanje koji si postavio sam i ocekivao od tebe ;) I donekle si u pravu kada kazes zasto bih to radio ... Ali, pomenuo sam vec da imam ceste susrete sa ovim jezicima ali ih ne znam dovoljno dobro, zato i zelim da jedan "savladam". Ono sto radim sa njima moze i u PHP-u (u kojem i radim vecinu stvari) ali jednostavno mislim da nije stvoren za neke stvari koje se ticu administracije i siguran sam da postoje delovi web aplikacija koje bi mnogo bolje (stabilnije) radile u Perl-u/Python-u (neko iskusniji ce ovo verovatno da detaljnije objasni). Sa druge strane ucenjem jos jednog jezika, prosiricu spektar svojih mogucnosti a i ujedno mogu da naucim neke nove stvari. Iskreno, jeste da trenutno sa PHP-om (pored security-a) zaradjujem novac i da mi je u njemu sve mnogo lakse napraviti ali mi se cini da je kao neka igracka ... previse brzo se uci i sve je dozvoljeno (jbg poceo sam sa C-om). Btw, mnogo sam mlad ... mogu da isprobavam jos puno (usput kad imam vremena programiram i u C#) ;) Da se vratimo na moj problem ... Sintaksa Pythona mi se sve vise ne svidja, nervira me sto ce da menjaju mnogo toga u v3, sve varijable su iste (nema prefiksa kao kod Perl-a), Perl-ov kod je kraci i prihvata exibizicije, konzola mi i nije previse potrebna, nije mi potreban visual, ... izgleda da Perl vodi ;) Razmislicu jos malo pa vam javljam sta sam odlucio ... |
(oblačim azbestno odelo ;) )
Citat:
A što se tiče Py3K, upravo gledam compatibility page i ... 90% mog koda (a ima ga podosta i sa "egzibicijama") će raditi bukvalno bez izmene, ostalo - taman će me naterati da, konačno, dovedem te delove u red. IIRC Perl 5 <-> 6 imaju drastično veće razlike nego Python 2.x <-> 3K. A, što se tiče egzibicija, ako ih hoćeš onda ti ne preostaje ništa drugo nego pure C, sve ostalo je .... ;) Ako već tražiš jezik za sysadm i još ponešto, probaj da pogledaš (pročitaš) deo stdlib-a dotičnih, IMHO veći deo vremena ćeš ionako provesti čitajući svoj, ili tuđi kod, nego pišući novi. Kada sam morao da se vraćam nekim povećim parčićima koda pure C mi je delovao daaaaleko čitljivije neko neki od Perl ili čak PHP kodova ;) BTW jedan od razloga mog "navlačenja" na Python je baš stdlib, imaš skoro sve što ti na pamet padne već uz sam jezik, odlično dizajnirano i što je najbitnije vrlo čitljivo napisano tako da je ponekad lakše pogledati src lib-a nego kopati po doc. Citat:
Off Topic: Ne možeš da napišeš ZX Spectrum emulator :P Perl i Python imaju barem po jedan ;) Tačnije, nisam video neki pristojan gfx lib za PHP (nije da sam tražio) Perl ima ___________ (popuniti), Python ima PyGame i SDL wrapper. Off Topic: Citat:
Kôd:
int *LPzCpstrtmrtOvoJeVar; |
Odlicno, jel mogu da zamolim za jos malo "advokatisanja" da bih uskoro mogao da izaberem novi jezik ... Hvala.
|
Stvarno ne znam šta očekuješ od ove teme? Jednoglasan odgovor ili? LB ti dade dobar savet - nauči oba. Rešen problem.
|
Nemam vremena a ni potrebe (nijedan nije revolucionaran u odnosu na drugi) da naucim oba, lepo cu da procitam komentare iskusnijih (u koriscenju ovih jezika) i onda cu na osnovu tih zakljucaka, svojeg istrazivanja i potreba da izaberem ...
Ako neko ima jos nesto da doda neka slobodno uradi to, bicu veoma zahvalan ... |
Citat:
Najvaznije je da probas oba i vidis u kom se vise osecas "kao kod kuce" - to ti je najjaci argument. Jezik na ciju logiku ne mozes brzo da se naviknes ti nikad nece biti "the one"... Ali ajde, kad smo vec kod toga. Mnogo je vise ljudi preslo za Perl na Py. Razloga je mnogo, npr: cistiji kod, "standardniji" stdlib, bolji OO... Perl mozda kaska iza vremena, ali ce i to biti ispravljeno u nekoj, nadajmo se, skorijoj buducnosti, kada se Perl 6 konacno pojavi. |
iz mog iskustva jezici se ne uce tako sto ti "odlucis" da naucis taj i taj jezik... tako se uci sintaxa, sto je samo mali pocetni korak (naravno neophodan), a pravi i najbolji nacin da se nauci jezik je da dobijes posao da popravis/prepravis/napravis nesto u datom jeziku (i da naravno bude gotovo za juce) i onda se zabijes u kod i provaljujes sta, kako i gde..
tako da u tom smislu, nauci sintaxu za i python i za perl (i za ruby), pa pusti vreme da ucini svoje... kako budes radio stvari, okrenuces se onom jeziku sa kojim imas vise posla i koji ti je korisniji, i njega ces da provaljujes dublje... |
Citat:
Kôd:
c:\unix\find . -name *.htm -ok perl -p -i.BAK -e "s/search_term/replace_term/g" {} ; takodje ne radi se samo o pisanju novih skripti, nego i o tome da vec postoji jako mnogo sistemskih skripti napisanih u perlu (npr. make) pa je zgodno umeti da se snadjes sa tim... naravno isto vazi i za python i za php, svaki od njih ima svojih prednosti, fora je znati vise jezika i primeniti onaj koji najbolje lezi datoj situaciji |
Odlican link: http://www.strombergers.com/python/
|
http://mjtsai.com/blog/2002/11/25/pe...ython_vs_ruby/
Lepo objasnjeno sa sve tri strane, podkrepljeno primerima. |
Prvo pozdrav ...
Kôd:
#!/usr/bin/perl -T Moram priznati da sam Python samo povremeno imao portebe da gledam, a koristim Gentoo gde je vecina stvari napisana u Python-u, ironija zar ne?. Tako da nisam potpuno kompetentan da odgovorim zato da/ne Python. Dakle samo zasto Perl. Rasprostranjenost Perl-a je veoma velika, nisam siguran da li postoji Linux/Unix koji dolazi bez njega, dok Windows i ako ne dolazi sa njim, lako se instalira i veoma je dobro podrzan. Vec pomenuti all-mighty CPAN - http://search.cpan.com na kome mozete naci skoro bas sve sto vam padne na pamet. I vecina (pogotovo stariji moduli) imaju veoma dobru dokumentaciju, help i tutorijale. Podrska za klase jeste cudna (u poredjenju sa C++), ti tu kao bless-ujes hash referencu... Ali kada se malkice naviknes, to je tako dobro i ima dana kada pozelim takve stvari u C++ ili C# ... Sto se tice old-school i "izumiranja" ... Evo par linkova ... Perl is dead. Long Live Perl - O'Reilly Citat:
Citat:
|
Btw, odlucio sam se za PERL. Ne zato sto je bolji ili ne, nego jednostavno zbog svojih potreba.
Da tek krecem sa programiranjem izabrao bih Python. |
Vreme je GMT +2. Trenutno vreme je 14:38. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.