1. Lakši za učenje?
Ovo je dosta složeno pitanje, ali odgovoriću jednostavno: Python sadrži mnogo manje sintaksnih elemenata i zato je jednostavniji (pa ga je valjda i lakše naučiti).
Sintaksa za Python je uvek eksplicitna, i nema mnogo prečica. To doprinosi jednostavnosti sintakse.
Perl, sa druge strane, sadrži mnogo raznih konstrukcija naredbi, svašta je dozvoljeno itd.
Stoga, mislim da je odgovor na prvo pitanje Python.
(Međutim, za neke stvari kao što je overloading operatora i pravljenje nizova i sličnih stvari, u Python-u se moraju znati i nazivi funkcija za to, pa i on ima dosta elemenata koje bi trebalo znati ali ovo se ipak ređe koristi)
2. Perl, kako i sam kažeš, važi za „write-only“ jezik. Svaki moj pokušaj da napišem složeniji program u Perl-u se sveo na nečitljivo čudovište od 1000+ linija, i zaista ga je teško održavati. Prvi razlog za to je za mene malo neprirodna podrška za OOP, i zato izbegavanje iste, i dobijanje teško razumljivih linijskih programa u kojima je svaka treća linija neki regex. Naravno, ni moja programerska (ne)kompetentnost se mora uzeti u obzir.
Python je jezik koji sadrži sve potrebne elemente OOP, sintaksa mu je veoma čista, i programi se lako održavaju (koliko i programi u svakom OO jeziku, ali oduzmite neke stvari koje samo prepune sintaksu kao što su virtual, i ostalo u C++-u).
Ono što mnogi smatraju za nedostatak u Python-u je preterana upotreba „self“-a: prihvaćeni naziv za imenovanje objekta kome metoda pripada. Zato je čest zahtev u comp.lang.python za dodavanjem „with“ konstrukcije, ali te rasprave pokrenu vatrenu raspravu („flamewar“) a Python programeri ponude rešenja koja su čitljivija bez „with“ i mnogo „self“-ova.
Dalje, striktnost sintakse Python-a znači da se (gotovo) sve obavlja kroz metode objekata/klasa, kao i njihove parametre. Naravno, moguće je napraviti neke stvari koji bi odudarale od ovoga, ali to nije praksa (kao vidljivi izuzetak bih izdvojio „%“ (moduo) operator koji je definisan između stringa i n-torke (tuple) kao C sprintf funkcija).
E da, i jedna veoma važna stvar: Python je dynamically-typed (kao i Perl, mada se to u Perlu može isključiti komandnom opcijom), ali je strongly-typed (za razliku od Perl-a). Čini mi se da ove izraze upotrebljavaju, a ovo drugo znači da kada jedna promenljiva dobije neki tip (string, broj, klasa, niz, mada su sve ovo klase...) ona ga zadržava dok se eksplicitno ne traži drugačije.
Još jedna važna stavka za preglednost programa napisanih na (u) Python-u je to što se razmaci (uvlačenje, indentacija) koriste za definisanje strukture programa. Ovo uklanja potrebu za suvišnim elementima kao što su tačka-zarez, vitičaste zagrade za grupisanje, i slično.
Sve u svemu, mislim da je i za ovo bolji izbor Python.
3. Hm, ja nisam stekao utisak da su ova dva jezika uopšte slična.
Python programe ti (kao, verujem, poznavalac C++-a) sigurno čitati i održavati odmah, a Perl sadrži mnogo više raznih konstrukcija, itd.
Python je mnogo više usmeren na OOP, dok je Perl ipak klasičan jezik koji više podseća na mnogo jači SH (samo pogledaj veličinu „man perlfunc“). E sad, Perl sadrži sve pozive koji su gotovo identični sa C pozivima, i programi teže da mnogo više liče na C programe sa ugrađenom sintaksom za regularne izraze, rečnike (hash, dictionary), i nizove, sve sa dinamičkom dodelom memorije.
Ja sam koristio oba, a Perl sada koristim samo za manje skripte (do 10-15 redova ako već SH ne može to da izvede), a Python za bilo šta ozbiljnije (a ne preterano ozbiljno, za šta se još uvek okrećem C-u).
Znači, Perl više izgleda na „hacked“ jezik, a Python na čist objektno-orijentisani („predmetno-usmereni“ ;) jezik.
Napominjem da Perl kao OO jezik zaista nisam koristio, i to može biti razlog moje „pristrasnosti“ za Python. Python ima težnju da ne bude „script“ jezik, već pravi programski jezik (već su pravljeni potpuni programi u njemu, čak i sa GUI-em, naravno GTK+).
Svaki nudi već dovoljno veliku bazu koda u standardnoj distribuciji, pa bi sve aktivnosti (baze, XML, obrada teksta, i slično) mogle lako da se obave i sa jednim i sa drugim.
Nadam se da će bar nešto od ovoga pomoći pri izboru jezika; tj. da postoji bar nešto pravih i zanimljivih podataka u ovoj (podužoj) poruci koja će uticati na izbor.
Jasno je koja je moja preporuka: Python. Ali, sve zavisi od potreba, a Perl kod ima tendenciju da bude znatno kraći, ali otuda i njegova nerazumljivost. Svakako, iskusni Perl programeri nemaju problema sa razumevanjem, ali vi to niste, zar ne?
[
Ovu poruku je menjao tOwk dana 19.02.2003. u 19:42 GMT]
Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.