Scriptometer - a lehetetlen küldetés?
Mindenkinek megvan a maga szubjektív véleménye arról, melyik szkriptnyelv a legjobb. Számos szavazás is lefutott már ebben a témában, ami alapján megkaphatjuk azon emberek véleményének átlagát, akik még szavazni is hajlandóak kedvencükre. A merd néven futó vaporvare írója viszont arra vállalkozott, hogy egy objektív összehasonlító szempontrendszert dolgozzon ki, és ezt a lehetõ legtöbb nyelvre mérceként alkalmazza. A projekt hetek alatt elért oda, hogy már közel 30 bedolgozó finomítgatja, bõvítgeti mind a bevont nyelvek, mind a szempontok irányában. A napokban így kerülhetett be a PHP is a megmérettetett nyelvek közé.
A bevont nyelvek között megtalálhatóak a legismertebb "P" kezdetûek, azaz a Perl, A PHP valamint a Python. Emellett górcsõ alá kerülnek olyanok is, mint az sh shellscript nyelve (megjegyzem, most õ vezet), az awk vagy éppen a JavaScript. A sok más mellett olyan, nem éppen szkriptnyelvnek minõsülõ nyelvek is versenybe szállnak, mint a C vagy a Java.
A felmérés két nagy részre osztható, az egyikben alapvetõ szolgáltatások, tulajdonságok megléte illetve hiánya hat a végsõ pontértékre. A második rész az egyszerû szkriptekkel kezdve elmegy a már viszonylag összetettebb feladatok felé. Itt csupán az számít, hogy mennyit kell az adott feladat megoldásához gépelnünk.
A Scriptometer eredményei még közel sem véglegesek, a végsõ pontértékek még igen képlékenyek. Személy szerint a PHP-nek drukkolok, hogy egy kicsit jobb eredményt érjen el a jövõben. Emellett epekedve várom, hogy a beküldött PHP kódocskám megjelenjen a compile what must be feladatot megoldó kódok között.
A projekt nyílt, szívesen várják a különféle észrevételeket, javításokat, optimalizált kódokat, akinek tehát észrevétele van, ne késlekedjen!
■ A bevont nyelvek között megtalálhatóak a legismertebb "P" kezdetûek, azaz a Perl, A PHP valamint a Python. Emellett górcsõ alá kerülnek olyanok is, mint az sh shellscript nyelve (megjegyzem, most õ vezet), az awk vagy éppen a JavaScript. A sok más mellett olyan, nem éppen szkriptnyelvnek minõsülõ nyelvek is versenybe szállnak, mint a C vagy a Java.
A felmérés két nagy részre osztható, az egyikben alapvetõ szolgáltatások, tulajdonságok megléte illetve hiánya hat a végsõ pontértékre. A második rész az egyszerû szkriptekkel kezdve elmegy a már viszonylag összetettebb feladatok felé. Itt csupán az számít, hogy mennyit kell az adott feladat megoldásához gépelnünk.
A Scriptometer eredményei még közel sem véglegesek, a végsõ pontértékek még igen képlékenyek. Személy szerint a PHP-nek drukkolok, hogy egy kicsit jobb eredményt érjen el a jövõben. Emellett epekedve várom, hogy a beküldött PHP kódocskám megjelenjen a compile what must be feladatot megoldó kódok között.
A projekt nyílt, szívesen várják a különféle észrevételeket, javításokat, optimalizált kódokat, akinek tehát észrevétele van, ne késlekedjen!
php beallitastol fugg
persze ebbol nem minden jogos ;o)
nem midenben vagyok biztos, pls nezze meg vmelyik okos ;o)
/eredeti/tenyleges/register_globals/extra-brutal/
access command line parameters: 35/31/20/16
igy ha csak az egyszrubb dolgokat vesszuk akkor is sztem elorebb lepne
--
üdv: kmm...
Pontvadászat
Azt, hogy register_globals off kompatibilisek a kódok, én helyeslem. Viszont javasolni fogom, hogy a szóközöket vonja le a hosszból, mert a kód olvashatósága nõ tõle, viszont amúgy elhagyható lenne sok helyen. Szóval van mit csiszolni.
A compiler kódot amúgy backtick megoldással küldtem be, nem tudom miért lett system hívás a dologból. Bevallom, fel sem tûnt. Viszont a kommentkiszedõs kód végén eredetileg nem a file_put_contents() állt, azt szintén én javasoltam, meg a PHP 5-re való általáno átállást. Elfogadták. Oda lehet hatni. Fõleg, hogy a file_put contents helyén az általános $fp filehandler helyett a $handler változónevet nyomatták. Ez a PHP 5-re lépés amúgy 1 pontot jelentett, így lett 109 pontból 110.
A grep-es feladattal kapcsolatban: hajrá kmm! :) Bevallom, mivel nincs a külön feladatokra részletes specifikáció, és mivel nem volt türelmem a többi kódból kibogarászni, mit kéne csinálni pontosan, nem foglalkoztam vele.
Van php-hoz debugger, de nem beépített, szóval azért nincs ott.
szokozok
azert par pontal tobb lenne
a <?= a <? echo helyett pl elfogadhato lenne.
--
üdv: kmm...
5k compo után...
5k compo után ezek már csak ujjgyakorlatok... :)
> Kérdés: nekem miért ninc
CLI API-n keresztül tetszett megnézni? :)
Amúgy jogos az átlátható kód, hiszen a praktikusság a lényeg. A fenti kód jó egy compo-ra, de hétköznapokon, hétköznapi feladatokra nem ilyen scripteket írsz ugyebár... :)
Természetesen nem...
Beküldve
Utólagos engedelmeddel elküldtem a fenti kódot az illetékesnek. Átírtam a system() hívást backtick operatorosra, és rákérdeztem, az elõzõ kódban miért cserélte le system()-re... A kód viszont tisztázva lesz, benne lesznek a szóközök, mint minden nyelvnél. Utólag belegondolva, jogos is. Igaz, hogy ettõl minden kód hosszabb lesz, de ez jobban kihangsúlyozza, mennyire összetett kód kell egy adott feladat megoldásához. Ha úgy kell összerakni egy stringet 5 darabból, az büntetõpont a nyelvnek. Átnéztem, ilyen szempontból egységesnek tûnik az összes task összes nyelven írt kódja.
Kéne egy grepes cucc is. Valaki?
grepes cucc
Se Java, se C a többihez meg nem értek annyira, hogy nekiálljak kibogarászni az eredményből a feladatot...
grep
grep under way
A legnegyobb gondot nekem az -F kapcsoló értelmezése jelent, soha nem használtam.
ui.: egyébként kicsit eltorzult a verseny, ha arra gondolunk, h. kifejezetten shell funkciókra kihegyezett versenyben lépnek pályára a szkriptnyelvek. Így nem csoda, h. az sh vezet, mégha meg van támogatva is seddel, greppel és a többivel.
A tervek szerint lesz ott web
T.G. is beküldte :)
Bekerült a cucc, +1 pont lett a dologból. Most kuncsorgok hogy a
+echo `utasitas`;
patch felkerülhessen. A sima backtick-el az volt a baj, hogy az stdout-ra
nem nyomott semmit. Ha szerencsénk van, az a 3 byte is lehet egy pont.
Mondjuk szvsz nem kerekíteném egészre a pontokat, hanem mondjuk 2 tizedre.
Megjött a válasz. Perl-nél
Közben javasoltam, hogy a ?> záró tag-eket szedje le, viszont minden script végzõdjön pontosvesszõvel.
Ez is megvolt :)
kellene még
helyett a <?=xxx?> forma, hiszen ez is elfogadott
--
üdv: kmm...
kellene még 2.
"$_ENV[HOME]\n"
Tadaam!
Hello Word
Pontozás HOGYAN
grep 1.
1. változat az ereg[i] függvényekkel. Először ezt kezdtem el, mondván a grep és az ereg kb. ugyanarra a regexp motorra épül(t).
Tegnap kicsit eljatszottam ve
Az ereg-es megoldasnal a
Helyett a
Viszont a -F parameter nem azt jelenti szvsz hogy quote-olni kene, hanem azt, hogy akkor tobb regexp van egymas utan, \n karakterekkel elvalasztva.
-F: "Interpret PATTERN as a list of fixed strings, separated by newlines, any of which is to be matched."
death match
A -F nem tudom, mit csinál, mint mondtam. A Perl-es Ruby-s példa mind quote-olja a mintát, ezért bátorkodtam így csinálni. A Python-os példán keresztül megvilágosodom majd. A legjobb lenne, ha vki tudna vmi példát mutatni.
grep stdin -- az első visszajelzés
Én először a streamekre gondoltam mint lehetséges megoldás, PerlPython verzió is vmi ilyesmi elven működik. Lehet azonban, h. van ennél okosabb - rövidebb - megoldás is.
ui.: biztatást is kaptunk a jövőre nézve:
stdin
Az alábbi verziót küldtem
ciklus gebasz?
Javaslatom helyette:
$v = $_SERVER['argv'];
array_shift($v);
while ($r = array_shift($v)) {
if ($r == '-h') break;
if ($r == '-i') $i = 'i';
elseif ($r == '-F') $F = 1;
else break;
}
if (!$r || $r == '-h') die("usage: grep [-F] [-i] regexp [files...]\n");
// $r-ben van a regexp most, eztan johet a quote/nem quote jatek
// aztan ha eztan az args ures, akkor stdin, kulonben foriiics
A $prefix miert kell? Szvsz Az usage-ban mashol is "grep" van, nem $prefix, mi se legyunk okosabbak maaaa! :)
minden eliminálva
A
$prefix
-et már korábban rövidítettem$prg
-re, így a mienk többet tud ugyanannyiért, bár ezt a jó tulajdonságát elfelejtettem megírni. :-)Azóta rövidítettem a kapcsolók feldolgozásán is, és most várjuk, h. ez a 432 Byte-os csoda, mire lesz elég.
6 karakter?
helyett:
ez mehetne?
--
üdv: kmm...
esetleg?
üdv: kmm...
Re: esetleg?
nem tul szep, de mukodik...
:D
lenyomjuk a pajtont !!!
elkuldtem ...
--
üdv: kmm...
Ertekadas elagazasban
valljuk be, hogy elágazásba értékadást betenni nem túl szép
Abszolut bevett gyakorlat azokon a nyelveken, ahol ez lehetseges, sot teljesen jol olvashato is, ha mondjuk zarojelezessel jelzed.
C-ben ez teljesen megszokott peldaul:
while(d++ = s++) {}
Felho
koszonom
--
üdv: kmm...
Re: Ertekadas elagazasban
Ezt a példát most nem látom, de sebaj... :)
Ez olvasható, és logikus:
while ($file = readdir($handle))
Ez már nem olvasható, és nem logikus:
if (filemtime($o=substr($c, 0, -1) . 'o') < filemtime($c))
kmm: visszaírt a csóka valamit? Neki mi a véleménnye erről?
visszairas:
holnap megyek legkozelebb haza...
--
üdv: kmm...
Re: Ertekadas elagazasban
if (filemtime($o=substr($c, 0, -1) . 'o') < filemtime($c))
Szerintem meg pont jo, teljesen bevett gyakorlat. Talan elsore fura, ha nem szoktal hozza, de altalaban abszolut nem neheziti az olvashatosagot, foleg, ha az igy letrehozott valtozot egy par soros blokkban hasznalod a feltetelt kovetoen.
Ezt sem igy irod:
$count = count($tomb);
for($i = 0; $i < $count; $i++) {}
hanem
for($i = 0, $count = count($tomb); $i < $count; $i++) {}
Felho
perl...
-boogie-
valaki
--
üdv: kmm...
hát ...
$count = count($tomb);
rövidebb, és átláthatóbb, mint a
$o = substr($c, 0, -1) . 'o'
,amiben több művelet van már felhalmozva így is.
A problémát Makefile operátorfélékkel csinos lenne megoldani [$(c:%.c=%.o)], de PHP-ban minden inkább "szöveges", függvényalapú, minthogy operátor lenne. Jelen esetben sajnos.
debugger ?
Erről is leveleztem az emberrel, de nem győzte meg a pear-ből telepítheő apd sem az xdebug, mivel nem egy shell debuggolására valók.
Aki tud, segítsen ! A debuggerre vonatkozó kritériumok:
- egyszerűen csomagból telepíthető,
- nem kell különösebb mágia az elindításához (ini beállítás, auto_prepend-ek),
- valamennyire interaktív, menetközben vezérelhető működés.