"V prvním případě jsou prvky pole indexovány od jedničky, což má ve vysokoúrovňovém jazyce větší smysl, než indexace od nuly"
Proč?
Mi ten smysl přijde úplně stejný.
Navíc jsem rád, že Java je konsistentní se zbytkem světa, stejně tak JavaScript atd. Ono to není jenom o interní implementaci pole v daném jazyku, ale když exportuju nějaký service externě a je tam někde parametr index, tak celý svět ví, že 0 znamená první prvek. Pokud se u Lua autoři rozhodli jinak, tak buď bude zmatený svět nebo vývojáři pro tak jednoduchou věc musí implementovat interní překlad, který komplikuje přímočarý vývoj. V obojím případě peklo a přitom
úplně zbytečně.
PS: Kéž by to s tou Javou byla pravda - třeba JDBC a Hibernate používají pro binding 1-based index :-/ Chápu, že interní SQL funkce zrovna jsou 1-based, ale když už si hrajeme na tu transparentnost, navíc v případě binding to s SQL nic společného nemá a setFirstResult() je taky 0-based :-)
No zbytek sveta _pouzival_ 1-based indexaci, zmenilo se to az s prichodem cecka; tam to byla nutnost, aby spravne fungovala ukazatelova aritmetika:
pole[i] === *(pole+i) === *(i+pole) === i[pole] (to posledni je peknej hovnokod :)
Vysokourovnove jazyky taktez nekdy nabizely pouziti libovolneho zakladu, coz me prijde v dobach, kdy se jeste tak intenzivne nepouzivaly asociativni pole, taktez fajn.
Lua nebyla primarne vytvorena pro programatory, takze tam autori zvolili pro ne-developery prirozenejsi indexaci od jednicky, stejne jako kdysi davno autori Fortranu. Ale neni problem pouzivat i indexaci od nuly (v Lue), jen je zapotrebi davat pozor na konstrukci tabulky stylem {prvek, prvek, prvek}, ostatni (insert atd.) jde i s nulou, zapornymi indexy atd.
Hm, vytvářet programovací jazyk pro neprogramátory, nevím, zda je obecně úplně dobrý nápad :-) Ale nějaké kategorie se najdou, i když si myslím, že matematici a fyzikové mají svých jazyků už dostatek a na lepší úrovni, takže je vlastně pak otázka, pro koho Lua vznikla...
Jinak si myslím, že většina moderních jazyků tuhle flexibilitu nedovoluje (libovolný index), neboť to vede kromě té flexibility ke zmatení a potenciálně zbytečným chybám. Hezky to vystihli autoři perlu o proměnné $[ - POSITION and the return value are based at 0 (or whatever you've set the $[ variable to--but don't do that).
Pekne to popsali tady www.lua.org/doc/hopl.pdf
Jinak se jako embedded jazyk pouziva docela hodne, z "lidove sfery" nejvice zname je pouziti ve hrach.
[cite]Hm, vytvářet programovací jazyk pro neprogramátory, nevím, zda je obecně úplně dobrý nápad :-) [/cite]
No ono je zajímavý, že právě jazyky určený pro neprogramátory jsou většinou strašně fajn na používání a jsou nakonec úspěšný i mezi programátory. Když vynecháme DSL (ono i SQL bylo určený pro neprogramátory, překvápko :-), tak takovej Fortran je fajn, všechny skriptovací jazyky (Python, Perl, Ruby, ale i BASH); prostě oproti "profesionálnímu" a přeplácanýmu C++ pohodička.
Při indexaci od nuly jsou potom v kódu docela frky, jako že desetiprvkové pole má indexy jen do devítky atd. Já vím, taky s tím nemám po dvaceti letech prgání v céčku výraznější problém, ale je to prostě docela přes ruku a off-by-one chyby jsou na denním pořádku, a to právě kvůli myšlenkám typu "a teď si vezmu první prvek, ten je ééééé jo nulovej :-)"
Moc jsem to nepochopil s tou servicou - něco na způsob REST API nebo tak? Ale tam to nehraje roli že?
Ale jo, já tu motivaci chápu, ale právě, že lidi (aspoň vývojáři) už jsou na tu nulu tak zvyklí, že jakákoli změna by teď byla kontraproduktivní.
K té druhé poznámce - obecně cokoli, klidně ten REST, když specifikuju offset/limit nebo nějaká SOAP - vrať mi první telefon daného zákazníka. Pokud použiju jako základ jedničku, tak mám na svědomí miliardy vlasů vývojářů (stejně jako když pro boolean použiju Y/N :-) ).
You should easily find something for you on this site. Later, when you have some basic programming knowledge, you can start installing development software on your own machine. In the meantime, there is no need. - http://www.tutorialkart.com/