Vlákno názorů k článku Operátory a asociativní pole v jazyku Lua od martin - Nejsou? Myslím, že i ve vysokoúrovňových jazycích je...

  • Článek je starý, nové názory již nelze přidávat.
  • 25. 3. 2009 11:20

    martin (neregistrovaný)
    Nejsou? Myslím, že i ve vysokoúrovňových jazycích je to praktická věc (když potřebuju často vyhodnocovat kombinaci několika podmínek).

    Kdyby byly přímo součástí jazyka, může na to interpret použít nějakou optimalilzaci, ale když operaci, pro kterou má většina procesorů přímo instrukce, musím řešit voláním funkce v interpretovaném jazyce, už to trochu ztrácí to kouzlo...

    Asi taky jde o tu jednoduchost, a když náhodou potřebuju opravdu rychlost, tak si to mám napsat v C -- když už je to "embedded" jazyk.
  • 25. 3. 2009 12:17

    anonymní
    Lua má knihovnu bitops. Kdyby to někomu vyloženě chybělo jako operátor -> MetaLua (zkompilované to běží na témže VM). S těmi optimalizacemi to až tak žhavé podle mě nebude, obzvlášť u jazyků typu Python nebo Ruby, které mají celkem flexibilní integery (ošetření konverze fixnum<->bignum apod.) a stejně musí čachrovat s něčím okolo. Výjimkou bude - jak už to bývá :-) - Common Lisp.
  • 25. 3. 2009 13:34

    Pavel Tišnovský
    Zlatý podporovatel
    mohlo by pomoci nejake rozsireni nebo patch z: http://lua-users.org/wiki/BitwiseOperators

    IMHO tam tyto operatory nejsou ze dvou duvodu:

    1) je tezke definovat, co tyto operatory delaji nad defaultnim ciselnym typem, coz je v Lua double. Napriklad JavaScript (taktez s jednim typem numeric) s tim ma problemy, staci si vyzkouset v prohlizeci (adresni radek + Enter):
    javascript:alert(1|2)
    versus
    javascript:alert(1|1.99999999999)
    to druhe muze byt vysledek nejake bezne pocetni operace nad doublem, klidne i jednoduchy soucet.

    2) pouziti techto operatoru je dvoji: sahani na jednotlive bity napriklad v hlavickach souboru ci protokolu - zde stejne nema smysl to delat nad doublem (viz vyse, lepsi je volat nejakou c-ckovou funkci ci pouzit patch/rozsireni) a potom bitove mnoziny (to jsou ony podminky) - zde je ovsem ve vysokourovnovem jazyku IMHO vhodnejsi pouzit skutecne bitove mnoziny, ktere nejsou omezeny na 32/64 bitu, vysledek je i citelnejsi, protoze se nemusi vytvaret nejake enum-like konstanty apod.