Lua egész számokkal w; újfent abszolút slágerfórum - heise online
Valójában nagyon szeretem a Lua-t mint nyelvet, de ez eddig is létezett
Különösen 2 dolog akadályozott meg abban, hogy intenzíven csináljam
használni:

* Azok az I/O funkciók, amelyekben a hibák nehézkesek az assert () segítségével lekérdezni
ahelyett, hogy csak kivételt vetne, bármilyen nyelvű is legyen
igenis támogatott.
* Az "1" alapú tömbindexek.
Ez utóbbi probléma pusztán személyes idegenkedés, de nem az lenne
komoly oka annak, hogy ne használjam a nyelvet (ezért írtam
csak * 2 * ok.)
Az előbbi problémát viszonylag könnyen meg lehet oldani a
Az I/O funkciók burkolóosztályokba vannak csomagolva, amelyek közül a kézikönyv tartozik
Távolítsa el a hibaellenőrzést.
De keveset tudsz tenni a lebegőpontos számtan ellen, ami nem tetszik
csinálni.
Az alapértelmezett típust kettősről uint64_t-re változtathatja
nevezze át a nyelvet illetően - csak annyit kell tennie, hogy beírja a
#define változás.
Ennek eredményeként azonban már nincs Lua: A nyelvi specifikációban
és az összes lehetséges rendszerkönyvtárban, valamint a C-API is
minden lehetséges számjegy lebegőpontos számot használ.
Ha globálisan megváltoztatja a szám típusát egész számra, akkor meg kell
Írja át a szabványos könyvtár legtöbb funkcióját is
vagy néha megváltoztatják az API-jukat.
A Lua meglévő bővítményeinek zöme akkor lehet
szintén nem használja, de át kellene írnia, vagy legalábbis
tapasz jelentősen.
Mindenekelőtt egy ilyen módosított tolmács már nem lenne a
Képes normál Lua szkriptek végrehajtására: De facto más lenne
Nyelv létrehozása.
Mindezek a szempontok eddig megakadályoztak abban
A Lua használata, bár sokkal jobban tetszett, mint Perl,
Python, Tcl vagy Ruby.
Szeretném, ha Lua ugyanúgy működne, mint a Python
A számokkal kapcsolatos kérdések: Bármely pontos egész szám vagy lebegőpontos szám, ha
számos tizedesjegyű. Egy további tizedes adattípus
hab lenne a tortán, de közvetlenül is megnézheti
Végezze el a Lua osztályt.
Csak az számít igazán, hogy a beépített alapadattípus nem az
erőszakkal lebegőpontos típus marad.
A lebegőpont szintén teljesen rendben van - a lebegőpont kötelező
de idióta:
* A lebegőpontos számokat csak FPU-val lehet hatékonyan kiszámítani.
De különösen a kicsi, különösen energiatakarékos számítógépeken gyakran van ilyen
nincs FPU. Ezeknek akkor lebegőpontot kell utánozniuk a szoftverben
sokkal több munka, hosszabb ideig tart és több áramot fogyaszt. De
még ha van is FPU, akkor több energiát fog fogyasztani, mint ugyanaz
Csak egész egységet tartalmazó chip és az FPU függvények
kimaradt volna: az FP számtana egyszerűen elkerülhetetlenül többet igényel
Olyan egész számtani végrehajtási kapuk, amilyen egyértelműek
összetettebb. Ezért, még ha nem is lassabb, költsége is van
mindenesetre több áram. De a szkriptjeimnek mindenhol futniuk kell
tud; Nem akarom őket más nyelvű FPU nélküli rendszerekhez
meg kell másolni csak azért, mert a Lua ott a
A lebegőpontos számtan túl lassú.
* Csak mérnököknek és tudósoknak van szükségük lebegőpontos számokra.
A legtöbb programozó, aki nem tartozik ezekbe a kategóriákba,
valójában aligha akar lebegőpontos számokat, valójában akarja őket
Tizedes számtan, mert pénzösszegekkel számolnak. Mert ez az
Lebegőpontos számtan, de a kerekítési problémák miatt összesen
nem megfelelő.
* Azok, akik szeretik a pontos számításokat, * gyűlölik a lebegőpontos számokat. Így
lebegőpontos számításoknál előfordul például, hogy A + B -
B nem egyenlő A-val! Sokan úgy vélik, hogy az FP számtana csak az
különösen összetett műveletek pontatlanul - de valójában igen
még a kerekítési problémák egyszerű összeadásával és kivonásával is
jön.
De a lebegőpontos számoknak még mindig van haszna: Ha mért értékekkel
olyan munka folyik, amely már önmagában is mérési hibáknak van kitéve
dokumentált és így pontatlan, pontosságuk általában teljes
elegendő. Ezért relevancia a mérnökök és
Természettudós.
Azonban általában nagy mennyiségű adatot kell feldolgozniuk vagy feldolgozniuk.
a teljesítmény fontos, és ilyen esetekben csak te veszel
nincs kéznél Lua, inkább olyan nyelvek, mint a C vagy a FORTRAN
kéz, amelyek * nagyon * gyorsak lebegőponttal.
Tehát hogyan lehet megfordítani: lebegőpontos számok as
A szokásos adattípus felvétele egyetlen tolmácsnyelven sem történik
igazán értelmes.
A BASIC-ban történelmileg meg lehetett magyarázni, a BASIC számítógépeken pedig volt
gyakran egyszerűen nincs C vagy FORTRAN alternatívaként - ezért kellett
A BASIC mindent megtehet, és így lebegőpontot is elsajátíthat, és gyakran
többet nem engedhetett meg magának, mint a ROM-ban lévő helyhiány miatt
numerikus adattípus megvalósítása. De az is volt
akkor is, amikor egy komplett BASIC tolmács 8 KiB-ban (nem
MB!) A ROM-nak illeszkednie kellett. Még a legszánalmasabb ajánlat is
A beágyazott rendszerek általában sokkal inkább.
De a Lua nagyszerű szkriptnyelv lenne, különösen a
Ideálisak a tipikus "szkripthasználati esetek", amelyek nem relevánsak a lebegőponttal
kínálna - és van egy lebegőpont, mint alaptípus
Blokk a lábán, és nincs áldás.
További típusként nem probléma - hanem az alaptípus
a modern szkript nyelvének egésznek kell lennie. (*Val vel*
Túlcsordulás ellenőrzése!) Vagy megteheti, mint a Pythonban
"Variáns" típusok, amelyek mindkettőre képesek.
Gyorsan beszerzem az új Lua-t, de a
A cikk megfogalmazása attól tartok, hogy az alaptípus megmarad
lebegőpont és egész szám előtt csak egy félszavas esszét
amely még a lebegőpontnál is lassabb, mert állandóan belső
minden lebegőponttá alakul.
Remélem azonban, hogy félelmeim valóra válnak
nem magad.