sziasztok
ugy dontottem, hogy (hobbi) projektemet meg egyszer es utoljara :) hajlando vagyok ujrairni, mert a perlbe kezdek belegabalyodni..
a projektem nem regexp-ekbol all, erre a perl tokeletes volna.. tomboket, socketeket es idozitest kell kezelnie, relative nagy mennyisegben (daemon).
tehat: melyik nyelvet ajanljatok, es miert? engem foleg a sebesseg erdekelne, es szakmai okok.
valaszaitokat varom
ErdosJ
- 2024 megtekintés
Hozzászólások
neki is alltam mar egy tesztet kesziteni..
elso feladatban mindket scriptnek fel kellett toltenie egy szazezer elemu tombot egytol szazezerig. a perl negy szazad masodperccel gyorsabb volt.
- A hozzászóláshoz be kell jelentkezni
És mennyi volt a teljes idő a két esetben? (Mert ugye nem mindegy, hogy mekkora futási időn lehet 4 századmásodpercet spórolni.)
- A hozzászóláshoz be kell jelentkezni
jogos, sorry.. tehat:
perl: 0.125776052474976
python: 0.165102958679
mindekozben futott x, kde, bongeszo, mysql, apache szerverek, stb..
a gep: p3, 700mhz, 256mb ram.
- A hozzászóláshoz be kell jelentkezni
Kipróbáltam én is, érdekes, nálam a python volt gyorsabb kb 1 századmásodperccel.
perl: 0,1024...
python: 0,904...
(Nálam kde és firefox futott, a gép Core Duo, 1733mhz, 1G ram)
- A hozzászóláshoz be kell jelentkezni
:)
tényleg nem kekeckedésből, de a (0,1024 > 0,904) feltételt te igaznak interpretálod?
a.
- A hozzászóláshoz be kell jelentkezni
Jogos, elírtam a tizedesvesszőt :-)
Helyesen: python: 0,0904 és perl: 0,1024
- A hozzászóláshoz be kell jelentkezni
A kódokat sem ártana látni...
- A hozzászóláshoz be kell jelentkezni
python:
lista = [i for i in xrange(100000)]
perl:
@lista = (1 .. 100000)
- A hozzászóláshoz be kell jelentkezni
bocsi, de a perl-es valtozatnak nem inkabb
lista = range(100000)
felelne meg inkabb?
- A hozzászóláshoz be kell jelentkezni
De.
- A hozzászóláshoz be kell jelentkezni
Ok, elismerem, perlhez nem értek :-)
- A hozzászóláshoz be kell jelentkezni
Khm. Ez Python javaslat volt.
- A hozzászóláshoz be kell jelentkezni
Ja... igen. De elvileg az xrange egy kicsit gyorsabb mint a range. De lehet, hogy tévedek.
- A hozzászóláshoz be kell jelentkezni
nem gyorsabb. A kulonbseg az, hogy a range egy listat keszit, mig az xrange egy generator. Tehat ha iteralni akarsz rajta "for i in ...." modon, akkor az xrange jobb mert nem foglal (annyi) memoriat, es gyorsabb. De mivel te listat akarsz kesziteni, ezert semmi ertelme xrange-t hasznalnod.
- A hozzászóláshoz be kell jelentkezni
Értem, és köszönöm! Akkor itt tényleg semmi értelme nem volt :-)
- A hozzászóláshoz be kell jelentkezni
A perl általában gyorsabb, de a python sokkal átáthatóbb. Ha az ember nem áll ellen a kísértésnek könnyen ír perben write only kódot. Nem csoda ha belekavarodtál.
Pythont ajánlom.
- A hozzászóláshoz be kell jelentkezni
Szerintem a Perl is olyan, mint a legtöbb nyelv, ami nem köti meg nagyon a kezed: lehet benne szép, meg spagettikódot is írni. Ha Perlben kódolsz, az alábbi két szempontot tartsd szem előtt:
- mindig figyeld a CPAN-t, hátha valaki már megírta azt, amire szükséged van (pl. ha szervert írsz, származtass a Net::Server-ből)
- mindig használj névtereket, még akkor is, ha nem OO kódot írsz (és akkor már a csomagokat rakd külön fájlokba)
Így azért lehet átlátható szkriptet írni, csak nyilván nagy a kísértés, hogy az ember gányoljon...
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
Én szerintem meg nagyon nehezen lehet benne szép és átlátható kódot irni. Pont azért, mert magától a sok nyelvi hieroglifa miatt kb. 100 sor után átláthatatlan lesz bármilyen Perlben irt kód. Ettől még nagyon hatékony programozási nyelv marad. A Python-ban viszont alapból szinte csak tiszta kódot irhatsz a tagoltság miatt. Eleve úgy tervezték a Python nyelvet, hogy egyszerű és hatékony és átlátható legyen. A Google-nál nem véletlen, hogy majd' teljesen kiirtották a Perlt és az új kódok nagy részét Python-ban irják. Ajánlom olvasásra a http://www.pythonology.net/success&story=esr oldalt, ahol nagy múltú open-source guru Eric S. Raymond ir a saját tapasztalatairól.
- A hozzászóláshoz be kell jelentkezni
Kis *gyakorlattal* a perl jól olvasható - ha a programozó is úgy akarta. A perl többek között a lehetőségekről szól és nem a szépségről. És igen, ezt gyakran (látszólag?) rosszul használják ki. Én attól kapnék kiütést, ha egy nyelv kényszerítene a "tabolásra".
- A hozzászóláshoz be kell jelentkezni
Olyan nincs hogy "kis gyakorlattal a perl jól olvasható". Akármilyen gyakorlatod van, a nyelvnek vannak korlátai. Egy idő után azok a tünetek fognak jelentkezni amiket irtam. Ajánlom, hogy tanulmányozd kicsit jobban a témát. Olyan véleményekre vagyok kiváncsi, akik mindkét nyelvben tudnak programozni és több éves tapasztalattal rendelkeznek.
- A hozzászóláshoz be kell jelentkezni
Nem tudom mit vársz, hogy mi derüljön ki a kettő nyelv "ütköztetéséből", mert a prekocepciód az látható. A téma részemről lezárva.
- A hozzászóláshoz be kell jelentkezni
Én is a Pythonra szavazok...
Nem vagyok egy nagy Perl guru, de nehéz átlátható kódot írni (csábít a sokféle lehetőség a "rövid" kódokra - ráadásul mindent lehet többféleképp is írni, ami szintén nehezíti az olvashatóságot). Pythonban nehezebb átláthatatlan kódot írni (de lehet!).
Ha számolni akarsz, akkor numpy, scipy, vagy épp a spec. ciklusod megírása psyco-ba vagy direkt C-ben megoldás lehet.
- A hozzászóláshoz be kell jelentkezni
Kár, hogy a psyco-nak vége és csak i386-ra érhető el. :(
Jó lenne, ha ez a "technológia" (JIT) bekerülne a mainline pythonba is...
- A hozzászóláshoz be kell jelentkezni
http://codespeak.net/pypy/dist/pypy/doc/news.html
Van/lesz benne minden: JIT, Stackless Python, és amit még szeretnél (te írhatod a fordítót :))
Amúgy kis feladatra nem vészes a C modul írása sem. Mondjuk a 3 sornyi for ciklusom köré kellet 30 sor sallang a "modulosításhoz", de a gyorsulás 1000-szeres volt.
- A hozzászóláshoz be kell jelentkezni
Nem foglalkoztam vele különösebben eddig, ezekszerint (abban a fél percben, amit a pypyre szántam) félreértettem a célját. :)
Köszi.
- A hozzászóláshoz be kell jelentkezni