In JDBC, perché gli indici dei parametri per le istruzioni preparate iniziano da 1 anziché 0?
-
03-07-2019 - |
Domanda
In qualsiasi altra parte di Java, qualsiasi cosa con un indice inizia da 0. C'è un motivo per cambiare qui o è solo un cattivo design?
Soluzione
Storicamente, i database hanno utilizzato l'indicizzazione basata su 1 per i parametri associati. Ciò probabilmente riflette le origini dei database relazionali nella teoria degli insiemi e nella matematica, che indicizzano gli elementi che iniziano con uno e usano zero per rappresentare un insieme nullo o vuoto.
Negli script di shell e nelle espressioni regolari, l'indice zero di solito significa qualcosa di "speciale". Ad esempio, nel caso di script di shell, l'argomento zeroth "argomento". è in realtà il comando che è stato invocato.
La scelta per JDBC è stata deliberata ma, alla fine, probabilmente causa più confusione e difficoltà di quante non risolva.
Altri suggerimenti
Questo faceva parte di una trama dei progettisti del linguaggio originale per eliminare i deboli. Nelle specifiche originali, le matrici erano numerate da -1 e gli elenchi con 1 elemento restituivano lunghezza = 0.
Oggi, solo l'API del calendario java rimane di questo diagramma diabolico.
Personalmente lo aggiungerei al cattivo design.
Comprendo che sia JDBC che ODBC si basano sull'interfaccia X / Open Call Level. Quindi, è la storia pre-Java, come i numeri dei mesi in base 0.
Probabilmente è che JDBC è stato modellato su ODBC.
Forse più amico dell'uomo? Inoltre, il gruppo Matcher di espressioni regolari Java inizia con 1 come primo gruppo associato.